Compare commits

...
Author SHA1 Message Date
sonarly-bot fb5e6b1021 fix(docker): increase server healthcheck startup tolerance
https://sonarly.com/issue/41408?type=bug

Fresh self-host installs can fail during bootstrap because Docker marks `server` unhealthy before initialization completes, even though Nest eventually starts successfully.

Fix: Implemented a startup-tolerance fix in the self-host docker compose path by increasing the server healthcheck grace budget where the failure occurs.

Changes made:
- Updated `server` healthcheck in `packages/twenty-docker/docker-compose.yml`:
  - added `start_period: 90s`
  - increased `retries` from `20` to `24`

Why:
- Fresh installs can take longer during first bootstrap (migrations/init/registration). Adding a start period plus additional retries prevents Docker from marking the container unhealthy before the app is actually ready. This targets the exact failure mode (`server` unhealthy during first boot) in the right layer (docker compose runtime health policy).

Authored by Sonarly by autonomous analysis (run 47223).
2026-05-29 05:10:19 +00:00
ae7db23bdd i18n - translations (#20959)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-27 14:33:57 +02:00
WeikoandGitHub 2f358a1775 Add a Table display mode to relation field widgets (#20929)
## Context

Adds a new Table layout to the FIELD widget for to-many relation fields.
On a record page, a relation can now be displayed as a full record table
(the same component used for record indexes and dashboard table widgets)
scoped to the records related to the current record.



https://github.com/user-attachments/assets/320b24dc-f019-4d0e-bc71-3e64d032d75a



https://github.com/user-attachments/assets/2f6d4f8e-de26-4fc1-ae12-c9b9c19654dc



https://github.com/user-attachments/assets/3fb6d512-f83c-4818-823e-46ad2644fbc2
2026-05-27 12:13:58 +00:00
EtienneandGitHub fc3004b2f6 fix(website) - fix getPartners (#20947)
**Context**
Fix empty marketplace at /partners/list: page was being statically
prerendered with getPartners() returning [] (build-time fetch failure),
then served from OpenNext's R2 cache forever — so the partners API was
never actually called in production.

**Change**
Wrap getPartners in unstable_cache with revalidate: 300, matching the
existing fetchGithubStarCount / fetchDiscordMemberCount ISR pattern.
After deploy, the cached empty result expires within 5 minutes and the
worker refetches from the partners API at runtime (where the env vars
actually exist), populating the page. Also drops the now-redundant
cache: 'no-store' from partnersApiFetch.
2026-05-27 10:53:17 +00:00
086b79e5b9 i18n - translations (#20952)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-27 11:02:42 +02:00
Félix MalfaitandGitHub 8cb88cabee fix(role): rebind API keys + agents before deleting their role (#20935)
## Customer-reported bug

A customer hit this when using the AI chat:

```json
{
  "message": "API key 760d4822-da40-4b3f-9031-40563d7ed6c9 has no role assigned",
  "extensions": {
    "code": "INTERNAL_SERVER_ERROR",
    "userFriendlyMessage": "This API key has no role assigned."
  }
}
```

Their integration authenticates via API key. Somewhere along the way,
the role bound to that API key was deleted, leaving the API key
authenticated but role-less. Any request that hits a permission check
(`getRoleIdForApiKeyId`) blows up.

## Root cause

In `RoleService.deleteManyRoles`, the pre-deletion cleanup
(`assignDefaultRoleToMembersWithRoleToDelete`) only rebinds **user
workspaces** to the workspace default role. API keys and agents pointing
at the role are ignored. Because `RoleTargetEntity.role` declares
`onDelete: 'CASCADE'`, the FK then drops the role_target rows for those
API keys / agents — but the API keys themselves stay in `api_key`, now
orphaned in `apiKeyRoleMap`.

A previous read-side workaround
([2767ddac44](https://github.com/twentyhq/twenty/commit/2767ddac44) —
make the `role` ResolveField nullable) handled the API-key-details page,
but did not address the write paths (`getRoleIdForApiKeyId`).

## Fix

- Rename `assignDefaultRoleToMembersWithRoleToDelete` →
`rebindTargetsOfRoleToDeleteToDefaultRole` and extend it to rebind API
keys (via `ApiKeyRoleService.assignRoleToApiKey`) and agents (via
`AiAgentRoleService.assignRoleToAgent`) in the same step, before the
role is deleted.
- If the workspace default role doesn't satisfy `canBeAssignedToApiKeys`
/ `canBeAssignedToAgents`, the inner `assignRoleTo*` validation throws.
We catch that and rethrow as a `PermissionsException` with a
role-deletion-context message and two new codes —
`ROLE_CANNOT_BE_ASSIGNED_TO_API_KEYS` /
`ROLE_CANNOT_BE_ASSIGNED_TO_AGENTS` — so the admin sees a clear
"reassign these first" prompt rather than a confusing inner error.

## Scope / non-goals

- **Already-orphaned API keys are not auto-healed.** The customer still
needs to reassign a role to their existing orphan API key via the UI
(Settings > API Keys > [the key] > role). A separate cleanup command for
existing orphans is a follow-up.
- I did not investigate *why* the customer's session was authenticated
via API key in the AI chat — that may be their integration setup. Worth
confirming with them separately.

## Test plan

- [ ] Workspace with default role `Admin` (which has
`canBeAssignedToApiKeys: true`): create an API key with a custom role,
delete the custom role → API key is rebound to Admin, requests keep
working.
- [ ] Workspace with default role `Member` (default, has
`canBeAssignedToApiKeys: false`): create an API key with a custom role,
delete the custom role → role deletion fails with the new
`ROLE_CANNOT_BE_ASSIGNED_TO_API_KEYS` error explaining the admin must
reassign first. API key + custom role are both unchanged.
- [ ] Same two scenarios for agents (`canBeAssignedToAgents`).
- [ ] Existing user-workspace rebind behavior is unchanged.
- [ ] Role deletion with no dependent API keys / agents still works.
2026-05-27 10:54:02 +02:00
Félix MalfaitGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>
ac89d2ff56 feat: raise FILES field max number of values from 10 to 60 (#20950)
## Summary

Raises the artificial hardcoded ceiling on `maxNumberOfValues` for
custom FILES fields from `10` to `60` so users can attach more files per
record.

- Bumped `FILES_FIELD_MAX_NUMBER_OF_VALUES` constant in `twenty-shared`
from `10` to `60`
- Updated validator unit test (inline snapshots + "exceeds max" case)
- Updated create/update files-field metadata integration tests and Jest
snapshots

The frontend Zod schema only enforces a `min`, so no frontend changes
are required — the backend constant is the single source of truth for
the upper bound.

Refs #20942

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
2026-05-27 10:53:09 +02:00
423faa6153 i18n - translations (#20951)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-05-27 10:40:15 +02:00
martmullandGitHub a051490ec9 Basic app logo fixes (#20919)
as title, took the quick win fixes from
https://github.com/twentyhq/twenty/pull/20909/changes#diff-3367344412b2f44f0273d8019c1bc36396198244b9558d02921b135f62522baaR180
and leave the main fix for later as it requires an architectural update
2026-05-27 08:21:35 +00:00
34db7ac8b4 chore: sync AI model catalog from models.dev (#20948)
Automated daily sync of `ai-providers.json` from
[models.dev](https://models.dev).

This PR updates pricing, context windows, and model availability based
on the latest data.
New models meeting inclusion criteria (tool calling, pricing data,
context limits) are added automatically.
Deprecated models are detected based on cost-efficiency within the same
model family.

**Please review before merging** — verify no critical models were
incorrectly deprecated.

Co-authored-by: FelixMalfait <6399865+FelixMalfait@users.noreply.github.com>
2026-05-27 09:19:32 +02:00
EtienneandGitHub 4a82cddad6 remove ai-model-preferences var env and config (#20859)
Split the single AI_MODEL_PREFERENCES JSON config into 4 array configs
and migrates existing workspace data.
2026-05-27 06:47:47 +00: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
368 changed files with 8435 additions and 2078 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",
@@ -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++;
}
@@ -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.27.3",
"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 {
@@ -1315,6 +1315,7 @@ type FieldConfiguration {
configurationType: WidgetConfigurationType!
fieldMetadataId: String!
fieldDisplayMode: FieldDisplayMode!
viewId: String
}
"""Display mode for field configuration widgets"""
@@ -1323,6 +1324,7 @@ enum FieldDisplayMode {
EDITOR
FIELD
VIEW
TABLE
}
type FieldRichTextConfiguration {
@@ -4029,7 +4031,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'
}
@@ -966,12 +966,13 @@ export interface FieldConfiguration {
configurationType: WidgetConfigurationType
fieldMetadataId: Scalars['String']
fieldDisplayMode: FieldDisplayMode
viewId?: Scalars['String']
__typename: 'FieldConfiguration'
}
/** Display mode for field configuration widgets */
export type FieldDisplayMode = 'CARD' | 'EDITOR' | 'FIELD' | 'VIEW'
export type FieldDisplayMode = 'CARD' | 'EDITOR' | 'FIELD' | 'VIEW' | 'TABLE'
export interface FieldRichTextConfiguration {
configurationType: WidgetConfigurationType
@@ -3887,6 +3888,7 @@ export interface FieldConfigurationGenqlSelection{
configurationType?: boolean | number
fieldMetadataId?: boolean | number
fieldDisplayMode?: boolean | number
viewId?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
@@ -6160,7 +6162,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[]}
@@ -8627,7 +8629,8 @@ export const enumFieldDisplayMode = {
CARD: 'CARD' as const,
EDITOR: 'EDITOR' as const,
FIELD: 'FIELD' as const,
VIEW: 'VIEW' as const
VIEW: 'VIEW' as const,
TABLE: 'TABLE' as const
}
export const enumPageLayoutType = {
@@ -508,7 +508,7 @@ export default {
3
],
"flag": [
18
1
],
"__typename": [
1
@@ -2615,6 +2615,9 @@ export default {
"fieldDisplayMode": [
110
],
"viewId": [
1
],
"__typename": [
1
]
@@ -10279,7 +10282,7 @@ export default {
3
],
"permissionFlagKeys": [
18
1
],
"__typename": [
1
+2 -1
View File
@@ -55,7 +55,8 @@ services:
test: curl --fail http://localhost:3000/healthz
interval: 5s
timeout: 5s
retries: 20
start_period: 90s
retries: 24
restart: always
worker:
+30 -4
View File
@@ -127,15 +127,41 @@ if [ "$answer" = "n" ]; then
else
echo "🐳 Starting Docker containers..."
docker compose up -d
# Check if port is listening
echo "Waiting for server to be healthy, it might take a few minutes while we initialize the database..."
# Tail logs of the server until it's ready
docker compose logs -f server &
pid=$!
while [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-server-1) = "healthy" ]; do
server_container_id=$(docker compose ps -q server)
if [ -z "$server_container_id" ]; then
kill "$pid" 2>/dev/null || true
echo "❌ Unable to resolve server container id. Run 'docker compose ps' and 'docker compose logs server' for diagnostics."
exit 1
fi
while true; do
health_status=$(docker inspect --format='{{if .State.Health}}{{.State.Health.Status}}{{else}}starting{{end}}' "$server_container_id" 2>/dev/null)
if [ "$health_status" = "healthy" ]; then
break
fi
if [ "$health_status" = "unhealthy" ]; then
kill "$pid" 2>/dev/null || true
echo ""
echo "❌ Server container became unhealthy before startup completed."
echo "Latest healthcheck probe output:"
docker inspect --format='{{range .State.Health.Log}}{{println .End "(exit=" .ExitCode "):" .Output}}{{end}}' "$server_container_id" | tail -n 5
echo ""
echo "Recent server logs:"
docker compose logs --tail 50 server
exit 1
fi
sleep 1
done
kill $pid
kill "$pid" 2>/dev/null || true
echo ""
echo "✅ Server is up and running"
fi
@@ -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** 部分,供你在确实需要索引时使用。
## 字段配置最佳实践
### 命名约定和限制
File diff suppressed because one or more lines are too long
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} gevorderde reël} other {{advancedFilterCount} gevorderde reëls}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} Agentrol"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} van {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Dit sal die geselekteerde werk herprobeer. Dit s
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} getoon"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "'n Onverwagte fout het voorgekom. Probeer asseblief weer."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "en"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Bevestig"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Bevestig verwydering van {roleName} rol? Dit kan nie ongedaan gemaak word nie. Alle lede sal aan die verstekrol toegewys word."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "velde"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Oortjie Instellings"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Twee-faktor magtiging-setup suksesvol voltooi!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, zero {{advancedFilterCount} قواعد متقدمة} one {{advancedFilterCount} قاعدة متقدمة} two {{advancedFilterCount} قاعدتان متقدمتان} few {{advancedFilterCount} قواعد متقدمة} many {{advancedFilterCount} قواعد متقدمة} other {{advancedFilterCount} قواعد متقدمة}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "دور الوكيل {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} من {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, zero {سيتم إعادة محاولة {jobCount} و
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount, plural, zero {لا حقول معروضة} one {حقل واحد معروض} two {حقلان معروضان} few {# حقول معروضة} many {# حقلًا معروضًا} other {# حقل معروض}}"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "حدث خطأ غير متوقع. يرجى المحاولة مرة أخر
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "و"
@@ -2554,7 +2580,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 "اعتماد"
@@ -2569,7 +2595,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 "جاري التفويض..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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 "إلغاء"
@@ -3806,10 +3837,15 @@ msgstr "تأكيد"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "تأكيد حذف دور {roleName}؟ لا يمكن التراجع عن هذا الإجراء. سيتم إعادة تعيين جميع الأعضاء إلى الدور الافتراضي."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "حقول"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "إعدادات علامة التبويب"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "تم إكمال إعداد المصادقة الثنائية بنجاح!
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} norma avançada} other {{advancedFilterCount} normes avançades}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Rol d'agent {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Això tornarà a intentar la feina seleccionada.
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} mostrats"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "S'ha produït un error inesperat. Torna-ho a intentar."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "i"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Confirmar"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirmeu la supressió del rol {roleName}? Aquesta acció no es pot desfer. Tots els membres seran reassignats al rol predeterminat."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "camps"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Configuració de la pestanya"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Configuració de l'autenticació de dos factors completada amb èxit!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} pokročilé pravidlo} few {{advancedFilterCount} pokročilá pravidla} many {{advancedFilterCount} pokročilých pravidel} other {{advancedFilterCount} pokročilých pravidel}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Role agenta {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} z {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Tato akce znovu spustí vybranou úlohu. Bude sp
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "Zobrazeno {visibleFieldsCount}"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Došlo k neočekávané chybě. Zkuste to prosím znovu."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "a"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Potvrdit"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Opravdu chcete smazat roli {roleName}? Toto akci nelze vrátit zpět. Všichni členové budou přeřazeni na výchozí roli."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "pole"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Nastavení karet"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Nastavení dvoufaktorového ověřování bylo úspěšně dokončeno!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} avanceret regel} other {{advancedFilterCount} avancerede regler}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} Agentrolle"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} af {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Dette vil forsøge det valgte job igen. Det vil
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} vist"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Der opstod en uventet fejl. Prøv igen."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "og"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Bekræft"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Bekræft sletning af {roleName} rolle? Dette kan ikke fortrydes. Alle medlemmer vil blive tildelt standardrollen."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "felter"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Fanens indstillinger"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16091,6 +16136,7 @@ msgstr "Opsætning af to-faktor godkendelse blev gennemført med succes!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} erweiterte Regel} other {{advancedFilterCount} erweiterte Regeln}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel}-Agentenrolle"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} von {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Dies wird den ausgewählten Auftrag neu ausführ
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} angezeigt"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es erneut."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "und"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Bestätigen"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Löschung der Rolle {roleName} bestätigen? Dies kann nicht rückgängig gemacht werden. Alle Mitglieder werden der Standardrolle zugewiesen."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "Felder"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Registerkarteneinstellungen"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Einrichtung der Zwei-Faktor-Authentifizierung erfolgreich abgeschlossen!
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} προχωρημένος κανόνας} other {{advancedFilterCount} προχωρημένοι κανόνες}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} Ρόλος Πράκτορα"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} του {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Αυτό θα επαναλάβει την επι
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "Εμφανίζονται {visibleFieldsCount}"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Παρουσιάστηκε ένα απρόσμενο σφάλμα. Δο
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "και"
@@ -2554,7 +2580,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 "Εξουσιοδότηση"
@@ -2569,7 +2595,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 "Γίνεται εξουσιοδότηση..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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 "Ακύρωση"
@@ -3806,10 +3837,15 @@ msgstr "Επιβεβαίωση"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Επιβεβαιώστε την διαγραφή του ρόλου {roleName}; Αυτό δεν μπορεί να αναιρεθεί. Όλα τα μέλη θα επανατοποθετηθούν στον προεπιλεγμένο ρόλο."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "πεδία"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15124,6 +15167,8 @@ msgstr "Ρυθμίσεις Καρτέλας"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16093,6 +16138,7 @@ msgstr "Η εγκατάσταση δύο παραγοντικής ταυτοπο
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -216,6 +216,11 @@ msgstr "{1} OAuth is not yet set up by your server administrator. They need to f
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -231,6 +236,16 @@ msgstr "{agentLabel} Agent Role"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} of {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
#. 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:"
@@ -385,6 +400,11 @@ msgstr "{jobCount, plural, one {This will retry the selected job. It will be re-
msgid "{label} list"
msgstr "{label} list"
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -513,6 +533,11 @@ msgstr "{totalFieldsCount} visible fields"
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} shown"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr "{visibleFieldsCount} visible fields"
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1944,6 +1969,7 @@ msgstr "An unexpected error occurred. Please try again."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "and"
@@ -2549,7 +2575,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"
@@ -2564,7 +2590,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..."
@@ -2648,6 +2674,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"
@@ -3008,7 +3039,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
@@ -3020,6 +3050,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"
@@ -3801,10 +3832,15 @@ msgstr "Confirm"
msgid "Confirm changing your current resource credit allocation."
msgstr "Confirm changing your current resource credit allocation."
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr "Confirm deletion of {roleName} role? This cannot be undone."
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7278,7 +7314,9 @@ msgstr "fields"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8522,6 +8560,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"
@@ -15140,6 +15183,8 @@ msgstr "Tab Settings"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16139,6 +16184,7 @@ msgstr "Two-factor authentication setup completed successfully!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} regla avanzada} other {{advancedFilterCount} reglas avanzadas}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Rol de agente de {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Esto reintentará el trabajo seleccionado. Será
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} mostrados"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Se produjo un error inesperado. Por favor, inténtelo de nuevo."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "y"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Confirmar"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "¿Confirmar eliminación del rol {roleName}? Esto no se puede deshacer. Todos los miembros serán reasignados al rol predeterminado."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "campos"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Configuración de la pestaña"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16091,6 +16136,7 @@ msgstr "¡La configuración de la autenticación de dos factores se completó co
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} kehittynyt sääntö} other {{advancedFilterCount} kehittyneet säännöt}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Agenttirooli: {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} {fieldLabel} määrä"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Tämä yrittää valittua työtä uudelleen. Se
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} näkyvissä"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Tapahtui odottamaton virhe. Yritä uudelleen."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "ja"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Vahvista"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Vahvista {roleName}-roolin poisto? Tätä toimintoa ei voi peruuttaa. Kaikki jäsenet siirretään oletusrooliin."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "kentät"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Välilehden asetukset"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Kaksivaiheisen todennuksen asennus on valmis!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} règle avancée} other {{advancedFilterCount} règles avancées}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Rôle d'agent {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Ceci va réessayer la tâche sélectionnée. Ell
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} affichés"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Une erreur inattendue s'est produite. Veuillez réessayer."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "et"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Confirmer"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirmer la suppression du rôle {roleName} ? Cela ne peut pas être annulé. Tous les membres seront réassignés au rôle par défaut."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "champs"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Paramètres de l'onglet"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16091,6 +16136,7 @@ msgstr "Configuration de l'authentification à deux facteurs terminée avec succ
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
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
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} כלל מתקדם} two {{advancedFilterCount} כללים מתקדמים} many {{advancedFilterCount} כללים מתקדמים} other {{advancedFilterCount} כללים מתקדמים}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "תפקיד הסוכן {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} של {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {זה ינסה להפעיל מחדש את העב
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "מוצגים {visibleFieldsCount}"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "אירעה שגיאה בלתי צפויה. נא לנסות שוב."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "וגם"
@@ -2554,7 +2580,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 "אשר"
@@ -2569,7 +2595,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 "מתבצעת הרשאה..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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 "בטל"
@@ -3806,10 +3837,15 @@ msgstr "אישור"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "אישור מחיקת תפקיד {roleName}? לא ניתן לבטל זאת. כל החברים יוקצו לתפקיד ברירת המחדל."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "שדות"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "הגדרות כרטיסייה"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "הגדרת האימות הדו-שלבי הושלמה בהצלחה!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} haladó szabály} other {{advancedFilterCount} haladó szabályok}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} ügynök szerepköre"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} a(z) {fieldLabel} alapján"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Ez újraindítja a kijelölt állást. Újra vé
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} megjelenítve"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Váratlan hiba történt. Kérjük, próbálja meg újra."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "és"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Megerősítés"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Megerősíti a(z) {roleName} szerepkör törlését? Ez nem vonható vissza. Minden tagot átmenetileg az alapértelmezett szerepkörbe helyez."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "mezők"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Fül beállítások"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Kétfaktoros hitelesítési beállítás sikeresen befejezve!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} regola avanzata} other {{advancedFilterCount} regole avanzate}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Ruolo dell'agente {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} di {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Questo riproverà il lavoro selezionato. Verrà
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} visualizzati"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Si è verificato un errore imprevisto. Riprova."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "e"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Conferma"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Conferma l'eliminazione del ruolo {roleName}? Questo non può essere annullato. Tutti i membri verranno riassegnati al ruolo predefinito."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "campi"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Impostazioni scheda"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16091,6 +16136,7 @@ msgstr "Configurazione dell'autenticazione a due fattori completata con successo
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, other {{advancedFilterCount} 件の高度なルール}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} のエージェントの役割"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{fieldLabel}の{aggregateLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, other {選択されたジョブを再試行します
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} 件を表示中"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "予期しないエラーが発生しました。もう一度お試しく
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "および"
@@ -2554,7 +2580,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 "認可する"
@@ -2569,7 +2595,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 "認可中..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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 "キャンセル"
@@ -3806,10 +3837,15 @@ msgstr "確認"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "{roleName}のロールを削除しますか?この操作は元に戻せません。すべてのメンバーはデフォルトのロールに再割り当てされます。"
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "フィールド"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "タブ設定"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "二要素認証のセットアップが正常に完了しました!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, other {{advancedFilterCount}개 고급 규칙}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} 에이전트 역할"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{fieldLabel}의 {aggregateLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, other {선택된 작업들을 재시도합니다. 처
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount}개 표시됨"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "예기치 않은 오류가 발생했습니다. 다시 시도해 주세
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "및"
@@ -2554,7 +2580,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 "승인"
@@ -2569,7 +2595,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 "승인 중..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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 "취소"
@@ -3806,10 +3837,15 @@ msgstr "확인"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "{roleName} 역할 삭제를 확인하시겠습니까? 이 작업은 되돌릴 수 없습니다. 모든 구성원은 기본 역할로 재할당됩니다."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "필드"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "탭 설정"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "이중 인증 설정이 성공적으로 완료되었습니다!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} geavanceerde regel} other {{advancedFilterCount} geavanceerde regels}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Agentrol {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} van {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Dit zal de geselecteerde taak opnieuw proberen.
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} weergegeven"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Er is een onverwachte fout opgetreden. Probeer het opnieuw."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "en"
@@ -2554,7 +2580,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"
@@ -2569,7 +2595,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..."
@@ -2653,6 +2679,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"
@@ -3013,7 +3044,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
@@ -3025,6 +3055,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"
@@ -3806,10 +3837,15 @@ msgstr "Bevestigen"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Bevestigen verwijderen van rol {roleName}? Dit kan niet ongedaan worden gemaakt. Alle leden zullen worden herverdeeld naar de standaard rol."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "velden"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Tabblad Instellingen"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16091,6 +16136,7 @@ msgstr "Two-factor authenticatie setup met succes voltooid!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} avansert regel} other {{advancedFilterCount} avanserte regler}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} agentrolle"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} av {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Dette vil prøve den valgte jobben på nytt. Den
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} vist"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Det oppstod en uventet feil. Vennligst prøv igjen."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "og"
@@ -2554,7 +2580,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorisering mislyktes. Vennligst prøv igjen."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoriser"
@@ -2569,7 +2595,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Autoriserte URL kopiert til utklippstavlen"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autoriserer..."
@@ -2653,6 +2679,11 @@ msgstr "Tilbake til {linkText}"
msgid "Back to content"
msgstr "Tilbake til innhold"
#. 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"
@@ -3013,7 +3044,6 @@ msgstr "Kan ikke skanne? 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
@@ -3025,6 +3055,7 @@ msgstr "Kan ikke skanne? 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 "Avbryt"
@@ -3806,10 +3837,15 @@ msgstr "Bekreft"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Bekreft sletting av {roleName}-rolle? Dette kan ikke angres. Alle medlemmer vil bli tildelt standardrollen."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "felter"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Faneinnstillinger"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Tofaktorautentiseringsoppsett fullført!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} zaawansowana zasada} few {{advancedFilterCount} zaawansowane zasady} many {{advancedFilterCount} zaawansowanych zasad} other {{advancedFilterCount} zaawansowanych zasad}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Rola agenta {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} z {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {To ponownie uruchomi wybrane zadanie. Zostanie o
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "Wyświetlono {visibleFieldsCount}"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Wystąpił nieoczekiwany błąd. Spróbuj ponownie."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "i"
@@ -2554,7 +2580,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autoryzacja nie powiodła się. Spróbuj ponownie."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autoryzuj"
@@ -2569,7 +2595,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "Autoryzowany URL skopiowany do schowka"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autoryzowanie..."
@@ -2653,6 +2679,11 @@ msgstr "Powrót do {linkText}"
msgid "Back to content"
msgstr "Powrót do treści"
#. 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"
@@ -3013,7 +3044,6 @@ msgstr "Nie można zeskanować? Skopiuj"
#. 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
@@ -3025,6 +3055,7 @@ msgstr "Nie można zeskanować? Skopiuj"
#: 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 "Anuluj"
@@ -3806,10 +3837,15 @@ msgstr "Potwierdź"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Potwierdzić usunięcie roli {roleName}? Tego nie można cofnąć. Wszyscy członkowie zostaną przypisani do domyślnej roli."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "pola"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,11 @@ msgstr ""
msgid "Install"
msgstr "Zainstaluj"
#. 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"
@@ -15122,6 +15165,8 @@ msgstr "Ustawienia Zakładki"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Konfiguracja uwierzytelniania dwuskładnikowego zakończona pomyślnie!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+51 -5
View File
@@ -216,6 +216,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr ""
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -231,6 +236,16 @@ msgstr ""
msgid "{aggregateLabel} of {fieldLabel}"
msgstr ""
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -385,6 +400,11 @@ msgstr ""
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -513,6 +533,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr ""
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1944,6 +1969,7 @@ msgstr ""
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr ""
@@ -2549,7 +2575,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 ""
@@ -2564,7 +2590,7 @@ msgid "Authorized URL copied to clipboard"
msgstr ""
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr ""
@@ -2648,6 +2674,11 @@ msgstr ""
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"
@@ -3008,7 +3039,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
@@ -3020,6 +3050,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 ""
@@ -3801,9 +3832,14 @@ msgstr ""
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
@@ -7278,7 +7314,9 @@ msgstr ""
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8499,6 +8537,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"
@@ -15117,6 +15160,8 @@ msgstr ""
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16084,6 +16129,7 @@ msgstr ""
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} regra avançada} other {{advancedFilterCount} regras avançadas}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Função do agente {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Isso irá repetir o trabalho selecionado. Ele se
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} exibidos"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Ocorreu um erro inesperado. Tente novamente."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "e"
@@ -2554,7 +2580,7 @@ msgid "Authorization failed. Please try again."
msgstr "Falha na autorização. Por favor, tente novamente."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizar"
@@ -2569,7 +2595,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autorizado copiado para a área de transferência"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autorizando..."
@@ -2653,6 +2679,11 @@ msgstr "Voltar para {linkText}"
msgid "Back to content"
msgstr "Voltar ao conteúdo"
#. 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"
@@ -3013,7 +3044,6 @@ msgstr "Não consegue escanear? Copie o"
#. 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
@@ -3025,6 +3055,7 @@ msgstr "Não consegue escanear? Copie o"
#: 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"
@@ -3806,10 +3837,15 @@ msgstr "Confirmar"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirmar exclusão da função {roleName}? Isso não pode ser desfeito. Todos os membros serão reatribuídos à função padrão."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "campos"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Configurações da Aba"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Configuração de autenticação em duas etapas concluída com sucesso!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} regra avançada} other {{advancedFilterCount} regras avançadas}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "{agentLabel} Função do Agente"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} de {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Isso irá reiniciar o trabalho selecionado. Ele
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} mostrados"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "Ocorreu um erro inesperado. Tente novamente."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "e"
@@ -2554,7 +2580,7 @@ msgid "Authorization failed. Please try again."
msgstr "A autorização falhou. Tente novamente."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizar"
@@ -2569,7 +2595,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL autorizada copiada para a área de transferência"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Autorizando..."
@@ -2653,6 +2679,11 @@ msgstr "Voltar a {linkText}"
msgid "Back to content"
msgstr "Voltar ao conteúdo"
#. 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"
@@ -3013,7 +3044,6 @@ msgstr "Não consegue escanear? Copie o"
#. 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
@@ -3025,6 +3055,7 @@ msgstr "Não consegue escanear? Copie o"
#: 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"
@@ -3806,10 +3837,15 @@ msgstr "Confirmar"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirmar exclusão do papel {roleName}? Isso não pode ser desfeito. Todos os membros serão transferidos para o papel padrão."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "campos"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,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"
@@ -15122,6 +15165,8 @@ msgstr "Definições da Aba"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Configuração da autenticação em duas etapas concluída com sucesso!"
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts
+52 -6
View File
@@ -221,6 +221,11 @@ msgstr ""
msgid "{advancedFilterCount, plural, one {{advancedFilterCount} advanced rule} other {{advancedFilterCount} advanced rules}}"
msgstr "{advancedFilterCount, plural, one {{advancedFilterCount} regulă avansată} few {{advancedFilterCount} reguli avansate} other {{advancedFilterCount} reguli avansate}}"
#. js-lingui-id: XWd9bY
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{agentCount, plural, one {{agentCount} agent} other {{agentCount} agents}}"
msgstr ""
#. js-lingui-id: WGnqk6
#: src/modules/workflow/workflow-steps/workflow-actions/ai-agent-action/hooks/useWorkflowAiAgentPermissionActions.ts
msgid "{agentDisplayName} role ({agentIdPrefix})"
@@ -236,6 +241,16 @@ msgstr "Rolul agentului {agentLabel}"
msgid "{aggregateLabel} of {fieldLabel}"
msgstr "{aggregateLabel} din {fieldLabel}"
#. js-lingui-id: WhHyQh
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{apiKeyCount, plural, one {{apiKeyCount} API key} other {{apiKeyCount} API keys}}"
msgstr ""
#. 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:"
@@ -390,6 +405,11 @@ msgstr "{jobCount, plural, one {Aceasta va reîncerca locul de muncă selectat.
msgid "{label} list"
msgstr ""
#. js-lingui-id: 1DrH/j
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "{memberCount, plural, one {{memberCount} member} other {{memberCount} members}}"
msgstr ""
#. js-lingui-id: Y32cMj
#: src/modules/page-layout/widgets/email-thread/components/EmailThreadIntermediaryMessages.tsx
msgid "{messagesLength} emails"
@@ -518,6 +538,11 @@ msgstr ""
msgid "{visibleFieldsCount} shown"
msgstr "{visibleFieldsCount} afișate"
#. js-lingui-id: WjjsAL
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
msgid "{visibleFieldsCount} visible fields"
msgstr ""
#. js-lingui-id: riMLMq
#: src/modules/workflow/workflow-steps/workflow-actions/iterator-action/components/WorkflowIteratorSubStepSwitcher.tsx
msgid "{workflowRunIteratorSubStepIterationsCount, plural, one {# item} other {# items}}"
@@ -1949,6 +1974,7 @@ msgstr "A apărut o eroare neașteptată. Vă rugăm să încercați din nou."
#. js-lingui-id: HZFm5R
#: src/utils/date-utils.ts
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
#: src/modules/auth/sign-in-up/components/FooterNote.tsx
msgid "and"
msgstr "și"
@@ -2554,7 +2580,7 @@ msgid "Authorization failed. Please try again."
msgstr "Autorizarea a eșuat. Vă rugăm să încercați din nou."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorize"
msgstr "Autorizează"
@@ -2569,7 +2595,7 @@ msgid "Authorized URL copied to clipboard"
msgstr "URL-ul autorizat copiat în clipboard"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
#: src/modules/applications/components/AuthorizeActionButtons.tsx
msgid "Authorizing..."
msgstr "Se autorizează..."
@@ -2653,6 +2679,11 @@ msgstr "Înapoi la {linkText}"
msgid "Back to content"
msgstr "Înapoi la conținut"
#. 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"
@@ -3013,7 +3044,6 @@ msgstr "Nu poți scana? Copiază"
#. 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
@@ -3025,6 +3055,7 @@ msgstr "Nu poți scana? Copiază"
#: 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 "Anulare"
@@ -3806,10 +3837,15 @@ msgstr "Confirmă"
msgid "Confirm changing your current resource credit allocation."
msgstr ""
#. js-lingui-id: FbJ7Si
#. js-lingui-id: SU6Tym
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. All members will be reassigned to the default role."
msgstr "Confirmați ștergerea rolului {roleName}? Această acțiune nu poate fi anulată. Toți membrii vor fi realocați rolului implicit."
msgid "Confirm deletion of {roleName} role? This cannot be undone."
msgstr ""
#. js-lingui-id: W7S+Tm
#: src/modules/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModalSubtitle.tsx
msgid "Confirm deletion of {roleName} role? This cannot be undone. {reassignSubject} will be reassigned to the default role."
msgstr ""
#. js-lingui-id: kZkFSm
#: src/modules/settings/billing/components/internal/ResourceCreditPriceSelector.tsx
@@ -7283,7 +7319,9 @@ msgstr "câmpuri"
#: src/pages/settings/data-model/constants/SettingsObjectTableMetadata.ts
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/pages/settings/applications/components/SettingsApplicationDataTable.tsx
#: src/modules/side-panel/utils/getSidePanelSubPageTitle.ts
#: src/modules/side-panel/pages/page-layout/components/SidePanelPageLayoutRecordPageWidgetTypeSelect.tsx
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/settings/roles/role-permissions/object-level-permissions/record-level-permissions/components/SettingsRolePermissionsObjectLevelRecordLevelPermissionFieldSelectFieldMenu.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectFields.tsx
@@ -8504,6 +8542,11 @@ msgstr ""
msgid "Install"
msgstr "Instalează"
#. 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"
@@ -15122,6 +15165,8 @@ msgstr "Setări Tab"
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
#: src/pages/settings/layout/SettingsLayoutViewDetail.tsx
#: src/modules/views/view-picker/constants/ViewPickerTypeSelectOptions.ts
#: src/modules/side-panel/pages/page-layout/components/record-page/SidePanelRecordPageFieldSettings.tsx
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/FieldWidgetLayoutDropdownContent.tsx
#: src/modules/side-panel/pages/page-layout/components/dashboard/SidePanelDashboardRecordTableSettings.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownLayoutContent.tsx
#: src/modules/keyboard-shortcut-menu/components/KeyboardShortcutMenuOpenContent.tsx
@@ -16089,6 +16134,7 @@ msgstr "Configurarea autentificării în doi pași a fost finalizată cu succes!
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/layout/SettingsLayoutPageLayoutDetail.tsx
#: src/pages/settings/data-model/SettingsObjectIndexTable.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
#: src/pages/settings/applications/components/SettingsApplicationsTable.tsx
#: src/pages/settings/ai/constants/SettingsSkillTableMetadata.ts
#: src/pages/settings/ai/constants/SettingsAiAgentTableMetadata.ts

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