Compare commits

...
Author SHA1 Message Date
rashad b9cb46f42d improve design doc skill 2026-05-28 15:35:05 +04:00
rashad 882781a432 fix: improve design doc prompt 2026-05-27 15:38:09 +04:00
rashad 2267ed1984 feat(twenty-partners): add twenty-lead-intro-call-summary skill
Turns a discovery/sales-call transcript into a faithful, structured
qualification brief for the partner pipeline (deal one-pager plus
appendix). Upstream half of the lead workflow chain:
twenty-lead-intro-call-summary -> twenty-partner-design-doc.
2026-05-27 08:56:21 +04:00
rashad 347ef9ca47 feat(twenty-partners): add twenty-partner-design-doc skill
Translates a qualified lead's materials (call-summary brief + client
braindump) into a Twenty-terms implementation design doc a partner can
scope and quote from.

- design-doc-doctrine.md: portable, tool-agnostic doctrine (12-section
  structure, rules, live doc-verification process, doc map). Intended as
  the future defineSkill content for an in-product agent.
- SKILL.md: Claude Code wrapper (inputs, tool-mapped steps, save).

Chains after twenty-lead-intro-call-summary; output feeds the
opportunity to partner handover (designDocStatus / designDocUrl).
2026-05-27 08:56:21 +04:00
Abdullah.andGitHub 9d6c5b7d58 [Website] Restore shared build dependency for typecheck (#20936)
Should fix the CI failure on `typecheck` by building twenty-shared
first.
2026-05-26 19:33:04 +02:00
Paul RastoinandGitHub a2db0b6932 Fix index cache computation (#20933)
## Introduction
Should rely on custom typeorm entity loader layer that inspects the
upgradeMigration that has bene run to dynamically request existing col
only
2026-05-26 18:55:24 +02:00
EtienneandGitHub 5eb79e7797 fix(billing) - fix orphaned stripe subs 2/2 (#20916)
Fixes https://sonarly.com/issue/40688

Should have been included in
https://github.com/twentyhq/twenty/commit/0edd8d400c646cd6a40ff0fea5342a0f61645d5e
2026-05-26 16:28:21 +00:00
Paul RastoinandGitHub f19647617a Fix cross version upgrade for 2.8 (#20927) 2026-05-26 15:46:06 +00:00
Thomas TrompetteandGitHub 424c6737a1 Fix workflow step output schema not reflecting user-renamed step name (#20922)
## Summary
- Fixes https://github.com/twentyhq/twenty/issues/20906
- Moves `markStepForRecomputation` from `useUpdateStep` into the
lower-level `useUpdateWorkflowVersionStep` hook, so **every** caller
that updates a step also triggers output schema recomputation.
- Previously, renaming a step via the side panel title input called
`useUpdateWorkflowVersionStep` directly (bypassing `useUpdateStep`), so
the variable picker kept showing the initial default name (e.g. "Create
Record") instead of the user's custom name.

## Test plan
- [x] Rename a workflow step via the side panel title input
- [x] Verify the variable picker dropdown shows the updated name
- [x] Verify variable tags/chips in subsequent steps reflect the updated
name
- [x] Verify that updating step settings (e.g. changing object type)
still refreshes the output schema correctly
2026-05-26 15:38:36 +00:00
be8c25dfc2 i18n - translations (#20930)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-26 17:46:04 +02:00
Paul RastoinandGitHub b8de469f37 Refactor and centralize file mimeType integrity check and sanitization (#20889)
# Introduction
closes https://github.com/twentyhq/private-issues/issues/484

This PR refactors the writeFile API to never expect to be passed a
mimetype, its extract is done programmatically low level so any callers
will pass through
Same for the file sanitization

## IANA override
Disclaimer for consistency we existing behavior we wanted to always have
`application/typescript`
- should we rather consider fallbacking to octect-steam instead ?
- Any pulbic assets that has .ts will now also fallback to
`application/typescript` instead of the official IANA

## Integration
Added coverage
2026-05-26 15:10:52 +00:00
c74337978b i18n - docs translations (#20926)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-26 17:25:43 +02:00
059e75e532 chore: bump version to 2.9.0 (#20925)
## Summary

- Moves current version to previous versions array
- Sets TWENTY_CURRENT_VERSION to the new version
- Updates TWENTY_NEXT_VERSIONS with the next minor version
- Bumps twenty-client-sdk, twenty-sdk, and create-twenty-app to the same
version

## Checklist

- [ ] Verify version constants are correct
- [ ] Verify npm package versions match

Co-authored-by: Github Action Deploy <github-action-deploy@twenty.com>
2026-05-26 17:14:22 +02:00
bb5c2bd00c Fix/restore channel association scalar field metadata (#20920)
[#20836](https://github.com/twentyhq/twenty/pull/20836) dropped the
channel objects but even though
calendarChannelId/messageChannelId/messageFolderId already existed in
compute standard flat field, there was never an upgrade command to readd
them on the surviving association objects

so existing workspaces lost the field metadata (columns survived) and
import workers throw
```Error: Unknown error importing calendar events for calendar channel <REDACTED> in workspace <REDACTED>: Query runner already released. Cannot run queries anymore.```

This PR adds that command

---------

Co-authored-by: prastoin <paul@twenty.com>
2026-05-26 14:58:33 +00:00
a2673da164 i18n - translations (#20924)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-26 17:03:31 +02:00
WeikoandGitHub 08682fb3f5 Various fixes - some AI findings (#20921)
App permissions tab:
- The fallback uuidv4() for a marketplace field was generated twice, so
id and universalIdentifier could diverge; it's now computed once and
reused as it seemed to be the intention (even though I don't really
think it's a good idea)
- Renamed buildobjectMetadataItemsFromMarketplaceApp →
buildObjectMetadataItemsFromMarketplaceApp to follow camelCase.

Morph relation validation:
- Fixed the user-facing message "At least one relation is require" →
"...is required"
- Typos in the related test descriptions (Morh → Morph, samefield → same
field) and their snapshots.

Docs
- The UUID field-type row in views.mdx only listed IS; updated to the
full set supported by FILTER_OPERANDS_MAP (IS, IS_NOT, IS_EMPTY,
IS_NOT_EMPTY).
2026-05-26 14:43:50 +00:00
53d4e92dda [Website] Generate release notes manifest at build time (#20913)
Removed the releases page’s runtime dependency on `fs` and
`process.cwd()` by introducing a build-time manifest generator: release
notes still live as markdown under `src/content/releases`, but a new
script now parses their frontmatter/content, validates that each note
has a release, title, and preview image (and that the image actually
exists), sorts the notes, and emits a typed `generated-release-notes.ts`
file that the app imports at runtime.

Updated the releases loader to return that generated data, changed the
menu releases preview and release JSON-LD to use explicit typed fields
(`title`, `previewImage`) instead of scraping markdown with regex at
runtime, wired the generator into Nx so it runs automatically before
`dev`, `build`, and `typecheck`, and fixed two stale image references in
the release MDX files that the new validation exposed.

---------

Co-authored-by: prastoin <paul@twenty.com>
2026-05-26 16:46:11 +02:00
Rashad KaranouhandGitHub 53392f9a16 feat(twenty-partners): partnerContent catalog + TFT import improvements (#20904)
## Summary

Two related threads for the internal `twenty-partners` app:

1. **Redesign `partnerQuote` → `partnerContent`.** The object was
mis-modeled as a sales/pre-invoice doc (`amount`, opportunity link). In
TFT it's actually a marketing-content catalog — customer quotes, case
studies, partner quotes, logos — moving through a production lifecycle.
This renames it in place and reshapes it to mirror TFT's
`CustomerContent`.
2. **Import tooling improvements** to the TFT importer + multi-env
workflow.

## Changes

**Schema (`partnerContent`)**
- Rename `partnerQuote` → `partnerContent` (object, view, nav, relation
fields, identifiers).
- Add `contentType` MULTI_SELECT `[CUSTOMER_QUOTE, CASE_STUDY,
PARTNER_QUOTE, LOGO]` and `interview` LINKS.
- Add `customerCompany` / `customerPerson` relations; keep `partner`;
drop the `opportunity` link (TFT has none).
- Drop `amount`; rename the FILES field `quoteFile` → `documents`
(`attachments` is a reserved morph-relation name).

**Importer (`import-from-tft.ts`)**
- Import the full content catalog (all types), not just `PARTNER_QUOTE`.
- Map TFT `partnerTimezone` → `region`, default
`languagesSpoken=[ENGLISH]`, and set `deploymentExpertise=[SELF_HOST]`
when scope includes `HOSTING_ENVIRONMENT`.
- Filter to partner-relevant records only: opportunities linked to a
partner (20 of 164), content linked to a partner (10 of 22). Drops
general sales-pipeline / customer-only noise.
- Dedupe companies by **normalized domain** (Twenty's unique key), not
just name — fixes duplicate-entry crashes when the same company arrives
under different names.
- Progress logging throughout.

**Tooling**
- `purge-soft-deleted` script (soft-deleted rows block re-imports via
unique constraints).
- Multi-env script variants (`*:prod`) selected via `ENV_FILE`.

## Testing

Verified on a local Twenty instance and on `partner.twenty.com`:
- 122 partners, 20 partner-linked opportunities, 10 partner-linked
content (all types), 229 domain-deduped companies.
- Schema confirmed via metadata introspection; `yarn twenty typecheck`
clean.

## Notes

- Renaming an installed object isn't a pure in-place migration on a
server that already had `partnerQuote` — the working path is `uninstall
→ deploy → install` (safe here: prod had no data).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-26 14:09:57 +00:00
7e7bb81586 i18n - translations (#20911)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-26 12:13:49 +02:00
3703b3e2f6 i18n - translations (#20910)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-26 12:06:57 +02:00
Charles BochetandGitHub e72d10f550 chore(security): bump esbuild to ^0.28.0 to clear CVE-2025-68121 (CVSS 10.0) (#20902)
## Summary

Follow-up to #20876. That PR bumped `esbuild` to `^0.27.3` to address
the Go-stdlib CVEs the self-hoster reported, but only one of the two Go
CVEs is actually fixed at that level. This PR closes the remaining gap.

### Why 0.27.3 wasn't enough

`esbuild` ships a Go-built binary inside the `@esbuild/<platform>`
packages. The vulnerability lives in the bundled Go toolchain, not in
any JavaScript. Verified by reading the Go `buildinfo` section from
`node_modules/@esbuild/<platform>/bin/esbuild`:

- `esbuild@0.27.7` → built with **Go 1.23.8**
- `esbuild@0.28.0` → built with **Go 1.26.1**

CVE-2024-24790 (IPv6 zone parsing) is fixed in Go 1.21.11 / 1.22.4, so
0.27.x covers it.

**CVE-2025-68121** (crypto/tls cert validation bypass via TLS session
resumption, **CVSS 10.0 / Critical** per
[NVD](https://nvd.nist.gov/vuln/detail/cve-2025-68121)) is fixed only in
Go 1.24.13, 1.25.7, and 1.26.0-rc.3+. Go 1.23.x is past Go's support
window and will not receive this fix. So `esbuild@0.27.x` still ships a
Go binary that Trivy correctly flags as vulnerable.

### Reachable risk in Twenty

Low. `esbuild` does not use `crypto/tls` at runtime — it reads files,
parses, transforms, and writes. The vulnerable code path is dead code
inside the binary, present but never executed. The scan finding is what
we are clearing, not an exploitation risk.

### Fix

Bump `twenty-client-sdk`'s `esbuild` from `^0.27.3` to `^0.28.0`
(resolves to 0.28.0, built with Go 1.26.1).

### Verification

Ran `yarn workspaces focus --production twenty twenty-server
twenty-emails twenty-shared twenty-client-sdk` (the same install the
Dockerfile uses) and confirmed:

- `node_modules/esbuild/` resolves to `esbuild@0.28.0` (single copy)
- The bundled `node_modules/@esbuild/<platform>/bin/esbuild` binary
reports `go1.26.1` in its `buildinfo`

## Test plan

- [x] `nx typecheck twenty-server` passes
- [x] `nx build twenty-client-sdk` passes (esbuild's `build()` API is
stable across 0.27 → 0.28)
- [x] Production focus install shows Go 1.26.1 in the shipped binary
- [ ] CI green
- [ ] Re-run Trivy against the resulting image; confirm CVE-2025-68121
no longer appears
2026-05-26 09:49:25 +00:00
martmullandGitHub 7ca9081efa Add application installation validation modale (#20907)
## After

<img width="1512" height="829" alt="image"
src="https://github.com/user-attachments/assets/231d4f0d-6052-4c4e-9a2a-0244d2b3832e"
/>
2026-05-26 09:48:31 +00:00
015dca95fc Edit actor chip icon style & read-only behavior (#18552)
https://github.com/user-attachments/assets/925f4380-e3e2-430d-a8e3-7e1242298900

Removed background color from icons for consistency
Removed chip hover state as chips are not navigable
Updated read-only design (text/secondary on chip hover)

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2026-05-26 09:38:39 +00:00
Paul RastoinandGitHub 076c05cbd0 File service uniformize not found behavior and stream management (#20891)
# Introduction

closes https://github.com/twentyhq/private-issues/issues/485
2026-05-26 09:23:48 +00:00
Félix MalfaitandGitHub 82c565f7dc perf(website): cache prerendered pages in CF Cache API (withRegionalCache) (#20905)
## Summary
Recovers most of the TTFB the EKS→Cloudflare migration lost on
`twenty.com`. OpenStatus's P50 chart shows the regression clearly: TTFB
went from ~50–80ms (pre-migration, CF edge cache HIT) to ~250–350ms
(post-migration, every request hits Worker → R2 → respond).

## Why the existing Cache Rule stopped working
The zone-level `Twenty Website - Aggressive cache` Cache Rule was
correctly configured and was the reason pre-migration TTFB was low. It
still exists, still has `cache: true`, Edge TTL 1d. But it doesn't apply
to Worker responses on a Worker custom domain:

- **Pre-migration** request flow: `edge → Cache Rule lookup → HIT
(~20ms) / MISS → origin → cache the response`
- **Post-migration**: `edge → Worker runs first (custom domain) → Worker
generates synthetic response from R2 → return`

Cache Rules cache responses obtained via `fetch()` from the Worker, not
synthetic responses constructed inside the Worker. OpenNext for SSG
pages reads prerendered HTML from R2 and returns it — that's synthetic.
So the rule has no insertion point.

This is structural to how CF Workers handle custom domains; not a
misconfiguration on your side.

## The fix
`open-next.config.ts`:
```ts
const incrementalCache = withRegionalCache(r2IncrementalCache, {
  mode: 'long-lived',
});
const baseConfig = defineCloudflareConfig({ incrementalCache });
```

OpenNext-native wrapper. The Worker still runs per request (~5–20ms
execution), but the ISR cache lookup goes through CF's per-region Cache
API (~5–20ms) instead of R2 (~50–150ms). For pages whose prerender
doesn't change between requests, that's the bulk of the TTFB recovered.

## Measured impact (live before/after on twenty.com today)
| URL | Before (avg of 3) | After cold (first 2 hits/region) | After
warm |
|---|---|---|---|
| `/` | 322ms | 600–640ms | **110–125ms** |
| `/pricing` | 267ms | 630–690ms | **104–110ms** |
| `/why-twenty` | 250ms | 175–270ms | **100–175ms** |

First 1–2 hits per CF region after this deploys will be slower than
baseline (regional Cache API populating from R2), then it sustains.
Steady state is significantly better than pre-fix.

## What this doesn't recover
Pre-migration `cf-cache-status: HIT` was ~20–30ms because the Worker
wasn't invoked at all. We can't get there without either:
- Moving SSG hosting off the Worker (back to a static origin Cache Rules
would cover)
- OpenNext gaining a "publish responses to caches.default" mode (doesn't
exist today)

Realistic-best on CF Workers + OpenNext is around the ~80–130ms range
we're now seeing.

## Live state
Already deployed to both prod (Version `40dfaa1a-...`) and dev (Version
`b45cc2de-...`) ahead of opening this PR, so the OpenStatus chart should
start improving immediately. This PR makes `main` reflect the change.
2026-05-26 09:20:55 +02:00
martmullandGitHub 44bae39538 Publish new cli tool version (#20903)
publish 2.8.0
2026-05-26 07:06:04 +00:00
WeikoandGitHub 1188ea9cd5 chore(server): remove unused REST→GraphQL HTTP bridge (#20897)
## Summary

Removes the unused `RestApiService` HTTP bridge that posted to
`/graphql` and `/metadata` from inside the server.
2026-05-25 19:56:32 +00:00
f721420705 i18n - docs translations (#20898)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-25 20:50:59 +02:00
96d247e94d i18n - translations (#20895)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-25 19:20:56 +02:00
WeikoandGitHub 90f711361c Add definePermissionFlag for app-defined permission flags (#20887)
## Context
Adds the SDK plumbing for apps to declare custom permission flags and
the server-side manifest pipeline to persist them.

```typescript
import { definePermissionFlag } from 'twenty-sdk/define';

export const MANAGE_INVOICES_PERMISSION_FLAG_UNIVERSAL_IDENTIFIER = '…';

export default definePermissionFlag({
  universalIdentifier: MANAGE_INVOICES_PERMISSION_FLAG_UNIVERSAL_IDENTIFIER,
  key: 'MANAGE_INVOICES',
  label: 'Manage Invoices',
  description: 'Create, edit, and delete invoices',
  icon: 'IconReceipt',
});
```

```typescript
import { defineApplicationRole, SystemPermissionFlag } from 'twenty-sdk/define';
import { MANAGE_INVOICES_PERMISSION_FLAG_UNIVERSAL_IDENTIFIER } from './permission-flags/manage-invoices';

export default defineApplicationRole({
  universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER,
  label: `${APP_DISPLAY_NAME} default function role`,
  // ...
  permissionFlagUniversalIdentifiers: [
    SystemPermissionFlag.UPLOAD_FILE,
    MANAGE_INVOICES_PERMISSION_FLAG_UNIVERSAL_IDENTIFIER,
  ],
});
```

The flag can then be referenced by UUID in a role's
permissionFlagUniversalIdentifiers. On sync, the catalog row lands in
core.permissionFlag and the link in core.rolePermissionFlag.

## Not in this PR
- Runtime permission checks.
PermissionsService.getUserWorkspacePermissions still builds its result
from Object.values(PermissionFlagType), so custom flags are stored but
not yet enforced, code asking "does this role have MANAGE_INVOICES?"
won't get a meaningful answer. Widening PermissionsService and
UserWorkspacePermissions.permissionFlags to support arbitrary flag keys
is the next PR.
- PermissionFlag from apps can only define "tool" permissions and not
"settings" as a permissionType, this parameter is not mutable. This is
because "settings" are for settings page (until we might decide to
separate both type of permissions into 2 different entities) and apps
can't declare settings page or interact with them so this parameter
would be unnecessary.
2026-05-25 16:53:37 +00:00
98d47d0dd0 i18n - docs translations (#20893)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-25 19:02:12 +02:00
f613886511 fix(localization): parse date-only ISO strings as local midnight in relative date formatter (#20630)
## Summary

Fixes #19634

### Root Cause

The ECMAScript spec treats date-only strings (`YYYY-MM-DD`) as **UTC
midnight** when passed to `new Date()`. But `date-fns` comparison
functions (`isToday`, `isYesterday`, `isTomorrow`) operate in **local
time**. For users in UTC-negative timezones, UTC midnight April 14 is
April 13 evening locally — so the label shows "Yesterday" instead of
"Today".

### Fix

In `formatDateISOStringToRelativeDate.ts`, detect date-only strings
(length === 10) and append `T00:00:00` (no `Z`) to force local-time
parsing:

```ts
// Before
const targetDate = new Date(isoDate);

// After
const targetDate =
  isoDate.length === 10 ? new Date(isoDate + 'T00:00:00') : new Date(isoDate);
```

Full datetime strings (with time component) are left unchanged — they
already carry timezone information.

### Tests

Added `formatDateISOStringToRelativeDate.test.ts` covering:
- `Today` / `Yesterday` / `Tomorrow` labels for date-only strings
- Regression case: date-only string parsed at local midnight (not UTC
midnight)
- Full datetime strings continue to work as before

## Before / After

| Scenario | Before | After |
|---|---|---|
| `"2026-04-14"` viewed at UTC-5 on April 14 | Yesterday  | Today ✓ |
| `"2026-04-14"` viewed at UTC+0 on April 14 | Today ✓ | Today ✓ |
| `"2026-04-14T12:00:00Z"` | Today ✓ | Today ✓ |

---------

Co-authored-by: Marie Stoppa <marie@twenty.com>
2026-05-25 15:54:36 +00:00
a3e41ec267 i18n - translations (#20892)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-25 17:54:07 +02:00
Félix MalfaitandGitHub d602f35cbd feat(data-model): custom-indexes management UI and mutations (#20846)
## Summary

Brings indexes management into the per-object Settings tab as a section
under Search (no feature flag, advanced mode only). Admins can create /
delete non-unique indexes with the UI; apps can declare indexes in code
with `defineIndex`. Composite-typed fields are now indexable by picking
a specific sub-column (e.g. `Address > City`).

A few related polish items also land here (invite-user dropdown lands on
the Invite tab; standard warning callout above the new-index form).

## What ships

### UI — custom indexes on per-object Settings
- New section directly under Search, wrapped in
`AdvancedSettingsWrapper`.
- Filter dropdown on the search bar toggles system-index visibility
(shown by default since advanced mode).
- **+ Add Index** button (disabled with tooltip once the per-object cap
is reached) navigates to a dedicated `SettingsObjectNewIndex` page
(matches the field-creation pattern, not a modal):
- Field picker mirrors the webhook event-form layout (rows of dropdowns,
implicit trailing empty row).
- Composite fields surface their sub-properties (`Address > City`,
`Currency > Amount`, …).
  - BTREE / GIN type selector.
- Standard warning Callout: "Use indexes sparingly — each one speeds
reads but slows writes."
- Trash icon on `isCustom: true` rows → confirmation modal →
`deleteOneIndex`.

### Server — `createOneIndex` / `deleteOneIndex` mutations
- Gated by `SettingsPermissionGuard(DATA_MODEL)`.
- `IndexMetadataService` wraps the existing migration runner via
`WorkspaceMigrationValidateBuildAndRunService` so the metadata row and
the SQL index land atomically.
- Validation: rejects empty fields, duplicate `(fieldMetadataId,
subFieldName)` pairs, fields not on the object, requires `subFieldName`
for composite parents, forbids `subFieldName` on scalar/relation,
enforces `MAX_CUSTOM_INDEXES_PER_OBJECT = 10`.
- Delete refuses on `isCustom: false` rows so system indexes can't be
removed via this API.
- Dedicated GraphQL exception handler maps each typed error to the right
transport error class.

### Composite sub-field indexing
- Adds `subFieldName: string | null` column to
`IndexFieldMetadataEntity` (fast instance command).
- The flat-entity flow (`UniversalFlatIndexFieldMetadata`,
`FlatIndexFieldMetadata`, `from-universal-flat-index-to-flat-index`,
runner column resolution) all carry `subFieldName` through.
- For composite parents, the runner uses
`computeCompositeColumnName({...}, property)` for the picked sub-column;
for non-composite parents, behavior is unchanged.
- The `'::'` separator encodes `(fieldMetadataId, subFieldName)` for
dedup on the wire; the frontend uses the same separator inside the
Select component's string value.

### Apps can declare indexes in code (`defineIndex`)
- New `IndexManifest` + `IndexFieldManifest` types in
`twenty-shared/application` wired into the `Manifest` type.
- `defineIndex` SDK helper + `IndexConfig`. CLI manifest builder +
extractor recognize `defineIndex` / `ManifestEntityKey.Indexes`.
- Server: `from-index-manifest-to-universal-flat-index` converter
resolves field IDs, validates composite/scalar `subFieldName` rules, and
delegates to `generateFlatIndexMetadataWithNameOrThrow` for the
deterministic name.
- Orchestrator wires the loop after the field-resolution pass;
per-object cap enforced inline against the manifest.
- Cascade on uninstall is automatic — when an app disappears its indexes
drop with it (universal-flat-entity diff handles it).
- Rich-app fixture ships a real `defineIndex` on `PostCard.status`,
exercising the full manifest → install path in CI.

### Closed for now (open later if needed)
- Apps cannot declare `isUnique` indexes — unique constraints stay with
the field-creation flow.
- Apps cannot use a partial-`indexWhereClause` — the UI surface keeps
the framework's hardcoded allowlist.
- UI cannot create unique or partial indexes either; same reasons.

### Cleanups along the way
- Reused the existing `getCompositeSubFieldLabel` +
`COMPOSITE_FIELD_SUB_FIELD_LABELS` (deleted the duplicates I'd created
early in the PR).
- Moved `MAX_CUSTOM_INDEXES_PER_OBJECT` to `twenty-shared/constants`
(single source for FE + BE).
- Replaced inline `isDefined(x) && x !== ''` with `isNonEmptyString`
(from `@sniptt/guards`).
- Hoisted the per-object fields Map + inlined the cap counter into the
indexes orchestrator loop (drops the install scan from O(indexes ×
totalFields) to O(totalFields + indexes)).
- Per design-feedback: page-based create flow (not a modal), filter
dropdown on the SearchInput (not a separate toggle), webhook-style
picker, field icons.

### Unrelated polish that lands here
- "Invite user" link in the multi-workspace dropdown now lands on the
Invite tab directly (`#invite`) instead of the first tab of the members
page.

## Test plan
- [ ] `npx nx typecheck twenty-server / twenty-front / twenty-sdk /
twenty-shared` — passes
- [ ] `npx nx lint:diff-with-main twenty-server / twenty-front` — clean
- [ ] `npx jest index-metadata.service.spec` — green
- [ ] `npx jest from-index-manifest-to-universal-flat-index` — green
(new converter spec, 8 cases)
- [ ] `npx vitest run
src/sdk/define/indexes/__tests__/define-index.spec.ts` (twenty-sdk) —
green (6 cases)
- [ ] `npx vitest run --config vitest.integration.config.ts -t
"rich-app"` — green (rich-app app-dev integration exercises the new
manifest path with the PostCard.status index)
- [ ] Advanced mode → Settings → any object → Settings tab → Indexes
section is visible under Search
- [ ] Create a single-field BTREE index, confirm SQL index exists
(verify via `pg_indexes`)
- [ ] Create a composite-field index (`Address > City`) and confirm the
column is `addressAddressCity`
- [ ] Create an index spanning two columns; column order matches the
picker order
- [ ] Attempt to create an 11th custom index → button is disabled with
tooltip
- [ ] Delete a custom index → confirmation modal → row disappears, PG
index dropped
- [ ] System indexes have no trash icon and are hidden by default
2026-05-25 17:47:09 +02:00
Paul RastoinandGitHub 69d89f8cfc Early return in public assets (#20881)
# Introduction
Related https://github.com/twentyhq/twenty/issues/20879

More abstracted response error and cleaner integrity check before
performing any in database search
Nothing critical patched here

Also added integration coverage to the related endpoint

Fixed the stream on error throw that would have been bubbling up into
node process

## Next
Once this has been approved will re-apply to all the existing prone
file.getBy* methods and controllers endpoints
2026-05-25 14:17:32 +00:00
Charles BochetandGitHub be39702fd2 chore(security): bump protobufjs and esbuild to clear CVEs (#20876)
## Summary

A self-hoster reported that Trivy blocks the `twentycrm/twenty:v2.7.x`
image on three fixed-critical CVEs. The reachable risk is low (none of
the vulnerable code paths are exposed to attacker-controlled input in
our deployment), but the findings are real and easy to clear by bumping
the affected dependencies in their owning workspaces.

### CVE-2026-41242 — `protobufjs` < 7.5.5

Pulled transitively into the production image via
`@opentelemetry/sdk-node`, `@opentelemetry/auto-instrumentations-node`,
and `@grpc/grpc-js` → `@grpc/proto-loader`. Lockfile was on 7.5.3; this
matches dismissed dependabot alert #1009 (Critical 9.4).

**Fix:** add `protobufjs: ^7.5.5` as a direct dep of `twenty-server`
(the workspace that exercises it via the OpenTelemetry gRPC exporters)
and run `yarn dedupe protobufjs` to collapse the residual transitive
7.5.3 copy. Resolves to 7.6.0.

### CVE-2024-24790 and CVE-2025-68121 — Go stdlib in bundled binaries

Present in the Go-built `bin/esbuild` shipped by `@esbuild/<platform>`
packages. Two paths put esbuild into the production image:

1. `twenty-client-sdk` declares `esbuild` as a runtime dep (used by its
`./generate` entry point).
2. `twenty-server` had `@lingui/vite-plugin` in `dependencies`, which
pulls `@lingui/cli` as a runtime sub-dep, which bundles `esbuild@0.21.5`
nested under `node_modules/@lingui/cli/node_modules/esbuild/`.

**Fix:**
- Bump `twenty-client-sdk`'s `esbuild` from `^0.25.0` to `^0.27.3`
(resolves to 0.27.7, built with patched Go).
- Move `@lingui/vite-plugin` from `dependencies` to `devDependencies` in
`twenty-server`. The plugin is not imported by any source file — it was
misclassified.

### Verification

Ran `yarn workspaces focus --production twenty twenty-server
twenty-emails twenty-shared twenty-client-sdk` (the same command the
Dockerfile uses) and inventoried the resulting `node_modules`. After all
three changes:

- `node_modules/esbuild/` → **0.27.7 only** (Go-patched)
- `node_modules/protobufjs/` → **7.6.0 only** (CVE-patched)

No nested copies of either package remain in the production install.

### Follow-up worth tracking separately

`esbuild` should arguably not be in `twenty-client-sdk`'s `dependencies`
at all — only the `./generate` entry point uses it, and the server never
imports that entry. Moving it to optional `peerDependencies` would stop
shipping a Go binary into the production image entirely. Out of scope
for this PR.

## Test plan

- [x] `yarn install` succeeds; `protobufjs` and `esbuild` each resolve
to a single version in production focus
- [x] `nx build twenty-client-sdk` passes
- [x] `nx typecheck twenty-server` passes
- [x] `nx build twenty-server` passes
- [x] Production focus install confirmed clean (`node_modules/esbuild`
and `node_modules/protobufjs` both single-version, both patched)
- [ ] CI green
- [ ] Re-run Trivy against the resulting image; confirm the three CVEs
no longer appear
2026-05-25 12:36:53 +00:00
EtienneandGitHub 50c8834e21 fix(billing) - skip redundant cap writes (#20882)
fixes https://sonarly.com/issue/40207
2026-05-25 12:03:18 +00:00
d54caf10c1 i18n - translations (#20885)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-25 14:10:10 +02:00
nitinandGitHub 0b38b4ffc4 fix(page-layout): respect tab layoutMode on standalone pages (#20856)
Standalone-page tabs with `layoutMode: CANVAS` were silently rendering
as GRID (border, padding, scroll). Now they render full-bleed, matching
the CANVAS contract elsewhere.

Three layered fixes:
- `getTabLayoutMode`: respect `tab.layoutMode` for `STANDALONE_PAGE`
(was hardcoded to GRID for any non-`RECORD_PAGE`)
- `getWidgetCardVariant`: CANVAS now wins regardless of page type —
refactored to early-return + exhaustive switch on `pageLayoutType`
- `FrontComponentWidgetRenderer`: removed hardcoded `overflow: auto`
(workflow/tasks/timeline widgets don't have it either)

New `getTabLayoutMode.test.ts`. Variant tests refactored to declarative
+ parameterized.

QA:

<img width="3024" height="1654" alt="CleanShot 2026-05-22 at 20 46
50@2x"
src="https://github.com/user-attachments/assets/cc61d459-6bc6-48de-ac79-d63a2ccd8957"
/>


https://github.com/user-attachments/assets/a3374e18-ad1b-4888-ab2b-d07730edccac
2026-05-25 11:59:31 +00:00
Paul RastoinandGitHub b8b115f4e3 FileStorageService Dedicated file and folder code flow + integrity check (#20831)
# Introduction

Next handling mimetype integrity check and checksum integrity check for
s3 storage type

Always expecting a trailing end slash when deleting a folder etc

## Application
Uninstalling an application now deletes all its related files

## File storage service
Making a distincton between folder path and file path

## Validation Pipeline

Every file operation in `FileStorageService.buildOnStoragePath` runs
through `validateResourcePath`, which chains three validators in order:

**1. `validateSafeRelativePath`** -- rejects path traversal attacks

| Input | Result | Error |
|---|---|---|
| `../../../etc/passwd` | Rejected | `Resource path must not contain
path traversal (..)` |
| `/etc/passwd` | Rejected | `Resource path must be relative, not
absolute` |
| `file\0.txt` | Rejected | `Resource path contains null bytes` |
| `..\\..\\etc\\passwd` | Rejected | `Resource path must not contain
backslashes` |
| _(empty)_ | Rejected | `Resource path must not be empty` |

**2. `validateFilenameIntegrity`** -- enforces safe characters, length
limits, extension required

| Input | Result | Error |
|---|---|---|
| `my folder/file.mjs` | Rejected | `A path segment contains invalid
characters...` |
| `Makefile` | Rejected | `Filename must have an extension` |
| `aaa...(256 chars).mjs` | Rejected | `A path segment exceeds the
maximum length of 255 characters` |
| `a/b/.../file.mjs` (1025+ chars) | Rejected | `Resource path exceeds
maximum length of 1024 characters` |
| `src/handlers/index.mjs` | Accepted | -- |
| `my-app/my_file.tsx` | Accepted | -- |
| `v1.0/module.config.mjs` | Accepted | -- |

Allowed characters per segment: `a-z`, `A-Z`, `0-9`, `.`, `-`, `_`

**3. `validateResourceExtension`** -- checks extension against the
`FileFolder` allowlist

| Input | FileFolder | Result | Error |
|---|---|---|---|
| `handler.js` | `BuiltLogicFunction` | Rejected | `Invalid file
extension. Allowed extensions: .mjs` |
| `card.tsx` | `BuiltFrontComponent` | Rejected | `Invalid file
extension. Allowed extensions: .mjs` |
| `script.js` | `PublicAsset` | Rejected | `Invalid file extension.
Allowed extensions: .png, .jpg, ...` |
| `index.mjs` | `BuiltLogicFunction` | Accepted | -- |
| `app.tsx` | `Source` | Accepted | -- |
| `photo.png` | `CorePicture` | Accepted | -- (unconfigured folder,
passes through) |

## Consumers

- **`FileStorageService`** -- calls `validateResourcePath`, throws
`FileStorageException` on failure (last-resort defense)
- **Resolver (`uploadApplicationFile`)** -- calls
`validateResourcePath`, throws `ApplicationException` on failure
(user-facing)
- **Flat validators** -- call `validateResourcePath`, push the error to
`validationResult.errors` (non-throwing, collects all errors)

All error messages are translated via Lingui `t` and returned in a
discriminated union `{ isValid: true } | { isValid: false, error: string
}`, letting each consumer decide how to handle failures.
2026-05-25 11:52:54 +00:00
429 changed files with 21540 additions and 3710 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "2.7.0",
"version": "2.9.0",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -80,8 +80,8 @@ export async function teardown() {
const uninstallResult = await appUninstall({ appPath: APP_PATH });
if (!uninstallResult.success) {
console.warn(
`App uninstall failed: ${uninstallResult.error?.message ?? 'Unknown error'}`,
throw new Error(
`App uninstall failed during teardown: ${JSON.stringify(uninstallResult.error, null, 2)}`,
);
}
}
@@ -0,0 +1,17 @@
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
@@ -1,6 +1,6 @@
{
"name": "twenty-partners",
"version": "0.1.0",
"version": "0.3.1",
"license": "MIT",
"engines": {
"node": "^24.5.0",
@@ -16,8 +16,13 @@
"test": "vitest run",
"test:watch": "vitest",
"seed": "tsx src/scripts/seed.ts",
"seed:prod": "ENV_FILE=.env.prod tsx src/scripts/seed.ts",
"purge": "tsx src/scripts/purge-soft-deleted.ts",
"purge:prod": "ENV_FILE=.env.prod tsx src/scripts/purge-soft-deleted.ts",
"import:dryrun": "tsx src/scripts/import-from-tft.ts",
"import:apply": "IMPORT_APPLY=1 tsx src/scripts/import-from-tft.ts"
"import:dryrun:prod": "ENV_FILE=.env.prod tsx src/scripts/import-from-tft.ts",
"import:apply": "IMPORT_APPLY=1 tsx src/scripts/import-from-tft.ts",
"import:apply:prod": "ENV_FILE=.env.prod IMPORT_APPLY=1 tsx src/scripts/import-from-tft.ts"
},
"dependencies": {
"twenty-client-sdk": "2.4.0",
@@ -3,7 +3,7 @@ export const APP_DESCRIPTION = '';
export const APPLICATION_UNIVERSAL_IDENTIFIER = 'e662fc1f-02c1-41ff-b8ba-c95a447b3965';
export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = 'ee18c3f3-ebe7-4c56-ad6d-aad555cc32db';
export const PARTNER_OBJECT_UNIVERSAL_IDENTIFIER = '39101b39-1c16-4148-9e82-45dc271bb90d';
export const PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER = '65172140-d377-41c1-a2ae-190e96fb79dd';
export const PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER = '65172140-d377-41c1-a2ae-190e96fb79dd';
export const ALL_PARTNERS_VIEW_UNIVERSAL_IDENTIFIER = '379b11d5-44d5-476b-ba7d-31d5f515c9b4';
export const ALL_MATCHED_DEALS_VIEW_UNIVERSAL_IDENTIFIER = '7a34da39-a8e1-44c7-88b4-91ceaa064920';
export const PARTNERS_NAV_UNIVERSAL_IDENTIFIER = '3fe15ab5-e38b-4914-af17-2270b210aeb2';
@@ -35,7 +35,7 @@ export const ALL_OPPORTUNITIES_NAV_UNIVERSAL_IDENTIFIER = '37944f52-cbe5-4814-a1
// Partner views + nav (harmonization)
export const PARTNER_APPLICATIONS_VIEW_UNIVERSAL_IDENTIFIER = 'b57a84ed-d7c1-420d-b0eb-348db0dac612';
export const VALIDATED_PARTNERS_VIEW_UNIVERSAL_IDENTIFIER = '13cca6a7-b9f1-4103-b011-ea2e39430899';
export const PARTNER_QUOTES_VIEW_UNIVERSAL_IDENTIFIER = 'd9db705c-795a-4a14-b891-6201149510b3';
export const PARTNER_CONTENT_VIEW_UNIVERSAL_IDENTIFIER = 'd9db705c-795a-4a14-b891-6201149510b3';
export const PARTNER_APPLICATIONS_NAV_UNIVERSAL_IDENTIFIER = '13e2334a-6b1e-4080-8c74-d11109990cc1';
export const VALIDATED_PARTNERS_NAV_UNIVERSAL_IDENTIFIER = '6aed30c6-d80f-4ac6-aab0-db5bc59e5c4b';
export const PARTNER_QUOTES_NAV_UNIVERSAL_IDENTIFIER = '3543723d-80c1-466a-ac35-86f7b284917b';
export const PARTNER_CONTENT_NAV_UNIVERSAL_IDENTIFIER = '3543723d-80c1-466a-ac35-86f7b284917b';
@@ -0,0 +1,22 @@
import { FieldType, OnDeleteAction, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const PARTNER_CONTENT_CUSTOMER_COMPANY_FIELD_ID = 'd448f6be-533f-4c43-a70f-55dc361dcdd7';
export const PARTNER_CONTENTS_ON_COMPANY_FIELD_ID = '941e7707-1b3d-47d4-b13a-45c6628c1b3d';
export default defineField({
universalIdentifier: PARTNER_CONTENT_CUSTOMER_COMPANY_FIELD_ID,
objectUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'customerCompany',
label: 'Customer Company',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENTS_ON_COMPANY_FIELD_ID,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'customerCompanyId',
},
});
@@ -0,0 +1,22 @@
import { FieldType, OnDeleteAction, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const PARTNER_CONTENT_CUSTOMER_PERSON_FIELD_ID = 'f17547be-76aa-4231-bd1a-3f57bb1ae323';
export const PARTNER_CONTENTS_ON_PERSON_FIELD_ID = 'fae42f4e-b054-4267-a761-81a6792f7c12';
export default defineField({
universalIdentifier: PARTNER_CONTENT_CUSTOMER_PERSON_FIELD_ID,
objectUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'customerPerson',
label: 'Customer Person',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENTS_ON_PERSON_FIELD_ID,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'customerPersonId',
},
});
@@ -0,0 +1,22 @@
import { FieldType, OnDeleteAction, RelationType, defineField } from 'twenty-sdk/define';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER, PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const PARTNER_CONTENT_PARTNER_FIELD_ID = '1774738e-96a1-43e2-aca4-d3c7cc794c50';
export const PARTNER_CONTENTS_ON_PARTNER_FIELD_ID = 'ac7995f1-7ccf-4607-827b-0788eeacaee0';
export default defineField({
universalIdentifier: PARTNER_CONTENT_PARTNER_FIELD_ID,
objectUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'partner',
label: 'Partner',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENTS_ON_PARTNER_FIELD_ID,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'partnerId',
},
});
@@ -0,0 +1,18 @@
import { FieldType, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_CONTENTS_ON_COMPANY_FIELD_ID, PARTNER_CONTENT_CUSTOMER_COMPANY_FIELD_ID } from './partner-content-customer-company.field';
export default defineField({
universalIdentifier: PARTNER_CONTENTS_ON_COMPANY_FIELD_ID,
objectUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier,
type: FieldType.RELATION,
name: 'partnerContents',
label: 'Partner Content',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENT_CUSTOMER_COMPANY_FIELD_ID,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -0,0 +1,18 @@
import { FieldType, RelationType, defineField } from 'twenty-sdk/define';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER, PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_CONTENTS_ON_PARTNER_FIELD_ID, PARTNER_CONTENT_PARTNER_FIELD_ID } from './partner-content-partner.field';
export default defineField({
universalIdentifier: PARTNER_CONTENTS_ON_PARTNER_FIELD_ID,
objectUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'partnerContents',
label: 'Partner Content',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENT_PARTNER_FIELD_ID,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -0,0 +1,18 @@
import { FieldType, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_CONTENTS_ON_PERSON_FIELD_ID, PARTNER_CONTENT_CUSTOMER_PERSON_FIELD_ID } from './partner-content-customer-person.field';
export default defineField({
universalIdentifier: PARTNER_CONTENTS_ON_PERSON_FIELD_ID,
objectUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
type: FieldType.RELATION,
name: 'partnerContents',
label: 'Partner Content',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_CONTENT_CUSTOMER_PERSON_FIELD_ID,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -1,22 +0,0 @@
import { FieldType, OnDeleteAction, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const PARTNER_QUOTE_OPPORTUNITY_FIELD_ID = '36684f3e-f01a-4270-8f34-78966747dd64';
export const PARTNER_QUOTES_ON_OPPORTUNITY_FIELD_ID = '4857f339-a051-4cdb-bd8a-6219b933d1ce';
export default defineField({
universalIdentifier: PARTNER_QUOTE_OPPORTUNITY_FIELD_ID,
objectUniversalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'opportunity',
label: 'Opportunity',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.opportunity.universalIdentifier,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_QUOTES_ON_OPPORTUNITY_FIELD_ID,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'opportunityId',
},
});
@@ -1,22 +0,0 @@
import { FieldType, OnDeleteAction, RelationType, defineField } from 'twenty-sdk/define';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER, PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const PARTNER_QUOTE_PARTNER_FIELD_ID = '1774738e-96a1-43e2-aca4-d3c7cc794c50';
export const PARTNER_QUOTES_ON_PARTNER_FIELD_ID = 'ac7995f1-7ccf-4607-827b-0788eeacaee0';
export default defineField({
universalIdentifier: PARTNER_QUOTE_PARTNER_FIELD_ID,
objectUniversalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'partner',
label: 'Partner',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_QUOTES_ON_PARTNER_FIELD_ID,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'partnerId',
},
});
@@ -1,18 +0,0 @@
import { FieldType, RelationType, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS, defineField } from 'twenty-sdk/define';
import { PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_QUOTES_ON_OPPORTUNITY_FIELD_ID, PARTNER_QUOTE_OPPORTUNITY_FIELD_ID } from './partner-quote-opportunity.field';
export default defineField({
universalIdentifier: PARTNER_QUOTES_ON_OPPORTUNITY_FIELD_ID,
objectUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.opportunity.universalIdentifier,
type: FieldType.RELATION,
name: 'partnerQuotes',
label: 'Partner Quotes',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_QUOTE_OPPORTUNITY_FIELD_ID,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -1,18 +0,0 @@
import { FieldType, RelationType, defineField } from 'twenty-sdk/define';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER, PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_QUOTES_ON_PARTNER_FIELD_ID, PARTNER_QUOTE_PARTNER_FIELD_ID } from './partner-quote-partner.field';
export default defineField({
universalIdentifier: PARTNER_QUOTES_ON_PARTNER_FIELD_ID,
objectUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
type: FieldType.RELATION,
name: 'partnerQuotes',
label: 'Partner Quotes',
isNullable: true,
relationTargetObjectMetadataUniversalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
relationTargetFieldMetadataUniversalIdentifier: PARTNER_QUOTE_PARTNER_FIELD_ID,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -1,15 +1,15 @@
import { NavigationMenuItemType, defineNavigationMenuItem } from 'twenty-sdk/define';
import {
PARTNER_QUOTES_NAV_UNIVERSAL_IDENTIFIER,
PARTNER_QUOTES_VIEW_UNIVERSAL_IDENTIFIER,
PARTNER_CONTENT_NAV_UNIVERSAL_IDENTIFIER,
PARTNER_CONTENT_VIEW_UNIVERSAL_IDENTIFIER,
} from 'src/constants/universal-identifiers';
export default defineNavigationMenuItem({
universalIdentifier: PARTNER_QUOTES_NAV_UNIVERSAL_IDENTIFIER,
universalIdentifier: PARTNER_CONTENT_NAV_UNIVERSAL_IDENTIFIER,
type: NavigationMenuItemType.VIEW,
icon: 'IconFileDollar',
icon: 'IconQuote',
position: 3,
folderUniversalIdentifier: '857be3b5-82c6-45f7-b546-e20a8a97be8d',
viewUniversalIdentifier: PARTNER_QUOTES_VIEW_UNIVERSAL_IDENTIFIER,
viewUniversalIdentifier: PARTNER_CONTENT_VIEW_UNIVERSAL_IDENTIFIER,
});
@@ -1,15 +1,15 @@
import { FieldType, defineObject } from 'twenty-sdk/define';
import { PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export default defineObject({
universalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
nameSingular: 'partnerQuote',
namePlural: 'partnerQuotes',
labelSingular: 'Partner Quote',
labelPlural: 'Partner Quotes',
description: 'A quote a partner submitted for a customer deal',
icon: 'IconFileDollar',
universalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
nameSingular: 'partnerContent',
namePlural: 'partnerContents',
labelSingular: 'Partner Content',
labelPlural: 'Partner Content',
description: 'Marketing content involving a partner: quotes, case studies, logos',
icon: 'IconQuote',
isSearchable: true,
labelIdentifierFieldMetadataUniversalIdentifier: '9e688624-83d2-4715-8b18-80492a6de2b6',
fields: [
@@ -21,6 +21,20 @@ export default defineObject({
icon: 'IconTag',
defaultValue: "''",
},
{
universalIdentifier: '1d926e6e-6ac1-4d60-ab3d-a73114005692',
type: FieldType.MULTI_SELECT,
name: 'contentType',
label: 'Content Type',
icon: 'IconCategory',
isNullable: true,
options: [
{ id: '07f85e5b-0d70-416b-9884-256e469ed532', value: 'CUSTOMER_QUOTE', label: 'Customer quote', position: 0, color: 'blue' },
{ id: '108b2358-d04d-4fdc-83df-a5978d39f66f', value: 'CASE_STUDY', label: 'Case study', position: 1, color: 'green' },
{ id: 'eb45f371-f93c-4c45-9c8a-f29e1a58b7e4', value: 'PARTNER_QUOTE', label: 'Partner quote', position: 2, color: 'orange' },
{ id: '3356c8a0-41cd-47c3-a293-5862138abc1a', value: 'LOGO', label: 'Logo', position: 3, color: 'purple' },
],
},
{
universalIdentifier: 'a0fe09c4-c1f4-4b96-93c6-d7ec38f1166a',
type: FieldType.SELECT,
@@ -45,21 +59,21 @@ export default defineObject({
isNullable: true,
},
{
universalIdentifier: '2cbe67e3-24ec-421b-bab5-50f3306c2391',
type: FieldType.CURRENCY,
name: 'amount',
label: 'Amount',
icon: 'IconCoin',
universalIdentifier: 'da7e9094-e2c3-47d3-924f-a1d4d3c717ed',
type: FieldType.LINKS,
name: 'interview',
label: 'Interview',
icon: 'IconMicrophone',
isNullable: true,
},
{
universalIdentifier: 'f303369e-288c-4a48-9920-c1de0ad9a159',
type: FieldType.FILES,
name: 'quoteFile',
label: 'Quote File',
name: 'documents',
label: 'Documents',
icon: 'IconPaperclip',
isNullable: true,
universalSettings: { maxNumberOfValues: 1 },
universalSettings: { maxNumberOfValues: 10 },
},
],
});
@@ -23,7 +23,7 @@
// tsx src/scripts/import-from-tft.ts
import { config } from 'dotenv';
config({ path: '.env.local' });
config({ path: process.env.ENV_FILE ?? '.env.local' });
import { CoreApiClient } from 'twenty-client-sdk/core';
@@ -76,6 +76,17 @@ const PARTNER_STAGE_TO_VALIDATION: Record<string, string> = {
REJECTED: 'REJECTED',
};
// TFT person.partnerTimezone -> our Partner.region (MULTI_SELECT). TFT's value is a
// coarse timezone band, not a geography, so each maps to every region it plausibly
// covers. OTHER carries no signal -> no region. Region stays empty if unmapped.
const TIMEZONE_TO_REGION: Record<string, string[]> = {
AMERICAS: ['US', 'LATAM'],
EMEA: ['EUROPE', 'MENA', 'AFRICA'],
WEST_ASIA: ['MENA', 'APAC'],
EAST_ASIA_OCEANIA: ['APAC'],
OTHER: [],
};
// Local SELECT option sets, for preflight coverage checks (a TFT value not in
// these would fail a real write). Keep in sync with src/objects + src/fields.
const LOCAL_OPTIONS: Record<string, Set<string>> = {
@@ -101,6 +112,30 @@ const edges = (result: any, key: string): any[] =>
const uniq = (values: (string | undefined | null)[]): string[] =>
[...new Set(values.filter((v): v is string => !!v))];
// Normalize a domain for dedup. Twenty's company domain is a unique key but is
// stored with an https:// prefix, while TFT values vary, so compare on a canonical
// form (no protocol, no www, no trailing slash, lowercased).
const normDomain = (d?: string | null): string | undefined =>
d
? d.trim().toLowerCase().replace(/^https?:\/\//, '').replace(/^www\./, '').replace(/\/+$/, '') || undefined
: undefined;
// Distinct non-empty values across rows, for the preflight report. Flattens array
// fields (e.g. partnerScope, typeCustom) and stringifies, so scalar and
// multi-select fields share one path. Derived from the already-fetched source
// rows — no per-loop bookkeeping needed.
const distinct = <TRow>(rows: TRow[], pick: (row: TRow) => unknown): string[] =>
[
...new Set(
rows.flatMap((row) => {
const value = pick(row);
return Array.isArray(value) ? value : value != null ? [value] : [];
}),
),
]
.map(String)
.sort();
async function main() {
console.log(`[import] mode: ${APPLY ? 'APPLY (writing to local)' : 'DRY-RUN (no writes)'}`);
const local = new CoreApiClient({
@@ -114,26 +149,10 @@ async function main() {
if (APPLY && writes++ > 0) await new Promise((r) => setTimeout(r, 750));
};
// Distinct TFT values seen, for the preflight coverage report.
const seen: Record<string, Set<string>> = {
partnerStage: new Set(),
partnerTier: new Set(),
partnerScope: new Set(),
typeOfTeam: new Set(),
oppStage: new Set(),
hostingType: new Set(),
subscriptionType: new Set(),
subscriptionFrequency: new Set(),
quoteStatus: new Set(),
typeCustom: new Set(),
};
const note = (bucket: string, value?: string | null) => {
if (value) seen[bucket].add(value);
};
// ---------------------------------------------------------------------
// 1. Read all three TFT datasets (raw fetch; not rate-limited by local).
// ---------------------------------------------------------------------
console.log('[import] fetching TFT people...');
const tftPeople = edges(
await tftQuery(`query {
people(first: 500, filter: { partnerStage: { in: ["APPLICATION","POTENTIAL_PARTNER","PARTNER","FORMER_PARTNER","REJECTED"] } }) {
@@ -143,7 +162,7 @@ async function main() {
emails { primaryEmail }
city jobTitle
linkedinLink { primaryLinkUrl }
partnerStage partnerTier partnerScope partnerTypeOfTeam partnerIsAvailable partnerSkills
partnerStage partnerTier partnerScope partnerTypeOfTeam partnerTimezone partnerIsAvailable partnerSkills
partnerBudgetMinimum { amountMicros currencyCode }
partnerBudgetAverage { amountMicros currencyCode }
company { id name domainName { primaryLinkUrl } }
@@ -152,7 +171,8 @@ async function main() {
}`),
'people',
);
const tftOpps = edges(
console.log('[import] fetching TFT opportunities...');
const tftOppsAll = edges(
await tftQuery(`query {
opportunities(first: 500) {
edges { node {
@@ -166,16 +186,32 @@ async function main() {
}`),
'opportunities',
);
// Only import opportunities linked to a partner. The rest is TFT's general sales
// pipeline (mostly LOST/IDENTIFIED) — noise for a partners app. Every partner
// stage (INTRODUCED/WORKING) only ever appears on partner-linked opps anyway.
const tftOpps = tftOppsAll.filter((o: any) => o.partner?.id);
console.log(`[import] opportunities: ${tftOpps.length} partner-linked of ${tftOppsAll.length} total (skipping ${tftOppsAll.length - tftOpps.length} unlinked)`);
console.log('[import] fetching TFT partner content...');
const tftContent = edges(
await tftQuery(`query {
customerContents(first: 500) {
edges { node { id name status approvalDate typeCustom partnerPerson { id } } }
edges { node {
id name status approvalDate typeCustom
interview { primaryLinkUrl }
partnerPerson { id }
customerCompany { id name domainName { primaryLinkUrl } }
customerPerson { id }
} }
}
}`),
'customerContents',
);
const quotes = tftContent.filter((c: any) => Array.isArray(c.typeCustom) && c.typeCustom.includes('PARTNER_QUOTE'));
console.log(`[import] TFT: ${tftPeople.length} partner-people, ${tftOpps.length} opportunities, ${quotes.length} partner quotes`);
// Import all content TYPES (quotes, case studies, logos) but only records that
// involve a partner. Customer-only content (no partnerPerson) is noise for the
// partners app; a partner-linked case study/quote should show on the partner.
const contentRecords = tftContent.filter((c: any) => c.partnerPerson?.id);
console.log(`[import] TFT: ${tftPeople.length} partner-people, ${tftOpps.length} opportunities, ${tftContent.length} content records`);
console.log(`[import] partner content: ${contentRecords.length} partner-linked of ${tftContent.length} total (skipping ${tftContent.length - contentRecords.length} customer-only)`);
const personSlug = (p: any): string =>
slugify([p.name?.firstName, p.name?.lastName].filter(Boolean).join(' ').trim() || 'Unknown partner') || p.id;
@@ -183,6 +219,7 @@ async function main() {
// ---------------------------------------------------------------------
// 2. Batched existence lookups against local (one `in` query per object).
// ---------------------------------------------------------------------
console.log('[import] checking existing records in target workspace...');
const partnerSlugs = uniq(tftPeople.map(personSlug));
const partnerIdBySlug = new Map<string, string>(
partnerSlugs.length
@@ -195,17 +232,33 @@ async function main() {
: [],
);
const companyNames = uniq([...tftPeople.map((p: any) => p.company?.name), ...tftOpps.map((o: any) => o.company?.name)]);
const companyIdByName = new Map<string, string>(
companyNames.length
? edges(
await local.query({
companies: { __args: { filter: { name: { in: companyNames } }, first: 500 }, edges: { node: { id: true, name: true } } },
} as any),
'companies',
).map((n: any) => [n.name, n.id])
: [],
);
// Fetch existing companies and index by BOTH name and normalized domain. Twenty
// enforces uniqueness on domain, so dedup must be domain-aware: the same company
// can arrive under different names (e.g. "Acme" vs "acme.com") across TFT people,
// opps and content, and creating a second one collides on the domain constraint.
// Page through ALL companies (not just the first 500): these dedupe maps must
// be complete, or upsertCompany would create domain-colliding duplicates for
// companies that live beyond the first page in a larger workspace.
const existingCompanies: any[] = [];
let companiesCursor: string | undefined;
for (;;) {
const page: any = await local.query({
companies: {
__args: { filter: {}, first: 200, ...(companiesCursor ? { after: companiesCursor } : {}) },
edges: { node: { id: true, name: true, domainName: { primaryLinkUrl: true } } },
pageInfo: { hasNextPage: true, endCursor: true },
},
} as any);
existingCompanies.push(...edges(page, 'companies'));
if (!page?.companies?.pageInfo?.hasNextPage) break;
companiesCursor = page.companies.pageInfo.endCursor;
}
const companyIdByName = new Map<string, string>(existingCompanies.map((n: any) => [n.name, n.id]));
const companyIdByDomain = new Map<string, string>();
for (const c of existingCompanies) {
const nd = normDomain(c.domainName?.primaryLinkUrl);
if (nd && !companyIdByDomain.has(nd)) companyIdByDomain.set(nd, c.id);
}
const oppTftIds = uniq(tftOpps.filter((o: any) => o.name).map((o: any) => o.id));
const oppIdByTftId = new Map<string, string>(
@@ -219,14 +272,18 @@ async function main() {
: [],
);
const quoteNames = uniq(quotes.map((q: any) => q.name || 'Partner quote'));
const quoteIdByName = new Map<string, string>(
quoteNames.length
// Unnamed content upserts by name, so a constant fallback would make every
// unnamed record collide on one key (collapsing them on re-run). Key the
// fallback on the TFT id so each unnamed record stays distinct.
const contentName = (c: any): string => c.name || `Partner content ${c.id}`;
const contentNames = uniq(contentRecords.map(contentName));
const contentIdByName = new Map<string, string>(
contentNames.length
? edges(
await local.query({
partnerQuotes: { __args: { filter: { name: { in: quoteNames } }, first: 500 }, edges: { node: { id: true, name: true } } },
partnerContents: { __args: { filter: { name: { in: contentNames } }, first: 500 }, edges: { node: { id: true, name: true } } },
} as any),
'partnerQuotes',
'partnerContents',
).map((n: any) => [n.name, n.id])
: [],
);
@@ -238,43 +295,102 @@ async function main() {
const upsertCompany = async (name?: string, domain?: string): Promise<string | undefined> => {
if (!name) return undefined;
if (companyIdByName.has(name)) return companyIdByName.get(name);
const nd = normDomain(domain);
// Same company under a different name but same domain — reuse it.
if (nd && companyIdByDomain.has(nd)) {
const existingId = companyIdByDomain.get(nd) as string;
companyIdByName.set(name, existingId);
return existingId;
}
let id = `dry:company:${name}`;
if (APPLY) {
await pace();
const created: any = await local.mutation({
createCompany: {
__args: { data: { name, ...(domain ? { domainName: { primaryLinkUrl: domain } } : {}) } },
id: true,
},
} as any);
id = created.createCompany.id;
try {
const created: any = await local.mutation({
createCompany: {
__args: { data: { name, ...(domain ? { domainName: { primaryLinkUrl: domain } } : {}) } },
id: true,
},
} as any);
id = created.createCompany.id;
} catch (err) {
// Fallback: createCompany failed, almost certainly because the domain
// already exists (Twenty enforces a unique domain) on a company we
// didn't index. Re-find it and reuse instead of failing the import.
// `ilike` is a substring match — and the stored value carries an
// https:// prefix so we can't `eq` the normalized form — so it can
// return the wrong company ("acme.com" also matches "notacme.com" or
// "acme.com.br"). Confirm an exact normalized-domain match before reuse.
if (!nd) throw err;
await pace();
const candidates = edges(
await local.query({
companies: { __args: { filter: { domainName: { primaryLinkUrl: { ilike: `%${nd}%` } } }, first: 20 }, edges: { node: { id: true, domainName: { primaryLinkUrl: true } } } },
} as any),
'companies',
);
const match = candidates.find((c: any) => normDomain(c.domainName?.primaryLinkUrl) === nd);
if (!match?.id) throw err;
id = match.id;
console.log(`[import] company "${name}" reused existing by domain ${nd}`);
}
}
companyIdByName.set(name, id);
if (nd) companyIdByDomain.set(nd, id);
return id;
};
const budgetCurrency = (amount: any) =>
amount?.amountMicros != null ? { amountMicros: amount.amountMicros, currencyCode: amount.currencyCode ?? 'USD' } : undefined;
// Generic create/update dispatch shared by partners, opportunities and content.
// Owns pacing + APPLY-gating + the create-vs-update branch, so each loop below
// only builds its `data`. genql keys a mutation by the object name, so the
// create<Object>/update<Object> names are derived from one argument. Companies
// keep their own upsert (above) because of the domain-collision fallback.
// Returns the row id: the real id on APPLY, a synthetic dry id otherwise so the
// relation mapping in dry-run still resolves to a stable placeholder.
const upsert = async (
object: 'Partner' | 'Opportunity' | 'PartnerContent',
existingId: string | undefined,
data: Record<string, unknown>,
dryKey: string,
): Promise<string> => {
if (!APPLY) return existingId ?? `dry:${object}:${dryKey}`;
await pace();
if (existingId) {
await local.mutation({ [`update${object}`]: { __args: { id: existingId, data }, id: true } } as any);
return existingId;
}
const created: any = await local.mutation({ [`create${object}`]: { __args: { data }, id: true } } as any);
return created[`create${object}`].id;
};
// -- Partners (upsert by slug) --
console.log(`[import] upserting ${tftPeople.length} partners...`);
const localPartnerIdByTftPersonId = new Map<string, string>();
let partnersCreated = 0;
let partnersUpdated = 0;
let partnersDone = 0;
for (const p of tftPeople) {
note('partnerStage', p.partnerStage);
note('partnerTier', p.partnerTier);
(Array.isArray(p.partnerScope) ? p.partnerScope : []).forEach((s: string) => note('partnerScope', s));
note('typeOfTeam', p.partnerTypeOfTeam);
const slug = personSlug(p);
const companyId = await upsertCompany(p.company?.name, p.company?.domainName?.primaryLinkUrl);
// Timezone band -> geographic region(s). Unmapped/OTHER -> no region.
const region = TIMEZONE_TO_REGION[p.partnerTimezone] ?? [];
// A partner scoped for hosting is, by definition, a self-host expert.
const scope = Array.isArray(p.partnerScope) ? p.partnerScope : [];
const deploymentExpertise = scope.includes('HOSTING_ENVIRONMENT') ? ['SELF_HOST'] : [];
const data: Record<string, unknown> = {
name: [p.name?.firstName, p.name?.lastName].filter(Boolean).join(' ').trim() || 'Unknown partner',
slug,
validationStage: PARTNER_STAGE_TO_VALIDATION[p.partnerStage] ?? 'APPLICATION',
availability: p.partnerIsAvailable ? 'AVAILABLE' : 'UNAVAILABLE',
// TFT has no language data; default everyone to English.
languagesSpoken: ['ENGLISH'],
...(p.partnerTier ? { partnerTier: p.partnerTier } : {}),
...(Array.isArray(p.partnerScope) && p.partnerScope.length ? { partnerScope: p.partnerScope } : {}),
...(scope.length ? { partnerScope: scope } : {}),
...(region.length ? { region } : {}),
...(deploymentExpertise.length ? { deploymentExpertise } : {}),
...(p.partnerTypeOfTeam ? { typeOfTeam: p.partnerTypeOfTeam } : {}),
...(Array.isArray(p.partnerSkills) && p.partnerSkills.length ? { skills: p.partnerSkills } : {}),
...(p.city ? { city: p.city } : {}),
@@ -284,39 +400,29 @@ async function main() {
...(companyId && APPLY ? { companyId } : {}),
};
let partnerId = partnerIdBySlug.get(slug);
if (partnerId) {
if (APPLY) {
await pace();
await local.mutation({ updatePartner: { __args: { id: partnerId, data }, id: true } } as any);
}
const existingId = partnerIdBySlug.get(slug);
const partnerId = await upsert('Partner', existingId, data, slug);
if (existingId) {
partnersUpdated++;
} else {
if (APPLY) {
await pace();
const created: any = await local.mutation({ createPartner: { __args: { data }, id: true } } as any);
partnerId = created.createPartner.id;
} else {
partnerId = `dry:partner:${slug}`;
}
partnerIdBySlug.set(slug, partnerId as string);
partnerIdBySlug.set(slug, partnerId);
partnersCreated++;
}
localPartnerIdByTftPersonId.set(p.id, partnerId as string);
localPartnerIdByTftPersonId.set(p.id, partnerId);
partnersDone++;
if (partnersDone % 10 === 0 || partnersDone === tftPeople.length)
console.log(`[import] partners ${partnersDone}/${tftPeople.length} (created=${partnersCreated} updated=${partnersUpdated})`);
}
console.log(`[import] partners created=${partnersCreated} updated=${partnersUpdated}`);
console.log(`[import] partners done: created=${partnersCreated} updated=${partnersUpdated}`);
// -- Opportunities (upsert by tftOpportunityId) --
console.log(`[import] upserting ${tftOpps.length} opportunities...`);
let oppsCreated = 0;
let oppsUpdated = 0;
let oppsPartnerLinked = 0;
let oppsDone = 0;
for (const o of tftOpps) {
if (!o.name) continue;
note('oppStage', o.stage);
note('hostingType', o.hostingType);
note('subscriptionType', o.subscriptionType);
note('subscriptionFrequency', o.subscriptionFrequence);
const companyId = await upsertCompany(o.company?.name, o.company?.domainName?.primaryLinkUrl);
const partnerId = o.partner?.id ? localPartnerIdByTftPersonId.get(o.partner.id) : undefined;
if (partnerId) oppsPartnerLinked++;
@@ -338,58 +444,44 @@ async function main() {
};
const existingId = oppIdByTftId.get(o.id);
if (existingId) {
if (APPLY) {
await pace();
await local.mutation({ updateOpportunity: { __args: { id: existingId, data }, id: true } } as any);
}
oppsUpdated++;
} else {
if (APPLY) {
await pace();
await local.mutation({ createOpportunity: { __args: { data }, id: true } } as any);
}
oppsCreated++;
}
await upsert('Opportunity', existingId, data, o.id);
if (existingId) oppsUpdated++;
else oppsCreated++;
oppsDone++;
if (oppsDone % 20 === 0 || oppsDone === tftOpps.length)
console.log(`[import] opportunities ${oppsDone}/${tftOpps.length} (created=${oppsCreated} updated=${oppsUpdated})`);
}
console.log(`[import] opportunities created=${oppsCreated} updated=${oppsUpdated} (partner-linked=${oppsPartnerLinked})`);
console.log(`[import] opportunities done: created=${oppsCreated} updated=${oppsUpdated} (partner-linked=${oppsPartnerLinked})`);
// -- Partner quotes (upsert by name) --
let quotesCreated = 0;
let quotesUpdated = 0;
tftContent.forEach((c: any) => (Array.isArray(c.typeCustom) ? c.typeCustom : []).forEach((t: string) => note('typeCustom', t)));
for (const q of quotes) {
note('quoteStatus', q.status);
const name = q.name || 'Partner quote';
const partnerId = q.partnerPerson?.id ? localPartnerIdByTftPersonId.get(q.partnerPerson.id) : undefined;
// -- Partner content (upsert by name) --
console.log(`[import] upserting ${contentRecords.length} content records...`);
let contentCreated = 0;
let contentUpdated = 0;
for (const c of contentRecords) {
const name = contentName(c);
const partnerId = c.partnerPerson?.id ? localPartnerIdByTftPersonId.get(c.partnerPerson.id) : undefined;
const customerCompanyId = await upsertCompany(c.customerCompany?.name, c.customerCompany?.domainName?.primaryLinkUrl);
const data: Record<string, unknown> = {
name,
...(q.status ? { status: q.status } : {}),
...(q.approvalDate ? { approvalDate: q.approvalDate } : {}),
...(Array.isArray(c.typeCustom) && c.typeCustom.length ? { contentType: c.typeCustom } : {}),
...(c.status ? { status: c.status } : {}),
...(c.approvalDate ? { approvalDate: c.approvalDate } : {}),
...(c.interview?.primaryLinkUrl ? { interview: { primaryLinkUrl: c.interview.primaryLinkUrl } } : {}),
...(partnerId && APPLY ? { partnerId } : {}),
...(customerCompanyId && APPLY ? { customerCompanyId } : {}),
};
const existingId = quoteIdByName.get(name);
if (existingId) {
if (APPLY) {
await pace();
await local.mutation({ updatePartnerQuote: { __args: { id: existingId, data }, id: true } } as any);
}
quotesUpdated++;
} else {
if (APPLY) {
await pace();
await local.mutation({ createPartnerQuote: { __args: { data }, id: true } } as any);
}
quotesCreated++;
}
const existingId = contentIdByName.get(name);
await upsert('PartnerContent', existingId, data, name);
if (existingId) contentUpdated++;
else contentCreated++;
}
console.log(`[import] partner quotes created=${quotesCreated} updated=${quotesUpdated}`);
console.log(`[import] partner content created=${contentCreated} updated=${contentUpdated}`);
// ---------------------------------------------------------------------
// 4. Preflight: distinct TFT values vs local option coverage.
// 4. Preflight: distinct TFT values vs local option coverage. Derived
// directly from the fetched source rows (no per-loop bookkeeping).
// ---------------------------------------------------------------------
const report = (label: string, bucket: string, optionKey?: string) => {
const values = [...seen[bucket]].sort();
const report = (label: string, values: string[], optionKey?: string) => {
const allowed = optionKey ? LOCAL_OPTIONS[optionKey] : undefined;
const uncovered = allowed ? values.filter((v) => !allowed.has(v)) : [];
console.log(
@@ -397,21 +489,27 @@ async function main() {
(uncovered.length ? ` ⚠️ NOT IN LOCAL OPTIONS: ${uncovered.join(', ')}` : ''),
);
};
const partnerStages = distinct(tftPeople, (p: any) => p.partnerStage);
const oppStages = distinct(tftOpps, (o: any) => o.stage);
const timezones = distinct(tftPeople, (p: any) => p.partnerTimezone);
console.log('--- preflight: distinct TFT values seen ---');
report('partnerStage (-> validationStage map)', 'partnerStage');
report('partnerTier', 'partnerTier', 'partnerTier');
report('partnerScope', 'partnerScope', 'partnerScope');
report('typeOfTeam', 'typeOfTeam', 'typeOfTeam');
report('opp stage (-> matchStatus map)', 'oppStage');
report('hostingType', 'hostingType', 'hostingType');
report('subscriptionType', 'subscriptionType', 'subscriptionType');
report('subscriptionFrequency', 'subscriptionFrequency', 'subscriptionFrequency');
report('quote status', 'quoteStatus', 'quoteStatus');
report('customerContent typeCustom', 'typeCustom');
const unmappedStages = [...seen.partnerStage].filter((s) => !(s in PARTNER_STAGE_TO_VALIDATION));
const unmappedOpps = [...seen.oppStage].filter((s) => !(s in STAGE_TO_MATCH_STATUS));
report('partnerStage (-> validationStage map)', partnerStages);
report('partnerTier', distinct(tftPeople, (p: any) => p.partnerTier), 'partnerTier');
report('partnerScope', distinct(tftPeople, (p: any) => p.partnerScope), 'partnerScope');
report('typeOfTeam', distinct(tftPeople, (p: any) => p.partnerTypeOfTeam), 'typeOfTeam');
report('partnerTimezone (-> region map)', timezones);
report('opp stage (-> matchStatus map)', oppStages);
report('hostingType', distinct(tftOpps, (o: any) => o.hostingType), 'hostingType');
report('subscriptionType', distinct(tftOpps, (o: any) => o.subscriptionType), 'subscriptionType');
report('subscriptionFrequency', distinct(tftOpps, (o: any) => o.subscriptionFrequence), 'subscriptionFrequency');
report('quote status', distinct(contentRecords, (c: any) => c.status), 'quoteStatus');
report('customerContent typeCustom', distinct(contentRecords, (c: any) => c.typeCustom));
const unmappedStages = partnerStages.filter((s) => !(s in PARTNER_STAGE_TO_VALIDATION));
const unmappedOpps = oppStages.filter((s) => !(s in STAGE_TO_MATCH_STATUS));
const unmappedTz = timezones.filter((t) => !(t in TIMEZONE_TO_REGION));
if (unmappedStages.length) console.log(`[preflight] ⚠️ partnerStage not mapped: ${unmappedStages.join(', ')}`);
if (unmappedOpps.length) console.log(`[preflight] ⚠️ opp stage not mapped: ${unmappedOpps.join(', ')}`);
if (unmappedTz.length) console.log(`[preflight] ⚠️ partnerTimezone not mapped: ${unmappedTz.join(', ')}`);
}
main().catch((err) => {
@@ -0,0 +1,59 @@
// Hard-destroy soft-deleted records that block re-imports.
//
// Twenty SOFT-deletes (sets deletedAt); the row stays in the DB and keeps holding
// unique constraints (e.g. company domain, partner slug). But normal queries —
// including the import's existence checks — exclude soft-deleted rows. So after a
// UI "delete" or a partial import that got rolled back, re-running the import hits
// "A duplicate entry was detected" on records it cannot see. This purges those
// ghosts permanently so idempotent upserts work again.
//
// Only touches soft-deleted rows (deletedAt IS NOT NULL); active/default data is
// left untouched. One bulk destroy per object, so it is not rate-limited.
//
// yarn purge # against .env.local
// yarn purge:prod # against .env.prod
//
import { config } from 'dotenv';
config({ path: process.env.ENV_FILE ?? '.env.local' });
const requireEnv = (name: string): string => {
const value = process.env[name];
if (!value) throw new Error(`Missing ${name} env var`);
return value;
};
// Objects the import writes to. partners + partnerContents are app custom objects;
// companies + opportunities are standard but populated by the import.
const OBJECTS = ['companies', 'partners', 'opportunities', 'partnerContents'] as const;
const gql = async (url: string, key: string, query: string): Promise<any> => {
const response = await fetch(`${url.replace(/\/$/, '')}/graphql`, {
method: 'POST',
headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ query }),
});
const json: any = await response.json();
if (json.errors?.length) throw new Error(JSON.stringify(json.errors));
return json.data;
};
async function main() {
const url = requireEnv('TWENTY_PARTNERS_API_URL');
const key = requireEnv('TWENTY_PARTNERS_API_KEY');
console.log(`[purge] target: ${url} — destroying soft-deleted rows only`);
for (const obj of OBJECTS) {
// destroy<Object>s is the bulk variant; capitalise + already-plural names.
const mutationName = `destroy${obj.charAt(0).toUpperCase()}${obj.slice(1)}`;
const data = await gql(url, key, `mutation { ${mutationName}(filter: { deletedAt: { is: NOT_NULL } }) { id } }`);
const destroyed = data[mutationName]?.length ?? 0;
console.log(`[purge] ${obj}: destroyed ${destroyed} soft-deleted`);
}
console.log('[purge] done');
}
main().catch((err) => {
console.error(err);
process.exit(1);
});
@@ -11,7 +11,7 @@
// tsx src/scripts/seed.ts
import { config } from 'dotenv';
config({ path: '.env.local' });
config({ path: process.env.ENV_FILE ?? '.env.local' });
import { CoreApiClient } from 'twenty-client-sdk/core';
@@ -89,13 +89,13 @@ const OPPORTUNITIES: Opp[] = [
{ name: 'Sunrise — vendor onboarding', companyName: 'Sunrise Logistics', matchStatus: 'LOST', numberOfSeats: 10, hostingType: 'CLOUD', subscriptionType: 'PRO', subscriptionFrequency: 'MONTHLY' },
];
type Quote = { name: string; status: string; partnerSlug: string; oppName: string };
type Quote = { name: string; status: string; partnerSlug: string; contentType: string[] };
const QUOTES: Quote[] = [
{ name: 'Sunrise APAC fleet — Nine Dots quote', status: 'WIP', partnerSlug: 'nine-dots-ventures', oppName: 'Sunrise — APAC fleet CRM' },
{ name: 'Helix clinical — NetZero quote', status: 'INTERVIEW_SCHEDULED', partnerSlug: 'netzero-systems', oppName: 'Helix Bio — clinical trials CRM' },
{ name: 'Acme rollout — Elevate quote', status: 'UNDER_CUSTOMER_PARTNER_REVIEW', partnerSlug: 'elevate-consulting', oppName: 'Acme RE — CRM rollout' },
{ name: 'Sunrise LATAM — Nine Dots quote', status: 'APPROVED', partnerSlug: 'nine-dots-ventures', oppName: 'Sunrise — LATAM expansion' },
{ name: 'Helix self-host — Meridian quote', status: 'REJECTED', partnerSlug: 'meridian-craft', oppName: 'Helix Bio — self-host evaluation' },
{ name: 'Sunrise APAC fleet — Nine Dots quote', status: 'WIP', partnerSlug: 'nine-dots-ventures', contentType: ['PARTNER_QUOTE'] },
{ name: 'Helix clinical — NetZero quote', status: 'INTERVIEW_SCHEDULED', partnerSlug: 'netzero-systems', contentType: ['PARTNER_QUOTE'] },
{ name: 'Acme rollout — Elevate quote', status: 'UNDER_CUSTOMER_PARTNER_REVIEW', partnerSlug: 'elevate-consulting', contentType: ['PARTNER_QUOTE'] },
{ name: 'Sunrise LATAM — Nine Dots quote', status: 'APPROVED', partnerSlug: 'nine-dots-ventures', contentType: ['PARTNER_QUOTE'] },
{ name: 'Helix self-host — Meridian quote', status: 'REJECTED', partnerSlug: 'meridian-craft', contentType: ['CASE_STUDY'] },
];
const nodes = (r: any, key: string): any[] => (r?.[key]?.edges ?? []).map((e: any) => e.node);
@@ -177,12 +177,12 @@ async function main() {
// -- Partner quotes (upsert by name) --
let quoteCount = 0;
for (const q of QUOTES) {
const data = { name: q.name, status: q.status, partnerId: partnerIdBySlug.get(q.partnerSlug), opportunityId: oppIdByName.get(q.oppName) };
const existing = nodes(await client.query({ partnerQuotes: { __args: { filter: { name: { eq: q.name } }, first: 1 }, edges: { node: { id: true } } } } as any), 'partnerQuotes');
const data = { name: q.name, status: q.status, contentType: q.contentType, partnerId: partnerIdBySlug.get(q.partnerSlug) };
const existing = nodes(await client.query({ partnerContents: { __args: { filter: { name: { eq: q.name } }, first: 1 }, edges: { node: { id: true } } } } as any), 'partnerContents');
if (existing[0]?.id) {
await client.mutation({ updatePartnerQuote: { __args: { id: existing[0].id, data }, id: true } } as any);
await client.mutation({ updatePartnerContent: { __args: { id: existing[0].id, data }, id: true } } as any);
} else {
await client.mutation({ createPartnerQuote: { __args: { data }, id: true } } as any);
await client.mutation({ createPartnerContent: { __args: { data }, id: true } } as any);
}
quoteCount++;
}
@@ -0,0 +1,116 @@
---
name: twenty-lead-intro-call-summary
description: Turn a sales/discovery-call transcript into a faithful, structured qualification brief for Twenty's partner/CRM pipeline. Use this whenever the user has a call recording or transcript — including a meetily recordings folder or a transcripts.json — and wants to summarize, recap, qualify, or extract a brief from a prospect/discovery call. Trigger even when they don't say "brief": phrases like "summarize this call", "what did we learn from the X call", "qualify this lead from the call", "turn this transcript into something I can hand a partner", or pointing at a transcript file all count. Produces a tight deal one-pager (company, needs, implementation complexity, does-it-need-a-partner, partner-facing brief) plus an appendix (product/GTM feedback, terminology, quotes). It is a faithful extraction, not a lossy summary.
trigger: /twenty-lead-intro-call-summary
---
# twenty-lead-intro-call-summary
Turn a discovery/sales-call transcript into a **qualification brief** that (a) loses no
decision-relevant detail and (b) can be used to qualify the deal and hand it to an
implementation partner. Designed for Twenty's partner/CRM pipeline, tuned for messy,
label-less ASR transcripts (e.g. meetily exports).
The output is two parts: a tight **Part A deal one-pager** (everything the deal/partner
work needs) and a **Part B appendix** (not deal-specific: product feedback, terminology,
quotes). The structure is what prevents loss — a "summary that loses nothing" is a
contradiction, so this is a *structured extraction* against a fixed schema where every
dimension has a slot and gaps are marked rather than silently dropped.
## Step 1 — Get the transcript
The transcript is provided by the user — usually pasted text, or a path they point you at
(a `.txt`/`.vtt`/`.srt`, or a meetily recording folder / `transcripts.json`). If they give a
path, read it: a meetily `transcripts.json` is `{ "segments": [ { "text": ... } ] }`
concatenate the `text` values in order; for `.vtt`/`.srt`, drop the cue numbers and
timecodes.
**If no transcript is provided, ask for it before doing anything else.** Don't fabricate or
proceed without one.
For very long transcripts, read the whole thing before writing — coverage is the point.
## Step 2 — Produce the brief
Follow these rules and fill this exact schema. Why each rule matters is noted, because
faithful extraction depends on judgment, not rote form-filling.
**Rules**
- Extract ONLY what is in the transcript. Never invent or assume. If a field isn't covered,
write "Not discussed." (Visible gaps beat confident fabrication — a missing field is a
signal to ask on the next call.)
- Separate stated FACTS from your INFERENCES; mark any inference "(inferred)". (Downstream
matching trusts the facts; don't contaminate them with guesses.)
- Preserve specifics verbatim: numbers, dates, names + roles, tool/CRM names, prices,
budgets, exact requirements. Don't round or paraphrase numbers. (Specifics are where
nuance and matching signal live; paraphrase kills them.)
- Use the customer's own words for needs and objections; quote pivotal lines.
- Don't smooth over contradictions or vagueness — note them. (A flagged contradiction is
more useful than a falsely tidy summary.)
- If the transcript has NO speaker labels, infer from context who is the vendor (Twenty)
and who is the prospect, and attribute accordingly. Names get garbled by speech-to-text —
flag any uncertain name with "(uncertain)" and never invent a name.
- Keep PART A tight — it's the one-pager the deal/partner work runs on. Push everything not
specific to this deal (product/website feedback, terminology, supporting quotes) to
PART B. State each fact once; never repeat it across sections.
**Output (use these exact headers)**
```
== PART A — DEAL ONE-PAGER ==
1. ONE-LINE SUMMARY
2. COMPANY — name, what they do, size/employees, HQ + countries of operation, industry
3. PEOPLE ON THE CALL — name, role/title, side (Twenty vs prospect); infer roles if
unlabeled and flag uncertain names
4. CURRENT SITUATION — what CRM/tools they use today; specific pains
5. WHY THEY'RE INTERESTED IN TWENTY
6. WHAT THEY WANT — bulleted needs/requirements, verbatim where possible
7. IMPLEMENTATION COMPLEXITY (for partner matching)
- Deployment: cloud / self-host / both / unclear (+ the evidence)
- Data model: custom objects, multi-tenant, row-level security, migrations
- Integrations / custom apps needed
- Workflows / automation needs
- Scale: number of seats/users
- Region + language the partner would need to cover
8. COMMERCIALS — budget or prices discussed, plan tier (Pro/Org/Enterprise), seat count,
deal value, who pays
9. TIMELINE & DECISION — key dates, decision-makers, urgency, decision process
10. OBJECTIONS / RISKS / FEARS — including anything that could kill the deal
11. ALTERNATIVES — competitors or other options they're weighing
12. DOES THIS DEAL NEED A PARTNER? — yes / no / maybe + why; and if yes, what kind
(scope, region, language, seniority/tier)
13. NEXT STEPS / OPEN QUESTIONS / FOLLOW-UPS
14. PARTNER-FACING BRIEF — a 2-4 sentence narrative a partner can skim to decide yes/no,
drawn only from PART A
== PART B — APPENDIX (not deal-specific) ==
15. PRODUCT / WEBSITE / GTM FEEDBACK — any feedback on the product, pricing page, website
wording, onboarding, or trial; capture even if off-topic for qualification
16. TERMINOLOGY / DOMAIN-LANGUAGE NOTES — words used on the call that mean different things
to each side or carry domain-specific meaning (e.g. "partner", "donor", jargon)
17. KEY VERBATIM QUOTES — 3-8 direct quotes that capture intent, needs, or objections
```
## Step 3 — Output and save
Print the brief in the conversation. Then offer to save it as Markdown — default to a
sibling of the source (e.g. next to the recording) or, for Twenty work, the
`partners-experience/research/` folder, named `YYYY-MM-DD-<company>-call-summary.md`. Don't
write the file unless the user wants it saved.
## How the fields map to the Partner model (for matching)
Section 7 + 12 are the matching axes: `Deployment → deploymentExpertise`, the scope needs →
`partnerScope`, `Region + language` → partner region/languages, scale → capacity, the
"needs a partner?" tier → `partnerTier`. Keeping these explicit is what lets the brief drop
straight into the opportunity→partner handover flow.
## Notes
- This is tuned for Twenty discovery calls, but the schema generalizes — swap the vendor
framing in section 5/12 if reused elsewhere.
- The worked reference example lives at
`partners-experience/research/2026-05-21-tsf-call-summary-final.md` (and the prompt alone
at `partners-experience/research/call-summary-prompt.md`).
@@ -0,0 +1,36 @@
---
name: twenty-partner-design-doc
description: Use when turning a qualified Twenty lead — a call-summary brief plus any client braindump/docs — into an implementation design doc a partner can scope and quote from. Trigger when pointed at a lead folder (e.g. partners-experience/<LEAD>/) and asked to "draft a design doc", "translate this into Twenty terms", "scope this for a partner", or "prep the partner handoff" for a discovery-qualified prospect. Chains after twenty-lead-intro-call-summary.
trigger: /twenty-partner-design-doc
---
# twenty-partner-design-doc
Turn a qualified lead's materials into a **design doc**: a translation of the customer's needs into **Twenty terms** that an implementation **partner reads to scope and quote** the work.
**The doctrine — what to produce, the 12-section structure, the rules, the verification process, and the common mistakes — lives in `design-doc-doctrine.md` in this folder. Read it and follow it.** This file is only the Claude Code wrapper: how to gather inputs, which tools to use for each step, and where to save.
## Inputs
- A lead folder (e.g. `partners-experience/<LEAD>/`) containing a `twenty-lead-intro-call-summary` output plus any braindump / docs / notes.
- If there is a raw transcript but no brief, run **twenty-lead-intro-call-summary** first — this skill chains after it.
- Read everything. Convert `.docx` with `textutil -convert txt "<file>" -output /tmp/out.txt` (macOS) or an equivalent extractor.
## Steps
1. **Gather** — read all source materials in full. Coverage is the point.
2. **Extract needs, grounded** — facts vs inferences (`(inf.)`); never invent. Per the doctrine.
3. **Draft** the doc in the doctrine's 12-section structure, applying every rule in the doctrine.
4. **Verify load-bearing claims live** — use **WebFetch** against the Twenty doc map in the doctrine's Verification section before asserting any capability. Build the §11 appendix as you go.
5. **Reconcile discrepancies** — sources that disagree (call vs braindump; a name differing across/within sources) get flagged both ways, never silently resolved.
6. **Resolve ❓ with the operator** — after a full v1 draft, use **AskUserQuestion** to ask the Twenty team member the unknowns a Twenty insider can answer; leave customer-facing unknowns as ❓. **If running autonomously** (no operator — a subagent/batch run), skip the questions and leave every unknown as ❓ in the body and §11.
7. **Self-check, then save** — scan the output for: an em dash, a bare `~`, first-person voice outside customer quotes, local file paths, a header that isn't the four-field table, a point repeated across sections instead of a §N cross-reference, a leftover glossary / domain-language section, runtime/env-var mechanics that belong in the technical phase, and any capability claim stated as fact without a §11 source. Fix, then save to the lead folder as `YYYY-MM-DD-<lead>-design-doc.md`.
## Worked example
Reference: `partners-experience/TSF/2026-05-26-tsf-design-doc.md` shows the target **coverage, flag discipline, and §11 verification appendix**. It predates the current concision / table-header / no-glossary / no-em-dash rules, so where its formatting differs, **follow this doctrine over the example.**
## Notes
- Chain: **twenty-lead-intro-call-summary → twenty-partner-design-doc**; the output feeds the opportunity→partner handover (`designDocStatus` / `designDocUrl`).
- **Phase 2:** `design-doc-doctrine.md` is written to be portable. A future `defineSkill` in this app (a sibling `*.skill.ts` in `src/skills/`) would import it as its `content`, driving an in-product agent — with a verify logic-function tool replacing the WebFetch step, and a Workflow Action triggering it when sales toggles `partnerEligible`. Keep doctrine changes in that file so both the Claude Code skill and the `defineSkill` stay in sync.
@@ -0,0 +1,130 @@
# Design-doc doctrine: translating a lead into Twenty terms
**Portable doctrine.** This file is tool-agnostic. It defines *what* a Twenty partner design doc is, its structure, the rules, and how to verify it. Two consumers use it: the Claude Code skill `twenty-partner-design-doc` (see `SKILL.md` in this folder), and, in a later phase, the `content` of a Twenty `defineSkill` driving an in-product agent. Keep it free of any one tool's mechanics (no file paths, no tool names).
## Purpose
Produce a **design doc** that translates a qualified lead's needs into **Twenty terms** (data model, views, automations, integrations, permissions, reporting, hosting) so an implementation **partner can scope and quote** the work.
**Core principle:** identify *all* the work with **no blindspots**, **ground every claim** in the source or in live Twenty docs, and **present options rather than prescribe**. The partner quotes off this doc, so a confident-but-wrong capability claim or a hidden requirement is the worst failure.
**Stay on the client's outcome.** Every line must change what the partner *builds* or what the client *receives*. The doc is a design, not a meeting record: a requirement's backstory (why the vendor or a third party does or doesn't satisfy it) is not a build input. Capture the **consequence**, cut the backstory.
The doc is **partner-facing** and may be forwarded verbatim. It is a *suggestion to make scoping easier*, not a spec that constrains how the partner builds.
## Output structure (fixed)
**Header: a compact table, not a stack of bold lines.** Four fields only:
| Field | Value |
|---|---|
| Lead | name (one-line description of who they are) |
| Date | YYYY-MM-DD |
| Author | Twenty (partnerships) |
| Status | one short line (e.g. "Draft for partner review") |
Keep the header to those four fields. The Status line stays short: a load-bearing caveat (e.g. "data model is an inference pending discovery") goes in the "What this is" callout, not in the header cell. Do not list source materials, internal timelines, or who-promised-what: not load-bearing, not customer-safe (the doc is forwarded verbatim).
After the table, one **"What this is"** callout framing the doc as a partner-scoping suggestion across the full surface, *not* an MVP.
Flag legend: 🟥 heavy / product-constrained · ❓ open question to resolve before quoting · `(inf.)` modelling inference.
1. **Context**: the 30-second read: who they are, what they want, deployment requirement, scale, language/region.
2. **Data model in Twenty terms**: the core. Present objects as a **table, one row per object**: `Object | Std/Custom | Represents | Key fields (traceable, (inf.)-tagged) | Core relations`. Spell out SELECT option sets. **Model the relationships, not just the fields**: who introduced/sourced a record (e.g. an ambassador to Opportunity `sourcedBy` link), parent/child, ownership carry as much scoping signal as the attributes. State product constraints inline (no formula fields; custom objects auto-get attachments/notes/tasks/timeline). Where a customer term collides with a Twenty term (their "partner" = a donor), note the mapping inline at first use; do **not** add a glossary section for it.
3. **Views & navigation**: pipelines/kanban, tables, per-record page layouts.
4. **Automations**: only the automations the customer named; give Workflow-or-logic-function for each. Name the automation and its trigger; defer runtime and build mechanics (see *Scope altitude*).
5. **Integrations** *(conditional: include only when the customer explicitly names an external system to connect)*: external systems to Twenty: direction, *indicative* mechanism (not prescriptive), data flow, risks/unknowns. **If no integration is named, omit this section entirely and renumber the rest**; never infer integrations as a default. If you spot a likely one, raise it as a single ❓ in §10, not a whole section.
6. **Roles, permissions & RLS**: map named roles to Twenty's object / field / row-level model; answer "do we need RLS?" against verified, plan-gated capability.
7. **Reporting & analytics**: map reporting asks to native Dashboards; flag gaps (ratios needing rollups; export/sharing limits), each with a solution.
8. **Hosting & compliance**: cloud vs self-host, data-residency requirement (verify), GDPR. Flag contradictions.
9. **Suggested phasing**: "(the partner's call, not Twenty's)" layers, labelled a suggestion.
10. **Open questions / blindspot-killers**: the list a partner must resolve before pricing.
11. **References & verification**: a table mapping each load-bearing claim to its source doc, plus an explicit list of what the docs could NOT confirm (the ❓s).
Scale each section to its content. **Coverage of surface area matters more than depth per item.**
## Rules (and why each matters)
- **Be concise: maximum signal per word.** Say a lot in few words. Cut throat-clearing, scene-setting, hedges, and feature-tour prose; prefer a table or a tight clause to a paragraph. Length is not coverage: a short doc that names every requirement beats a long one that pads each. A hesitant buyer reads a focused doc; a bloated one reads as cost.
- **Never repeat yourself.** State each fact, constraint, or claim once, in its home section; elsewhere point to it by section number (§N) rather than restate. §10 (open questions) and §11 (references) are deliberate roll-ups: there, give the pointer and the decision the item gates, not a re-explanation of the body. Repetition is the main source of bloat, and two copies of a claim drift out of sync.
- **Scope altitude: name the decision, defer the mechanics.** A design doc scopes the work; it is not the technical implementation spec. State the *decision* and its *cost or scope consequence*; leave the implementation nitty-gritty (specific env-var names, runtime internals, isolation models, SDK function signatures) to the later technical phase. Example: "production automations need a sandboxed/serverless logic-function backend, an infra cost that belongs in the platform workstream" carries the quote signal; the exact `LOGIC_FUNCTION_TYPE` / `LAMBDA` / region/role/key settings do not belong in a scoping doc. Deep mechanics inflate length and date fast without changing the quote.
- **Ground everything; tag inferences `(inf.)`; never grow scope.** The partner quotes off this, so an invented field or requirement inflates the quote or sets a false expectation. If the *concept* is from the source but the *field name* is yours, that is an inference: tag it. Values lifted from the source (the customer's own category list becoming SELECT options) are *grounded*; only names/fields you coin are inferences.
- **Record the design consequence, not the backstory.** State a requirement and the **client's path** that follows from it; do not litigate *why* it's true. When a requirement traces to vendor-internal or third-party detail (corporate structure, legal domicile, ownership, internal commercial arrangements, who-confirms-what-with-whom), keep only the consequence: it is a commercial matter, not a build input, however much airtime it got on the call. (E.g. *"client needs a European vendor"* becomes *"partner-hosted EU self-host is the path; managed cloud only under a European-contracting arrangement"*, **not** a write-up of the vendor's statutes / HQ / ownership / sign-off.) An open item the client is waiting on is recorded as the **decision it gates** (a ❓ in §10), not as a narrative of the vendor's situation.
- **Database discipline: reuse and extend standard objects; add a custom object only at a genuine wall.** Company / Person / Opportunity plus the built-in Notes / Tasks / Timeline cover most CRM needs; every new object multiplies build and maintenance. A **human actor is a Person with a role flag before it is a new object**: create an object only when it needs its own pipeline or reporting. Name the wall when you add one.
- **When the brief is thin, under-reach the inferred model; don't fill the gap.** A blurry situation (no discovery call, sparse notes) is a reason to model the *fewest, most certain* objects and leave the rest as ❓ open questions, not to compensate with an elaborate inferred domain. An over-detailed inference reads as scope and cost the customer never asked for and can scare a hesitant buyer off. Lead with standard objects plus the one or two custom objects the domain unmistakably needs; everything else is a question to confirm, not a row in the table. Say plainly, up front, that the model is a minimal starting sketch to validate.
- **Present build approaches; don't prescribe.** An automation can be a no-code Workflow *or* a logic function in an app: say both. Prescribing one penalizes a partner who would do the other. The doc identifies the *need*, not the *build*.
- **Every problem carries a path; never a dead-end flag.** If you flag a constraint (e.g. dashboards can't share externally), pair it with at least one solution (CSV export, a front-component, a public site on the API) or a question that resolves it. A flag with no path is useless to someone pricing the work.
- **Flag what an approach can't satisfy.** The doc's value is surfacing walls and limits per requirement so the partner prices around them, not picking the one true solution.
- **Partner-facing voice.** Say **"Twenty," never first person** ("we / our / ours"). **No local file paths** in the output: cite shareable `docs.twenty.com` URLs only. (Customer quotes that contain "we/our" are fine: they are quotes.)
- **No characterisations or asides; only requirements and capabilities.** The doc is customer-forwardable, so keep out the source chat's off-hand remarks: characterisations of the buyer (budget, temperament, sophistication), named comparisons to competing vendors, and internal partnerships notes (deadlines, who promised what). If price-sensitivity or a competitor displacement genuinely shapes the build, state it neutrally as a requirement (e.g. cost is a selection criterion), never as a quote or judgement.
- **Verify before asserting capability.** Any "Twenty can / can't / has / lacks X" that moves the quote must be verified live (see Verification). **Undocumented ≠ impossible.**
## Formatting
- One line per paragraph: **no mid-sentence hard wraps** (they render as broken lines).
- **Never use em dashes (the long dash).** Restructure the sentence, or use a colon, comma, parentheses, or a period instead.
- **Never a bare `~`** for "approximately": GitHub markdown pairs `~...~` into strikethrough. Write "around" / "about".
- Mark unverified capability claims ❓, never as fact.
## Verification
Any statement of the form **"Twenty can / can't / has / lacks X"** that changes the partner's quote MUST be verified **live** before it is stated as fact. Model training is stale on a fast-moving product; the worst failure is a confident, authoritative-sounding claim that is wrong.
**Source hierarchy (what to trust, in order):**
1. **Live docs** (`docs.twenty.com`): primary truth. For the highest-stakes claims, read the page's primary text rather than trust a summary.
2. **Established Twenty SDK build patterns** (hands-on): build-level facts the customer docs omit (no formula fields; custom objects auto-get attachments/notes/tasks/timeline; two-file relations).
3. **The Twenty operator** (a Twenty team member): best for "is it shipped / internal / undocumented."
4. **Model training**: never the sole basis for a high-stakes claim.
**Right doc layer (the trap):** capabilities live in two layers, so check the right one.
- **Product capabilities** (what the CRM does for the *customer*): the **user guide + pricing page**. Covers roles / row-level permissions, dashboards, plans, hosting, data residency.
- **App capabilities** (what an *app* can define): the **developer/extend** docs. Covers field types, fields, logic functions, views, page layouts.
Checking only the app layer is how "row-level not supported" (wrong) happens: row-level is a **product feature on the Organization plan**. The converse also holds: SDK build patterns *are* sufficient to assert **build-layer** facts even when the customer docs are silent (e.g. auto system relations), so do not demote a well-established build fact to ❓.
**Always verify (the load-bearing checklist), live, every run:**
1. Field types & constraints (e.g. no formula/computed fields).
2. Standard-object extension & relabeling (add fields ✓; relabel / edit built-in SELECT options?).
3. Roles & permissions: object / field / row-level, and plan-gating (which tier).
4. Dashboards & reporting: chart/widget types, beta status, export / external-sharing limits.
5. Automation surfaces: Workflows vs logic functions, what each can do.
6. Integration mechanisms: webhooks, HTTP triggers, scheduled functions, connections.
7. Hosting & deployment: cloud plans & regions / **EU data residency**, self-host availability & requirements.
Plus: any other capability claim the draft makes that carries a 🟥 or ❓ flag.
**Fallback chain:**
- Docs confirm → state it as fact; record the source in §11.
- Docs silent or ambiguous → ask the operator (if available).
- Operator unavailable or unsure → render it as a ❓ open question. **Never assert.** When you fetched a page and it was simply *silent*, record that as "docs silent (URL)" rather than leaving the claim unsourced.
**§11 appendix format:** a `Claim (§) | Verified against` table, then an explicit "**Could not be confirmed in public docs (❓: check with Twenty directly):**" list. Unverified items stay ❓ in the body too, never silently promoted to fact. Cite the **human-readable (non-`.md`) URL** here: the `.md` twin is for *your* fetch, not for the partner (a `.md` link renders as raw markdown in a browser).
**Where to verify (Twenty doc map):** docs base = `https://docs.twenty.com/`. Fetch **`<path>.md`** for the clean markdown twin (the form to prefer). Paths:
- Product / user-guide: `user-guide/dashboards/overview` · `user-guide/dashboards/capabilities/widgets` · `user-guide/permissions-access/how-tos/permissions-faq` · `user-guide/data-model/overview` · `user-guide/data-model/capabilities/fields` · `user-guide/data-migration/how-tos/export-your-data`
- Developer / extend: `developers/extend/apps/data/objects` · `developers/extend/apps/data/extending-objects` · `developers/extend/apps/data/relations` · `developers/extend/apps/logic/logic-functions` · `developers/extend/apps/logic/connections` · `developers/extend/apps/layout/views` · `developers/extend/apps/layout/page-layouts` · `developers/extend/apps/config/roles`
- Self-host: `developers/self-host/self-host`
- Pricing & plans: `https://twenty.com/pricing` (**marketing page, no `.md`**; fetch as HTML).
If a `.md` 404s, drop the suffix or re-derive from the docs index: the map can go stale.
## Common mistakes
| Mistake | Reality / fix |
|---|---|
| "Twenty isn't a BI tool" / "can't do row-level" | Stale training. Twenty has Dashboards; row-level is on the Organization plan. **Verify live.** |
| Checked only the app-SDK doc for a product capability | Row-level lives in the product/pricing layer. **Verify the right layer.** |
| Added fields not in the source | Scope growth, wrong quote. Ground every field; tag inferences `(inf.)`. |
| Made a human actor (e.g. ambassador) its own object by default | A human is a Person + role flag first; an object only if it needs its own pipeline/reporting. |
| Flagged an automation as "Workflow" | Prescribes the build, penalizes app-builders. Present both. |
| Flagged a limit with no fix | Dead-end flag. Pair every problem with a path. |
| Spelled out runtime/env-var mechanics (e.g. `LOGIC_FUNCTION_TYPE` / `LAMBDA`, region/role/key) | Wrong altitude. Name the decision + its cost; defer the mechanics to the technical phase. |
| Same point restated across sections | State it once in its home section; cross-reference by §N. |
| Padded prose / feature-tour narration | Maximum signal per word. State the content; cut the scene-setting. |
| Added a domain-language map / glossary section | Removed. Note a genuine term collision inline in §2; no standalone glossary. |
| First-person "not ours" in a partner doc | Say "Twenty." The doc is forwarded verbatim. |
| Local file paths in the output | Mean nothing to a partner. Cite `docs.twenty.com` only. |
| `§2` as prose; fields modelled but not relationships | Use a per-object field **table**; model the links, not just attributes. |
| Hard-wrapped mid-sentence / used `~` / used an em dash | Broken lines / accidental strikethrough / banned dash. One line per paragraph; "around" not `~`; colon or comma, never an em dash. |
| Wrote up the vendor's corporate status / legal domicile / ownership / sign-off | Backstory, not a build input. Record only the **consequence**: requirement → the client's path; gate the open item as a ❓ in §10. |
| Filled a thin brief with an elaborate inferred model | Over-reach scares a hesitant buyer with unrequested scope. Model the few certain objects; flag the rest as ❓; say it's a minimal sketch. |
| Added an Integrations section with connectors the customer never named | Integrations is conditional, not default. Omit it absent a named system; at most flag one ❓. |
| Kept buyer characterisations / competitor asides / internal timelines | Not customer-safe. State needs neutrally; cut the rest. |
| Listed source materials / who-promised-what in the header, or stacked it as bold lines | Header is a four-field table. Not customer-safe content goes nowhere. |
@@ -1,21 +1,21 @@
import { ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_QUOTES_VIEW_UNIVERSAL_IDENTIFIER,
PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
PARTNER_CONTENT_VIEW_UNIVERSAL_IDENTIFIER,
PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
} from 'src/constants/universal-identifiers';
// Index view for partner quotes.
// Index view for partner content.
export default defineView({
universalIdentifier: PARTNER_QUOTES_VIEW_UNIVERSAL_IDENTIFIER,
name: 'Partner quotes',
icon: 'IconFileDollar',
objectUniversalIdentifier: PARTNER_QUOTE_OBJECT_UNIVERSAL_IDENTIFIER,
universalIdentifier: PARTNER_CONTENT_VIEW_UNIVERSAL_IDENTIFIER,
name: 'Partner content',
icon: 'IconQuote',
objectUniversalIdentifier: PARTNER_CONTENT_OBJECT_UNIVERSAL_IDENTIFIER,
type: ViewType.TABLE,
fields: [
{ universalIdentifier: 'ad7b3702-b552-4355-afec-1e1e96d9f3df', fieldMetadataUniversalIdentifier: '9e688624-83d2-4715-8b18-80492a6de2b6', position: 0, isVisible: true },
{ universalIdentifier: '426e0c2d-449d-4a06-860b-0cfe0ed501e6', fieldMetadataUniversalIdentifier: 'a0fe09c4-c1f4-4b96-93c6-d7ec38f1166a', position: 1, isVisible: true },
{ universalIdentifier: '62bb1536-539c-4fb0-95bf-440c5c5da89f', fieldMetadataUniversalIdentifier: '2cbe67e3-24ec-421b-bab5-50f3306c2391', position: 2, isVisible: true },
{ universalIdentifier: 'a9bf3eaa-ec27-4a0a-8df2-e18c8f4239a7', fieldMetadataUniversalIdentifier: '1d926e6e-6ac1-4d60-ab3d-a73114005692', position: 1, isVisible: true },
{ universalIdentifier: '426e0c2d-449d-4a06-860b-0cfe0ed501e6', fieldMetadataUniversalIdentifier: 'a0fe09c4-c1f4-4b96-93c6-d7ec38f1166a', position: 2, isVisible: true },
{ universalIdentifier: 'fbd1f953-1dd2-4d0f-a239-148a0688fbff', fieldMetadataUniversalIdentifier: 'b52d263e-423e-40b0-b82c-29214597c005', position: 3, isVisible: true },
],
});
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-client-sdk",
"version": "2.7.0",
"version": "2.9.0",
"sideEffects": false,
"license": "AGPL-3.0",
"scripts": {
@@ -42,7 +42,7 @@
"dependencies": {
"@genql/cli": "^3.0.3",
"@genql/runtime": "^2.10.0",
"esbuild": "^0.25.0",
"esbuild": "^0.28.0",
"graphql": "^16.8.1"
},
"devDependencies": {
@@ -247,7 +247,7 @@ type FieldPermission {
type RolePermissionFlag {
id: UUID!
roleId: UUID!
flag: PermissionFlagType!
flag: String!
}
type ApiKeyForRole {
@@ -523,6 +523,7 @@ type IndexField {
id: UUID!
fieldMetadataId: UUID!
order: Float!
subFieldName: String
createdAt: DateTime!
updatedAt: DateTime!
}
@@ -3209,6 +3210,8 @@ type Mutation {
createOneObject(input: CreateOneObjectInput!): Object!
deleteOneObject(input: DeleteOneObjectInput!): Object!
updateOneObject(input: UpdateOneObjectInput!): Object!
createOneIndex(input: CreateOneIndexInput!): Index!
deleteOneIndex(input: DeleteOneIndexInput!): Index!
createOneAgent(input: CreateAgentInput!): Agent!
updateOneAgent(input: UpdateAgentInput!): Agent!
deleteOneAgent(input: AgentIdInput!): Agent!
@@ -3925,6 +3928,27 @@ input UpdateObjectPayload {
isSearchable: Boolean
}
input CreateOneIndexInput {
"""The custom index to create"""
index: CreateIndexInput!
}
input CreateIndexInput {
objectMetadataId: UUID!
fields: [CreateIndexFieldInput!]!
indexType: IndexType! = BTREE
}
input CreateIndexFieldInput {
fieldMetadataId: UUID!
subFieldName: String
}
input DeleteOneIndexInput {
"""The id of the custom index to delete."""
id: UUID!
}
input CreateAgentInput {
name: String
label: String!
@@ -4005,7 +4029,7 @@ input ObjectPermissionInput {
input UpsertPermissionFlagsInput {
roleId: UUID!
permissionFlagKeys: [PermissionFlagType!]!
permissionFlagKeys: [String!]!
}
input UpsertFieldPermissionsInput {
@@ -193,7 +193,7 @@ export interface FieldPermission {
export interface RolePermissionFlag {
id: Scalars['UUID']
roleId: Scalars['UUID']
flag: PermissionFlagType
flag: Scalars['String']
__typename: 'RolePermissionFlag'
}
@@ -386,6 +386,7 @@ export interface IndexField {
id: Scalars['UUID']
fieldMetadataId: Scalars['UUID']
order: Scalars['Float']
subFieldName?: Scalars['String']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
__typename: 'IndexField'
@@ -2742,6 +2743,8 @@ export interface Mutation {
createOneObject: Object
deleteOneObject: Object
updateOneObject: Object
createOneIndex: Index
deleteOneIndex: Index
createOneAgent: Agent
updateOneAgent: Agent
deleteOneAgent: Agent
@@ -3257,6 +3260,7 @@ export interface IndexFieldGenqlSelection{
id?: boolean | number
fieldMetadataId?: boolean | number
order?: boolean | number
subFieldName?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
__typename?: boolean | number
@@ -5795,6 +5799,8 @@ export interface MutationGenqlSelection{
createOneObject?: (ObjectGenqlSelection & { __args: {input: CreateOneObjectInput} })
deleteOneObject?: (ObjectGenqlSelection & { __args: {input: DeleteOneObjectInput} })
updateOneObject?: (ObjectGenqlSelection & { __args: {input: UpdateOneObjectInput} })
createOneIndex?: (IndexGenqlSelection & { __args: {input: CreateOneIndexInput} })
deleteOneIndex?: (IndexGenqlSelection & { __args: {input: DeleteOneIndexInput} })
createOneAgent?: (AgentGenqlSelection & { __args: {input: CreateAgentInput} })
updateOneAgent?: (AgentGenqlSelection & { __args: {input: UpdateAgentInput} })
deleteOneAgent?: (AgentGenqlSelection & { __args: {input: AgentIdInput} })
@@ -6126,6 +6132,18 @@ id: Scalars['UUID']}
export interface UpdateObjectPayload {labelSingular?: (Scalars['String'] | null),labelPlural?: (Scalars['String'] | null),nameSingular?: (Scalars['String'] | null),namePlural?: (Scalars['String'] | null),description?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortcut?: (Scalars['String'] | null),color?: (Scalars['String'] | null),isActive?: (Scalars['Boolean'] | null),labelIdentifierFieldMetadataId?: (Scalars['UUID'] | null),imageIdentifierFieldMetadataId?: (Scalars['UUID'] | null),isLabelSyncedWithName?: (Scalars['Boolean'] | null),isSearchable?: (Scalars['Boolean'] | null)}
export interface CreateOneIndexInput {
/** The custom index to create */
index: CreateIndexInput}
export interface CreateIndexInput {objectMetadataId: Scalars['UUID'],fields: CreateIndexFieldInput[],indexType: IndexType}
export interface CreateIndexFieldInput {fieldMetadataId: Scalars['UUID'],subFieldName?: (Scalars['String'] | null)}
export interface DeleteOneIndexInput {
/** The id of the custom index to delete. */
id: Scalars['UUID']}
export interface CreateAgentInput {name?: (Scalars['String'] | null),label: Scalars['String'],icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),prompt: Scalars['String'],modelId: Scalars['String'],roleId?: (Scalars['UUID'] | null),responseFormat?: (Scalars['JSON'] | null),modelConfiguration?: (Scalars['JSON'] | null),evaluationInputs?: (Scalars['String'][] | null)}
export interface UpdateAgentInput {id: Scalars['UUID'],name?: (Scalars['String'] | null),label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),description?: (Scalars['String'] | null),prompt?: (Scalars['String'] | null),modelId?: (Scalars['String'] | null),roleId?: (Scalars['UUID'] | null),responseFormat?: (Scalars['JSON'] | null),modelConfiguration?: (Scalars['JSON'] | null),evaluationInputs?: (Scalars['String'][] | null)}
@@ -6142,7 +6160,7 @@ export interface UpsertObjectPermissionsInput {roleId: Scalars['UUID'],objectPer
export interface ObjectPermissionInput {objectMetadataId: Scalars['UUID'],canReadObjectRecords?: (Scalars['Boolean'] | null),canUpdateObjectRecords?: (Scalars['Boolean'] | null),canSoftDeleteObjectRecords?: (Scalars['Boolean'] | null),canDestroyObjectRecords?: (Scalars['Boolean'] | null)}
export interface UpsertPermissionFlagsInput {roleId: Scalars['UUID'],permissionFlagKeys: PermissionFlagType[]}
export interface UpsertPermissionFlagsInput {roleId: Scalars['UUID'],permissionFlagKeys: Scalars['String'][]}
export interface UpsertFieldPermissionsInput {roleId: Scalars['UUID'],fieldPermissions: FieldPermissionInput[]}
@@ -78,8 +78,8 @@ export default {
334,
341,
377,
454,
466
458,
470
],
"types": {
"BillingProductDTO": {
@@ -508,7 +508,7 @@ export default {
3
],
"flag": [
18
1
],
"__typename": [
1
@@ -972,6 +972,9 @@ export default {
"order": [
11
],
"subFieldName": [
1
],
"createdAt": [
4
],
@@ -7491,11 +7494,29 @@ export default {
]
}
],
"createOneIndex": [
46,
{
"input": [
405,
"CreateOneIndexInput!"
]
}
],
"deleteOneIndex": [
46,
{
"input": [
408,
"DeleteOneIndexInput!"
]
}
],
"createOneAgent": [
25,
{
"input": [
405,
409,
"CreateAgentInput!"
]
}
@@ -7504,7 +7525,7 @@ export default {
25,
{
"input": [
406,
410,
"UpdateAgentInput!"
]
}
@@ -7535,7 +7556,7 @@ export default {
29,
{
"createRoleInput": [
407,
411,
"CreateRoleInput!"
]
}
@@ -7544,7 +7565,7 @@ export default {
29,
{
"updateRoleInput": [
408,
412,
"UpdateRoleInput!"
]
}
@@ -7562,7 +7583,7 @@ export default {
16,
{
"upsertObjectPermissionsInput": [
410,
414,
"UpsertObjectPermissionsInput!"
]
}
@@ -7571,7 +7592,7 @@ export default {
27,
{
"upsertPermissionFlagsInput": [
412,
416,
"UpsertPermissionFlagsInput!"
]
}
@@ -7580,7 +7601,7 @@ export default {
26,
{
"upsertFieldPermissionsInput": [
413,
417,
"UpsertFieldPermissionsInput!"
]
}
@@ -7589,7 +7610,7 @@ export default {
229,
{
"input": [
415,
419,
"UpsertRowLevelPermissionPredicatesInput!"
]
}
@@ -7620,7 +7641,7 @@ export default {
274,
{
"input": [
418,
422,
"CreateWebhookInput!"
]
}
@@ -7629,7 +7650,7 @@ export default {
274,
{
"input": [
419,
423,
"UpdateWebhookInput!"
]
}
@@ -7647,7 +7668,7 @@ export default {
43,
{
"input": [
421,
425,
"CreateOneFieldMetadataInput!"
]
}
@@ -7656,7 +7677,7 @@ export default {
43,
{
"input": [
423,
427,
"UpdateOneFieldMetadataInput!"
]
}
@@ -7665,7 +7686,7 @@ export default {
43,
{
"input": [
425,
429,
"DeleteOneFieldInput!"
]
}
@@ -7674,7 +7695,7 @@ export default {
65,
{
"input": [
426,
430,
"CreateViewGroupInput!"
]
}
@@ -7683,7 +7704,7 @@ export default {
65,
{
"inputs": [
426,
430,
"[CreateViewGroupInput!]!"
]
}
@@ -7692,7 +7713,7 @@ export default {
65,
{
"input": [
427,
431,
"UpdateViewGroupInput!"
]
}
@@ -7701,7 +7722,7 @@ export default {
65,
{
"inputs": [
427,
431,
"[UpdateViewGroupInput!]!"
]
}
@@ -7710,7 +7731,7 @@ export default {
65,
{
"input": [
429,
433,
"DeleteViewGroupInput!"
]
}
@@ -7719,7 +7740,7 @@ export default {
65,
{
"input": [
430,
434,
"DestroyViewGroupInput!"
]
}
@@ -7728,7 +7749,7 @@ export default {
315,
{
"input": [
431,
435,
"UpdateMessageFolderInput!"
]
}
@@ -7737,7 +7758,7 @@ export default {
315,
{
"input": [
433,
437,
"UpdateMessageFoldersInput!"
]
}
@@ -7746,7 +7767,7 @@ export default {
306,
{
"input": [
434,
438,
"UpdateMessageChannelInput!"
]
}
@@ -7755,7 +7776,7 @@ export default {
314,
{
"input": [
436,
440,
"CreateEmailGroupChannelInput!"
]
}
@@ -7782,7 +7803,7 @@ export default {
301,
{
"input": [
437,
441,
"UpdateCalendarChannelInput!"
]
}
@@ -7812,7 +7833,7 @@ export default {
1
],
"fileAttachments": [
439,
443,
"[FileAttachmentInput!]"
]
}
@@ -7879,7 +7900,7 @@ export default {
290,
{
"input": [
440,
444,
"CreateSkillInput!"
]
}
@@ -7888,7 +7909,7 @@ export default {
290,
{
"input": [
441,
445,
"UpdateSkillInput!"
]
}
@@ -7946,7 +7967,7 @@ export default {
238,
{
"input": [
442,
446,
"GetAuthorizationUrlForSSOInput!"
]
}
@@ -8200,7 +8221,7 @@ export default {
197,
{
"input": [
443,
447,
"CreateApplicationRegistrationInput!"
]
}
@@ -8209,7 +8230,7 @@ export default {
7,
{
"input": [
444,
448,
"UpdateApplicationRegistrationInput!"
]
}
@@ -8236,7 +8257,7 @@ export default {
5,
{
"input": [
446,
450,
"CreateApplicationRegistrationVariableInput!"
]
}
@@ -8245,7 +8266,7 @@ export default {
5,
{
"input": [
447,
451,
"UpdateApplicationRegistrationVariableInput!"
]
}
@@ -8334,7 +8355,7 @@ export default {
6,
{
"input": [
449,
453,
"UpdateWorkspaceMemberSettingsInput!"
]
}
@@ -8368,7 +8389,7 @@ export default {
75,
{
"data": [
450,
454,
"ActivateWorkspaceInput!"
]
}
@@ -8377,7 +8398,7 @@ export default {
75,
{
"data": [
451,
455,
"UpdateWorkspaceInput!"
]
}
@@ -8392,7 +8413,7 @@ export default {
6,
{
"workspaceMigration": [
452,
456,
"WorkspaceMigrationInput!"
]
}
@@ -8410,7 +8431,7 @@ export default {
220,
{
"input": [
455,
459,
"SetupOIDCSsoInput!"
]
}
@@ -8419,7 +8440,7 @@ export default {
220,
{
"input": [
456,
460,
"SetupSAMLSsoInput!"
]
}
@@ -8428,7 +8449,7 @@ export default {
216,
{
"input": [
457,
461,
"DeleteSsoInput!"
]
}
@@ -8437,7 +8458,7 @@ export default {
217,
{
"input": [
458,
462,
"EditSsoInput!"
]
}
@@ -8468,7 +8489,7 @@ export default {
286,
{
"input": [
459,
463,
"SendEmailInput!"
]
}
@@ -8490,7 +8511,7 @@ export default {
"String!"
],
"connectionParameters": [
461,
465,
"EmailAccountConnectionParameters!"
],
"id": [
@@ -8502,7 +8523,7 @@ export default {
168,
{
"input": [
463,
467,
"UpdateLabPublicFeatureFlagInput!"
]
}
@@ -8584,7 +8605,7 @@ export default {
77,
{
"input": [
464,
468,
"CreateOneAppTokenInput!"
]
}
@@ -8659,7 +8680,7 @@ export default {
"String!"
],
"fileFolder": [
466,
470,
"FileFolder!"
],
"filePath": [
@@ -10012,6 +10033,47 @@ export default {
1
]
},
"CreateOneIndexInput": {
"index": [
406
],
"__typename": [
1
]
},
"CreateIndexInput": {
"objectMetadataId": [
3
],
"fields": [
407
],
"indexType": [
47
],
"__typename": [
1
]
},
"CreateIndexFieldInput": {
"fieldMetadataId": [
3
],
"subFieldName": [
1
],
"__typename": [
1
]
},
"DeleteOneIndexInput": {
"id": [
3
],
"__typename": [
1
]
},
"CreateAgentInput": {
"name": [
1
@@ -10131,7 +10193,7 @@ export default {
},
"UpdateRoleInput": {
"update": [
409
413
],
"id": [
3
@@ -10186,7 +10248,7 @@ export default {
3
],
"objectPermissions": [
411
415
],
"__typename": [
1
@@ -10217,7 +10279,7 @@ export default {
3
],
"permissionFlagKeys": [
18
1
],
"__typename": [
1
@@ -10228,7 +10290,7 @@ export default {
3
],
"fieldPermissions": [
414
418
],
"__typename": [
1
@@ -10259,10 +10321,10 @@ export default {
3
],
"predicates": [
416
420
],
"predicateGroups": [
417
421
],
"__typename": [
1
@@ -10345,7 +10407,7 @@ export default {
3
],
"update": [
420
424
],
"__typename": [
1
@@ -10370,7 +10432,7 @@ export default {
},
"CreateOneFieldMetadataInput": {
"field": [
422
426
],
"__typename": [
1
@@ -10443,7 +10505,7 @@ export default {
3
],
"update": [
424
428
],
"__typename": [
1
@@ -10535,7 +10597,7 @@ export default {
3
],
"update": [
428
432
],
"__typename": [
1
@@ -10579,7 +10641,7 @@ export default {
3
],
"update": [
432
436
],
"__typename": [
1
@@ -10598,7 +10660,7 @@ export default {
3
],
"update": [
432
436
],
"__typename": [
1
@@ -10609,7 +10671,7 @@ export default {
3
],
"update": [
435
439
],
"__typename": [
1
@@ -10654,7 +10716,7 @@ export default {
3
],
"update": [
438
442
],
"__typename": [
1
@@ -10770,7 +10832,7 @@ export default {
1
],
"update": [
445
449
],
"__typename": [
1
@@ -10818,7 +10880,7 @@ export default {
1
],
"update": [
448
452
],
"__typename": [
1
@@ -10936,7 +10998,7 @@ export default {
},
"WorkspaceMigrationInput": {
"actions": [
453
457
],
"__typename": [
1
@@ -10944,7 +11006,7 @@ export default {
},
"WorkspaceMigrationDeleteActionInput": {
"type": [
454
458
],
"metadataName": [
318
@@ -11039,7 +11101,7 @@ export default {
1
],
"files": [
460
464
],
"__typename": [
1
@@ -11058,13 +11120,13 @@ export default {
},
"EmailAccountConnectionParameters": {
"IMAP": [
462
466
],
"SMTP": [
462
466
],
"CALDAV": [
462
466
],
"__typename": [
1
@@ -11103,7 +11165,7 @@ export default {
},
"CreateOneAppTokenInput": {
"appToken": [
465
469
],
"__typename": [
1
@@ -11132,7 +11194,7 @@ export default {
230,
{
"input": [
468,
472,
"LogicFunctionLogsInput!"
]
}
@@ -44,8 +44,53 @@ A Twenty app's **data layer** is the data your app *adds* to a workspace — the
| **Object** | A new custom record type (e.g. PostCard, Invoice) with its own fields | `defineObject()` |
| **Field** | A column on an object. Standalone fields can extend objects you didn't create (e.g. add `loyaltyTier` to Company) | `defineField()` |
| **Relation** | A bidirectional link between two objects — both sides declared as fields | `defineField()` with `FieldType.RELATION` |
| **Index** | A database index to speed up a recurring query on one of your objects | `defineIndex()` |
The SDK detects these via AST analysis at build time, so file organization is up to you — the convention is `src/objects/` and `src/fields/`. Stable `universalIdentifier` UUIDs tie everything together across deploys.
The SDK detects these via AST analysis at build time, so file organization is up to you — the convention is `src/objects/`, `src/fields/`, and `src/indexes/`. Stable `universalIdentifier` UUIDs tie everything together across deploys.
## Indexes (optional)
Apps can ship indexes alongside their objects to keep recurring queries fast. The most common case is a status or foreign-key column that you read frequently.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Unique indexes
`defineIndex` accepts `isUnique: true` for both single- and multi-column uniqueness. This is the recommended primitive — `defineField({ isUnique: true })` is deprecated and will be removed in a future release.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Other constraints
- Partial `WHERE` clauses stay under admin control — apps can't declare them.
- Each object is capped at 10 custom indexes (the framework's own indexes don't count).
Order the `fields` array the way Postgres should use it — leftmost column first, like a phone book. Indexes are not free: every write to the table updates them. Add one only when you have a query that needs it.
<Note>
Looking for **Application Config** or **Roles & Permissions**? Those describe the app itself rather than the data it adds — they live under [Config](/developers/extend/apps/config/overview). Looking for **Connections** (Linear, GitHub, Slack OAuth)? Those exist to be called *from* logic functions and live under [Logic](/developers/extend/apps/logic/connections).
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Field types with similar names can use entirely different operands — `SELECT` and `MULTI_SELECT` being a common case.
@@ -44,8 +44,53 @@ Die **Datenebene** einer Twenty-App umfasst die Daten, die Ihre App zu einem Wor
| **Objekt** | Ein neuer benutzerdefinierter Datensatztyp (z. B. PostCard, Invoice) mit eigenen Feldern | `defineObject()` |
| **Feld** | Eine Spalte in einem Objekt. Eigenständige Felder können Objekte erweitern, die Sie nicht erstellt haben (z. B. `loyaltyTier` zu Company hinzufügen) | `defineField()` |
| **Beziehung** | Eine bidirektionale Verknüpfung zwischen zwei Objekten beide Seiten werden als Felder deklariert | `defineField()` mit `FieldType.RELATION` |
| **Indizes** | Ein Datenbankindex, um eine wiederkehrende Abfrage für eines Ihrer Objekte zu beschleunigen | `defineIndex()` |
Das SDK erkennt diese zur Build-Zeit über eine AST-Analyse, sodass die Dateiorganisation Ihnen überlassen ist die Konvention ist `src/objects/` und `src/fields/`. Stabile `universalIdentifier`-UUIDs verknüpfen alles über Deploys hinweg.
Das SDK erkennt diese zur Build-Zeit über eine AST-Analyse, sodass die Dateiorganisation Ihnen überlassen ist die Konvention ist `src/objects/`, `src/fields/` und `src/indexes/`. Stabile `universalIdentifier`-UUIDs verknüpfen alles über Deploys hinweg.
## Indizes (optional)
Apps können Indizes gemeinsam mit ihren Objekten ausliefern, um wiederkehrende Abfragen schnell zu halten. Der häufigste Fall ist eine Status- oder Fremdschlüsselspalte, die Sie häufig lesen.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Eindeutige Indizes
`defineIndex` akzeptiert `isUnique: true` sowohl für Einspalten- als auch Mehrspalteneindeutigkeit. Dies ist das empfohlene Primitive `defineField({ isUnique: true })` ist veraltet und wird in einer zukünftigen Version entfernt.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Andere Einschränkungen
* Partielle `WHERE`-Klauseln bleiben unter Kontrolle der Administratoren Apps können sie nicht deklarieren.
* Jedes Objekt ist auf 10 benutzerdefinierte Indizes begrenzt (die Indizes des Frameworks selbst werden nicht mitgezählt).
Ordnen Sie das `fields`-Array so an, wie Postgres es verwenden soll die ganz linke Spalte zuerst, wie in einem Telefonbuch. Indizes sind nicht kostenlos: Jeder Schreibvorgang in die Tabelle aktualisiert sie. Fügen Sie einen nur dann hinzu, wenn Sie eine Abfrage haben, die ihn benötigt.
<Note>
Suchen Sie nach **Application Config** oder **Roles & Permissions**? Diese beschreiben die App selbst und nicht die Daten, die sie hinzufügt sie befinden sich unter [Config](/l/de/developers/extend/apps/config/overview). Suchen Sie nach **Connections** (Linear, GitHub, Slack OAuth)? Diese existieren, um *von* Logikfunktionen aufgerufen zu werden, und befinden sich unter [Logic](/l/de/developers/extend/apps/logic/connections).
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Feldtypen mit ähnlichen Namen können völlig unterschiedliche Operanden verwenden `SELECT` und `MULTI_SELECT` sind ein häufiges Beispiel.
@@ -101,6 +101,10 @@ Machen Sie ein Feld einzigartig, um sicherzustellen, dass sich keine verschieden
Wenn beim Einstellen der Einzigartigkeit ein Fehler auftritt, überprüfen Sie auf doppelte Werte in Ihren Daten (einschließlich gelöschter Datensätze).
## Indizes (Erweitert)
Datenbankindizes werden automatisch verwaltet eigene hinzuzufügen ist selten erforderlich und kann leicht schiefgehen. Wenn der Erweiterte Modus aktiviert ist, hat jedes Objekt unter `Einstellungen → Datenmodell → <object>` einen Abschnitt **Indizes** für die Fälle, in denen du weißt, dass du einen brauchst.
## Beste Praktiken zur Feldkonfiguration
### Benennungskonventionen und Einschränkungen
@@ -44,8 +44,53 @@ A **camada de dados** de um app Twenty é o conjunto de dados que seu app *adici
| **Objeto** | Um novo tipo de registro personalizado (por exemplo, PostCard, Invoice) com seus próprios campos | `defineObject()` |
| **Campo** | Uma coluna em um objeto. Campos independentes podem estender objetos que você não criou (por exemplo, adicionar `loyaltyTier` ao objeto Company) | `defineField()` |
| **Relação** | Um vínculo bidirecional entre dois objetos — ambos os lados declarados como campos | `defineField()` com `FieldType.RELATION` |
| **Índice** | Um índice de banco de dados para acelerar uma consulta recorrente em um dos seus objetos | `defineIndex()` |
O SDK detecta esses elementos por meio de análise de AST em tempo de build, então a organização dos arquivos fica a seu critério — a convenção é `src/objects/` e `src/fields/`. UUIDs `universalIdentifier` estáveis conectam tudo em implantações diferentes.
O SDK detecta esses elementos por meio de análise de AST em tempo de build, então a organização dos arquivos fica a seu critério — a convenção é `src/objects/`, `src/fields/` e `src/indexes/`. UUIDs `universalIdentifier` estáveis conectam tudo em implantações diferentes.
## Índices (Opcional)
Os apps podem incluir índices junto com seus objetos para manter rápidas as consultas recorrentes. O caso mais comum é uma coluna de status ou de chave estrangeira que você lê com frequência.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Índices únicos
`defineIndex` aceita `isUnique: true` tanto para unicidade de uma única coluna quanto de múltiplas colunas. Este é o recurso recomendado — `defineField({ isUnique: true })` está obsoleto e será removido em uma versão futura.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Outras restrições
* Cláusulas `WHERE` parciais permanecem sob controle do administrador — os apps não podem declará-las.
* Cada objeto é limitado a 10 índices personalizados (os índices do próprio framework não contam).
Ordene o array `fields` da forma como o Postgres deve usá-lo — coluna mais à esquerda primeiro, como em uma lista telefônica. Índices não são gratuitos: cada gravação na tabela os atualiza. Adicione um apenas quando você tiver uma consulta que precise dele.
<Note>
Procurando por **Application Config** ou **Roles & Permissions**? Esses descrevem o próprio app em vez dos dados que ele adiciona — eles ficam em [Config](/l/pt/developers/extend/apps/config/overview). Procurando por **Connections** (Linear, GitHub, Slack OAuth)? Essas existem para serem chamadas *a partir de* funções de lógica e ficam em [Logic](/l/pt/developers/extend/apps/logic/connections).
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Tipos de campos com nomes semelhantes podem usar operandos completamente diferentes — `SELECT` e `MULTI_SELECT` sendo um caso comum.
@@ -101,6 +101,10 @@ Torne um campo único para garantir que registros distintos não possam ter o me
Se você receber um erro ao definir exclusividade, verifique se há valores duplicados nos seus dados (incluindo registros excluídos).
## Índices (Avançado)
Os índices do banco de dados são gerenciados automaticamente — adicionar os seus próprios raramente é necessário e é fácil cometer erros. Com o modo Avançado ativado, cada objeto tem uma seção **Índices** em `Settings → Data Model → <object>` para os casos em que você sabe que precisa de um índice.
## Melhores Práticas de Configuração de Campos
### Convenções de Nomeação e Limitações
@@ -44,8 +44,53 @@ Stratul de **date** al unei aplicații Twenty reprezintă datele pe care aplica
| **Obiect** | Un nou tip de înregistrare personalizat (de ex. PostCard, Invoice) cu propriile sale câmpuri | `defineObject()` |
| **Câmp** | O coloană pe un obiect. Câmpurile independente pot extinde obiecte pe care nu le-ați creat (de ex. adăugați `loyaltyTier` la Company) | `defineField()` |
| **Relație** | O legătură bidirecțională între două obiecte — ambele părți declarate ca câmpuri | `defineField()` cu `FieldType.RELATION` |
| **Indice** | Un indice de bază de date pentru a accelera o interogare recurentă asupra unuia dintre obiectele tale | `defineIndex()` |
SDK-ul detectează acestea prin analiza AST la momentul build-ului, astfel încât organizarea fișierelor ține de dumneavoastră — convenția este `src/objects/` și `src/fields/`. UUID-urile stabile `universalIdentifier` leagă totul în toate implementările.
SDK-ul detectează acestea prin analiza AST la momentul build-ului, astfel încât organizarea fișierelor ține de tine — convenția este `src/objects/`, `src/fields/` și `src/indexes/`. UUID-urile stabile `universalIdentifier` leagă totul în toate implementările.
## Indici (opțional)
Aplicațiile pot livra indici împreună cu obiectele lor pentru a menține rapide interogările recurente. Cel mai comun caz este o coloană de status sau o coloană cu cheie străină pe care o citești frecvent.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Indici unici
`defineIndex` acceptă `isUnique: true` atât pentru unicitatea pe o singură coloană, cât și pe mai multe coloane. Aceasta este primitiva recomandată — `defineField({ isUnique: true })` este învechită (deprecated) și va fi eliminată într-o versiune viitoare.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Alte constrângeri
* Clauzele `WHERE` parțiale rămân sub controlul administratorului — aplicațiile nu le pot declara.
* Fiecare obiect este limitat la 10 indici personalizați (indicii proprii ai framework-ului nu se pun la socoteală).
Ordonează array-ul `fields` în modul în care Postgres ar trebui să îl folosească — coloana din stânga prima, ca într-o agendă telefonică. Indicii nu sunt gratuiți: fiecare scriere în tabel îi actualizează. Adaugă unul doar atunci când ai o interogare care are nevoie de el.
<Note>
Căutați **Application Config** sau **Roles & Permissions**? Acestea descriu aplicația în sine, mai degrabă decât datele pe care le adaugă — se află la [Config](/l/ro/developers/extend/apps/config/overview). Căutați **Connections** (Linear, GitHub, Slack OAuth)? Acestea există pentru a fi apelate *din* funcții de logică și se află la [Logic](/l/ro/developers/extend/apps/logic/connections).
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Tipurile de câmp cu nume similare pot folosi operanzi complet diferiți — `SELECT` și `MULTI_SELECT` fiind un caz comun.
@@ -101,6 +101,10 @@ Faceți un câmp unic pentru a vă asigura că înregistrările distincte nu pot
Dacă primiți o eroare când setați unicitatea, verificați prezența valorilor duplicate în datele dumneavoastră (inclusiv în cele șterse).
## Indexuri (Avansat)
Indexurile bazei de date sunt gestionate automat — adăugarea unor indexuri proprii este rareori necesară și se greșește ușor. Cu modul Avansat activat, fiecare obiect are o secțiune **Indexuri** sub `Settings → Data Model → <object>` pentru cazurile în care știi că ai nevoie de unul.
## Cele mai bune practici pentru configurarea câmpurilor
### Convenții de denumire și limitări
@@ -44,8 +44,53 @@ icon: database
| **Объект** | Новый пользовательский тип записей (например, PostCard, Invoice) с собственными полями | `defineObject()` |
| **Поле** | Столбец в объекте. Отдельные поля могут расширять объекты, которые вы не создавали (например, добавьте `loyaltyTier` к объекту Company) | `defineField()` |
| **Связь** | Двусторонняя связь между двумя объектами — обе стороны объявлены как поля | `defineField()` с `FieldType.RELATION` |
| **Индекс** | Индекс базы данных для ускорения повторяющегося запроса к одному из ваших объектов | `defineIndex()` |
SDK обнаруживает их с помощью анализа AST во время сборки, поэтому организация файлов остается на ваше усмотрение — по соглашению используются `src/objects/` и `src/fields/`. Стабильные UUID `universalIdentifier` связывают все воедино между развертываниями.
SDK обнаруживает их с помощью анализа AST во время сборки, поэтому организация файлов остается на ваше усмотрение — по соглашению используются `src/objects/`, `src/fields/` и `src/indexes/`. Стабильные UUID `universalIdentifier` связывают все воедино между развертываниями.
## Индексы (необязательно)
Приложения могут поставлять индексы вместе со своими объектами, чтобы повторяющиеся запросы выполнялись быстро. Наиболее распространенный случай — столбец статуса или внешнего ключа, к которому вы часто обращаетесь при чтении.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Уникальные индексы
`defineIndex` принимает `isUnique: true` как для уникальности по одному столбцу, так и по нескольким столбцам. Это рекомендуемый примитив — `defineField({ isUnique: true })` устарел и будет удален в одном из будущих релизов.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Другие ограничения
* Частичные предложения `WHERE` остаются под контролем администратора — приложения не могут объявлять их.
* Для каждого объекта допускается не более 10 пользовательских индексов (индексы самого фреймворка не учитываются).
Упорядочьте массив `fields` в том порядке, в котором Postgres должен его использовать — сначала самый левый столбец, как в телефонной книге. Индексы не бесплатны: при каждой записи в таблицу они обновляются. Добавляйте индекс только тогда, когда у вас есть запрос, которому он действительно нужен.
<Note>
Ищете **Application Config** или **Roles & Permissions**? Они описывают само приложение, а не данные, которые оно добавляет, — их можно найти в разделе [Config](/l/ru/developers/extend/apps/config/overview). Ищете **Connections** (Linear, GitHub, Slack OAuth)? Они существуют для вызова *из* логических функций и находятся в разделе [Logic](/l/ru/developers/extend/apps/logic/connections).
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Типы полей с похожими названиями могут использовать совершенно разные операнды — типичный пример: `SELECT` и `MULTI_SELECT`.
@@ -101,6 +101,10 @@ Twenty поддерживает различные типы полей:
Если вы получаете ошибку при установке уникальности, проверьте дублирующиеся значения в ваших данных (включая удаленные записи).
## Индексы (расширенный режим)
Индексы базы данных управляются автоматически — добавлять собственные почти никогда не требуется и при этом легко допустить ошибку. При включенном расширенном режиме у каждого объекта есть раздел **Индексы** в `Settings → Data Model → <object>` для случаев, когда вы знаете, что вам нужен индекс.
## Лучшие практики в настройке полей
### Именование и ограничения
@@ -44,8 +44,53 @@ Bir Twenty uygulamasının **veri katmanı**, uygulamanızın bir çalışma ala
| **Nesne** | Kendi alanlarına sahip yeni bir özel kayıt türü (ör. PostCard, Invoice) | `defineObject()` |
| **Alan** | Bir nesne üzerindeki sütun. Bağımsız alanlar, oluşturmadığınız nesneleri genişletebilir (ör. Company nesnesine `loyaltyTier` ekleyin) | `defineField()` |
| **İlişki** | İki nesne arasında, her iki tarafı da alan olarak bildirilmiş çift yönlü bir bağlantı | `defineField()` ile `FieldType.RELATION` |
| **Dizin** | Nesnelerinizden biri üzerinde yinelenen bir sorguyu hızlandırmak için bir veritabanı dizini | `defineIndex()` |
SDK bunları derleme zamanında AST analiziyle algılar, bu yüzden dosya organizasyonu size kalmıştır — kullanılan gelenek `src/objects/` ve `src/fields/` dizinleridir. Kararlı `universalIdentifier` UUIDleri, dağıtımlar arasında her şeyi birbirine bağlar.
SDK bunları derleme zamanında AST analiziyle algılar, bu yüzden dosya organizasyonu size kalmıştır — kullanılan gelenek `src/objects/`, `src/fields/` ve `src/indexes/` dizinleridir. Kararlı `universalIdentifier` UUIDleri, dağıtımlar arasında her şeyi birbirine bağlar.
## Dizinler (İsteğe bağlı)
Uygulamalar, yinelenen sorguları hızlı tutmak için nesneleriyle birlikte dizinler sunabilir. En yaygın durum, sık okuduğunuz bir durum ya da yabancı anahtar sütunudur.
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### Benzersiz dizinler
`defineIndex`, hem tek sütunlu hem çok sütunlu benzersizlik için `isUnique: true` kabul eder. Önerilen yöntem budur — `defineField({ isUnique: true })` kullanımdan kaldırılmıştır ve gelecekteki bir sürümde kaldırılacaktır.
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### Diğer kısıtlamalar
* Kısmi `WHERE` koşulları yönetici kontrolü altında kalır — uygulamalar bunları tanımlayamaz.
* Her nesne, 10 özel dizin ile sınırlandırılmıştır (framework'ün kendi dizinleri buna dahil değildir).
`fields` dizisini, Postgres'in kullanması gereken şekilde sıralayın — en soldaki sütun ilk, bir telefon rehberinde olduğu gibi. Dizinler bedava değildir: tabloya yapılan her yazma işlemi bunları günceller. Bir dizini yalnızca ona ihtiyaç duyan bir sorgunuz olduğunda ekleyin.
<Note>
**Application Config** veya **Roles & Permissions** mı arıyorsunuz? Bunlar, ekledikleri verilerden çok uygulamanın kendisini tanımlar — [Config](/l/tr/developers/extend/apps/config/overview) altında bulunurlar. **Connections** (Linear, GitHub, Slack OAuth) mı arıyorsunuz? Bunlar, mantık fonksiyonları *içinden* çağrılmak için vardır ve [Logic](/l/tr/developers/extend/apps/logic/connections) altında bulunurlar.
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> Benzer adlara sahip alan türleri tamamen farklı işleçler kullanabilir — buna `SELECT` ve `MULTI_SELECT` yaygın bir örnektir.
@@ -101,6 +101,10 @@ Farklı kayıtların aynı değere sahip olamaması için bir alanı benzersiz y
Benzersizliği ayarlarken bir hata alırsanız, verilerinizde (silinen kayıtlar dahil) yinelenen değerleri kontrol edin.
## Dizinler (Gelişmiş)
Veritabanı dizinleri otomatik olarak yönetilir — kendi dizinlerinizi eklemeniz nadiren gereklidir ve yanlış yapmak da kolaydır. Gelişmiş mod açıkken, bir dizine ihtiyacınız olduğunu bildiğiniz durumlar için her nesnenin `Ayarlar → Veri Modeli → <object>` altında bir **Dizinler** bölümü bulunur.
## Alan Yapılandırma En İyi Uygulamaları
### Adlandırma Kuralları ve Kısıtlamaları
@@ -44,8 +44,53 @@ Twenty 应用的 **数据层(data layer)** 是你的应用*添加*到工作
| **对象** | 具有自有字段的新自定义记录类型(例如 PostCard、Invoice | `defineObject()` |
| **字段** | 对象上的一列。 独立字段可以扩展你未创建的对象(例如向 Company 添加 `loyaltyTier` | `defineField()` |
| **关系** | 两个对象之间的双向链接——双方都声明为字段 | 使用 `defineField()` 并指定 `FieldType.RELATION` |
| **索引** | 用于加速在某个对象上经常执行的查询的数据库索引 | `defineIndex()` |
SDK 会在构建时通过 AST 分析检测这些内容,因此文件组织方式由你决定——约定是使用 `src/objects/` 和 `src/fields/`。 稳定的 `universalIdentifier` UUID 在不同部署之间将一切关联在一起。
SDK 会在构建时通过 AST 分析检测这些内容,因此文件组织方式由你决定——约定是使用 `src/objects/`、`src/fields/` 和 `src/indexes/`。 稳定的 `universalIdentifier` UUID 在不同部署之间将一切关联在一起。
## 索引(可选)
应用可以随对象一同提供索引,以确保经常执行的查询保持快速。 最常见的情况是某个你经常读取的状态列或外键列。
```ts src/indexes/post-card-status.index.ts
import { defineIndex } from 'twenty-sdk/define';
import {
POST_CARD_UNIVERSAL_IDENTIFIER,
STATUS_FIELD_UNIVERSAL_IDENTIFIER,
} from '../objects/post-card.object';
export default defineIndex({
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff0',
objectUniversalIdentifier: POST_CARD_UNIVERSAL_IDENTIFIER,
fields: [
{
universalIdentifier: 'b6e9d2a1-5a4c-46ca-9d52-42c8f02d1ff1',
fieldUniversalIdentifier: STATUS_FIELD_UNIVERSAL_IDENTIFIER,
},
],
});
```
### 唯一索引
`defineIndex` 接受 `isUnique: true`,可同时用于单列和多列表达唯一性约束。 这是推荐的基础方式——`defineField({ isUnique: true })` 已被弃用,并将在未来的版本中移除。
```ts
defineIndex({
universalIdentifier: '…',
objectUniversalIdentifier: PERSON_UNIVERSAL_IDENTIFIER,
isUnique: true,
fields: [{ universalIdentifier: '…', fieldUniversalIdentifier: EMAIL_FIELD_UNIVERSAL_IDENTIFIER }],
});
```
### 其他约束
* 部分 `WHERE` 子句由管理员控制——应用无法声明它们。
* 每个对象最多只能有 10 个自定义索引(框架自身的索引不计入其中)。
按照 Postgres 使用索引的方式来排列 `fields` 数组——最左边的列放在最前面,就像电话簿一样。 索引不是免费的:对表的每一次写入都会更新索引。 只有当你确实有查询需要某个索引时才添加它。
<Note>
在找 **Application Config** 或 **Roles & Permissions** 吗? 这些描述的是应用本身而不是它添加的数据——相关内容位于 [Config](/l/zh/developers/extend/apps/config/overview) 下。 在找 **Connections**Linear、GitHub、Slack OAuth)吗? 这些用于*从*逻辑函数中调用,并位于 [Logic](/l/zh/developers/extend/apps/logic/connections) 下。
@@ -70,7 +70,7 @@ filters: [
| `CURRENCY.currencyCode` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `DATE`, `DATE_TIME` | `IS`, `IS_RELATIVE`, `IS_IN_PAST`, `IS_IN_FUTURE`, `IS_TODAY`, `IS_BEFORE`, `IS_AFTER`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `BOOLEAN` | `IS` |
| `UUID` | `IS` |
| `UUID` | `IS`, `IS_NOT`, `IS_EMPTY`, `IS_NOT_EMPTY` |
| `TS_VECTOR` | `VECTOR_SEARCH` |
> 名称相似的字段类型可以使用完全不同的运算符 —— `SELECT` 和 `MULTI_SELECT` 就是常见情况。
@@ -101,6 +101,10 @@ Twenty 支持多种字段类型:
如果在设置唯一性时出现错误,请检查数据中是否有重复值(包括删除的记录)。
## 索引(高级)
数据库索引由系统自动管理——自己添加索引通常没必要,而且也很容易出错。 在开启高级模式后,每个对象在 `Settings → Data Model → <object>` 下都会有一个 **Indexes** 部分,供你在确实需要索引时使用。
## 字段配置最佳实践
### 命名约定和限制
@@ -101,6 +101,10 @@ Make a field unique to ensure distinct records cannot have the same value. For e
If you get an error when setting uniqueness, check for duplicate values in your data (including deleted records).
## Indexes (Advanced)
Database indexes are managed automatically — adding your own is rarely necessary and easy to get wrong. With Advanced mode on, each object has an **Indexes** section under `Settings → Data Model → <object>` for the cases where you know you need one.
## Field Configuration Best Practices
### Naming Conventions and Limitations
+19 -1
View File
@@ -4,12 +4,18 @@ import { type Preview } from '@storybook/react-vite';
import { initialize, mswLoader } from 'msw-storybook-addon';
import { SOURCE_LOCALE } from 'twenty-shared/translations';
// oxlint-disable-next-line no-restricted-imports
import { DateFormat } from '../src/modules/localization/constants/DateFormat';
// oxlint-disable-next-line no-restricted-imports
import { TimeFormat } from '../src/modules/localization/constants/TimeFormat';
// oxlint-disable-next-line no-restricted-imports
import { FileUploadProvider } from '../src/modules/file-upload/components/FileUploadProvider';
// oxlint-disable-next-line no-restricted-imports
import { RootDecorator } from '../src/testing/decorators/RootDecorator';
// oxlint-disable-next-line no-restricted-imports
import { resetJotaiStore } from '../src/modules/ui/utilities/state/jotai/jotaiStore';
// oxlint-disable-next-line no-restricted-imports
import { UserContext } from '../src/modules/users/contexts/UserContext';
import 'react-loading-skeleton/dist/skeleton.css';
import 'twenty-ui/style.css';
@@ -59,6 +65,16 @@ initialize({
quiet: true,
});
// Mirrors production's MinimalMetadataGater so any story rendering a
// date-aware component (DateTimeDisplay, etc.) sees a real IANA timeZone
// instead of UserContext's default `{}`. Stories needing a specific timezone
// can still override by nesting their own UserContext.Provider.
const STORYBOOK_DEFAULT_USER_CONTEXT = {
dateFormat: DateFormat.DAY_FIRST,
timeFormat: TimeFormat.HOUR_24,
timeZone: 'UTC',
};
const preview: Preview = {
decorators: [
(Story) => {
@@ -69,7 +85,9 @@ const preview: Preview = {
<ClickOutsideListenerContext.Provider
value={{ excludedClickOutsideId: undefined }}
>
<Story />
<UserContext.Provider value={STORYBOOK_DEFAULT_USER_CONTEXT}>
<Story />
</UserContext.Provider>
</ClickOutsideListenerContext.Provider>
</FileUploadProvider>
</ThemeProvider>
File diff suppressed because one or more lines are too long
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} Agentrol"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} van {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Voeg eerste filter by"
msgid "Add In-Reply-To"
msgstr "Voeg In-Reply-To by"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Gevorderd"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Gevorderde funksie om die werkverrigting van navrae te verbeter en uniekheidsbeperkings af te dwing."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "'n Fout het voorgekom tydens die oplaai van die prent."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Magtiging het misluk. Probeer asseblief weer."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Otoriseer"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Gemagtigde URL na knipbord gekopieer"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Magtiging word verwerk..."
@@ -2650,6 +2658,11 @@ msgstr "Terug na {linkText}"
msgid "Back to content"
msgstr "Terug na inhoud"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Brons"
msgid "Brown"
msgstr "Bruin"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Kan nie skandeer nie? Kopieer die"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Kan nie skandeer nie? Kopieer die"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Kanselleer"
@@ -5098,6 +5116,7 @@ msgstr "verwyder"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Verwyder vaardigheid"
msgid "Delete this agent"
msgstr "Verwyder hierdie agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Byvoorbeeld: \"Ons is 'n B2B SaaS-maatskappy. Gebruik altyd formele taal
msgid "e.g., summary, status, count"
msgstr "bv., opsomming, status, telling"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "velde"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Benut jou werkruimte optimaal deur jou span uit te nooi."
msgid "Get your subscription"
msgstr "Kry jou inskrywing"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Versteek versteekte groepe"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identiteitsverskaffer Metadata XML"
msgid "if"
msgstr "indien"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Inboks"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indeks"
msgid "Index"
msgstr "Indeks"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indekse"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Installeer"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nuwe vouer"
msgid "New Group"
msgstr "Nuwe Groep"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Geen vouers beskikbaar nie"
msgid "No folders found for this account"
msgstr "Geen gidse is vir hierdie rekening gevind nie"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objekte"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Opsionele geheim gebruik om die HMAC-handtekening vir webhook-vragte te bereken"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Kies 'n aansig"
msgid "Pick an object"
msgstr "Kies 'n objek"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Kwartaal van die jaar"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Verwyder as verstek"
msgid "Remove Deleted filter"
msgstr "Verwyder Gedeleteerde filter"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Soek 'n toegewyde {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Soek 'n indeks..."
@@ -13777,6 +13859,11 @@ msgstr "Kies 1 veld"
msgid "Select a date"
msgstr "Kies 'n datum"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Wys slegs rye met foute"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spaans"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Twee-faktor magtiging-setup suksesvol voltooi!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Tipe"
@@ -16585,6 +16683,11 @@ msgstr "Gebruik slegs die beste modelle"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Werksvloeie"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "دور الوكيل {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} من {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "أضف أول فلتر"
msgid "Add In-Reply-To"
msgstr "إضافة In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "متقدم"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "ميزة متقدمة لتحسين أداء الاستعلامات وفرض قيود التوحيد."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "حدث خطأ أثناء تحميل الصورة."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "فشل التفويض. يرجى المحاولة مرة أخرى."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "اعتماد"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "تم نسخ رابط URL المرخص إلى الحافظة"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "جاري التفويض..."
@@ -2650,6 +2658,11 @@ msgstr "العودة إلى {linkText}"
msgid "Back to content"
msgstr "العودة إلى المحتوى"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "برونزي"
msgid "Brown"
msgstr "بني"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "هل لا يمكنك المسح؟ انسخ الـ"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "هل لا يمكنك المسح؟ انسخ الـ"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "إلغاء"
@@ -5098,6 +5116,7 @@ msgstr "حذف"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "حذف المهارة"
msgid "Delete this agent"
msgstr "حذف هذا الوكيل"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "مثال: \"نحن شركة B2B SaaS. استخدِم دائمًا لغة
msgid "e.g., summary, status, count"
msgstr "على سبيل المثال، ملخص، حالة، تعداد"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "حقول"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "استفد من مساحة العمل الخاصة بك عن طريق د
msgid "Get your subscription"
msgstr "احصل على اشتراكك"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "إخفاء المجموعات المخفية"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "بيانات تعريف موفر الهوية XML"
msgid "if"
msgstr "إذا"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "صندوق الوارد"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "الفهرسات"
msgid "Index"
msgstr "الفهرس"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "الفهرسات"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "تثبيت"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "مجلد جديد"
msgid "New Group"
msgstr "مجموعة جديدة"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "لا توجد مجلدات متاحة"
msgid "No folders found for this account"
msgstr "لم يتم العثور على مجلدات لهذا الحساب"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "الكائنات"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "سر اختياري يُستخدم لحساب توقيع HMAC لأحمال ويبهوك"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "اختر عرضًا"
msgid "Pick an object"
msgstr "اختر كائنًا"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "ربع من السنة"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "إزالة كافتراضي"
msgid "Remove Deleted filter"
msgstr "إزالة الفلتر المحذوف"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "البحث عن {roleTargetDisplayName} معين..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "ابحث عن فهرس..."
@@ -13777,6 +13859,11 @@ msgstr "حدد حقل واحد"
msgid "Select a date"
msgstr "اختر تاريخًا"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "اعرض الصفوف التي تحتوي على أخطاء فقط"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "الإسبانية"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "تم إكمال إعداد المصادقة الثنائية بنجاح!
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "النوع"
@@ -16585,6 +16683,11 @@ msgstr "استخدام أفضل النماذج فقط"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17309,6 +17412,7 @@ msgstr "سير العمل"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Rol d'agent {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Afegeix el primer filtre"
msgid "Add In-Reply-To"
msgstr "Afegeix In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Avançat"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Funció avançada per millorar el rendiment de les consultes i fer complir les restriccions d'uniqüitat."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "S'ha produït un error en carregar la imatge."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "L'autorització ha fallat. Torna-ho a intentar."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoritzar"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autoritzat copiat al porta-retalls"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autoritzant..."
@@ -2650,6 +2658,11 @@ msgstr "Torna a {linkText}"
msgid "Back to content"
msgstr "Tornar al contingut"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronze"
msgid "Brown"
msgstr "Marró"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "No pots escanejar? Copia la"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "No pots escanejar? Copia la"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Cancel·la"
@@ -5098,6 +5116,7 @@ msgstr "elimina"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Suprimeix l'habilitat"
msgid "Delete this agent"
msgstr "Esborra aquest agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "P. ex., \"Som una empresa SaaS B2B. Utilitza sempre un llenguatge formal
msgid "e.g., summary, status, count"
msgstr "p. ex., resum, estat, comptador"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "camps"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Treu el màxim partit al teu espai de treball convidant al teu equip."
msgid "Get your subscription"
msgstr "Obteniu la vostra subscripció"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Amaga grups ocults"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Metadades XML del Proveïdor d'Identitat"
msgid "if"
msgstr "si"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Bústia d'entrada"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "índex"
msgid "Index"
msgstr "Índex"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Índexs"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Instal·la"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Carpeta nova"
msgid "New Group"
msgstr "Nou grup"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "No hi ha carpetes disponibles"
msgid "No folders found for this account"
msgstr "No s'han trobat carpetes per aquest compte"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objectes"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Secret opcional usat per calcular la signatura HMAC dels càrregues útils del webhook"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Selecciona una vista"
msgid "Pick an object"
msgstr "Selecciona un objecte"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Trimestre de l'any"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Elimina com a predeterminat"
msgid "Remove Deleted filter"
msgstr "Elimina filtre Eliminat"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Cerca un {roleTargetDisplayName} assignat..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Cerca un índex..."
@@ -13777,6 +13859,11 @@ msgstr "Selecciona 1 camp"
msgid "Select a date"
msgstr "Selecciona una data"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Mostra només les files amb errors"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Espanyol"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Configuració de l'autenticació de dos factors completada amb èxit!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Tipus"
@@ -16585,6 +16683,11 @@ msgstr "Utilitzar només els millors models"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Fluxos de treball"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Role agenta {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} z {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Přidat první filtr"
msgid "Add In-Reply-To"
msgstr "Přidat In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Pokročilé"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Pokročilá funkce pro zlepšení výkonu dotazů a prosazení jedinečnosti."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Při nahrávání obrázku došlo k chybě."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorizace selhala. Zkuste to prosím znovu."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizovat"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Autorizovaná URL zkopírována do schránky"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Probíhá autorizace..."
@@ -2650,6 +2658,11 @@ msgstr "Zpět na {linkText}"
msgid "Back to content"
msgstr "Zpět k obsahu"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronzová"
msgid "Brown"
msgstr "Hnědá"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Nemůžete skenovat? Zkopírujte"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Nemůžete skenovat? Zkopírujte"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Storno"
@@ -5098,6 +5116,7 @@ msgstr "smazat"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Smazat dovednost"
msgid "Delete this agent"
msgstr "Smazat tohoto agenta"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Např.: \"Jsme B2B SaaS společnost. Vždy používejte formální jazyk
msgid "e.g., summary, status, count"
msgstr "např. souhrn, stav, počet"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "pole"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Získejte maximum ze svého pracovního prostoru tím, že pozvete svůj
msgid "Get your subscription"
msgstr "Získejte své předplatné"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Skrýt skryté skupiny"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Metadata XML poskytovatele identity"
msgid "if"
msgstr "pokud"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Schránka"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "index"
msgid "Index"
msgstr "Index"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indexy"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Nainstalovat"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nová složka"
msgid "New Group"
msgstr "Nová skupina"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Žádné složky nejsou k dispozici"
msgid "No folders found for this account"
msgstr "Pro tento účet nebyly nalezeny žádné složky"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objekty"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Volitelný tajný klíč použitý k výpočtu HMAC podpisu pro údaje webhooks"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Vyberte zobrazení"
msgid "Pick an object"
msgstr "Vyberte objekt"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Čtvrtletí roku"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Odstranit jako výchozí"
msgid "Remove Deleted filter"
msgstr "Odstranit smazaný filtr"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Hledat přiřazeného {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Hledat v indexu..."
@@ -13777,6 +13859,11 @@ msgstr "Vyberte 1 pole"
msgid "Select a date"
msgstr "Vyberte datum"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Zobrazit pouze řádky s chybami"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Španělština"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Nastavení dvoufaktorového ověřování bylo úspěšně dokončeno!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Typ"
@@ -16585,6 +16683,11 @@ msgstr "Používat pouze nejlepší modely"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Pracovní postupy"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} Agentrolle"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} af {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Tilføj første filter"
msgid "Add In-Reply-To"
msgstr "Tilføj In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Avanceret"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Avanceret funktion til at forbedre ydeevnen af forespørgsler og håndhæve unikke begrænsninger."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Der opstod en fejl under upload af billedet."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorisering mislykkedes. Prøv igen."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoriser"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Autoriseret URL kopieret til udklipsholder"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autoriserer..."
@@ -2650,6 +2658,11 @@ msgstr "Tilbage til {linkText}"
msgid "Back to content"
msgstr "Tilbage til indhold"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronze"
msgid "Brown"
msgstr "Brun"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Kan ikke scanne? Kopier"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Kan ikke scanne? Kopier"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Annuller"
@@ -5098,6 +5116,7 @@ msgstr "slet"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Slet færdighed"
msgid "Delete this agent"
msgstr "Slet denne agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "F.eks.: \"Vi er en B2B SaaS-virksomhed. Brug altid formelt sprog...\""
msgid "e.g., summary, status, count"
msgstr "f.eks., resumé, status, antal"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "felter"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Få mest muligt ud af din arbejdsplads ved at invitere dit team."
msgid "Get your subscription"
msgstr "Få dit abonnement"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Skjul skjulte grupper"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identitetsudbyder Metadata XML"
msgid "if"
msgstr "hvis"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Indbakke"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indeks"
msgid "Index"
msgstr "Indeks"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indekser"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr ""
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Ny mappe"
msgid "New Group"
msgstr "Ny gruppe"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Ingen mapper tilgængelige"
msgid "No folders found for this account"
msgstr "Ingen mapper fundet for denne konto"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objekter"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Valgfri hemmelighed brugt til at beregne HMAC-signatur for webhook-indhold"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Vælg en visning"
msgid "Pick an object"
msgstr "Vælg et objekt"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Kvartal i året"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Fjern som standard"
msgid "Remove Deleted filter"
msgstr "Fjern slettet filter"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Søg en tildelt {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Søg i et indeks..."
@@ -13777,6 +13859,11 @@ msgstr "Vælg 1 felt"
msgid "Select a date"
msgstr "Vælg en dato"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Vis kun rækker med fejl"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spansk"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16017,6 +16114,7 @@ msgstr "Opsætning af to-faktor godkendelse blev gennemført med succes!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Type"
@@ -16587,6 +16685,11 @@ msgstr "Brug kun de bedste modeller"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17313,6 +17416,7 @@ msgstr "Arbejdsgange"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel}-Agentenrolle"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} von {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Ersten Filter hinzufügen"
msgid "Add In-Reply-To"
msgstr "In-Reply-To hinzufügen"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Fortgeschritten"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Erweiterte Funktion zur Verbesserung der Abfrageleistung und zur Durchsetzung von Einzigartigkeitsbeschränkungen."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Beim Hochladen des Bildes ist ein Fehler aufgetreten."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorisierung fehlgeschlagen. Bitte versuchen Sie es erneut."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorisieren"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Autorisierte URL in die Zwischenablage kopiert"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Wird autorisiert..."
@@ -2650,6 +2658,11 @@ msgstr "Zurück zu {linkText}"
msgid "Back to content"
msgstr "Zurück zum Inhalt"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronze"
msgid "Brown"
msgstr "Braun"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Kann nicht gescannt werden? Kopieren Sie das"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Kann nicht gescannt werden? Kopieren Sie das"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Abbrechen"
@@ -5098,6 +5116,7 @@ msgstr "löschen"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Skill löschen"
msgid "Delete this agent"
msgstr "Diesen Agenten löschen"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Z. B.: \"Wir sind ein B2B-SaaS-Unternehmen. Verwenden Sie immer eine for
msgid "e.g., summary, status, count"
msgstr "z.B. Zusammenfassung, Status, Anzahl"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "Felder"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Holen Sie das Beste aus Ihrem Arbeitsbereich heraus, indem Sie Ihr Team
msgid "Get your subscription"
msgstr "Abonnement abschließen"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Verborgene Gruppen ausblenden"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identitätsanbieter-Metadaten XML"
msgid "if"
msgstr "wenn"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Posteingang"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indizes"
msgid "Index"
msgstr "Indizes"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indizes"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Installieren"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Neuer Ordner"
msgid "New Group"
msgstr "Neue Gruppe"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Keine Ordner verfügbar"
msgid "No folders found for this account"
msgstr "Keine Ordner für dieses Konto gefunden"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "Objekte"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Optionales Geheimnis, um die HMAC-Signatur für Webhook-Nutzlasten zu berechnen"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Eine Ansicht auswählen"
msgid "Pick an object"
msgstr "Ein Objekt auswählen"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Quartal des Jahres"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Als Standard entfernen"
msgid "Remove Deleted filter"
msgstr "Gelöschten Filter entfernen"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Ein zugewiesenes {roleTargetDisplayName} suchen..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Index suchen..."
@@ -13777,6 +13859,11 @@ msgstr "1 Feld auswählen"
msgid "Select a date"
msgstr "Wählen Sie ein Datum aus"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Nur Zeilen mit Fehlern anzeigen"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spanisch"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Einrichtung der Zwei-Faktor-Authentifizierung erfolgreich abgeschlossen!
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Typ"
@@ -16585,6 +16683,11 @@ msgstr "Nur die besten Modelle verwenden"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} Ρόλος Πράκτορα"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} του {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Προσθήκη πρώτου φίλτρου"
msgid "Add In-Reply-To"
msgstr "Προσθήκη In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Προηγμένο"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Σύνθετη λειτουργία για τη βελτίωση της απόδοσης ερωτημάτων και την επιβολή περιορισμών μοναδικότητας."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτω
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Η εξουσιοδότηση απέτυχε. Δοκιμάστε ξανά."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Εξουσιοδότηση"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Το εξουσιοδοτημένο URL αντιγράφηκε στο πρόχειρο"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Γίνεται εξουσιοδότηση..."
@@ -2650,6 +2658,11 @@ msgstr "Πίσω στο {linkText}"
msgid "Back to content"
msgstr "Επιστροφή στο περιεχόμενο"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Μπρονζέ"
msgid "Brown"
msgstr "Καφέ"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Δεν μπορείτε να σαρώσετε; Αντιγράψτε το
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Δεν μπορείτε να σαρώσετε; Αντιγράψτε το
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Ακύρωση"
@@ -5098,6 +5116,7 @@ msgstr "διαγραφή"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Διαγραφή δεξιότητας"
msgid "Delete this agent"
msgstr "Διαγραφή αυτού του πράκτορα"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Π.χ., \"Είμαστε μια εταιρεία B2B SaaS. Να χρησ
msgid "e.g., summary, status, count"
msgstr "π.χ., σύνοψη, κατάσταση, πλήθος"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "πεδία"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Αξιοποιείστε τον χώρο εργασίας σας με τ
msgid "Get your subscription"
msgstr "Αποκτήστε τη συνδρομή σας"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Απόκρυψη κρυφών ομάδων"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Μεταδεδομένα XML Παρόχου Ταυτότητας"
msgid "if"
msgstr "εάν"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Εισερχόμενα"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "ευρετήριο"
msgid "Index"
msgstr "Ευρετήριο"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Ευρετήρια"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Εγκατάσταση"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Νέος φάκελος"
msgid "New Group"
msgstr "Νέα ομάδα"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Δεν υπάρχουν διαθέσιμοι φάκελοι"
msgid "No folders found for this account"
msgstr "Δεν βρέθηκαν φάκελοι για αυτόν το λογαριασμό"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "αντικείμενα"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Προαιρετικό μυστικό που χρησιμοποιείται για τον υπολογισμό της υπογραφής HMAC για φορτία webhook"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Επιλέξτε μια προβολή"
msgid "Pick an object"
msgstr "Επιλέξτε ένα αντικείμενο"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Τρίμηνο του έτους"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Αφαίρεση ως προεπιλεγμένο"
msgid "Remove Deleted filter"
msgstr "Αφαίρεση φίλτρου διαγραμμένων"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Αναζήτηση ανατεθέντος {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Αναζήτηση ευρετηρίου..."
@@ -13777,6 +13859,11 @@ msgstr "Επιλογή 1 πεδίου"
msgid "Select a date"
msgstr "Επιλέξτε ημερομηνία"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14234,6 +14321,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Εμφάνιση μόνο γραμμών με λάθη"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14531,6 +14623,11 @@ msgstr ""
msgid "Spanish"
msgstr "Ισπανικά"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16019,6 +16116,7 @@ msgstr "Η εγκατάσταση δύο παραγοντικής ταυτοπο
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Τύπος"
@@ -16589,6 +16687,11 @@ msgstr "Χρήση μόνο των καλύτερων μοντέλων"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17315,6 +17418,7 @@ msgstr "Ροές Εργασίας"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -231,6 +231,11 @@ msgstr "{agentLabel} Agent Role"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} of {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr "{appDisplayName} would like to:"
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1077,6 +1082,12 @@ msgstr "Add first filter"
msgid "Add In-Reply-To"
msgstr "Add In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr "Add Index"
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1380,11 +1391,6 @@ msgstr "Advanced"
msgid "Advanced Encryption"
msgstr "Advanced Encryption"
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Advanced feature to improve the performance of queries and to enforce unicity constraints."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1905,8 +1911,10 @@ msgstr "An error occurred while uploading the picture."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2546,7 +2554,7 @@ msgid "Authorization failed. Please try again."
msgstr "Authorization failed. Please try again."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Authorize"
@@ -2561,7 +2569,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Authorized URL copied to clipboard"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Authorizing..."
@@ -2645,6 +2653,11 @@ msgstr "Back to {linkText}"
msgid "Back to content"
msgstr "Back to content"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr "Back to settings"
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2817,6 +2830,11 @@ msgstr "Bronze"
msgid "Brown"
msgstr "Brown"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr "BTREE (default, good for sorting and equality)"
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3000,7 +3018,6 @@ msgstr "Can't scan? Copy the"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3012,6 +3029,7 @@ msgstr "Can't scan? Copy the"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Cancel"
@@ -5093,6 +5111,7 @@ msgstr "delete"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5235,6 +5254,11 @@ msgstr "Delete Skill"
msgid "Delete this agent"
msgstr "Delete this agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr "Delete this index?"
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5706,6 +5730,11 @@ msgstr "E.g., \"We are a B2B SaaS company. Always use formal language...\""
msgid "e.g., summary, status, count"
msgstr "e.g., summary, status, count"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7255,6 +7284,7 @@ msgstr "fields"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7721,6 +7751,16 @@ msgstr "Get the most out of your workspace by inviting your team."
msgid "Get your subscription"
msgstr "Get your subscription"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr "GIN (full-text search and JSONB)"
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr "Global search"
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7992,6 +8032,11 @@ msgstr "Hide hidden groups"
msgid "Hide label"
msgstr "Hide label"
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr "Hide system indexes"
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8206,11 +8251,6 @@ msgstr "Identity Provider Metadata XML"
msgid "if"
msgstr "if"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr "If disabled, use advanced search filters to find these records"
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8386,11 +8426,6 @@ msgstr "Inbox"
msgid "Include emails where all participants share the same domain."
msgstr "Include emails where all participants share the same domain."
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr "Include in default search"
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8406,9 +8441,18 @@ msgstr "index"
msgid "Index"
msgstr "Index"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr "Index created"
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr "Index deleted"
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indexes"
@@ -8488,6 +8532,11 @@ msgstr "Insert a JSON input, then press \"Run Function\"."
msgid "Install"
msgstr "Install"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr "Install {appDisplayName} on your workspace"
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10349,6 +10398,12 @@ msgstr "New folder"
msgid "New Group"
msgstr "New Group"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr "New Index"
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10778,6 +10833,11 @@ msgstr "No folders available"
msgid "No folders found for this account"
msgstr "No folders found for this account"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr "No indexes match your filters."
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11335,6 +11395,7 @@ msgstr "objects"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11574,6 +11635,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Optional secret used to compute the HMAC signature for webhook payloads"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11987,6 +12049,16 @@ msgstr "Pick a view"
msgid "Pick an object"
msgstr "Pick an object"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12438,6 +12510,11 @@ msgstr "Quarter of the year"
msgid "quarters"
msgstr "quarters"
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12824,6 +12901,11 @@ msgstr "Remove as default"
msgid "Remove Deleted filter"
msgstr "Remove Deleted filter"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr "Remove field"
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13495,7 +13577,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Search an assigned {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Search an index..."
@@ -13795,6 +13877,11 @@ msgstr "Select 1 field"
msgid "Select a date"
msgstr "Select a date"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr "Select a field"
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14250,6 +14337,11 @@ msgstr "Show hidden objects"
msgid "Show only rows with errors"
msgstr "Show only rows with errors"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr "Show this object's records in the command menu (⌘K)."
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14547,6 +14639,11 @@ msgstr "Spaces and comma"
msgid "Spanish"
msgstr "Spanish"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16065,6 +16162,7 @@ msgstr "Two-factor authentication setup completed successfully!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Type"
@@ -16635,6 +16733,11 @@ msgstr "Use best models only"
msgid "Use filter to see existing tools or create your own"
msgstr "Use filter to see existing tools or create your own"
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr "Use indexes sparingly"
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17361,6 +17464,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Rol de agente de {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Añadir primer filtro"
msgid "Add In-Reply-To"
msgstr "Agregar In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Avanzado"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Característica avanzada para mejorar el rendimiento de consultas y para imponer restricciones de unicidad."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Se produjo un error al subir la imagen."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "La autorización falló. Por favor, inténtelo de nuevo."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizar"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autorizada copiada al portapapeles"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autorizando..."
@@ -2650,6 +2658,11 @@ msgstr "Volver a {linkText}"
msgid "Back to content"
msgstr "Volver al contenido"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronce"
msgid "Brown"
msgstr "Marrón"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "¿No puedes escanear? Copia el"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "¿No puedes escanear? Copia el"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Cancelar"
@@ -5098,6 +5116,7 @@ msgstr "eliminar"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Eliminar habilidad"
msgid "Delete this agent"
msgstr "Eliminar este agente"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "p. ej., \"Somos una empresa SaaS B2B. Utiliza siempre un lenguaje formal
msgid "e.g., summary, status, count"
msgstr "ej., resumen, estado, conteo"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "campos"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Aproveche al máximo su espacio de trabajo invitando a su equipo."
msgid "Get your subscription"
msgstr "Obtenga su suscripción"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Ocultar grupos ocultos"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "XML de Metadatos del Proveedor de Identidad"
msgid "if"
msgstr "si"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Bandeja de entrada"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "índices"
msgid "Index"
msgstr "Índice"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Índices"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Instalar"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nueva carpeta"
msgid "New Group"
msgstr "Nuevo grupo"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "No hay carpetas disponibles"
msgid "No folders found for this account"
msgstr "No se encontraron carpetas para esta cuenta"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objetos"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Secreto opcional utilizado para calcular la firma HMAC de los datos del webhook"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Selecciona una vista"
msgid "Pick an object"
msgstr "Selecciona un objeto"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Trimestre del año"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Quitar como predeterminado"
msgid "Remove Deleted filter"
msgstr "Eliminar filtro Eliminado"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Buscar un {roleTargetDisplayName} asignado..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Buscar un índice..."
@@ -13777,6 +13859,11 @@ msgstr "Seleccionar 1 campo"
msgid "Select a date"
msgstr "Selecciona una fecha"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Mostrar solo filas con errores"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Español"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16017,6 +16114,7 @@ msgstr "¡La configuración de la autenticación de dos factores se completó co
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Tipo"
@@ -16587,6 +16685,11 @@ msgstr "Usar solo los mejores modelos"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17313,6 +17416,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Agenttirooli: {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} {fieldLabel} määrä"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Lisää ensimmäinen suodatin"
msgid "Add In-Reply-To"
msgstr "Lisää In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Edistynyt"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Edistynyt ominaisuus tiedusteluiden suorituskyvyn parantamiseksi ja ainutlaatuisuusrajoitusten toimeenpanemiseksi."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Kuvaa ladattaessa tapahtui virhe."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Valtuutus epäonnistui. Yritä uudelleen."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Valtuuta"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Valtuutettu URL kopioitu leikepöydälle"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Valtuutetaan..."
@@ -2650,6 +2658,11 @@ msgstr "Takaisin kohteeseen {linkText}"
msgid "Back to content"
msgstr "Takaisin sisältöön"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Pronssi"
msgid "Brown"
msgstr "Ruskea"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Et voi skannata? Kopioi"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Et voi skannata? Kopioi"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Peruuta"
@@ -5098,6 +5116,7 @@ msgstr "poista"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Poista taito"
msgid "Delete this agent"
msgstr "Poista tämä agentti"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Esim. \"Olemme B2B SaaS -yritys. Käytä aina muodollista kieltä...\""
msgid "e.g., summary, status, count"
msgstr "esim. yhteenveto, tila, määrä"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "kentät"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Saa kaiken irti työtilastasi kutsuen tiimisi mukaan."
msgid "Get your subscription"
msgstr "Hanki tilaus"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Piilota piilotetut ryhmät"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identiteetintarjoajan Metadata XML"
msgid "if"
msgstr "jos"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Saapuneet"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indeksit"
msgid "Index"
msgstr "Indeksit"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indeksit"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Asenna"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr ""
msgid "New Group"
msgstr "Uusi ryhmä"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr ""
msgid "No folders found for this account"
msgstr "Tilille ei löytynyt kansioita"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objektit"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Vaihtoehtoinen salaisuus, jota käytetään HMAC-allekirjoituksen laskemiseen webhook-payloadit varten"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr ""
msgid "Pick an object"
msgstr ""
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Vuoden neljännes"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Poista oletuksena"
msgid "Remove Deleted filter"
msgstr "Poista Poistetut-suodatin"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Etsi osoitettu {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Etsi indeksi..."
@@ -13777,6 +13859,11 @@ msgstr "Valitse 1 kenttä"
msgid "Select a date"
msgstr "Valitse päivämäärä"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Näytä vain virheelliset rivit"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Espanja"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Kaksivaiheisen todennuksen asennus on valmis!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Tyyppi"
@@ -16585,6 +16683,11 @@ msgstr "Käytä vain parhaita malleja"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Työnkulut"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Rôle d'agent {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Ajouter le premier filtre"
msgid "Add In-Reply-To"
msgstr "Ajouter In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Avancé"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Fonctionnalité avancée pour améliorer la performance des requêtes et imposer des contraintes d'unicité."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Une erreur s'est produite lors du téléversement de l'image."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Échec de l'autorisation. Veuillez réessayer."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoriser"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autorisée copiée dans le presse-papiers"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autorisation en cours..."
@@ -2650,6 +2658,11 @@ msgstr "Retour à {linkText}"
msgid "Back to content"
msgstr "Retour au contenu"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronze"
msgid "Brown"
msgstr "Marron"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Impossible de scanner ? Copiez le"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Impossible de scanner ? Copiez le"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Annuler"
@@ -5098,6 +5116,7 @@ msgstr "supprimer"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Supprimer la compétence"
msgid "Delete this agent"
msgstr "Supprimer cet agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Par exemple, \"Nous sommes une entreprise SaaS B2B. Utilisez toujours un
msgid "e.g., summary, status, count"
msgstr "par exemple, résumé, statut, compteur"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "champs"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Tirez le meilleur parti de votre espace de travail en invitant votre éq
msgid "Get your subscription"
msgstr "Obtenez votre abonnement"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Masquer les groupes cachés"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Fichier XML des métadonnées du fournisseur d'identité"
msgid "if"
msgstr "si"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Boîte de réception"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "index"
msgid "Index"
msgstr "Index"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Index"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Installer"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nouveau dossier"
msgid "New Group"
msgstr "Nouveau groupe"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Aucun dossier disponible"
msgid "No folders found for this account"
msgstr "Aucun dossier trouvé pour ce compte"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objets"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Secret facultatif utilisé pour calculer la signature HMAC des charges utiles du webhook"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Choisir une vue"
msgid "Pick an object"
msgstr "Choisir un objet"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Trimestre de l'année"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Supprimer comme défaut"
msgid "Remove Deleted filter"
msgstr "Supprimer le filtre supprimé"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Rechercher un {roleTargetDisplayName} attribué..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Rechercher un index..."
@@ -13777,6 +13859,11 @@ msgstr "Sélectionner 1 champ"
msgid "Select a date"
msgstr "Sélectionnez une date"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Afficher uniquement les lignes avec des erreurs"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Espagnol"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16017,6 +16114,7 @@ msgstr "Configuration de l'authentification à deux facteurs terminée avec succ
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Type"
@@ -16587,6 +16685,11 @@ msgstr "Utiliser uniquement les meilleurs modèles"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17313,6 +17416,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "תפקיד הסוכן {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} של {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "הוסף מסנן ראשון"
msgid "Add In-Reply-To"
msgstr "הוסף In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "מתקדם"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "תכונה מתקדמת לשיפור ביצועי השאילתות ואכיפת אילוצי ייחודיות."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "אירעה שגיאה בעת העלאת התמונה."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "ההרשאה נכשלה. נא לנסות שוב."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "אשר"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "כתובת URL המורשית הועתקה ללוח הגזירים"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "מתבצעת הרשאה..."
@@ -2650,6 +2658,11 @@ msgstr "חזרה אל {linkText}"
msgid "Back to content"
msgstr "חזרה לתוכן"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "ברונזה"
msgid "Brown"
msgstr "חום"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "לא ניתן לסרוק? העתק את"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "לא ניתן לסרוק? העתק את"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "בטל"
@@ -5098,6 +5116,7 @@ msgstr "מחק"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "מחק מיומנות"
msgid "Delete this agent"
msgstr "מחק סוכן זה"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "למשל, \"אנחנו חברת B2B SaaS. השתמש תמיד בשפה
msgid "e.g., summary, status, count"
msgstr "לדוגמא, התמצאות, סטטוס, ספירה"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "שדות"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "נצלו את המרחב שלכם על ידי הזמנת הצוות של
msgid "Get your subscription"
msgstr "השיגו את המנוי שלכם"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "הסתר קבוצות מוסתרות"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "XML של נתוני ספק זיהוי"
msgid "if"
msgstr "אם"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "תיבת דואר"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "אינדקס"
msgid "Index"
msgstr "אינדקס"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "אינדקסים"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "התקן"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "תיקייה חדשה"
msgid "New Group"
msgstr "קבוצה חדשה"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "אין תיקיות זמינות"
msgid "No folders found for this account"
msgstr "לא נמצאו תיקיות עבור חשבון זה"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "אובייקטים"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "סוד אופציונלי המשמש לחישוב חתימת HMAC עבור מטעני webhook"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "בחר תצוגה"
msgid "Pick an object"
msgstr "בחר אובייקט"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "רבע מהשנה"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "הסר כברירת מחדל"
msgid "Remove Deleted filter"
msgstr "הסר מסנן נמחקים"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "חפש מוקצים {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "חפש אינדקס..."
@@ -13777,6 +13859,11 @@ msgstr "בחר שדה אחד"
msgid "Select a date"
msgstr "בחר תאריך"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "הצג רק שורות עם שגיאות"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "\\"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "הגדרת האימות הדו-שלבי הושלמה בהצלחה!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "סוג"
@@ -16585,6 +16683,11 @@ msgstr "השתמש רק במודלים הטובים ביותר"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "זרימות עבודה"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} ügynök szerepköre"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} a(z) {fieldLabel} alapján"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Első szűrő hozzáadása"
msgid "Add In-Reply-To"
msgstr "In-Reply-To hozzáadása"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Haladó"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Fejlett funkció a lekérdezések teljesítményének javítására és az egyediség korlátozások érvényesítésére."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Hiba történt a kép feltöltése közben."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Az engedélyezés sikertelen. Kérjük, próbálja meg újra."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Engedélyezés"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Engedélyezett URL vágólapra másolva"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Engedélyezés..."
@@ -2650,6 +2658,11 @@ msgstr "Vissza ide: {linkText}"
msgid "Back to content"
msgstr "Vissza a tartalomhoz"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronz"
msgid "Brown"
msgstr "Barna"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Nem tud beolvasni? Másolja a"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Nem tud beolvasni? Másolja a"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Mégse"
@@ -5098,6 +5116,7 @@ msgstr "törlés"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Készség törlése"
msgid "Delete this agent"
msgstr "Ennek az ügynöknek a törlése"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Például: \"B2B SaaS vállalat vagyunk. Mindig használjon formális ny
msgid "e.g., summary, status, count"
msgstr "pl., összefoglaló, állapot, számolás"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "mezők"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Maximalizálja munkaterületét csapatának meghívásával."
msgid "Get your subscription"
msgstr "Szerezze meg előfizetését"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Rejtett csoportok elrejtése"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identitásszolgáltató metadat XML"
msgid "if"
msgstr "ha"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Postafiók"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indexek"
msgid "Index"
msgstr "Index"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indexek"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Telepítés"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Új mappa"
msgid "New Group"
msgstr "Új csoport"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Nem állnak rendelkezésre mappák"
msgid "No folders found for this account"
msgstr "Ehhez a fiókhoz nem találhatók mappák"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objektumok"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Opcionális titok az HMAC aláírás kiszámításához a webhook terhelésekhez"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Válasszon egy nézetet"
msgid "Pick an object"
msgstr "Válasszon egy objektumot"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Az év negyedéve"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Eltávolítás alapértelmezettként"
msgid "Remove Deleted filter"
msgstr "Törölt szűrő eltávolítása"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Keresés a hozzárendelt {roleTargetDisplayName} között..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Index keresése..."
@@ -13777,6 +13859,11 @@ msgstr "Válasszon 1 mezőt"
msgid "Select a date"
msgstr "Válasszon dátumot"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Csak a hibás sorokat jelenítse meg"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spanyol"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "Kétfaktoros hitelesítési beállítás sikeresen befejezve!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Típus"
@@ -16585,6 +16683,11 @@ msgstr "Csak a legjobb modellek használata"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Munkafolyamatok"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Ruolo dell'agente {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} di {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Aggiungi primo filtro"
msgid "Add In-Reply-To"
msgstr "Aggiungi In-Reply-To"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Avanzato"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Funzionalità avanzata per migliorare le prestazioni delle query e imporre vincoli di unicità."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Si è verificato un errore durante il caricamento dell'immagine."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorizzazione non riuscita. Per favore riprova."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizza"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autorizzato copiato negli appunti"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autorizzazione in corso..."
@@ -2650,6 +2658,11 @@ msgstr "Torna a {linkText}"
msgid "Back to content"
msgstr "Torna al contenuto"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Bronzo"
msgid "Brown"
msgstr "Marrone"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Non puoi scansionare? Copia il"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Non puoi scansionare? Copia il"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Annulla"
@@ -5098,6 +5116,7 @@ msgstr "elimina"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Elimina abilità"
msgid "Delete this agent"
msgstr "Elimina questo agente"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Ad es., \"Siamo un'azienda SaaS B2B. Usa sempre un linguaggio formale...
msgid "e.g., summary, status, count"
msgstr "es., riepilogo, stato, conteggio"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "campi"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Sfrutta al massimo il tuo spazio di lavoro invitando il tuo team."
msgid "Get your subscription"
msgstr "Ottieni il tuo abbonamento"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Nascondi gruppi nascosti"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Provider di identità Metadata XML"
msgid "if"
msgstr "se"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Posta in arrivo"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indici"
msgid "Index"
msgstr "Indice"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indici"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Installa"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nuova cartella"
msgid "New Group"
msgstr "Nuovo gruppo"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Nessuna cartella disponibile"
msgid "No folders found for this account"
msgstr "Nessuna cartella trovata per questo account"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "oggetti"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Segreto opzionale usato per calcolare la firma HMAC per i payload dei webhooks"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Seleziona una vista"
msgid "Pick an object"
msgstr "Seleziona un oggetto"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Trimestre dell'anno"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Rimuovi come predefinito"
msgid "Remove Deleted filter"
msgstr "Rimuovi filtro eliminato"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Cerca un {roleTargetDisplayName} assegnato..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Cerca un indice..."
@@ -13777,6 +13859,11 @@ msgstr "Seleziona 1 campo"
msgid "Select a date"
msgstr "Seleziona una data"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Mostra solo le righe con errori"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spagnolo"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16017,6 +16114,7 @@ msgstr "Configurazione dell'autenticazione a due fattori completata con successo
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Tipo"
@@ -16587,6 +16685,11 @@ msgstr "Usa solo i modelli migliori"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17313,6 +17416,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} のエージェントの役割"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{fieldLabel}の{aggregateLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "最初のフィルターを追加"
msgid "Add In-Reply-To"
msgstr "In-Reply-To を追加"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "上級"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "クエリのパフォーマンスを向上させ、重複制約を強制するための高度な機能。"
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "画像のアップロード中にエラーが発生しました。"
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "認可に失敗しました。もう一度お試しください。"
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "認可する"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "認可されたURLがクリップボードにコピーされました"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "認可中..."
@@ -2650,6 +2658,11 @@ msgstr "{linkText} に戻る"
msgid "Back to content"
msgstr "コンテンツに戻る"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "ブロンズ"
msgid "Brown"
msgstr "茶色"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "スキャンできませんか? コピーしてください"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "スキャンできませんか? コピーしてください"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "キャンセル"
@@ -5098,6 +5116,7 @@ msgstr "削除"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "スキルを削除"
msgid "Delete this agent"
msgstr "このエージェントを削除する"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "例:\"当社は B2B SaaS 企業です。常にフォーマルな言葉
msgid "e.g., summary, status, count"
msgstr "例: 要約、ステータス、カウント"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "フィールド"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "チームを招待して、ワークスペースを最大限に活用し
msgid "Get your subscription"
msgstr "サブスクリプションを取得"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "隠されたグループを非表示"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "アイデンティティプロバイダーメタデータXML"
msgid "if"
msgstr "条件"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "受信トレイ"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "インデックス"
msgid "Index"
msgstr "インデックス"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "インデックス"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "インストール"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "新しいフォルダー"
msgid "New Group"
msgstr "新規グループ"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "利用可能なフォルダーはありません"
msgid "No folders found for this account"
msgstr "このアカウントにはフォルダーが見つかりませんでした"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "オブジェクト"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Webhookペイロード用HMAC署名の計算に使用するオプションのシークレット"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "ビューを選択"
msgid "Pick an object"
msgstr "オブジェクトを選択"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "年の四半期"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "デフォルトとして削除"
msgid "Remove Deleted filter"
msgstr "削除フィルターを削除"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "割り当てられた{roleTargetDisplayName}を検索..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "インデックスを検索..."
@@ -13777,6 +13859,11 @@ msgstr "1 つのフィールドを選択"
msgid "Select a date"
msgstr "日付を選択"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "エラーのある行のみを表示"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "スペイン語"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "二要素認証のセットアップが正常に完了しました!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "タイプ"
@@ -16585,6 +16683,11 @@ msgstr "最良のモデルのみを使用する"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "ワークフロー"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "{agentLabel} 에이전트 역할"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{fieldLabel}의 {aggregateLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "첫 번째 필터 추가"
msgid "Add In-Reply-To"
msgstr "In-Reply-To 추가"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "고급"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "쿼리 성능을 개선하고 유니시티 제약 조건을 강제하는 고급 기능입니다."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "사진을 업로드하는 중 오류가 발생했습니다."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "승인에 실패했습니다. 다시 시도해 주세요."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "승인"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "승인된 URL이 클립보드에 복사되었습니다"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "승인 중..."
@@ -2650,6 +2658,11 @@ msgstr "{linkText}(으)로 돌아가기"
msgid "Back to content"
msgstr "콘텐츠로 돌아가기"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "브론즈"
msgid "Brown"
msgstr "갈색"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "스캔이 불가능합니까?"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "스캔이 불가능합니까?"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "취소"
@@ -5098,6 +5116,7 @@ msgstr "삭제"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "스킬 삭제"
msgid "Delete this agent"
msgstr "이 에이전트를 삭제하세요"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "예: \"당사는 B2B SaaS 회사입니다. 항상 격식을 갖춘 언
msgid "e.g., summary, status, count"
msgstr "예: 요약, 상태, 수"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "필드"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "팀을 초대하여 워크스페이스를 최대한 활용하세요."
msgid "Get your subscription"
msgstr "구독 신청"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "숨겨진 그룹 숨기기"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "ID 공급자 메타데이터 XML"
msgid "if"
msgstr "만약"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "받은 편지함"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "색인"
msgid "Index"
msgstr "색인"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "색인"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "설치"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "새 폴더"
msgid "New Group"
msgstr "새 그룹"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "사용 가능한 폴더가 없습니다"
msgid "No folders found for this account"
msgstr "이 계정에 대한 폴더를 찾을 수 없습니다"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "개체"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Webhook 페이로드에 대한 HMAC 서명을 계산하는 데 사용되는 선택적 비밀"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "보기 선택"
msgid "Pick an object"
msgstr "개체 선택"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "연도의 분기"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "기본으로 설정 해제"
msgid "Remove Deleted filter"
msgstr "삭제된 필터 제거"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "할당된 {roleTargetDisplayName} 검색..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "색인 검색..."
@@ -13777,6 +13859,11 @@ msgstr "필드 1개 선택"
msgid "Select a date"
msgstr "날짜 선택"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "오류가 있는 행만 표시"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "스페인어"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16015,6 +16112,7 @@ msgstr "이중 인증 설정이 성공적으로 완료되었습니다!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "유형"
@@ -16585,6 +16683,11 @@ msgstr "최고의 모델만 사용"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17311,6 +17414,7 @@ msgstr "Workflows"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx
+125 -21
View File
@@ -236,6 +236,11 @@ msgstr "Agentrol {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} van {fieldLabel}"
#. js-lingui-id: u1mVnV
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "{appDisplayName} would like to:"
msgstr ""
#. js-lingui-id: ZZZxmp
#: src/pages/auth/Authorize.tsx
msgid "{appName} would like to:"
@@ -1082,6 +1087,12 @@ msgstr "Voeg eerste filter toe"
msgid "Add In-Reply-To"
msgstr "In-Reply-To toevoegen"
#. js-lingui-id: iT7UeX
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Add Index"
msgstr ""
#. js-lingui-id: 7XzAKI
#: src/modules/workflow/workflow-steps/workflow-actions/form-action/components/WorkflowEditActionFormBuilder.tsx
msgid "Add inputs to your form"
@@ -1385,11 +1396,6 @@ msgstr "Geavanceerd"
msgid "Advanced Encryption"
msgstr ""
#. js-lingui-id: +uqBul
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
msgid "Advanced feature to improve the performance of queries and to enforce unicity constraints."
msgstr "Geavanceerde functie om de prestaties van query's te verbeteren en uniciteitsbeperkingen af te dwingen."
#. js-lingui-id: tMFFwF
#: src/modules/views/components/ViewBarFilterDropdownAdvancedFilterButton.tsx
msgid "Advanced filter"
@@ -1910,8 +1916,10 @@ msgstr "Er is een fout opgetreden bij het uploaden van de afbeelding."
#: src/modules/object-metadata/hooks/useUpdateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useUpdateOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useDeleteOneFieldMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneObjectMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneIndexMetadataItem.ts
#: src/modules/object-metadata/hooks/useCreateOneFieldMetadataItem.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
#: src/modules/logic-functions/hooks/usePersistLogicFunction.ts
@@ -2551,7 +2559,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorisatie mislukt. Probeer het opnieuw."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoriseren"
@@ -2566,7 +2574,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Geautoriseerde URL gekopieerd naar klembord"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autoriseren..."
@@ -2650,6 +2658,11 @@ msgstr "Terug naar {linkText}"
msgid "Back to content"
msgstr "Terug naar inhoud"
#. js-lingui-id: 9aZHfH
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Back to settings"
msgstr ""
#. js-lingui-id: GtJbUa
#: src/modules/error-handler/components/AppRootErrorFallback.tsx
msgid "Background"
@@ -2822,6 +2835,11 @@ msgstr "Brons"
msgid "Brown"
msgstr "Bruin"
#. js-lingui-id: GsXRxc
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "BTREE (default, good for sorting and equality)"
msgstr ""
#. js-lingui-id: vwZV+4
#: src/modules/ai/components/suggested-prompts/default-suggested-prompts.ts
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
@@ -3005,7 +3023,6 @@ msgstr "Kan je niet scannen? Kopieer de"
#. js-lingui-id: dEgA5A
#: src/pages/settings/applications/components/SettingsApplicationConnectScopePickerModal.tsx
#: src/pages/settings/admin-panel/SettingsAdminApplicationRegistrationDangerZone.tsx
#: src/pages/auth/Authorize.tsx
#: src/modules/ui/layout/modal/components/ConfirmationModal.tsx
#: src/modules/ui/feedback/snack-bar-manager/components/SnackBar.tsx
#: src/modules/spreadsheet-import/steps/components/ImportDataStep.tsx
@@ -3017,6 +3034,7 @@ msgstr "Kan je niet scannen? Kopieer de"
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/settings/components/SaveAndCancelButtons/CancelButton.tsx
#: src/modules/object-record/record-update-multiple/components/UpdateMultipleRecordsFooter.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
#: src/modules/activities/emails/components/EmailComposer.tsx
msgid "Cancel"
msgstr "Annuleren"
@@ -5098,6 +5116,7 @@ msgstr "verwijderen"
#: src/modules/settings/developers/components/SettingsDevelopersWebhookForm.tsx
#: src/modules/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectFieldDisabledActionDropdown.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
@@ -5240,6 +5259,11 @@ msgstr "Vaardigheid verwijderen"
msgid "Delete this agent"
msgstr "Verwijder deze agent"
#. js-lingui-id: +RYIn9
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Delete this index?"
msgstr ""
#. js-lingui-id: T6S2Ns
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
msgid "Delete this integration"
@@ -5711,6 +5735,11 @@ msgstr "Bijv.: \"Wij zijn een B2B SaaS-bedrijf. Gebruik altijd formele taal...\"
msgid "e.g., summary, status, count"
msgstr "bijv., samenvatting, status, aantal"
#. js-lingui-id: npNQJR
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Each index speeds up reads on the fields it covers, but slows down every insert and update, and uses disk space. Only add an index when you know which queries it serves."
msgstr ""
#. js-lingui-id: 79hamt
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Each slice represents"
@@ -7260,6 +7289,7 @@ msgstr "velden"
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
@@ -7726,6 +7756,16 @@ msgstr "Haal het meeste uit je werkruimte door je team uit te nodigen."
msgid "Get your subscription"
msgstr "Krijg je abonnement"
#. js-lingui-id: XXtAx5
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
msgid "GIN (full-text search and JSONB)"
msgstr ""
#. js-lingui-id: lwDz5R
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Global search"
msgstr ""
#. js-lingui-id: sr0UJD
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
msgid "Go Back"
@@ -7997,6 +8037,11 @@ msgstr "Verborgen groepen verbergen"
msgid "Hide label"
msgstr ""
#. js-lingui-id: y9sG4l
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Hide system indexes"
msgstr ""
#. js-lingui-id: i0qMbr
#: src/modules/navigation/components/MainNavigationDrawerTabsRow.tsx
msgid "Home"
@@ -8188,11 +8233,6 @@ msgstr "Identiteitsprovider-metadata XML"
msgid "if"
msgstr "als"
#. js-lingui-id: K6ChR5
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "If disabled, use advanced search filters to find these records"
msgstr ""
#. js-lingui-id: bTDz/2
#: src/modules/settings/admin-panel/health-status/maintenance-mode/components/SettingsAdminMaintenanceMode.tsx
msgid "If there's no link, no button will appear."
@@ -8368,11 +8408,6 @@ msgstr "Inbox"
msgid "Include emails where all participants share the same domain."
msgstr ""
#. js-lingui-id: Wyip/m
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Include in default search"
msgstr ""
#. js-lingui-id: mtGDyy
#: src/pages/settings/enterprise/SettingsEnterprise.tsx
msgid "Incomplete"
@@ -8388,9 +8423,18 @@ msgstr "indexen"
msgid "Index"
msgstr "Indexen"
#. js-lingui-id: O+81DP
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Index created"
msgstr ""
#. js-lingui-id: R6uY2r
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Index deleted"
msgstr ""
#. js-lingui-id: pZ/USH
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectIndexes.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Indexes"
msgstr "Indexen"
@@ -8470,6 +8514,11 @@ msgstr ""
msgid "Install"
msgstr "Installeren"
#. js-lingui-id: XOHdRf
#: src/modules/marketplace/components/SettingsApplicationInstallPermissionValidationModal.tsx
msgid "Install {appDisplayName} on your workspace"
msgstr ""
#. js-lingui-id: 4ZM8/a
#: src/modules/settings/roles/role-permissions/permission-flags/hooks/useSettingsRolePermissionFlagConfig.ts
msgid "Install and manage applications"
@@ -10331,6 +10380,12 @@ msgstr "Nieuwe map"
msgid "New Group"
msgstr "Nieuwe Groep"
#. js-lingui-id: //H2Cs
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "New Index"
msgstr ""
#. js-lingui-id: o8MyXb
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
msgid "New key"
@@ -10760,6 +10815,11 @@ msgstr "Geen mappen beschikbaar"
msgid "No folders found for this account"
msgstr "Geen mappen gevonden voor dit account"
#. js-lingui-id: 9kCSLK
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
msgid "No indexes match your filters."
msgstr ""
#. js-lingui-id: gIrKyO
#: src/pages/settings/ai/components/SettingsAgentLogsTab.tsx
msgid "No input"
@@ -11317,6 +11377,7 @@ msgstr "objecten"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx
@@ -11556,6 +11617,7 @@ msgid "Optional secret used to compute the HMAC signature for webhook payloads"
msgstr "Optioneel geheim gebruikt om de HMAC-handtekening voor webhook-payloads te berekenen"
#. js-lingui-id: 0zpgxV
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
@@ -11969,6 +12031,16 @@ msgstr "Kies een weergave"
msgid "Pick an object"
msgstr "Kies een object"
#. js-lingui-id: JHXjkT
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick one or more fields. The order you select them in becomes the column order in the index — important for composite queries. For composite fields like Address, pick the specific sub-column to index."
msgstr ""
#. js-lingui-id: X1kz7Q
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Pick the index type. BTREE covers most queries; GIN is for full-text and JSONB."
msgstr ""
#. js-lingui-id: N0+GsR
#: src/pages/settings/SettingsWorkspace.tsx
#: src/pages/settings/SettingsProfile.tsx
@@ -12420,6 +12492,11 @@ msgstr "Kwartaal van het jaar"
msgid "quarters"
msgstr ""
#. js-lingui-id: Z9go8W
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Queries that relied on it will fall back to a sequential scan. You can recreate it later."
msgstr ""
#. js-lingui-id: /IUt/5
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminWorkerHealthStatus.tsx
msgid "Queue information is not available because the worker is down"
@@ -12806,6 +12883,11 @@ msgstr "Verwijderen als standaard"
msgid "Remove Deleted filter"
msgstr "Verwijder Verwijderd-filter"
#. js-lingui-id: /hrkZs
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Remove field"
msgstr ""
#. js-lingui-id: 9VZ6f0
#: src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditOrganizeActions.tsx
msgid "Remove from sidebar"
@@ -13477,7 +13559,7 @@ msgid "Search an assigned {roleTargetDisplayName}..."
msgstr "Zoek een toegewezen {roleTargetDisplayName}..."
#. js-lingui-id: k7kp5/
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectIndexesSection.tsx
msgid "Search an index..."
msgstr "Zoek een index..."
@@ -13777,6 +13859,11 @@ msgstr "Selecteer 1 veld"
msgid "Select a date"
msgstr "Selecteer een datum"
#. js-lingui-id: 1YV5aa
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexFieldsForm.tsx
msgid "Select a field"
msgstr ""
#. js-lingui-id: bP/w4M
#: src/modules/workflow/workflow-steps/filters/components/WorkflowStepFilterFieldSelect.tsx
msgid "Select a field from a previous step"
@@ -14232,6 +14319,11 @@ msgstr ""
msgid "Show only rows with errors"
msgstr "Toon alleen rijen met fouten"
#. js-lingui-id: 3UVA3z
#: src/modules/settings/data-model/object-details/components/tabs/SettingsObjectSearchSection.tsx
msgid "Show this object's records in the command menu (⌘K)."
msgstr ""
#. js-lingui-id: TJ4tz9
#: src/modules/side-panel/pages/page-layout/constants/settings/ChartConfigurationSettingLabels.ts
msgid "Show value in center"
@@ -14529,6 +14621,11 @@ msgstr ""
msgid "Spanish"
msgstr "Spaans"
#. js-lingui-id: pyfee5
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
msgid "Speed up reads on the fields you filter or sort by most. Each index also slows down writes and uses disk space, so add them with intent."
msgstr ""
#. js-lingui-id: gsifzp
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
#: src/modules/side-panel/pages/page-layout/utils/__tests__/shouldHideChartSetting.test.ts
@@ -16017,6 +16114,7 @@ msgstr "Two-factor authenticatie setup met succes voltooid!"
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowOutputFieldTypeSelector.tsx
#: src/modules/settings/security/components/SSO/SettingsSSOIdentitiesProvidersForm.tsx
#: src/modules/settings/data-model/object-details/components/SettingsObjectRelationsTable.tsx
#: src/modules/settings/data-model/indexes/forms/components/SettingsObjectIndexOptionsForm.tsx
#: src/modules/settings/components/SettingsDnsRecordsTable.tsx
msgid "Type"
msgstr "Soort"
@@ -16587,6 +16685,11 @@ msgstr "Alleen de beste modellen gebruiken"
msgid "Use filter to see existing tools or create your own"
msgstr ""
#. js-lingui-id: 1Y7Unr
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
msgid "Use indexes sparingly"
msgstr ""
#. js-lingui-id: oTTQsc
#: src/modules/settings/domains/utils/getSubdomainValidationSchema.ts
msgid "Use letter, number and dash only. Start and finish with a letter or a number"
@@ -17313,6 +17416,7 @@ msgstr "Workstrooms"
#: src/pages/settings/data-model/SettingsObjectFieldEdit.tsx
#: src/pages/settings/data-model/SettingsObjectDetailPage.tsx
#: src/pages/settings/data-model/SettingsNewObject.tsx
#: src/pages/settings/data-model/new-index/SettingsObjectNewIndex.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldSelect.tsx
#: src/pages/settings/data-model/new-field/SettingsObjectNewFieldConfigure.tsx
#: src/pages/settings/applications/SettingsAvailableApplicationDetails.tsx

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