Compare commits

..
Author SHA1 Message Date
prastoin efc0d61aef npm minimal age gate 2026-05-12 09:15:05 +02:00
5f3407878d i18n - docs translations (#20451)
Created by Github action

Co-authored-by: github-actions <[email protected]>
2026-05-11 17:27:46 +02:00
martmullandGitHub 7c053716ae Stop rejecting application install when APP_VERSION is wrong (#20443)
as title

allows to install https://github.com/JordanChoo/twenty-multi-pipeline
locally
2026-05-11 15:17:17 +00:00
6c18bacb93 Encrypt connected account accessToken and refreshToken (#20441)
# Introduction
Encrypt the `connectedAccount` `accessToken` and `refreshToken` using
`APP_SECRET` in order to mitigate potential data leak or `core` table
compromise

## Decrypt
Temporary allow already plain text stored token to be retrieve without
decryption until the slow instance has been passed
Will uncomment the invariant check in a patch when the instance slow has
fully be run

## Standards
- Token are encrypted as quickly as possible
- A token cannot be written in database non encrypted by mistake using a
custom constraint ( `enc:` prefix )

## What's next
We should standardize not managing secret as is in the the services and
layer, they should be encrypted on the flight the earliest and should
never be logged
Will create a dedicated pattern afterwards for `applicationVariables`
secrets too

---------

Co-authored-by: Charles Bochet <[email protected]>
2026-05-11 15:16:12 +00:00
Thomas des FrancsandGitHub 93d83b2e36 [codex] Add Twenty Claude skills package (#20450)
## Summary

Adds a new `twenty-claude-skills` workspace package under `packages/`
for Claude skills related to Twenty.

## Changes

- Registers `packages/twenty-claude-skills` in the root Yarn workspace
list.
- Adds package metadata for `twenty-claude-skills`.
- Adds a README documenting the multi-skill layout.
- Adds the `twenty-record-presentation` skill under
`skills/twenty-record-presentation/SKILL.md`.

## Impact

This gives Claude-specific Twenty skills a dedicated package location
while preserving the skill metadata from the provided skill bundle.

## Validation

- Parsed the root `package.json` and
`packages/twenty-claude-skills/package.json` with Node.
- Compared the imported skill content against the source `.skill`
archive; the only difference is a trailing newline at EOF.
2026-05-11 14:56:45 +00:00
Paul RastoinandGitHub 0c5aec9c73 Ignore twenty versions constant files in prettier (#20448) 2026-05-11 14:23:21 +00:00
Abdul RahmanandGitHub ed75fc8a25 Use workflow inputSchema to render boolean, number, and enum fields in code/logic function steps (#20439)
<img width="415" height="772" alt="Screenshot 2026-05-11 at 4 44 08 PM"
src="https://github.com/user-attachments/assets/32dbdd3c-e60b-4c43-90bc-18be05f22dcf"
/>
<img width="414" height="371" alt="Screenshot 2026-05-11 at 4 48 24 PM"
src="https://github.com/user-attachments/assets/83be062c-7ed3-4953-98bb-e4290865040b"
/>
2026-05-11 14:21:08 +00:00
Paul RastoinandGitHub 9813467cee Refactor SAML relayState structure (#20430)
# Introduction
Restructure the RelayState and avoid asserting the idp identifier from
this opaque blob
Inferring the id from the secured validated and signed request params
2026-05-11 13:49:36 +00:00
1ea7c7ecc4 i18n - translations (#20449)
Created by Github action

Co-authored-by: github-actions <[email protected]>
2026-05-11 16:03:20 +02:00
626455b534 chore(members): rename "Access" tab to "Invite" + fix e2e (#20447)
## Summary

Two things, both fallout from #20360:

1. Rename the `Members → Access` tab to `Members → Invite`. The previous
label leaned security-flavored; "Invite" reads as the verb users come
here to do.
2. Fix the `signup_invite_email` Playwright test (failing on main, e.g.
https://github.com/twentyhq/twenty/actions/runs/25671161586/job/75356474079).
The invite-link button moved off the default Team tab when the Members
page got tabbed; the test was looking for it on the wrong tab.

## Rename details

- File: `SettingsWorkspaceMembersAccessTab.tsx` →
`SettingsWorkspaceMembersInviteTab.tsx` (single git rename, ~99%
similarity)
- Exported component: `SettingsWorkspaceMembersAccessTab` →
`SettingsWorkspaceMembersInviteTab`
- Tab id (and URL hash): `access` → `invite`
- Tab title: `Access` → `Invite`
- Icon: `IconKey` → `IconUserPlus`
- Doc breadcrumbs (3 files): `Members → Access` → `Members → Invite`

## E2E fix

`MembersSection` (Page Object Model) now has an `inviteTab` locator (via
`getByTestId('tab-invite')`) and a `goToInviteTab()` helper. Both
`copyInviteLink` and `sendInviteEmail` click the Invite tab first, so
they work regardless of which tab the page lands on initially.
Idempotent if already there.

## Test plan

- [x] CI green (e2e test + lint + typecheck + format)
- Lingui `.po` files will pick up the new source paths on the next
translation pass — not touched here.

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

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-11 15:54:34 +02:00
2c3e81960c chore: bump version to 2.5.0 (#20446)
## 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

## Checklist

- [ ] Verify version constants are correct

---------

Co-authored-by: Github Action Deploy <[email protected]>
Co-authored-by: prastoin <[email protected]>
2026-05-11 15:53:34 +02:00
martmullandGitHub 487112d438 Upgrade sdk version (#20444)
from 2.3.0 to 2.3.1
2026-05-11 15:31:40 +02:00
5c1fe45760 fix: update broken AI documentation link (#20401)
## Summary

Updated the broken AI documentation link in
`AiChatApiKeyNotConfiguredMessage.tsx`.

## Changes

* Replaced outdated self-hosting AI docs URL
* Updated link to a valid self-hosting documentation page

Fixes #20071

---------

Co-authored-by: Charles Bochet <[email protected]>
2026-05-11 15:29:37 +02:00
martmullandGitHub e72a907baa Stop rejecting application token on calendar and message events requests (#20440)
fixes https://github.com/twentyhq/twenty/issues/20423 by authorizing
application token to perform calendarEvents and message queries
2026-05-11 15:24:24 +02:00
128 changed files with 2752 additions and 1179 deletions
+2
View File
@@ -6,4 +6,6 @@ enableInlineHunks: true
nodeLinker: node-modules
npmMinimalAgeGate: "3d"
yarnPath: .yarn/releases/yarn-4.13.0.cjs
+2 -1
View File
@@ -63,7 +63,8 @@
"packages/twenty-cli",
"packages/create-twenty-app",
"packages/twenty-oxlint-rules",
"packages/twenty-companion"
"packages/twenty-companion",
"packages/twenty-claude-skills"
]
},
"prettier": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "2.3.0",
"version": "2.3.1",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
+9
View File
@@ -0,0 +1,9 @@
# twenty-claude-skills
Claude skills for working with Twenty.
Add skills under `skills/<skill-name>/SKILL.md`.
## Skills
- `twenty-record-presentation`: Retrieve and present Twenty CRM records as readable summaries or tables.
@@ -0,0 +1,10 @@
{
"name": "twenty-claude-skills",
"private": true,
"version": "0.1.0",
"description": "Claude skills for working with Twenty.",
"license": "AGPL-3.0",
"files": [
"skills"
]
}
@@ -0,0 +1,159 @@
---
name: twenty-record-presentation
description: "Retrieve and present Twenty CRM records as readable summaries or tables, using the connected Twenty MCP server to discover fields, fetch relevant data, format dates and values, build record links, and avoid raw API output."
---
# Twenty Record Presentation
## Overview
Retrieve the Twenty records needed to answer the user's question, then present them as a useful answer, not as raw API output. Always translate technical fields, timestamps, IDs, and nested structures into readable summaries that help the user scan, compare, and act.
## Retrieval Workflow
Use the selected connected Twenty MCP server when it is available
- `get_tool_catalog``learn_tools``execute_tool`
- Discover the relevant object, fields, filters, and sort options instead of guessing exact API names.
- Retrieve only the fields needed for the answer, plus the fields needed for ordering or disambiguation.
- For "latest", "most recent", or "recent" requests, include the relevant timestamp field used for sorting.
- If the user asks for a broad list, apply a practical limit and state how many records are shown.
- If required context is missing and cannot be discovered from the tools, ask one concise clarifying question.
- If no Twenty MCP tools are available, say that no callable Twenty MCP server is available in the current thread and ask the user to connect or expose the intended workspace.
## Response Shape
Start with the answer or count, then show the records in the clearest compact shape:
- For one record, use a labeled block.
- For 2 to 10 comparable records, use a Markdown table.
- For larger sets, show the most relevant rows first, mention the total, and offer the next useful filter or page only when needed.
- For nested records, summarize the important nested values instead of dumping JSON.
- When comparing records across workspaces, prefer one combined table with a Workspace column if it improves scanning. Use separate sections only when each workspace needs different columns.
Use English labels and prose. Keep user-provided names, record values, emails, URLs, and proper nouns unchanged.
## Record Links
Link records back to their original Twenty context whenever the workspace origin and record identity are known.
- Build record links with the Twenty show-page path: `/object/:objectNameSingular/:objectRecordId`.
- For absolute links, combine the workspace origin with that path, for example `https://example.twenty.com/object/person/record-id`.
- Use `recordReferences` from MCP responses when available to get `objectNameSingular`, `recordId`, and `displayName`.
- If `recordReferences` is missing, use the record's `id` and the object name from the tool that returned it.
- Prefer linking the record display name in tables and summaries instead of adding a raw ID column.
- When showing records from multiple workspaces, generate links with each record's own workspace origin.
- If the workspace origin is unknown, do not invent a hostname. Add a compact Record column with the object name and record ID, or say that direct links need the workspace URL.
## Dates and Times
Never expose ISO/RFC3339 timestamps as the main date display.
- Parse common technical formats such as `2026-05-05T09:43:18.123Z`, `2026-05-05T09:43:18+02:00`, Unix seconds, and Unix milliseconds.
- Convert instants with `Z` or an explicit offset to the user's timezone when known. If timezone is unknown, keep the source timezone or ask only when it changes the meaning.
- Preserve date-only values as dates. Do not shift date-only values across timezones.
- Display absolute dates. Use relative words such as "today", "yesterday", or "last week" only as a supplement when helpful.
- Include the year unless it is truly redundant in a small same-year table.
- Show seconds and milliseconds only when they matter for debugging, audit logs, or ordering events with near-identical times.
Examples, with user timezone Europe/Paris, UTC+2 in May:
- Timestamp: `2026-05-05T09:43:18.123Z` → May 5, 2026, 11:43 AM
- Date-only value: `2026-05-05` → May 5, 2026
If the exact raw timestamp is relevant, put it after the readable value:
- Created: May 5, 2026, 11:43 AM (raw: `2026-05-05T09:43:18.123Z`)
## Field Labels
Convert raw field names into user-facing labels:
- `createdAt` → Created
- `updatedAt` → Last updated
- `deletedAt` → Deleted
- `createdBy` → Created by
- `workspaceMemberId` → Workspace member
- `opportunityStage` → Opportunity stage
Prefer the label users see in Twenty when it is available from metadata. Otherwise, split camelCase, snake_case, and kebab-case into normal words.
## Value Formatting
Format values by meaning:
- **Empty or null**: Not set, or omit if the field is irrelevant.
- **Booleans**: Yes / No.
- **Money**: include currency and grouping, for example EUR 12,450 or USD 12,450 based on the record currency.
- **Percentages**: use `%`, round only enough to stay meaningful.
- **URLs and emails**: make them clickable Markdown links when useful.
- **IDs and UUIDs**: hide by default unless the user asks for identifiers, deduplication, debugging, or exact references.
- **Arrays**: show the count and the most important names, not the full serialized array.
## Record Ordering
When the user asks for "latest", "recent", or "last records":
- State which date field was used when it is not obvious, for example *sorted by Last updated*.
- Prefer `updatedAt` for "recent activity" and `createdAt` for "newest records" unless the user's wording or object semantics points to another date.
- Display the chosen date column in readable form.
- If multiple records share the same date, keep a deterministic secondary order such as name or ID.
## Table Alignment
Make tables easy to scan before making them visually decorative.
- Use Markdown alignment markers intentionally: text columns left-aligned (`:---`), numeric money/count columns right-aligned (`---:`), and short status columns centered only when that actually improves scanning (`:---:`).
- Keep record names on a stable left edge. If rows have favicons, use a dedicated narrow Icon column followed by a linked record-name column.
- If the table is compact and the image is known to be consistently small, it is acceptable to put `![alt](url) [Name](record-url)` in one cell. Do not also add emoji or extra symbols before the name.
- Keep fixed-format fields such as Created, Updated, Amount, and Source to the right of variable-width fields such as Name, Company, Person, and Domain.
- Use a consistent date format within a table so rows line up visually, for example *May 5, 2026, 11:43 AM* or *May 5, 11:43*.
- Prefer natural links over extra link columns: link the record name to Twenty, and link the domain or email only when that external destination is useful.
- Avoid raw ID columns in normal user-facing tables. IDs are long, visually dominant, and destroy alignment unless the user asks for them.
## Markdown Patterns
### Compact table
Use a compact table for comparable records:
```markdown
I found 5 recent opportunities, sorted by last updated date.
| Name | Stage | Amount | Last updated |
| :--- | :--- | ---: | :--- |
| [Acme renewal](https://example.twenty.com/object/opportunity/record-id-1) | Negotiation | EUR 12,450 | May 5, 2026, 11:43 AM |
| [Globex expansion](https://example.twenty.com/object/opportunity/record-id-2) | Discovery | EUR 8,000 | May 4, 2026, 4:10 PM |
```
### Labeled block
Use a labeled block for one important record:
```markdown
**[Acme renewal](https://example.twenty.com/object/opportunity/record-id-1)**
- Stage: Negotiation
- Amount: EUR 12,450
- Next action: Not set
- Last updated: May 5, 2026, 11:43 AM
```
## Raw Data Exceptions
Show raw JSON, raw timestamps, internal IDs, or full nested objects only when the user asks for debugging, export, exact API payloads, schema inspection, or reproducible commands. Even then, put a readable summary before the raw block.
Example:
> Acme renewal — Negotiation stage, EUR 12,450, last updated May 5, 2026, 11:43 AM. Full payload below:
>
> ```json
> {
> "id": "record-id-1",
> "name": "Acme renewal",
> "stage": "NEGOTIATION",
> "amountMicros": "12450000000",
> "currencyCode": "EUR",
> "updatedAt": "2026-05-05T09:43:18.123Z"
> }
> ```
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-client-sdk",
"version": "2.3.0",
"version": "2.3.1",
"sideEffects": false,
"license": "AGPL-3.0",
"scripts": {
@@ -1970,76 +1970,6 @@ type RotateClientSecret {
clientSecret: String!
}
type ResendEmailVerificationToken {
success: Boolean!
}
type DeleteSso {
identityProviderId: UUID!
}
type EditSso {
id: UUID!
type: IdentityProviderType!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type WorkspaceNameAndId {
displayName: String
id: UUID!
}
type FindAvailableSSOIDP {
type: IdentityProviderType!
id: UUID!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
workspace: WorkspaceNameAndId!
}
type SetupSso {
id: UUID!
type: IdentityProviderType!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type SSOConnection {
type: IdentityProviderType!
id: UUID!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type AvailableWorkspace {
id: UUID!
displayName: String
loginToken: String
personalInviteToken: String
inviteHash: String
workspaceUrls: WorkspaceUrls!
logo: String
sso: [SSOConnection!]!
}
type AvailableWorkspaces {
availableWorkspacesForSignIn: [AvailableWorkspace!]!
availableWorkspacesForSignUp: [AvailableWorkspace!]!
}
type DeletedWorkspaceMember {
id: UUID!
name: FullName!
userEmail: String!
avatarUrl: String
userWorkspaceId: UUID
}
type Relation {
type: RelationType!
sourceObjectMetadata: Object!
@@ -2161,6 +2091,76 @@ type FieldConnection {
edges: [FieldEdge!]!
}
type ResendEmailVerificationToken {
success: Boolean!
}
type DeleteSso {
identityProviderId: UUID!
}
type EditSso {
id: UUID!
type: IdentityProviderType!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type WorkspaceNameAndId {
displayName: String
id: UUID!
}
type FindAvailableSSOIDP {
type: IdentityProviderType!
id: UUID!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
workspace: WorkspaceNameAndId!
}
type SetupSso {
id: UUID!
type: IdentityProviderType!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type SSOConnection {
type: IdentityProviderType!
id: UUID!
issuer: String!
name: String!
status: SSOIdentityProviderStatus!
}
type AvailableWorkspace {
id: UUID!
displayName: String
loginToken: String
personalInviteToken: String
inviteHash: String
workspaceUrls: WorkspaceUrls!
logo: String
sso: [SSOConnection!]!
}
type AvailableWorkspaces {
availableWorkspacesForSignIn: [AvailableWorkspace!]!
availableWorkspacesForSignUp: [AvailableWorkspace!]!
}
type DeletedWorkspaceMember {
id: UUID!
name: FullName!
userEmail: String!
avatarUrl: String
userWorkspaceId: UUID
}
type BillingEntitlement {
key: BillingEntitlementKey!
value: Boolean!
@@ -1604,86 +1604,6 @@ export interface RotateClientSecret {
__typename: 'RotateClientSecret'
}
export interface ResendEmailVerificationToken {
success: Scalars['Boolean']
__typename: 'ResendEmailVerificationToken'
}
export interface DeleteSso {
identityProviderId: Scalars['UUID']
__typename: 'DeleteSso'
}
export interface EditSso {
id: Scalars['UUID']
type: IdentityProviderType
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'EditSso'
}
export interface WorkspaceNameAndId {
displayName?: Scalars['String']
id: Scalars['UUID']
__typename: 'WorkspaceNameAndId'
}
export interface FindAvailableSSOIDP {
type: IdentityProviderType
id: Scalars['UUID']
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
workspace: WorkspaceNameAndId
__typename: 'FindAvailableSSOIDP'
}
export interface SetupSso {
id: Scalars['UUID']
type: IdentityProviderType
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'SetupSso'
}
export interface SSOConnection {
type: IdentityProviderType
id: Scalars['UUID']
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'SSOConnection'
}
export interface AvailableWorkspace {
id: Scalars['UUID']
displayName?: Scalars['String']
loginToken?: Scalars['String']
personalInviteToken?: Scalars['String']
inviteHash?: Scalars['String']
workspaceUrls: WorkspaceUrls
logo?: Scalars['String']
sso: SSOConnection[]
__typename: 'AvailableWorkspace'
}
export interface AvailableWorkspaces {
availableWorkspacesForSignIn: AvailableWorkspace[]
availableWorkspacesForSignUp: AvailableWorkspace[]
__typename: 'AvailableWorkspaces'
}
export interface DeletedWorkspaceMember {
id: Scalars['UUID']
name: FullName
userEmail: Scalars['String']
avatarUrl?: Scalars['String']
userWorkspaceId?: Scalars['UUID']
__typename: 'DeletedWorkspaceMember'
}
export interface Relation {
type: RelationType
sourceObjectMetadata: Object
@@ -1803,6 +1723,86 @@ export interface FieldConnection {
__typename: 'FieldConnection'
}
export interface ResendEmailVerificationToken {
success: Scalars['Boolean']
__typename: 'ResendEmailVerificationToken'
}
export interface DeleteSso {
identityProviderId: Scalars['UUID']
__typename: 'DeleteSso'
}
export interface EditSso {
id: Scalars['UUID']
type: IdentityProviderType
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'EditSso'
}
export interface WorkspaceNameAndId {
displayName?: Scalars['String']
id: Scalars['UUID']
__typename: 'WorkspaceNameAndId'
}
export interface FindAvailableSSOIDP {
type: IdentityProviderType
id: Scalars['UUID']
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
workspace: WorkspaceNameAndId
__typename: 'FindAvailableSSOIDP'
}
export interface SetupSso {
id: Scalars['UUID']
type: IdentityProviderType
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'SetupSso'
}
export interface SSOConnection {
type: IdentityProviderType
id: Scalars['UUID']
issuer: Scalars['String']
name: Scalars['String']
status: SSOIdentityProviderStatus
__typename: 'SSOConnection'
}
export interface AvailableWorkspace {
id: Scalars['UUID']
displayName?: Scalars['String']
loginToken?: Scalars['String']
personalInviteToken?: Scalars['String']
inviteHash?: Scalars['String']
workspaceUrls: WorkspaceUrls
logo?: Scalars['String']
sso: SSOConnection[]
__typename: 'AvailableWorkspace'
}
export interface AvailableWorkspaces {
availableWorkspacesForSignIn: AvailableWorkspace[]
availableWorkspacesForSignUp: AvailableWorkspace[]
__typename: 'AvailableWorkspaces'
}
export interface DeletedWorkspaceMember {
id: Scalars['UUID']
name: FullName
userEmail: Scalars['String']
avatarUrl?: Scalars['String']
userWorkspaceId?: Scalars['UUID']
__typename: 'DeletedWorkspaceMember'
}
export interface BillingEntitlement {
key: BillingEntitlementKey
value: Scalars['Boolean']
@@ -4564,96 +4564,6 @@ export interface RotateClientSecretGenqlSelection{
__scalar?: boolean | number
}
export interface ResendEmailVerificationTokenGenqlSelection{
success?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DeleteSsoGenqlSelection{
identityProviderId?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface EditSsoGenqlSelection{
id?: boolean | number
type?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface WorkspaceNameAndIdGenqlSelection{
displayName?: boolean | number
id?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface FindAvailableSSOIDPGenqlSelection{
type?: boolean | number
id?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
workspace?: WorkspaceNameAndIdGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface SetupSsoGenqlSelection{
id?: boolean | number
type?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface SSOConnectionGenqlSelection{
type?: boolean | number
id?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface AvailableWorkspaceGenqlSelection{
id?: boolean | number
displayName?: boolean | number
loginToken?: boolean | number
personalInviteToken?: boolean | number
inviteHash?: boolean | number
workspaceUrls?: WorkspaceUrlsGenqlSelection
logo?: boolean | number
sso?: SSOConnectionGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface AvailableWorkspacesGenqlSelection{
availableWorkspacesForSignIn?: AvailableWorkspaceGenqlSelection
availableWorkspacesForSignUp?: AvailableWorkspaceGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DeletedWorkspaceMemberGenqlSelection{
id?: boolean | number
name?: FullNameGenqlSelection
userEmail?: boolean | number
avatarUrl?: boolean | number
userWorkspaceId?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface RelationGenqlSelection{
type?: boolean | number
sourceObjectMetadata?: ObjectGenqlSelection
@@ -4783,6 +4693,96 @@ export interface FieldConnectionGenqlSelection{
__scalar?: boolean | number
}
export interface ResendEmailVerificationTokenGenqlSelection{
success?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DeleteSsoGenqlSelection{
identityProviderId?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface EditSsoGenqlSelection{
id?: boolean | number
type?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface WorkspaceNameAndIdGenqlSelection{
displayName?: boolean | number
id?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface FindAvailableSSOIDPGenqlSelection{
type?: boolean | number
id?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
workspace?: WorkspaceNameAndIdGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface SetupSsoGenqlSelection{
id?: boolean | number
type?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface SSOConnectionGenqlSelection{
type?: boolean | number
id?: boolean | number
issuer?: boolean | number
name?: boolean | number
status?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface AvailableWorkspaceGenqlSelection{
id?: boolean | number
displayName?: boolean | number
loginToken?: boolean | number
personalInviteToken?: boolean | number
inviteHash?: boolean | number
workspaceUrls?: WorkspaceUrlsGenqlSelection
logo?: boolean | number
sso?: SSOConnectionGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface AvailableWorkspacesGenqlSelection{
availableWorkspacesForSignIn?: AvailableWorkspaceGenqlSelection
availableWorkspacesForSignUp?: AvailableWorkspaceGenqlSelection
__typename?: boolean | number
__scalar?: boolean | number
}
export interface DeletedWorkspaceMemberGenqlSelection{
id?: boolean | number
name?: FullNameGenqlSelection
userEmail?: boolean | number
avatarUrl?: boolean | number
userWorkspaceId?: boolean | number
__typename?: boolean | number
__scalar?: boolean | number
}
export interface BillingEntitlementGenqlSelection{
key?: boolean | number
value?: boolean | number
@@ -7398,86 +7398,6 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const ResendEmailVerificationToken_possibleTypes: string[] = ['ResendEmailVerificationToken']
export const isResendEmailVerificationToken = (obj?: { __typename?: any } | null): obj is ResendEmailVerificationToken => {
if (!obj?.__typename) throw new Error('__typename is missing in "isResendEmailVerificationToken"')
return ResendEmailVerificationToken_possibleTypes.includes(obj.__typename)
}
const DeleteSso_possibleTypes: string[] = ['DeleteSso']
export const isDeleteSso = (obj?: { __typename?: any } | null): obj is DeleteSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDeleteSso"')
return DeleteSso_possibleTypes.includes(obj.__typename)
}
const EditSso_possibleTypes: string[] = ['EditSso']
export const isEditSso = (obj?: { __typename?: any } | null): obj is EditSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isEditSso"')
return EditSso_possibleTypes.includes(obj.__typename)
}
const WorkspaceNameAndId_possibleTypes: string[] = ['WorkspaceNameAndId']
export const isWorkspaceNameAndId = (obj?: { __typename?: any } | null): obj is WorkspaceNameAndId => {
if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceNameAndId"')
return WorkspaceNameAndId_possibleTypes.includes(obj.__typename)
}
const FindAvailableSSOIDP_possibleTypes: string[] = ['FindAvailableSSOIDP']
export const isFindAvailableSSOIDP = (obj?: { __typename?: any } | null): obj is FindAvailableSSOIDP => {
if (!obj?.__typename) throw new Error('__typename is missing in "isFindAvailableSSOIDP"')
return FindAvailableSSOIDP_possibleTypes.includes(obj.__typename)
}
const SetupSso_possibleTypes: string[] = ['SetupSso']
export const isSetupSso = (obj?: { __typename?: any } | null): obj is SetupSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isSetupSso"')
return SetupSso_possibleTypes.includes(obj.__typename)
}
const SSOConnection_possibleTypes: string[] = ['SSOConnection']
export const isSSOConnection = (obj?: { __typename?: any } | null): obj is SSOConnection => {
if (!obj?.__typename) throw new Error('__typename is missing in "isSSOConnection"')
return SSOConnection_possibleTypes.includes(obj.__typename)
}
const AvailableWorkspace_possibleTypes: string[] = ['AvailableWorkspace']
export const isAvailableWorkspace = (obj?: { __typename?: any } | null): obj is AvailableWorkspace => {
if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspace"')
return AvailableWorkspace_possibleTypes.includes(obj.__typename)
}
const AvailableWorkspaces_possibleTypes: string[] = ['AvailableWorkspaces']
export const isAvailableWorkspaces = (obj?: { __typename?: any } | null): obj is AvailableWorkspaces => {
if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspaces"')
return AvailableWorkspaces_possibleTypes.includes(obj.__typename)
}
const DeletedWorkspaceMember_possibleTypes: string[] = ['DeletedWorkspaceMember']
export const isDeletedWorkspaceMember = (obj?: { __typename?: any } | null): obj is DeletedWorkspaceMember => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDeletedWorkspaceMember"')
return DeletedWorkspaceMember_possibleTypes.includes(obj.__typename)
}
const Relation_possibleTypes: string[] = ['Relation']
export const isRelation = (obj?: { __typename?: any } | null): obj is Relation => {
if (!obj?.__typename) throw new Error('__typename is missing in "isRelation"')
@@ -7590,6 +7510,86 @@ export interface LogicFunctionLogsInput {applicationId?: (Scalars['UUID'] | null
const ResendEmailVerificationToken_possibleTypes: string[] = ['ResendEmailVerificationToken']
export const isResendEmailVerificationToken = (obj?: { __typename?: any } | null): obj is ResendEmailVerificationToken => {
if (!obj?.__typename) throw new Error('__typename is missing in "isResendEmailVerificationToken"')
return ResendEmailVerificationToken_possibleTypes.includes(obj.__typename)
}
const DeleteSso_possibleTypes: string[] = ['DeleteSso']
export const isDeleteSso = (obj?: { __typename?: any } | null): obj is DeleteSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDeleteSso"')
return DeleteSso_possibleTypes.includes(obj.__typename)
}
const EditSso_possibleTypes: string[] = ['EditSso']
export const isEditSso = (obj?: { __typename?: any } | null): obj is EditSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isEditSso"')
return EditSso_possibleTypes.includes(obj.__typename)
}
const WorkspaceNameAndId_possibleTypes: string[] = ['WorkspaceNameAndId']
export const isWorkspaceNameAndId = (obj?: { __typename?: any } | null): obj is WorkspaceNameAndId => {
if (!obj?.__typename) throw new Error('__typename is missing in "isWorkspaceNameAndId"')
return WorkspaceNameAndId_possibleTypes.includes(obj.__typename)
}
const FindAvailableSSOIDP_possibleTypes: string[] = ['FindAvailableSSOIDP']
export const isFindAvailableSSOIDP = (obj?: { __typename?: any } | null): obj is FindAvailableSSOIDP => {
if (!obj?.__typename) throw new Error('__typename is missing in "isFindAvailableSSOIDP"')
return FindAvailableSSOIDP_possibleTypes.includes(obj.__typename)
}
const SetupSso_possibleTypes: string[] = ['SetupSso']
export const isSetupSso = (obj?: { __typename?: any } | null): obj is SetupSso => {
if (!obj?.__typename) throw new Error('__typename is missing in "isSetupSso"')
return SetupSso_possibleTypes.includes(obj.__typename)
}
const SSOConnection_possibleTypes: string[] = ['SSOConnection']
export const isSSOConnection = (obj?: { __typename?: any } | null): obj is SSOConnection => {
if (!obj?.__typename) throw new Error('__typename is missing in "isSSOConnection"')
return SSOConnection_possibleTypes.includes(obj.__typename)
}
const AvailableWorkspace_possibleTypes: string[] = ['AvailableWorkspace']
export const isAvailableWorkspace = (obj?: { __typename?: any } | null): obj is AvailableWorkspace => {
if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspace"')
return AvailableWorkspace_possibleTypes.includes(obj.__typename)
}
const AvailableWorkspaces_possibleTypes: string[] = ['AvailableWorkspaces']
export const isAvailableWorkspaces = (obj?: { __typename?: any } | null): obj is AvailableWorkspaces => {
if (!obj?.__typename) throw new Error('__typename is missing in "isAvailableWorkspaces"')
return AvailableWorkspaces_possibleTypes.includes(obj.__typename)
}
const DeletedWorkspaceMember_possibleTypes: string[] = ['DeletedWorkspaceMember']
export const isDeletedWorkspaceMember = (obj?: { __typename?: any } | null): obj is DeletedWorkspaceMember => {
if (!obj?.__typename) throw new Error('__typename is missing in "isDeletedWorkspaceMember"')
return DeletedWorkspaceMember_possibleTypes.includes(obj.__typename)
}
const BillingEntitlement_possibleTypes: string[] = ['BillingEntitlement']
export const isBillingEntitlement = (obj?: { __typename?: any } | null): obj is BillingEntitlement => {
if (!obj?.__typename) throw new Error('__typename is missing in "isBillingEntitlement"')
@@ -56,7 +56,7 @@ export default {
181,
184,
187,
210,
200,
225,
261,
262,
@@ -946,10 +946,10 @@ export default {
3
],
"relation": [
209
199
],
"morphRelations": [
209
199
],
"object": [
55
@@ -1008,7 +1008,7 @@ export default {
45
],
"objectMetadata": [
217,
207,
{
"paging": [
48,
@@ -1021,7 +1021,7 @@ export default {
}
],
"indexFieldMetadatas": [
215,
205,
{
"paging": [
48,
@@ -1266,7 +1266,7 @@ export default {
46
],
"fields": [
222,
212,
{
"paging": [
48,
@@ -1279,7 +1279,7 @@ export default {
}
],
"indexMetadatas": [
220,
210,
{
"paging": [
48,
@@ -1976,7 +1976,7 @@ export default {
20
],
"deletedWorkspaceMembers": [
208
223
],
"hasPassword": [
6
@@ -1988,7 +1988,7 @@ export default {
17
],
"availableWorkspaces": [
207
222
],
"__typename": [
1
@@ -3857,6 +3857,176 @@ export default {
1
]
},
"Relation": {
"type": [
200
],
"sourceObjectMetadata": [
55
],
"targetObjectMetadata": [
55
],
"sourceFieldMetadata": [
43
],
"targetFieldMetadata": [
43
],
"__typename": [
1
]
},
"RelationType": {},
"IndexEdge": {
"node": [
46
],
"cursor": [
49
],
"__typename": [
1
]
},
"PageInfo": {
"hasNextPage": [
6
],
"hasPreviousPage": [
6
],
"startCursor": [
49
],
"endCursor": [
49
],
"__typename": [
1
]
},
"IndexConnection": {
"pageInfo": [
202
],
"edges": [
201
],
"__typename": [
1
]
},
"IndexFieldEdge": {
"node": [
45
],
"cursor": [
49
],
"__typename": [
1
]
},
"IndexIndexFieldMetadatasConnection": {
"pageInfo": [
202
],
"edges": [
204
],
"__typename": [
1
]
},
"ObjectEdge": {
"node": [
55
],
"cursor": [
49
],
"__typename": [
1
]
},
"IndexObjectMetadataConnection": {
"pageInfo": [
202
],
"edges": [
206
],
"__typename": [
1
]
},
"ObjectRecordCount": {
"objectNamePlural": [
1
],
"totalCount": [
21
],
"__typename": [
1
]
},
"ObjectConnection": {
"pageInfo": [
202
],
"edges": [
206
],
"__typename": [
1
]
},
"ObjectIndexMetadatasConnection": {
"pageInfo": [
202
],
"edges": [
201
],
"__typename": [
1
]
},
"FieldEdge": {
"node": [
43
],
"cursor": [
49
],
"__typename": [
1
]
},
"ObjectFieldsConnection": {
"pageInfo": [
202
],
"edges": [
211
],
"__typename": [
1
]
},
"FieldConnection": {
"pageInfo": [
202
],
"edges": [
211
],
"__typename": [
1
]
},
"ResendEmailVerificationToken": {
"success": [
6
@@ -3921,7 +4091,7 @@ export default {
174
],
"workspace": [
202
217
],
"__typename": [
1
@@ -3990,7 +4160,7 @@ export default {
1
],
"sso": [
205
220
],
"__typename": [
1
@@ -3998,10 +4168,10 @@ export default {
},
"AvailableWorkspaces": {
"availableWorkspacesForSignIn": [
206
221
],
"availableWorkspacesForSignUp": [
206
221
],
"__typename": [
1
@@ -4027,176 +4197,6 @@ export default {
1
]
},
"Relation": {
"type": [
210
],
"sourceObjectMetadata": [
55
],
"targetObjectMetadata": [
55
],
"sourceFieldMetadata": [
43
],
"targetFieldMetadata": [
43
],
"__typename": [
1
]
},
"RelationType": {},
"IndexEdge": {
"node": [
46
],
"cursor": [
49
],
"__typename": [
1
]
},
"PageInfo": {
"hasNextPage": [
6
],
"hasPreviousPage": [
6
],
"startCursor": [
49
],
"endCursor": [
49
],
"__typename": [
1
]
},
"IndexConnection": {
"pageInfo": [
212
],
"edges": [
211
],
"__typename": [
1
]
},
"IndexFieldEdge": {
"node": [
45
],
"cursor": [
49
],
"__typename": [
1
]
},
"IndexIndexFieldMetadatasConnection": {
"pageInfo": [
212
],
"edges": [
214
],
"__typename": [
1
]
},
"ObjectEdge": {
"node": [
55
],
"cursor": [
49
],
"__typename": [
1
]
},
"IndexObjectMetadataConnection": {
"pageInfo": [
212
],
"edges": [
216
],
"__typename": [
1
]
},
"ObjectRecordCount": {
"objectNamePlural": [
1
],
"totalCount": [
21
],
"__typename": [
1
]
},
"ObjectConnection": {
"pageInfo": [
212
],
"edges": [
216
],
"__typename": [
1
]
},
"ObjectIndexMetadatasConnection": {
"pageInfo": [
212
],
"edges": [
211
],
"__typename": [
1
]
},
"FieldEdge": {
"node": [
43
],
"cursor": [
49
],
"__typename": [
1
]
},
"ObjectFieldsConnection": {
"pageInfo": [
212
],
"edges": [
221
],
"__typename": [
1
]
},
"FieldConnection": {
"pageInfo": [
212
],
"edges": [
221
],
"__typename": [
1
]
},
"BillingEntitlement": {
"key": [
225
@@ -4310,7 +4310,7 @@ export default {
234
],
"availableWorkspaces": [
207
222
],
"__typename": [
1
@@ -6071,7 +6071,7 @@ export default {
}
],
"objectRecordCounts": [
218
208
],
"object": [
55,
@@ -6083,7 +6083,7 @@ export default {
}
],
"objects": [
219,
209,
{
"paging": [
48,
@@ -6105,7 +6105,7 @@ export default {
}
],
"indexMetadatas": [
213,
203,
{
"paging": [
48,
@@ -6154,7 +6154,7 @@ export default {
}
],
"fields": [
223,
213,
{
"paging": [
48,
@@ -6425,7 +6425,7 @@ export default {
}
],
"getSSOIdentityProviders": [
203
218
],
"eventLogs": [
289,
@@ -8393,7 +8393,7 @@ export default {
}
],
"resendEmailVerificationToken": [
199,
214,
{
"email": [
1,
@@ -8460,7 +8460,7 @@ export default {
}
],
"createOIDCIdentityProvider": [
204,
219,
{
"input": [
455,
@@ -8469,7 +8469,7 @@ export default {
}
],
"createSAMLIdentityProvider": [
204,
219,
{
"input": [
456,
@@ -8478,7 +8478,7 @@ export default {
}
],
"deleteSSOIdentityProvider": [
200,
215,
{
"input": [
457,
@@ -8487,7 +8487,7 @@ export default {
}
],
"editSSOIdentityProvider": [
201,
216,
{
"input": [
458,
@@ -21,7 +21,7 @@ Für benutzerdefinierte Domänen müssen Sie die DNS-Einstellungen bei Ihrem Dom
## Genehmigte Domänen
Konfigurieren Sie dies unter **Einstellungen → Mitglieder → Zugriff**.
Konfigurieren Sie dies unter **Einstellungen → Mitglieder → Einladen**.
Jede Person mit einer E-Mail-Adresse in diesen Domänen darf sich automatisch für diesen Arbeitsbereich registrieren.
@@ -77,7 +77,7 @@ Verwalten Sie Einladungen, die noch nicht angenommen wurden:
Erlauben Sie Teammitgliedern, basierend auf ihrer E-Mail-Domäne automatisch beizutreten:
1. Gehen Sie zu **Einstellungen → Mitglieder → Zugriff**
1. Gehen Sie zu **Einstellungen → Mitglieder → Einladen**
2. Fügen Sie die Domäne Ihres Unternehmens hinzu (z. B. `yourcompany.com`)
3. Jede Person mit dieser E-Mail-Domäne kann ohne Einladung beitreten
@@ -146,7 +146,7 @@ Eine Subdomain ist schnell eingerichtet, während eine benutzerdefinierte Domän
</Accordion>
<Accordion title="Wie funktionieren genehmigte Zugriffsdomänen?">
Sie können genehmigte Zugriffsdomänen konfigurieren, damit Teammitglieder mit Firmen-E-Mail-Adressen Ihrem Arbeitsbereich automatisch beitreten können. Gehen Sie zu **Einstellungen → Mitglieder → Zugriff** und fügen Sie Ihre Firmendomäne hinzu (z. B. `yourcompany.com`).
Sie können genehmigte Zugriffsdomänen konfigurieren, damit Teammitglieder mit Firmen-E-Mail-Adressen Ihrem Arbeitsbereich automatisch beitreten können. Gehen Sie zu **Einstellungen → Mitglieder → Einladen** und fügen Sie Ihre Firmendomäne hinzu (z. B. `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -21,7 +21,7 @@ Para domínios personalizados, você precisará configurar as configurações de
## Domínios Aprovados
Configure em **Configurações → Membros → Acesso**.
Configure em **Configurações → Membros → Convite**.
Qualquer pessoa com um endereço de e-mail nesses domínios pode inscrever-se neste espaço de trabalho automaticamente.
@@ -77,7 +77,7 @@ Gerencie convites que ainda não foram aceitos:
Permita que membros da equipe ingressem automaticamente com base no domínio de e-mail:
1. Vá para **Configurações → Membros → Acesso**
1. Vá para **Configurações → Membros → Convites**
2. Adicione o domínio da sua empresa (por exemplo, `yourcompany.com`)
3. Qualquer pessoa com esse domínio de e-mail pode ingressar sem convite
@@ -146,7 +146,7 @@ Um subdomínio é rápido de configurar, enquanto um domínio personalizado ofer
</Accordion>
<Accordion title="Como funcionam os domínios de acesso aprovados?">
Você pode configurar domínios de acesso aprovados para que membros da equipe com endereços de e-mail da empresa possam ingressar automaticamente no seu espaço de trabalho. Vá para **Configurações → Membros → Acesso** e adicione o domínio da sua empresa (por exemplo, `yourcompany.com`).
Você pode configurar domínios de acesso aprovados para que membros da equipe com endereços de e-mail da empresa possam ingressar automaticamente no seu espaço de trabalho. Vá para **Configurações → Membros → Convidar** e adicione o domínio da sua empresa (por exemplo, `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -21,7 +21,7 @@ Pentru domeniile personalizate, va trebui să configurați setările DNS la furn
## Domenii Aprobate
Configurați în **Setări → Membri → Acces**.
Configurați în **Setări → Membri → Invită**.
Oricine are o adresă de email pe aceste domenii se poate înscrie automat în acest spațiu de lucru.
@@ -77,7 +77,7 @@ Gestionați invitațiile care nu au fost acceptate:
Permiteți membrilor echipei să se alăture automat pe baza domeniului lor de e-mail:
1. Accesați **Setări → Membri → Acces**
1. Accesați **Setări → Membri → Invită**
2. Adăugați domeniul companiei dvs. (de ex., `yourcompany.com`)
3. Oricine are acel domeniu de e-mail se poate alătura fără invitație
@@ -146,7 +146,7 @@ Un subdomeniu se configurează rapid, în timp ce un domeniu personalizat oferă
</Accordion>
<Accordion title="Cum funcționează domeniile de acces aprobate?">
Puteți configura domenii de acces aprobate astfel încât membrii echipei cu adrese de e-mail ale companiei să se poată alătura automat spațiului dvs. de lucru. Accesați **Setări → Membri → Acces** și adăugați domeniul companiei (de ex., `yourcompany.com`).
Puteți configura domenii de acces aprobate astfel încât membrii echipei cu adrese de e-mail ale companiei să se poată alătura automat spațiului dvs. de lucru. Accesați **Setări → Membri → Invită** și adăugați domeniul companiei (de ex., `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -21,7 +21,7 @@ description: Настройте домен рабочего пространст
## Утвержденные домены
Настройте в **Настройки → Участники → Доступ**.
Настройте в **Настройки → Участники → Пригласить**.
Любой пользователь с адресом электронной почты в этих доменах может автоматически зарегистрироваться в этом рабочем пространстве.
@@ -77,7 +77,7 @@ description: Пригласите членов команды и управля
Разрешите участникам команды присоединяться автоматически на основе домена их электронной почты:
1. Перейдите в **Настройки → Участники → Доступ**
1. Перейдите в **Настройки → Участники → Пригласить**
2. Добавьте домен вашей компании (например, `yourcompany.com`)
3. Любой с таким доменом электронной почты сможет присоединиться без приглашения
@@ -146,7 +146,7 @@ description: Часто задаваемые вопросы о настройк
</Accordion>
<Accordion title="Как работают утвержденные домены доступа?">
Вы можете настроить утвержденные домены доступа, чтобы участники команды с корпоративными адресами электронной почты могли автоматически присоединяться к вашему рабочему пространству. Перейдите в **Настройки → Участники → Доступ** и добавьте домен вашей компании (например, `yourcompany.com`).
Вы можете настроить утвержденные домены доступа, чтобы участники команды с корпоративными адресами электронной почты могли автоматически присоединяться к вашему рабочему пространству. Перейдите в **Настройки → Участники → Пригласить** и добавьте домен вашей компании (например, `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -21,7 +21,7 @@ Alt alan adınızı düzenleyin veya çalışma alanınız için özel bir alan
## Onaylanmış Alan Adları
**Ayarlar → Üyeler → Erişim** altında yapılandırın.
**Ayarlar → Üyeler → Davet** altında yapılandırın.
Bu alan adlarındaki bir e-posta adresine sahip olan herkes bu çalışma alanına otomatik olarak kaydolabilir.
@@ -77,7 +77,7 @@ Kabul edilmemiş davetleri yönetin:
Ekip üyelerinin e-posta alan adına göre otomatik olarak katılmasına izin verin:
1. **Ayarlar → Üyeler → Erişim** bölümüne gidin
1. **Ayarlar → Üyeler → Davet** bölümüne gidin
2. Şirketinizin alan adını ekleyin (örneğin, `yourcompany.com`)
3. Bu e-posta alan adına sahip olan herkes davet olmadan katılabilir
@@ -146,7 +146,7 @@ Alt alan adı kurmak hızlıdır; özel alan adı ise ekibiniz için tam markal
</Accordion>
<Accordion title="Onaylı erişim alan adları nasıl çalışır?">
Şirket e-posta adreslerine sahip ekip üyelerinin çalışma alanınıza otomatik olarak katılabilmeleri için onaylı erişim alan adlarını yapılandırabilirsiniz. **Ayarlar → Üyeler → Erişim**'e gidin ve şirket alan adınızı ekleyin (ör. `yourcompany.com`).
Şirket e-posta adreslerine sahip ekip üyelerinin çalışma alanınıza otomatik olarak katılabilmeleri için onaylı erişim alan adlarını yapılandırabilirsiniz. **Ayarlar → Üyeler → Davet**'e gidin ve şirket alan adınızı ekleyin (ör. `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -21,7 +21,7 @@ For custom domains, you'll need to configure DNS settings with your domain provi
## 批准的域名
在 **设置 → 成员 → 访问权限** 下进行配置。
在 **设置 → 成员 → 邀请** 下进行配置。
Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
@@ -77,7 +77,7 @@ description: 邀请团队成员并管理工作区访问权限。
根据其电子邮件域允许团队成员自动加入:
1. 转到 **设置 → 成员 → 访问权限**
1. 转到 **设置 → 成员 → 邀请**
2. 添加您公司的域名(例如,`yourcompany.com`
3. 使用该电子邮件域的任何人都可无需邀请加入。
@@ -146,7 +146,7 @@ description: 关于 Twenty 设置的常见问题。
</Accordion>
<Accordion title="批准的访问域名如何工作?">
您可以配置批准的访问域名,使拥有公司电子邮件地址的团队成员能够自动加入您的工作空间。 转到 **设置 → 成员 → 访问权限** 并添加您的公司域名(例如,`yourcompany.com`)。
您可以配置批准的访问域名,使拥有公司电子邮件地址的团队成员能够自动加入您的工作空间。 转到 **设置 → 成员 → 邀请** 并添加您的公司域名(例如,`yourcompany.com`)。
</Accordion>
</AccordionGroup>
@@ -20,7 +20,7 @@ For custom domains, you'll need to configure DNS settings with your domain provi
## Approved Domains
Configure under **Settings → Members → Access**.
Configure under **Settings → Members → Invite**.
Anyone with an email address at these domains is allowed to sign up for this workspace automatically.
@@ -67,7 +67,7 @@ Manage invitations that haven't been accepted:
Allow team members to join automatically based on their email domain:
1. Go to **Settings → Members → Access**
1. Go to **Settings → Members → Invite**
2. Add your company domain (e.g., `yourcompany.com`)
3. Anyone with that email domain can join without an invitation
@@ -146,7 +146,7 @@ A subdomain is quick to set up, while a custom domain provides a fully branded e
</Accordion>
<Accordion title="How do approved access domains work?">
You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Members → Access** and add your company domain (e.g., `yourcompany.com`).
You can configure approved access domains so team members with company email addresses can automatically join your workspace. Go to **Settings → Members → Invite** and add your company domain (e.g., `yourcompany.com`).
</Accordion>
</AccordionGroup>
@@ -1,12 +1,14 @@
import { Locator, Page } from '@playwright/test';
export class MembersSection {
private readonly inviteTab: Locator;
private readonly inviteMembersField: Locator;
private readonly inviteMembersButton: Locator;
private readonly inviteLinkButton: Locator;
constructor(public readonly page: Page) {
this.page = page;
this.inviteTab = page.getByTestId('tab-invite');
this.inviteMembersField = page.getByPlaceholder(
'[email protected], jony.ive@apple',
);
@@ -14,11 +16,17 @@ export class MembersSection {
this.inviteLinkButton = page.getByRole('button', { name: 'Copy link' });
}
async goToInviteTab() {
await this.inviteTab.click();
}
async copyInviteLink() {
await this.goToInviteTab();
await this.inviteLinkButton.click();
}
async sendInviteEmail(email: string) {
await this.goToInviteTab();
await this.inviteMembersField.click();
await this.inviteMembersField.fill(email);
await this.inviteMembersButton.click();
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Enigeen met 'n e-posadres by hierdie domeine mag vir hierdie werkruimte inskryf."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Goedgekeurde toegangsdomein bevestig"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Goedgekeurde Domeine"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Verstekpalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Verstekrol"
@@ -5880,7 +5879,7 @@ msgstr "anders indien"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Fout met die verwydering van die app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Fout met die verwydering van uitnodiging"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Fout met die hergenerering van API-sleutel."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Fout met die herstuur van uitnodiging"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Vervaldatum"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Vervaldatum bereik"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Vervaldatum"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Verval oor"
@@ -8661,17 +8660,18 @@ msgstr ""
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Nooi uit"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Nooi per e-pos"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Nooi per skakel"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Stuur 'n uitnodiging e-pos na jou span"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Deel"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Deel hierdie skakel om gebruikers uit te nooi om by jou werkruimte aan te sluit"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "يمكن لأي شخص لديه عنوان بريد إلكتروني في هذه النطاقات التسجيل في مساحة العمل هذه."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "تم التحقق من نطاق الوصول الموافق عليه"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "النطاقات المعتمدة"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "لوحة الألوان الافتراضية"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "الدور الافتراضي"
@@ -5880,7 +5879,7 @@ msgstr "وإلا إذا"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "خطأ في حذف التطبيق"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "خطأ في حذف الدعوة"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "خطأ في إعادة توليد مفتاح الواجهة البرمجية."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "خطأ في إعادة إرسال الدعوة"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "تاريخ الانتهاء"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "منتهي الصلاحية"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "تنتهي الصلاحية"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "ينتهي خلال"
@@ -8661,17 +8660,18 @@ msgstr "الدعوات"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "دعوة"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "دعوة عبر البريد الإلكتروني"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "دعوة عبر رابط"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "دور"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "\\\\"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "شارك"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "شارك هذا الرابط لدعوة المستخدمين للانضمام إلى مساحة العمل الخاصة بك"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Qualsevol persona amb una adreça de correu en aquests dominis pot registrar-se en aquest espai de treball."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Domini d'accés aprovat validat"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Dominis Aprovats"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Paleta predeterminada"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Rol predeterminat"
@@ -5880,7 +5879,7 @@ msgstr "altrament, si"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Error en suprimir l'aplicació"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Error en eliminar la invitació"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Error en regenerar la clau d'API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Error en reenviar la invitació"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data de caducitat"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Caducat"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Caduca"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Caduca en"
@@ -8661,17 +8660,18 @@ msgstr "Invitacions"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Convida"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Convidar per correu electrònic"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Convidar amb enllaç"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Envia un correu d'invitació al teu equip"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Compartir"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Compartiu aquest enllaç per convidar usuaris a unir-se al vostre espai de treball"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Kdokoli s e-mailovou adresou na těchto doménách se může přihlásit do tohoto pracovního prostoru."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Schválená přístupová doména ověřena"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Schválené domény"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Výchozí paleta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Výchozí role"
@@ -5880,7 +5879,7 @@ msgstr "jinak pokud"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Chyba při odstraňování aplikace"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Chyba při mazání pozvánky"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Chyba při obnovování klíče API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Chyba při opětovném odeslání pozvánky"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Datum vypršení platnosti"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Vypršela platnost"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Vyprší"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Vyprší za"
@@ -8661,17 +8660,18 @@ msgstr "Pozvánky"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Pozvat"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Pozvat e-mailem"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Pozvat odkazem"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "role"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Pošlete pozvánku e-mailem vašemu týmu"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Sdílet"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Sdílením tohoto odkazu pozvete uživatele do vašeho pracovního prostoru"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Enhver med en e-mailadresse på disse domæner har tilladelse til at tilmelde sig dette arbejdsområde."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Godkendt adgangsdomæne valideret"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Godkendte domæner"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Standardfarvepalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Standardrolle"
@@ -5880,7 +5879,7 @@ msgstr "ellers hvis"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Fejl ved sletning af app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Fejl ved sletning af invitation"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Fejl ved regenerering af API-nøgle."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Fejl ved gensendelse af invitation"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Udløbsdato"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Udløbet"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Udløber"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Udløber om"
@@ -8661,17 +8660,18 @@ msgstr "Invitationer"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Inviter"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Invitér via e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Invitér via link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Send en invitationsemail til dit team"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Del"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Del dette link for at invitere brugere til at deltage i dit arbejdsområde"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Jeder mit einer E-Mail-Adresse in diesen Domänen darf sich für diesen Arbeitsbereich anmelden."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Genehmigte Zugriffsdomäne validiert"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Genehmigte Domänen"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Standardpalette"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Standardrolle"
@@ -5880,7 +5879,7 @@ msgstr "sonst wenn"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Fehler beim Löschen der App"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Fehler beim Löschen der Einladung"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Fehler beim Regenerieren des API-Schlüssels."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Fehler beim erneuten Senden der Einladung"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Ablaufdatum"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Abgelaufen"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Läuft ab"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Läuft ab in"
@@ -8661,17 +8660,18 @@ msgstr "Einladungen"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Einladen"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Per E-Mail einladen"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Per Link einladen"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Einladung per E-Mail an Ihr Team senden"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Teilen"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Teilen Sie diesen Link, um Benutzer in Ihren Arbeitsbereich einzuladen"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Οποιοσδήποτε με διεύθυνση email σε αυτούς τους τομείς επιτρέπεται να εγγραφεί για αυτό το χώρο εργασίας."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Επικυρώθηκε το εγκεκριμένο domain πρόσβασης"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Εγκεκριμένοι Τομείς"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Προεπιλεγμένη παλέτα"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Προεπιλεγμένος Ρόλος"
@@ -5880,7 +5879,7 @@ msgstr "αλλιώς εάν"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Σφάλμα κατά τη διαγραφή της εφαρμογής"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Σφάλμα κατά τη διαγραφή της πρόσκλησης"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Σφάλμα κατά την επαναδημιουργία κλειδιού api."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Σφάλμα κατά την επαναποστολή της πρόσκλησης"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Ημερομηνία λήξης"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Έληξε"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Λήγει"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Λήγει σε"
@@ -8661,17 +8660,18 @@ msgstr "Προσκλήσεις"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Πρόσκληση"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Πρόσκληση μέσω email"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Πρόσκληση μέσω συνδέσμου"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "ρόλος"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Στείλτε ένα email πρόσκλησης στην ομάδα σας"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Κοινοποίηση"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Μοιραστείτε αυτόν τον σύνδεσμο για να προσκαλέσετε χρήστες να συμμετάσχουν στον χώρο εργασίας σας"
+14 -14
View File
@@ -794,7 +794,6 @@ msgid "About your app"
msgstr "About your app"
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr "Access"
@@ -1982,7 +1981,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr "Anyone in this workspace can use this credential."
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Anyone with an email address at these domains is allowed to sign up for this workspace."
@@ -2207,7 +2206,7 @@ msgid "Approved access domain validated"
msgstr "Approved access domain validated"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Approved Domains"
@@ -4997,7 +4996,7 @@ msgid "Default palette"
msgstr "Default palette"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Default role"
@@ -5875,7 +5874,7 @@ msgstr "else if"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6442,7 +6441,7 @@ msgid "Error deleting app"
msgstr "Error deleting app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Error deleting invitation"
@@ -6507,7 +6506,7 @@ msgid "Error regenerating api key."
msgstr "Error regenerating api key."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Error resending invitation"
@@ -6823,7 +6822,7 @@ msgid "Expiration Date"
msgstr "Expiration Date"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expired"
@@ -6834,7 +6833,7 @@ msgid "Expires"
msgstr "Expires"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expires in"
@@ -8679,17 +8678,18 @@ msgstr "Invitations"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Invite"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Invite by email"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Invite by link"
@@ -13124,7 +13124,7 @@ msgid "role"
msgstr "role"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13920,7 +13920,7 @@ msgid "Send"
msgstr "Send"
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Send an invite email to your team"
@@ -14127,7 +14127,7 @@ msgid "Share"
msgstr "Share"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Share this link to invite users to join your workspace"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Cualquiera con una dirección de correo electrónico en estos dominios puede registrarse en este espacio de trabajo."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Dominio de acceso aprobado validado"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Dominios Aprobados"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Paleta predeterminada"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Rol predeterminado"
@@ -5880,7 +5879,7 @@ msgstr "en caso contrario, si"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Error al eliminar la aplicación"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Error al eliminar la invitación"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Error al regenerar la clave API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Error al reenviar la invitación"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Fecha de caducidad"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expirado"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Expira"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expira en"
@@ -8661,17 +8660,18 @@ msgstr "Invitaciones"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Invitar"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Invitar por correo electrónico"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Invitar por enlace"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Enviar una invitación por correo electrónico a tu equipo"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Compartir"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Comparte este enlace para invitar a los usuarios a unirse a tu espacio de trabajo"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Kuka tahansa, jolla on sähköpostiosoite näissä tunnusalueissa, saa rekisteröityä tähän työtilaan."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Hyväksytyt pääsyoikeudet valittu"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Hyväksytyt verkkotunnukset"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Oletuspaletti"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Oletusrooli"
@@ -5880,7 +5879,7 @@ msgstr "muuten jos"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Virhe sovellusta poistettaessa"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Virhe kutsun poistamisessa"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Virhe API-avaimen uudelleengeneroinnissa."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Virhe kutsun uudelleenkäynnistämisessä"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Vanhenemispäivä"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Vanhentunut"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Vanhentuu"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Vanhenee"
@@ -8661,17 +8660,18 @@ msgstr "Kutsut"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Kutsu"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Kutsu sähköpostitse"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Kutsu linkillä"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rooli"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Lähetä kutsusähköposti tiimillesi"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Jaa"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Jaa tätä linkkiä kutsuaksesi käyttäjiä liittymään työtilaasi"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Toute personne avec une adresse email dans ces domaines est autorisée à s'inscrire à cet espace de travail."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Domaine d'accès approuvé validé"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Domaines approuvés"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Palette par défaut"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Rôle par défaut"
@@ -5880,7 +5879,7 @@ msgstr "sinon si"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr ""
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Erreur lors de la suppression de l'invitation"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Erreur lors de la régénération de la clé API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Erreur lors de l'envoi de l'invitation"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Date d'expiration"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expiré"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Expire"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expire dans"
@@ -8661,17 +8660,18 @@ msgstr "Invitations"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Inviter"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Inviter par email"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Inviter par lien"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rôle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Envoyer un email d'invitation à votre équipe"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Partager"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Partagez ce lien pour inviter des utilisateurs à rejoindre votre espace de travail"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "כל אחד עם כתובת דוא\"ל בדומיינים הללו רשאי להרשם למרחב עבודה זה."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "הדומיין המאושר גישה אומת"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "דומיינים מאושרים"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "פלטת ברירת המחדל"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "תפקיד ברירת מחדל"
@@ -5880,7 +5879,7 @@ msgstr "אחרת אם"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "שגיאה במחיקת האפליקציה"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "שגיאה במחיקת הזמנה"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "שגיאה ביצירת מפתח ה-API מחדש."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "שגיאה בשליחת הזמנה מחדש"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "תאריך תפוגה"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "פג תוקף"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "תפוג תוקף"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "פג תוקף בעוד"
@@ -8661,17 +8660,18 @@ msgstr "הזמנות"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "הזמן"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "הזמנה באמצעות דוא\"ל"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "הזמנה דרך קישור"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "תפקיד"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "\\"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "שתף"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "\\"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Bárki, akinek van email címe ezekről a tartományokról, csatlakozhat ehhez a munkaterülethez."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Jóváhagyott hozzáférési tartomány megerősítve"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Jóváhagyott tartományok"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Alapértelmezett paletta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Alapértelmezett szerep"
@@ -5880,7 +5879,7 @@ msgstr "különben ha"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Hiba az alkalmazás törlése során"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Hiba a meghívás törlése közben"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Hiba az api kulcs újragenerálása során."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Hiba a meghívás újraküldése közben"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Lejárati dátum"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Lejárt"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Lejár"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Lejárat ideje"
@@ -8661,17 +8660,18 @@ msgstr "Meghívók"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Meghívás"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Meghívás emailben"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Meghívás linken keresztül"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "szerepkör"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Invitáló e-mail küldése a csapatnak"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Megosztás"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Ossza meg ezt a hivatkozást, hogy meghívja a felhasználókat a munkaterületére"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Chiunque abbia un indirizzo email presso questi domini è autorizzato a registrarsi per questo spazio di lavoro."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Dominio di accesso approvato convalidato"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Domini approvati"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Tavolozza predefinita"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Ruolo predefinito"
@@ -5880,7 +5879,7 @@ msgstr "altrimenti se"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Errore durante l'eliminazione dell'app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Errore nell'eliminazione dell'invito"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Errore nella rigenerazione della chiave API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Errore nel reinvio dell'invito"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data di scadenza"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Scaduto"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Scade"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Scade tra"
@@ -8661,17 +8660,18 @@ msgstr "Inviti"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Invita"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Invita via e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Invita tramite link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "ruolo"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Invia un'email di invito al tuo team"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Condividi"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Condividi questo link per invitare gli utenti a unirsi al tuo workspace"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "これらのドメインのメールアドレスを持つ人はこのワークスペースにサインアップできます。"
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "承認されたアクセスドメインが検証されました"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "承認されたドメイン"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "デフォルトのパレット"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "デフォルト役割"
@@ -5880,7 +5879,7 @@ msgstr "追加条件"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "アプリの削除中にエラーが発生しました"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "招待の削除エラー"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "APIキーの再生成エラー。"
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "招待の再送エラー"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "有効期限"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "期限切れ"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "期限切れ"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "有効期限"
@@ -8661,17 +8660,18 @@ msgstr "招待状"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "招待"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "メールで招待"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "リンクで招待"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "役割"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "チームに招待メールを送信"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "共有"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "このリンクを共有して、ユーザーをワークスペースに招待"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "이 도메인의 이메일 주소를 가진 사람은 이 작업 공간에 가입할 수 있습니다."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "승인된 액세스 도메인이 검증되었습니다"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "승인된 도메인"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "기본 팔레트"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "기본 역할"
@@ -5880,7 +5879,7 @@ msgstr "그 외의 조건"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "앱 삭제 오류"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "초대 삭제 오류"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "API 키 재생성 오류."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "초대 재발송 오류"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "만료일"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "만료됨"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "만료"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "만료까지 남은 시간"
@@ -8661,17 +8660,18 @@ msgstr "초대"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "초대"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "이메일로 초대"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "링크로 초대"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "역할"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "팀에 초대 이메일 보내기"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "공유"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "이 링크를 공유하여 사용자를 워크스페이스에 초대하세요"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Iedereen met een e-mailadres bij deze domeinen mag zich aanmelden voor deze werkruimte."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Goedgekeurd toegangsdomein gevalideerd"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Goedgekeurde Domeinen"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Standaardpalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Standaardrol"
@@ -5880,7 +5879,7 @@ msgstr "anders als"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Fout bij het verwijderen van de app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Fout bij verwijderen van uitnodiging"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Fout bij het opnieuw genereren van de API-sleutel."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Fout bij opnieuw verzenden van uitnodiging"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Vervaldatum"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Verlopen"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Verloopt"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Verloopt over"
@@ -8661,17 +8660,18 @@ msgstr "Uitnodigingen"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Uitnodigen"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Uitnodigen per e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Linkuitnodiging per e-mail"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Stuur een uitnodigingsmail naar je team"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Delen"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Deel deze link om gebruikers uit te nodigen voor uw werkruimte"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Enhver med en e-postadresse på disse domenene kan registrere seg for dette arbeidsområdet."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Godkjent tilgangsdomene validert"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Godkjente domener"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Standardpalett"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Standardrolle"
@@ -5880,7 +5879,7 @@ msgstr "ellers hvis"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Feil ved sletting av app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Feil ved sletting av invitasjon"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Feil ved regenerering av API-nøkkel."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Feil ved sending av invitasjon på nytt"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Utløpsdato"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Utløpt"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Utløper"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Utløper om"
@@ -8661,17 +8660,18 @@ msgstr "Invitasjoner"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Inviter"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Inviter via e-post"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Inviter via lenke"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Send en invitasjonse-post til teamet ditt"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Del"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Del denne lenken for å invitere brukere til å bli med i arbeidsområdet ditt"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Każda osoba z adresem e-mail w tych domenach może się zarejestrować do tego miejsca pracy."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Zatwierdzona domena dostępu została zweryfikowana"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Zatwierdzone domeny"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Domyślna paleta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Domyślna rola"
@@ -5880,7 +5879,7 @@ msgstr "w przeciwnym razie jeśli"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Błąd podczas usuwania aplikacji"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Błąd podczas usuwania zaproszenia"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Błąd podczas regenerowania klucza API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Błąd podczas wysyłania ponownego zaproszenia"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data wygaśnięcia"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Wygasło"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Wygasa"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Wygasa za"
@@ -8661,17 +8660,18 @@ msgstr "Zaproszenia"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Zaproś"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Zaproś przez e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Zaproś przez link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rola"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Wyślij e-mail z zaproszeniem do swojego zespołu"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Udostępnij"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Udostępnij ten link, aby zaprosić użytkowników do dołączenia do Twojej przestrzeni roboczej"
+14 -14
View File
@@ -794,7 +794,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1982,7 +1981,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr ""
@@ -2207,7 +2206,7 @@ msgid "Approved access domain validated"
msgstr ""
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr ""
@@ -4997,7 +4996,7 @@ msgid "Default palette"
msgstr ""
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
@@ -5875,7 +5874,7 @@ msgstr ""
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6442,7 +6441,7 @@ msgid "Error deleting app"
msgstr ""
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr ""
@@ -6507,7 +6506,7 @@ msgid "Error regenerating api key."
msgstr ""
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr ""
@@ -6823,7 +6822,7 @@ msgid "Expiration Date"
msgstr ""
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr ""
@@ -6834,7 +6833,7 @@ msgid "Expires"
msgstr ""
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr ""
@@ -8656,17 +8655,18 @@ msgstr ""
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr ""
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr ""
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr ""
@@ -13101,7 +13101,7 @@ msgid "role"
msgstr ""
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13897,7 +13897,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr ""
@@ -14104,7 +14104,7 @@ msgid "Share"
msgstr ""
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr ""
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Qualquer pessoa com um endereço de email nesses domínios está autorizada a se inscrever neste espaço de trabalho."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Domínio de acesso aprovado validado"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Domínios Aprovados"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Paleta Padrão"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Função padrão"
@@ -5880,7 +5879,7 @@ msgstr "senão se"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Erro ao excluir aplicativo"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Erro ao excluir convite"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Erro ao regenerar chave da API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Erro ao reenviar convite"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data de Expiração"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expirado"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Expira"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expira em"
@@ -8661,17 +8660,18 @@ msgstr "Convites"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Convidar"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Convidar por e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Convidar por link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "função"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Envie um e-mail de convite para sua equipe"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Compartilhar"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Compartilhe este link para convidar usuários a participar do seu workspace"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Qualquer pessoa com um endereço de email nesses domínios pode inscrever-se neste espaço de trabalho."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Domínio de acesso aprovado validado"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Domínios Aprovados"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Paleta padrão"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Função padrão"
@@ -5880,7 +5879,7 @@ msgstr "senão se"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Erro ao eliminar a aplicação"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Erro ao excluir convite"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Erro ao regenerar a chave API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Erro ao reenviar convite"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data de Expiração"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expirado"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Expira"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expira em"
@@ -8661,17 +8660,18 @@ msgstr "Convites"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Convidar"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Convidar por e-mail"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Convidar por link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "função"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Enviar um convite por e-mail à sua equipa"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Compartilhar"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Partilhe este link para convidar utilizadores a juntarem-se ao seu espaço de trabalho"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Oricine are o adresă de email la aceste domenii este permis să se înscrie pentru acest spațiu de lucru."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Domeniu de acces aprobat validat"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Domenii Aprobate"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Paletă implicită"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Rol implicit"
@@ -5880,7 +5879,7 @@ msgstr "altfel dacă"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Eroare la ștergerea aplicației"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Eroare la ștergerea invitației"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Eroare la regenerarea cheii API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Eroare la retrimiterea invitației"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Data expirării"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Expirat"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Expiră"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Expiră în"
@@ -8661,17 +8660,18 @@ msgstr "Invitații"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Invită"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Invită prin email"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Invită printr-un link"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Trimite un email de invitație echipei tale"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Distribuie"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Distribuiți acest link pentru a invita utilizatori să se alăture spațiului dumneavoastră de lucru"
Binary file not shown.
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Свако са имејл адресом на овим доменима може се пријавити за овај радни простор."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Потврђен одобрен приступни домен"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Одобрени домени"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Подразумевана палета"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Подразумевана улога"
@@ -5880,7 +5879,7 @@ msgstr "иначе ако"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Грешка приликом брисања апликације"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Грешка приликом брисања позивнице"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Грешка приликом поновног генерисања API кључа."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Грешка у поновном слању позивнице"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Датум истека"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Истекло"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Истиче"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Истиче за"
@@ -8661,17 +8660,18 @@ msgstr "Позивнице"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Позови"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Позив преко имејла"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Позив преко линка"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "улога"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Пошаљите имејл позивницу вашем тиму"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Дели"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Поделите овај линк да бисте позвали кориснике у свој радни простор"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Alla med en e-postadress på dessa domäner har tillåtelse att registrera sig för denna arbetsyta."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Godkänd åtkomstdomän validerad"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Godkända domäner"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Standardpalett"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Standardroll"
@@ -5880,7 +5879,7 @@ msgstr "annars om"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Fel vid radering av app"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Fel vid radering av inbjudan"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Fel vid regenerering av api-nyckel."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Fel vid omförsök av inbjudan"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Utgångsdatum"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Utgången"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Utgår"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Löper ut om"
@@ -8661,17 +8660,18 @@ msgstr "Inbjudningar"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Bjud in"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Bjud in via e-post"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Bjud in via länk"
@@ -13108,7 +13108,7 @@ msgid "role"
msgstr "roll"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13906,7 +13906,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Skicka en inbjudnings-e-post till ditt team"
@@ -14113,7 +14113,7 @@ msgid "Share"
msgstr "Dela"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Dela denna länk för att bjuda in användare till din arbetsyta"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Bu alan adlarındaki bir e-posta adresine sahip olan herkes bu çalışma alanı için kayıt olabilir."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Onaylı erişim alanı doğrulandı"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Onaylanmış Alan Adları"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Varsayılan palet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Varsayılan Rol"
@@ -5880,7 +5879,7 @@ msgstr "aksi halde eğer"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Uygulama silinirken hata oluştu"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Davet silinirken hata"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Api anahtarını yeniden oluştururken hata."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Davet yeniden gönderilirken hata"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Son Kullanma Tarihi"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Süresi dolmuş"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Süresi Dolmuş"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Bitiş süresi"
@@ -8661,17 +8660,18 @@ msgstr "Davetiye"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Davet et"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "E-posta ile davet et"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Link ile davet et"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Takımınıza davet e-postası gönderin"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Paylaş"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Bu linki paylaşarak kullanıcıları iş alanınıza katılmaya davet edin"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Будь-хто з електронною адресою в цих доменах може зареєструватися для цього робочого простору."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Затверджений домен доступу підтверджено"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Затверджені домени"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr ""
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Роль за замовчуванням"
@@ -5880,7 +5879,7 @@ msgstr "інакше якщо"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Помилка видалення додатка"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Помилка видалення запрошення"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Помилка регенерації API-ключа."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Помилка повторного надсилання запрошення"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "Дата закінчення терміну дії"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Термін дії закінчився"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Закінчується"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "Закінчується через"
@@ -8661,17 +8660,18 @@ msgstr "Запрошення"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Запросити"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Запросити по електронній пошті"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Запросити за посиланням"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "роль"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Надішліть запрошення на електронну адресу вашої команди"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Поділитися"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Поділіться цим посиланням, щоб запросити користувачів приєднатися до вашого робочого простору"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "Bất kỳ ai có địa chỉ email tại các miền này đều được phép đăng ký không gian làm việc này."
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "Tên miền truy cập đã được phê duyệt"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "Miền Đã Được Phê Duyệt"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "Bảng màu mặc định"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Vai trò Mặc định"
@@ -5880,7 +5879,7 @@ msgstr "nếu không thì nếu"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "Lỗi khi xóa ứng dụng"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "Lỗi khi xóa lời mời"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "Lỗi khi tái tạo khóa API."
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "Lỗi khi gửi lại lời mời"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "\"Ngày hết hạn\""
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "Đã hết hạn"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "Ngày hết hạn"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "\"Hết hạn trong\""
@@ -8661,17 +8660,18 @@ msgstr "Thư mời"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "Mời"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "Mời qua email"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "Mời qua đường dẫn"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "vai trò"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "Gửi email mời đến đội của bạn"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "Chia sẻ"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "Chia sẻ liên kết này để mời người dùng tham gia không gian làm việc của bạn"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "拥有这些域中的电子邮件地址的任何人都可以注册此工作空间。"
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "批准的访问域已验证"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "批准的域名"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "默认调色板"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "默认角色"
@@ -5880,7 +5879,7 @@ msgstr "否则如果"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "删除应用时出错"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "删除邀请时出错"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "重新生成 API 密钥时出错。"
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "重新发送邀请时出错"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "到期日期"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "已过期"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "过期"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "到期时间"
@@ -8661,17 +8660,18 @@ msgstr "邀请函"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "邀请"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "通过电子邮件邀请"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "通过链接邀请"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "角色"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "向您的团队发送邀请电子邮件"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "分享"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "分享此链接以邀请用户加入您的工作区"
+14 -14
View File
@@ -799,7 +799,6 @@ msgid "About your app"
msgstr ""
#. js-lingui-id: LuXP9q
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx
msgid "Access"
msgstr ""
@@ -1987,7 +1986,7 @@ msgid "Anyone in this workspace can use this credential."
msgstr ""
#. js-lingui-id: xJR+Wq
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Anyone with an email address at these domains is allowed to sign up for this workspace."
msgstr "具有這些域電子郵件地址的任何人都可以註冊此工作區。"
@@ -2212,7 +2211,7 @@ msgid "Approved access domain validated"
msgstr "已驗證核准訪問域名"
#. js-lingui-id: 9tggYj
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Approved Domains"
msgstr "已批准的網域"
@@ -5002,7 +5001,7 @@ msgid "Default palette"
msgstr "預設調色盤"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "預設角色"
@@ -5880,7 +5879,7 @@ msgstr "否則如果"
#. js-lingui-id: O3oNi5
#: src/pages/settings/SettingsProfile.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/admin-panel/SettingsAdminWorkspaceDetail.tsx
#: src/pages/settings/admin-panel/SettingsAdminUserDetail.tsx
#: src/pages/auth/PasswordReset.tsx
@@ -6447,7 +6446,7 @@ msgid "Error deleting app"
msgstr "刪除應用程式時出錯"
#. js-lingui-id: QnVLjD
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error deleting invitation"
msgstr "刪除邀請時出錯"
@@ -6512,7 +6511,7 @@ msgid "Error regenerating api key."
msgstr "重新生成 API 密鑰時出錯:"
#. js-lingui-id: clfpgU
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Error resending invitation"
msgstr "重新發送邀請時出錯"
@@ -6828,7 +6827,7 @@ msgid "Expiration Date"
msgstr "到期日期"
#. js-lingui-id: M1RnFv
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/modules/settings/developers/utils/formatExpiration.ts
msgid "Expired"
msgstr "已過期"
@@ -6839,7 +6838,7 @@ msgid "Expires"
msgstr "過期"
#. js-lingui-id: i9qiyR
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Expires in"
msgstr "到期時間"
@@ -8661,17 +8660,18 @@ msgstr "邀請函"
#. js-lingui-id: MFKlMB
#: src/utils/title-utils.ts
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Invite"
msgstr "邀請"
#. js-lingui-id: 0M8+El
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by email"
msgstr "通過電子郵件邀請"
#. js-lingui-id: PWIq/W
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Invite by link"
msgstr "通過鏈接邀請"
@@ -13106,7 +13106,7 @@ msgid "role"
msgstr "角色"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -13902,7 +13902,7 @@ msgid "Send"
msgstr ""
#. js-lingui-id: mjK8F3
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Send an invite email to your team"
msgstr "向您的團隊發送邀請電子郵件"
@@ -14109,7 +14109,7 @@ msgid "Share"
msgstr "分享"
#. js-lingui-id: Vy9kmk
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab.tsx
#: src/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab.tsx
msgid "Share this link to invite users to join your workspace"
msgstr "分享此鏈接以邀請用戶加入您的工作區"
@@ -1,13 +1,20 @@
import { AiChatBanner } from '@/ai/components/AiChatBanner';
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
import { getDocumentationUrl } from '@/support/utils/getDocumentationUrl';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { t } from '@lingui/core/macro';
import { DOCUMENTATION_PATHS } from 'twenty-shared/constants';
import { IconExternalLink } from 'twenty-ui/display';
const DOCS_URL =
'https://twenty.com/developers/section/self-hosting/self-hosting-var#ai-features';
export const AiChatApiKeyNotConfiguredMessage = () => {
const currentWorkspaceMember = useAtomStateValue(currentWorkspaceMemberState);
const handleDocsClick = () => {
window.open(DOCS_URL, '_blank', 'noopener,noreferrer');
const docsUrl = getDocumentationUrl({
locale: currentWorkspaceMember?.locale,
path: DOCUMENTATION_PATHS.DEVELOPERS_SELF_HOST_CAPABILITIES_SETUP,
});
window.open(docsUrl, '_blank', 'noopener,noreferrer');
};
return (
@@ -8,10 +8,8 @@ import { workflowVisualizerWorkflowIdComponentState } from '@/workflow/states/wo
import { type WorkflowCodeAction } from '@/workflow/types/Workflow';
import { setNestedValue } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/setNestedValue';
import { WorkflowStepCmdEnterButton } from '@/workflow/workflow-steps/components/WorkflowStepCmdEnterButton';
import { LogicFunctionExecutionResult } from '@/logic-functions/components/LogicFunctionExecutionResult';
import { LogicFunctionLogs } from '@/logic-functions/components/LogicFunctionLogs';
import { mergeDefaultFunctionInputAndFunctionInput } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/mergeDefaultFunctionInputAndFunctionInput';
import { InputLabel } from '@/ui/input/components/InputLabel';
import { TabList } from '@/ui/layout/tab-list/components/TabList';
import { activeTabIdComponentState } from '@/ui/layout/tab-list/states/activeTabIdComponentState';
@@ -19,15 +17,19 @@ import { useHotkeysOnFocusedElement } from '@/ui/utilities/hotkey/hooks/useHotke
import { useListenClickOutside } from '@/ui/utilities/pointer-event/hooks/useListenClickOutside';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
import { WorkflowStepCmdEnterButton } from '@/workflow/workflow-steps/components/WorkflowStepCmdEnterButton';
import { WorkflowCodeEditor } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowCodeEditor';
import { WorkflowEditActionCodeFields } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionCodeFields';
import { WORKFLOW_LOGIC_FUNCTION_TAB_LIST_COMPONENT_ID } from '@/workflow/workflow-steps/workflow-actions/code-action/constants/WorkflowLogicFunctionTabListComponentId';
import { WorkflowLogicFunctionTabId } from '@/workflow/workflow-steps/workflow-actions/code-action/types/WorkflowLogicFunctionTabId';
import { getWrongExportedFunctionMarkers } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWrongExportedFunctionMarkers';
import { mergeDefaultFunctionInputAndFunctionInput } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/mergeDefaultFunctionInputAndFunctionInput';
import { WorkflowVariablePicker } from '@/workflow/workflow-variables/components/WorkflowVariablePicker';
import { styled } from '@linaria/react';
import { useLingui } from '@lingui/react/macro';
import { LogicFunctionTestInputInitEffect } from '@/logic-functions/components/LogicFunctionTestInputInitEffect';
import { useExecuteLogicFunction } from '@/logic-functions/hooks/useExecuteLogicFunction';
import { WorkflowStepFooter } from '@/workflow/workflow-steps/components/WorkflowStepFooter';
import { CODE_ACTION } from '@/workflow/workflow-steps/workflow-actions/constants/actions/CodeAction';
import { type Monaco } from '@monaco-editor/react';
@@ -35,20 +37,18 @@ import { type editor } from 'monaco-editor';
import { AutoTypings } from 'monaco-editor-auto-typings';
import { useState } from 'react';
import { Key } from 'ts-key-enum';
import { isDefined } from 'twenty-shared/utils';
import {
getOutputSchemaFromValue,
jsonSchemaToInputSchema,
type InputJsonSchema,
} from 'twenty-shared/logic-function';
import { isDefined } from 'twenty-shared/utils';
import { getFunctionInputFromInputSchema } from 'twenty-shared/workflow';
import { IconCode, IconPlayerPlay } from 'twenty-ui/display';
import { CodeEditor } from 'twenty-ui/input';
import { themeCssVariables } from 'twenty-ui/theme-constants';
import { useIsMobile } from 'twenty-ui/utilities';
import { useDebouncedCallback } from 'use-debounce';
import { getFunctionInputFromInputSchema } from 'twenty-shared/workflow';
import { themeCssVariables } from 'twenty-ui/theme-constants';
import { LogicFunctionTestInputInitEffect } from '@/logic-functions/components/LogicFunctionTestInputInitEffect';
import { useExecuteLogicFunction } from '@/logic-functions/hooks/useExecuteLogicFunction';
const StyledCodeEditorContainer = styled.div`
display: flex;
@@ -341,6 +341,7 @@ export const WorkflowEditActionCode = ({
<div data-globally-prevent-click-outside="true">
<WorkflowEditActionCodeFields
functionInput={functionInput}
inputSchema={formValues.workflowActionTriggerSettings?.inputSchema}
VariablePicker={WorkflowVariablePicker}
onInputChange={handleInputChange}
readonly={actionOptions.readonly}
@@ -381,6 +382,9 @@ export const WorkflowEditActionCode = ({
<>
<WorkflowEditActionCodeFields
functionInput={functionInput}
inputSchema={
formValues.workflowActionTriggerSettings?.inputSchema
}
VariablePicker={WorkflowVariablePicker}
onInputChange={handleInputChange}
readonly={actionOptions.readonly}
@@ -406,6 +410,9 @@ export const WorkflowEditActionCode = ({
<>
<WorkflowEditActionCodeFields
functionInput={logicFunctionTestData.input}
inputSchema={
formValues.workflowActionTriggerSettings?.inputSchema
}
onInputChange={handleTestInputChange}
readonly={actionOptions.readonly}
/>
@@ -1,11 +1,18 @@
import { FormBooleanFieldInput } from '@/object-record/record-field/ui/form-types/components/FormBooleanFieldInput';
import { FormNestedFieldInputContainer } from '@/object-record/record-field/ui/form-types/components/FormNestedFieldInputContainer';
import { FormNumberFieldInput } from '@/object-record/record-field/ui/form-types/components/FormNumberFieldInput';
import { FormSelectFieldInput } from '@/object-record/record-field/ui/form-types/components/FormSelectFieldInput';
import { FormTextFieldInput } from '@/object-record/record-field/ui/form-types/components/FormTextFieldInput';
import { type VariablePickerComponent } from '@/object-record/record-field/ui/form-types/types/VariablePickerComponent';
import { InputLabel } from '@/ui/input/components/InputLabel';
import { type FunctionInput } from 'twenty-shared/workflow';
import { getInputSchemaPropertyAtPath } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getInputSchemaPropertyAtPath';
import { getWorkflowCodeFieldsEnumSelectOptions } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWorkflowCodeFieldsEnumSelectOptions';
import { getWorkflowCodeFieldsLeafKind } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWorkflowCodeFieldsLeafKind';
import { styled } from '@linaria/react';
import { t } from '@lingui/core/macro';
import { isObject } from '@sniptt/guards';
import { isNonEmptyArray, isObject } from '@sniptt/guards';
import { isDefined } from 'twenty-shared/utils';
import { type FunctionInput, type InputSchema } from 'twenty-shared/workflow';
import { themeCssVariables } from 'twenty-ui/theme-constants';
const StyledContainer = styled.div<{ fullWidth?: boolean }>`
@@ -26,6 +33,7 @@ type WorkflowEditActionCodeFieldsProps = {
onInputChange?: (value: any, path: string[]) => void | Promise<void>;
VariablePicker?: VariablePickerComponent;
fullWidth?: boolean;
inputSchema?: InputSchema;
};
export const WorkflowEditActionCodeFields = ({
@@ -35,6 +43,7 @@ export const WorkflowEditActionCodeFields = ({
onInputChange,
VariablePicker,
fullWidth,
inputSchema,
}: WorkflowEditActionCodeFieldsProps) => {
return (
<StyledContainer fullWidth={fullWidth}>
@@ -54,12 +63,84 @@ export const WorkflowEditActionCodeFields = ({
onInputChange={onInputChange}
VariablePicker={VariablePicker}
fullWidth={fullWidth}
inputSchema={inputSchema}
/>
</FormNestedFieldInputContainer>
</div>
);
}
const schemaProperty = getInputSchemaPropertyAtPath(
inputSchema,
currentPath,
);
const leafKind = getWorkflowCodeFieldsLeafKind(schemaProperty);
if (leafKind === 'boolean') {
return (
<FormBooleanFieldInput
key={pathKey}
label={inputKey}
defaultValue={
!isDefined(inputValue)
? undefined
: typeof inputValue === 'boolean' ||
typeof inputValue === 'string'
? inputValue
: undefined
}
readonly={readonly}
onChange={(value) => onInputChange?.(value, currentPath)}
VariablePicker={VariablePicker}
/>
);
}
if (leafKind === 'number') {
return (
<FormNumberFieldInput
key={pathKey}
label={inputKey}
defaultValue={
!isDefined(inputValue)
? undefined
: typeof inputValue === 'number' ||
typeof inputValue === 'string'
? inputValue
: undefined
}
readonly={readonly}
onChange={(value) => onInputChange?.(value, currentPath)}
VariablePicker={VariablePicker}
/>
);
}
if (leafKind === 'enum' && isDefined(schemaProperty)) {
const enumOptions =
getWorkflowCodeFieldsEnumSelectOptions(schemaProperty);
if (isNonEmptyArray(enumOptions)) {
return (
<FormSelectFieldInput
key={pathKey}
label={inputKey}
defaultValue={
!isDefined(inputValue)
? undefined
: typeof inputValue === 'string'
? inputValue
: String(inputValue)
}
readonly={readonly}
onChange={(value) => onInputChange?.(value, currentPath)}
VariablePicker={VariablePicker}
options={enumOptions}
/>
);
}
}
return (
<FormTextFieldInput
key={pathKey}
@@ -69,6 +150,7 @@ export const WorkflowEditActionCodeFields = ({
readonly={readonly}
onChange={(value) => onInputChange?.(value, currentPath)}
VariablePicker={VariablePicker}
multiline={schemaProperty?.multiline === true}
/>
);
})}
@@ -1,6 +1,7 @@
import { useGetAvailablePackages } from '@/logic-functions/hooks/useGetAvailablePackages';
import { type WorkflowCodeAction } from '@/workflow/types/Workflow';
import { useGetLogicFunctionSourceCode } from '@/logic-functions/hooks/useGetLogicFunctionSourceCode';
import { useGetOneLogicFunction } from '@/logic-functions/hooks/useGetOneLogicFunction';
import { type WorkflowCodeAction } from '@/workflow/types/Workflow';
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
import { WorkflowEditActionCodeFields } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowEditActionCodeFields';
@@ -29,6 +30,10 @@ export const WorkflowReadonlyActionCode = ({
id: logicFunctionId,
});
const { logicFunction } = useGetOneLogicFunction({
id: logicFunctionId,
});
const { sourceHandlerCode, loading } = useGetLogicFunctionSourceCode({
logicFunctionId,
});
@@ -55,6 +60,9 @@ export const WorkflowReadonlyActionCode = ({
<WorkflowStepBody>
<WorkflowEditActionCodeFields
functionInput={action.settings.input.logicFunctionInput}
inputSchema={
logicFunction?.workflowActionTriggerSettings?.inputSchema
}
readonly
/>
<StyledCodeEditorContainer>
@@ -0,0 +1,56 @@
import { type InputSchema } from 'twenty-shared/workflow';
import { getInputSchemaPropertyAtPath } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getInputSchemaPropertyAtPath';
describe('getInputSchemaPropertyAtPath', () => {
const inputSchema = [
{
type: 'object' as const,
properties: {
slackChannelId: { type: 'string' as const },
messageFormat: {
type: 'string' as const,
enum: ['plain', 'markdown'],
},
count: { type: 'number' as const },
nested: {
type: 'object' as const,
properties: {
inner: { type: 'string' as const },
},
},
},
},
] as InputSchema;
it('should return property at top-level path', () => {
expect(
getInputSchemaPropertyAtPath(inputSchema, ['messageFormat']),
).toEqual({
type: 'string',
enum: ['plain', 'markdown'],
});
});
it('should return property at nested path', () => {
expect(
getInputSchemaPropertyAtPath(inputSchema, ['nested', 'inner']),
).toEqual({
type: 'string',
});
});
it('should return undefined when path is invalid', () => {
expect(
getInputSchemaPropertyAtPath(inputSchema, ['missing']),
).toBeUndefined();
expect(
getInputSchemaPropertyAtPath(inputSchema, ['slackChannelId', 'tooDeep']),
).toBeUndefined();
});
it('should return undefined when inputSchema is missing or empty', () => {
expect(getInputSchemaPropertyAtPath(undefined, ['a'])).toBeUndefined();
expect(getInputSchemaPropertyAtPath([], ['a'])).toBeUndefined();
});
});
@@ -0,0 +1,22 @@
import { getWorkflowCodeFieldsEnumSelectOptions } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWorkflowCodeFieldsEnumSelectOptions';
describe('getWorkflowCodeFieldsEnumSelectOptions', () => {
it('should build select options from schema enum', () => {
expect(
getWorkflowCodeFieldsEnumSelectOptions({
type: 'string',
enum: ['plain', 'markdown'],
}),
).toEqual([
{ value: 'plain', label: 'plain' },
{ value: 'markdown', label: 'markdown' },
]);
});
it('should return empty array when property has no enum', () => {
expect(getWorkflowCodeFieldsEnumSelectOptions({ type: 'string' })).toEqual(
[],
);
expect(getWorkflowCodeFieldsEnumSelectOptions(undefined)).toEqual([]);
});
});
@@ -0,0 +1,36 @@
import { FieldMetadataType } from 'twenty-shared/types';
import { getWorkflowCodeFieldsLeafKind } from '@/workflow/workflow-steps/workflow-actions/code-action/utils/getWorkflowCodeFieldsLeafKind';
describe('getWorkflowCodeFieldsLeafKind', () => {
it('should map schema types to leaf editor kind', () => {
expect(getWorkflowCodeFieldsLeafKind({ type: 'boolean' })).toBe('boolean');
expect(
getWorkflowCodeFieldsLeafKind({ type: FieldMetadataType.BOOLEAN }),
).toBe('boolean');
expect(getWorkflowCodeFieldsLeafKind({ type: 'number' })).toBe('number');
expect(
getWorkflowCodeFieldsLeafKind({ type: FieldMetadataType.NUMBER }),
).toBe('number');
expect(
getWorkflowCodeFieldsLeafKind({ type: FieldMetadataType.NUMERIC }),
).toBe('number');
expect(getWorkflowCodeFieldsLeafKind({ type: 'string' })).toBe('text');
expect(
getWorkflowCodeFieldsLeafKind({
type: 'string',
enum: ['plain', 'markdown'],
}),
).toBe('enum');
expect(
getWorkflowCodeFieldsLeafKind({
type: FieldMetadataType.TEXT,
enum: ['a', 'b'],
}),
).toBe('enum');
expect(getWorkflowCodeFieldsLeafKind({ type: 'string', enum: [] })).toBe(
'text',
);
expect(getWorkflowCodeFieldsLeafKind(undefined)).toBe('text');
});
});
@@ -0,0 +1,30 @@
import {
type InputSchema,
type InputSchemaProperty,
} from 'twenty-shared/workflow';
import { isDefined } from 'twenty-shared/utils';
export const getInputSchemaPropertyAtPath = (
inputSchema: InputSchema | undefined,
path: string[],
): InputSchemaProperty | undefined => {
if (!isDefined(inputSchema) || inputSchema.length === 0) {
return undefined;
}
let current: InputSchemaProperty | undefined = inputSchema[0];
for (const segment of path) {
if (!isDefined(current)) {
return undefined;
}
if (current.type === 'object' && isDefined(current.properties?.[segment])) {
current = current.properties[segment];
} else {
return undefined;
}
}
return current;
};
@@ -0,0 +1,17 @@
import { isNonEmptyArray } from '@sniptt/guards';
import { isDefined } from 'twenty-shared/utils';
import { type InputSchemaProperty } from 'twenty-shared/workflow';
import { type SelectOption } from 'twenty-ui/input';
export const getWorkflowCodeFieldsEnumSelectOptions = (
property: InputSchemaProperty | undefined,
): SelectOption[] => {
if (!isDefined(property) || !isNonEmptyArray(property.enum)) {
return [];
}
return property.enum.map((value) => ({
value,
label: value,
}));
};
@@ -0,0 +1,33 @@
import { isNonEmptyArray } from '@sniptt/guards';
import { FieldMetadataType } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { type InputSchemaProperty } from 'twenty-shared/workflow';
type WorkflowCodeFieldsLeafKind = 'boolean' | 'enum' | 'number' | 'text';
export const getWorkflowCodeFieldsLeafKind = (
property: InputSchemaProperty | undefined,
): WorkflowCodeFieldsLeafKind => {
if (!isDefined(property)) {
return 'text';
}
if (
(property.type === 'string' || property.type === FieldMetadataType.TEXT) &&
isNonEmptyArray(property.enum)
) {
return 'enum';
}
switch (property.type) {
case 'boolean':
case FieldMetadataType.BOOLEAN:
return 'boolean';
case 'number':
case FieldMetadataType.NUMBER:
case FieldMetadataType.NUMERIC:
return 'number';
default:
return 'text';
}
};
@@ -213,6 +213,9 @@ export const WorkflowEditActionLogicFunction = ({
<>
<WorkflowEditActionCodeFields
functionInput={testInput}
inputSchema={
logicFunction?.workflowActionTriggerSettings?.inputSchema
}
onInputChange={handleTestInputChange}
readonly={actionOptions.readonly}
/>
@@ -237,6 +240,9 @@ export const WorkflowEditActionLogicFunction = ({
{hasInputFields ? (
<WorkflowEditActionCodeFields
functionInput={functionInput}
inputSchema={
logicFunction?.workflowActionTriggerSettings?.inputSchema
}
readonly={actionOptions.readonly}
onInputChange={handleInputChange}
VariablePicker={WorkflowVariablePicker}
@@ -1,7 +1,7 @@
import { Trans, useLingui } from '@lingui/react/macro';
import { SettingsPath } from 'twenty-shared/types';
import { getSettingsPath } from 'twenty-shared/utils';
import { IconKey, IconLock, IconUsers } from 'twenty-ui/display';
import { IconLock, IconUserPlus, IconUsers } from 'twenty-ui/display';
import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag';
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
@@ -10,14 +10,14 @@ import { TabList } from '@/ui/layout/tab-list/components/TabList';
import { activeTabIdComponentState } from '@/ui/layout/tab-list/states/activeTabIdComponentState';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { PermissionFlagType } from '~/generated-metadata/graphql';
import { SettingsWorkspaceMembersAccessTab } from '~/pages/settings/members/tabs/SettingsWorkspaceMembersAccessTab';
import { SettingsWorkspaceMembersInviteTab } from '~/pages/settings/members/tabs/SettingsWorkspaceMembersInviteTab';
import { SettingsWorkspaceMembersRolesTab } from '~/pages/settings/members/tabs/SettingsWorkspaceMembersRolesTab';
import { SettingsWorkspaceMembersTeamTab } from '~/pages/settings/members/tabs/SettingsWorkspaceMembersTeamTab';
const MEMBERS_TAB_LIST_ID = 'members-tab-list';
const MEMBERS_TAB_TEAM_ID = 'team';
const MEMBERS_TAB_ACCESS_ID = 'access';
const MEMBERS_TAB_INVITE_ID = 'invite';
const MEMBERS_TAB_ROLES_ID = 'roles';
export const SettingsWorkspaceMembers = () => {
@@ -32,7 +32,7 @@ export const SettingsWorkspaceMembers = () => {
const tabs = [
{ id: MEMBERS_TAB_TEAM_ID, title: t`Team`, Icon: IconUsers },
{ id: MEMBERS_TAB_ACCESS_ID, title: t`Access`, Icon: IconKey },
{ id: MEMBERS_TAB_INVITE_ID, title: t`Invite`, Icon: IconUserPlus },
...(hasRolesPermission
? [{ id: MEMBERS_TAB_ROLES_ID, title: t`Roles`, Icon: IconLock }]
: []),
@@ -40,8 +40,8 @@ export const SettingsWorkspaceMembers = () => {
const renderActiveTabContent = () => {
switch (activeTabId) {
case MEMBERS_TAB_ACCESS_ID:
return <SettingsWorkspaceMembersAccessTab />;
case MEMBERS_TAB_INVITE_ID:
return <SettingsWorkspaceMembersInviteTab />;
case MEMBERS_TAB_ROLES_ID:
return hasRolesPermission ? (
<SettingsWorkspaceMembersRolesTab />
@@ -71,7 +71,7 @@ const StyledTableRows = styled.div`
padding-top: ${themeCssVariables.spacing[2]};
`;
export const SettingsWorkspaceMembersAccessTab = () => {
export const SettingsWorkspaceMembersInviteTab = () => {
const { theme } = useContext(ThemeContext);
const { t } = useLingui();
const { enqueueErrorSnackBar } = useSnackBar();
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-sdk",
"version": "2.3.0",
"version": "2.3.1",
"sideEffects": false,
"bin": {
"twenty": "dist/cli.cjs"
+3
View File
@@ -1,2 +1,5 @@
**/generated/*
src/engine/metadata-modules/front-component/constants/seed-project/**
src/engine/core-modules/upgrade/constants/twenty-current-version.constant.ts
src/engine/core-modules/upgrade/constants/twenty-previous-versions.constant.ts
src/engine/core-modules/upgrade/constants/twenty-next-versions.constant.ts
@@ -1,21 +0,0 @@
import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.4.0', 1747234400000)
export class AddRelationTargetFieldMetadataIdToViewFilterEarly2_4FastInstanceCommand
implements FastInstanceCommand
{
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewFilter" ADD COLUMN IF NOT EXISTS "relationTargetFieldMetadataId" uuid`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewFilter" DROP COLUMN IF EXISTS "relationTargetFieldMetadataId"`,
);
}
}
@@ -0,0 +1,131 @@
import { DataSource, QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { SlowInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/slow-instance-command.interface';
import {
CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX,
ConnectedAccountTokenEncryptionService,
} from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
const BACKFILL_BATCH_SIZE = 500;
const ACCESS_TOKEN_CHECK_CONSTRAINT_NAME =
'CHK_connectedAccount_accessToken_encrypted';
const REFRESH_TOKEN_CHECK_CONSTRAINT_NAME =
'CHK_connectedAccount_refreshToken_encrypted';
type ConnectedAccountTokenRow = {
id: string;
accessToken: string | null;
refreshToken: string | null;
};
@RegisteredInstanceCommand('2.5.0', 1798000004000, { type: 'slow' })
export class EncryptConnectedAccountTokensSlowInstanceCommand
implements SlowInstanceCommand
{
constructor(
private readonly connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService,
) {}
async runDataMigration(dataSource: DataSource): Promise<void> {
// Cursor + prefix-filter on the SELECT makes the loop both bounded in
// memory and idempotent: re-runs after a partial failure skip rows that
// were already encrypted on a prior pass.
let cursor = '00000000-0000-0000-0000-000000000000';
while (true) {
const rows: ConnectedAccountTokenRow[] = await dataSource.query(
`SELECT id, "accessToken", "refreshToken"
FROM "core"."connectedAccount"
WHERE id > $1
AND (
("accessToken" IS NOT NULL AND "accessToken" NOT LIKE $2)
OR ("refreshToken" IS NOT NULL AND "refreshToken" NOT LIKE $2)
)
ORDER BY id
LIMIT $3`,
[
cursor,
`${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}%`,
BACKFILL_BATCH_SIZE,
],
);
if (rows.length === 0) {
break;
}
for (const row of rows) {
const sets: string[] = [];
const params: unknown[] = [row.id];
if (
row.accessToken !== null &&
!row.accessToken.startsWith(CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX)
) {
params.push(
this.connectedAccountTokenEncryptionService.encrypt(
row.accessToken,
),
);
sets.push(`"accessToken" = $${params.length}`);
}
if (
row.refreshToken !== null &&
!row.refreshToken.startsWith(
CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX,
)
) {
params.push(
this.connectedAccountTokenEncryptionService.encrypt(
row.refreshToken,
),
);
sets.push(`"refreshToken" = $${params.length}`);
}
if (sets.length === 0) {
continue;
}
await dataSource.query(
`UPDATE "core"."connectedAccount"
SET ${sets.join(', ')}
WHERE id = $1`,
params,
);
}
cursor = rows[rows.length - 1].id;
}
}
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."connectedAccount"
ADD CONSTRAINT "${ACCESS_TOKEN_CHECK_CONSTRAINT_NAME}"
CHECK ("accessToken" IS NULL OR "accessToken" LIKE '${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}%')`,
);
await queryRunner.query(
`ALTER TABLE "core"."connectedAccount"
ADD CONSTRAINT "${REFRESH_TOKEN_CHECK_CONSTRAINT_NAME}"
CHECK ("refreshToken" IS NULL OR "refreshToken" LIKE '${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}%')`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
// Deliberately do NOT decrypt rows on rollback — re-introducing plaintext
// tokens to the database would be a security regression. Dropping the
// CHECK constraints is enough; ConnectedAccountTokenEncryptionService can
// still read the encrypted columns whether or not the constraints exist.
await queryRunner.query(
`ALTER TABLE "core"."connectedAccount"
DROP CONSTRAINT IF EXISTS "${REFRESH_TOKEN_CHECK_CONSTRAINT_NAME}"`,
);
await queryRunner.query(
`ALTER TABLE "core"."connectedAccount"
DROP CONSTRAINT IF EXISTS "${ACCESS_TOKEN_CHECK_CONSTRAINT_NAME}"`,
);
}
}
@@ -0,0 +1,244 @@
import { type DataSource } from 'typeorm';
import { EncryptConnectedAccountTokensSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-5/2-5-instance-command-slow-1798000004000-encrypt-connected-account-tokens';
import {
CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX,
type ConnectedAccountTokenEncryptionService,
} from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
type FakeRow = {
id: string;
accessToken: string | null;
refreshToken: string | null;
};
// In-memory stand-in that mimics the slow command's exact SELECT / UPDATE
// shape (LIKE filter, cursor, batch) — anything looser would let regressions
// in the SQL slip past these tests.
const buildFakeDataSource = (
initialRows: FakeRow[],
{ batchSize }: { batchSize: number } = { batchSize: 500 },
): {
dataSource: DataSource;
rows: () => FakeRow[];
queryCallCount: () => number;
} => {
const rows = [...initialRows].sort((a, b) => a.id.localeCompare(b.id));
let queryCallCount = 0;
const fakeDataSource = {
query: jest.fn(async (sql: string, params?: unknown[]) => {
queryCallCount++;
if (sql.includes('SELECT id')) {
const cursor = params?.[0] as string;
const prefixPattern = params?.[1] as string;
const prefix = prefixPattern.replace(/%$/, '');
return rows
.filter((row) => row.id > cursor)
.filter(
(row) =>
(row.accessToken !== null &&
!row.accessToken.startsWith(prefix)) ||
(row.refreshToken !== null &&
!row.refreshToken.startsWith(prefix)),
)
.slice(0, batchSize);
}
if (sql.startsWith('UPDATE')) {
const id = params?.[0] as string;
const target = rows.find((row) => row.id === id);
if (!target) {
return;
}
// Mirror the SQL: SET "accessToken" = $N, "refreshToken" = $M WHERE id = $1
const accessTokenMatch = sql.match(/"accessToken" = \$(\d+)/);
const refreshTokenMatch = sql.match(/"refreshToken" = \$(\d+)/);
if (accessTokenMatch) {
target.accessToken = params?.[
Number(accessTokenMatch[1]) - 1
] as string;
}
if (refreshTokenMatch) {
target.refreshToken = params?.[
Number(refreshTokenMatch[1]) - 1
] as string;
}
return;
}
return;
}),
} as unknown as DataSource;
return {
dataSource: fakeDataSource,
rows: () => rows,
queryCallCount: () => queryCallCount,
};
};
describe('EncryptConnectedAccountTokensSlowInstanceCommand', () => {
// Real AES round-trip is asserted in ConnectedAccountTokenEncryptionService's
// own spec; here we use a CIPHER(...) wrapper so assertions match exact strings.
const buildFakeTokenEncryptionService =
(): ConnectedAccountTokenEncryptionService =>
({
encrypt: jest.fn(
(plaintext: string): string =>
`${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(${plaintext})`,
),
}) as unknown as ConnectedAccountTokenEncryptionService;
const buildCommand = (): {
command: EncryptConnectedAccountTokensSlowInstanceCommand;
connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService;
} => {
const connectedAccountTokenEncryptionService =
buildFakeTokenEncryptionService();
const command = new EncryptConnectedAccountTokensSlowInstanceCommand(
connectedAccountTokenEncryptionService,
);
return { command, connectedAccountTokenEncryptionService };
};
describe('runDataMigration', () => {
it('should encrypt every legacy plaintext row and leave already-prefixed rows untouched', async () => {
const alreadyEncrypted = `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}preexisting-ciphertext`;
const { dataSource, rows } = buildFakeDataSource([
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: 'plaintext-access-1',
refreshToken: 'plaintext-refresh-1',
},
{
id: 'bbbbbbbb-0000-0000-0000-000000000002',
accessToken: alreadyEncrypted,
refreshToken: alreadyEncrypted,
},
{
id: 'cccccccc-0000-0000-0000-000000000003',
accessToken: 'plaintext-access-3',
refreshToken: null,
},
]);
const { command } = buildCommand();
await command.runDataMigration(dataSource);
expect(rows()).toEqual([
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(plaintext-access-1)`,
refreshToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(plaintext-refresh-1)`,
},
{
id: 'bbbbbbbb-0000-0000-0000-000000000002',
accessToken: alreadyEncrypted,
refreshToken: alreadyEncrypted,
},
{
id: 'cccccccc-0000-0000-0000-000000000003',
accessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(plaintext-access-3)`,
refreshToken: null,
},
]);
});
// Regression guard: the SELECT filter is per-row (one column unencrypted is
// enough to fetch the row), so the loop body sees rows where one column is
// already prefixed and the other isn't. The per-cell prefix check inside
// the loop is what prevents the prefixed column from being double-encrypted
// into `enc:v1:CIPHER(enc:v1:...)`. If that check ever regresses, this is
// the test that should fail.
it('should only encrypt the plaintext column when a row mixes encrypted and plaintext tokens', async () => {
const alreadyEncryptedAccess = `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}preexisting-access-cipher`;
const { dataSource, rows } = buildFakeDataSource([
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: alreadyEncryptedAccess,
refreshToken: 'plaintext-refresh-mixed',
},
]);
const { command } = buildCommand();
await command.runDataMigration(dataSource);
expect(rows()).toEqual([
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: alreadyEncryptedAccess,
refreshToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(plaintext-refresh-mixed)`,
},
]);
});
it('should be idempotent — re-running on already-migrated data leaves it unchanged', async () => {
const { dataSource, rows } = buildFakeDataSource([
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: 'plaintext-token',
refreshToken: null,
},
]);
const { command } = buildCommand();
const expectedFinalState = [
{
id: 'aaaaaaaa-0000-0000-0000-000000000001',
accessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(plaintext-token)`,
refreshToken: null,
},
];
await command.runDataMigration(dataSource);
expect(rows()).toEqual(expectedFinalState);
await command.runDataMigration(dataSource);
expect(rows()).toEqual(expectedFinalState);
});
it('should paginate through more rows than the batch size', async () => {
// 1100 rows + batch size 500 → at least 3 SELECT batches.
const initialRows: FakeRow[] = Array.from({ length: 1100 }, (_, idx) => ({
// Lex-sortable hex IDs so the cursor advance works the way the SQL does.
id: `${idx.toString(16).padStart(12, '0')}-0000-0000-0000-000000000000`,
accessToken: `plaintext-${idx}`,
refreshToken: null,
}));
const { dataSource, rows, queryCallCount } = buildFakeDataSource(
initialRows,
{ batchSize: 500 },
);
const { command } = buildCommand();
await command.runDataMigration(dataSource);
// Every row got encrypted
expect(
rows().every((row) =>
row.accessToken!.startsWith(
CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX,
),
),
).toBe(true);
// Sanity check: at least the expected number of SELECT batches happened
// (3 SELECTs for 500/500/100 + 1 final empty SELECT + 1100 UPDATEs)
expect(queryCallCount()).toBeGreaterThanOrEqual(1100 + 4);
});
});
});
@@ -1,8 +1,10 @@
import { Module } from '@nestjs/common';
import { INSTANCE_COMMANDS } from 'src/database/commands/upgrade-version-command/instance-commands.constant';
import { ConnectedAccountTokenEncryptionModule } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.module';
@Module({
imports: [ConnectedAccountTokenEncryptionModule],
providers: [...INSTANCE_COMMANDS],
})
export class InstanceCommandProviderModule {}
@@ -19,7 +19,6 @@ import { AddIsPreInstalledToApplicationRegistrationFastInstanceCommand } from 's
import { AddProviderExecutedToAgentMessagePartFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-fast-1777012800000-add-provider-executed-to-agent-message-part';
import { BackfillPageLayoutWidgetPositionSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-slow-1795000002000-backfill-page-layout-widget-position';
import { AddMetadataToBillingPriceFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-4/2-4-instance-command-fast-1777100000000-add-metadata-to-billing-price';
import { AddRelationTargetFieldMetadataIdToViewFilterEarly2_4FastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-4/2-4-instance-command-fast-1747234400000-add-relation-target-field-metadata-id-to-view-filter';
import { AddCacheTokensToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777455269302-add-cache-tokens-to-agent-chat-thread';
import { AddLogoToApplicationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777539664664-add-logo-to-application';
import { AddUpgradeMigrationWorkspaceIdIndexFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1777308014234-add-upgrade-migration-workspace-id-index';
@@ -32,6 +31,7 @@ import { BackfillApplicationVariableUniversalIdentifierSlowInstanceCommand } fro
import { MigrateToolTriggerSettingsSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-slow-1797000002000-migrate-tool-trigger-settings';
import { AddEmailGroupChannelTypeFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-4/2-4-instance-command-fast-1778256809018-add-email-group-channel-type';
import { AddApplicationIdToPublicDomainFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-4/2-4-instance-command-fast-1798000003000-add-application-id-to-public-domain';
import { EncryptConnectedAccountTokensSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-5/2-5-instance-command-slow-1798000004000-encrypt-connected-account-tokens';
export const INSTANCE_COMMANDS = [
AddViewFieldGroupIdIndexOnViewFieldFastInstanceCommand,
@@ -54,7 +54,6 @@ export const INSTANCE_COMMANDS = [
AddProviderExecutedToAgentMessagePartFastInstanceCommand,
BackfillPageLayoutWidgetPositionSlowInstanceCommand,
AddMetadataToBillingPriceFastInstanceCommand,
AddRelationTargetFieldMetadataIdToViewFilterEarly2_4FastInstanceCommand,
AddCacheTokensToAgentChatThreadFastInstanceCommand,
AddLogoToApplicationFastInstanceCommand,
AddDeletedAtToAgentChatThreadFastInstanceCommand,
@@ -66,4 +65,5 @@ export const INSTANCE_COMMANDS = [
BackfillApplicationVariableUniversalIdentifierSlowInstanceCommand,
AddEmailGroupChannelTypeFastInstanceCommand,
AddApplicationIdToPublicDomainFastInstanceCommand,
EncryptConnectedAccountTokensSlowInstanceCommand,
];
@@ -137,7 +137,7 @@ export class ApplicationInstallService {
resolvedPackage.packageJson.engines?.['twenty'];
const versionValidation =
this.applicationVersionValidationService.validateServerCompatibility(
await this.applicationVersionValidationService.validateServerCompatibility(
requiredServerVersion,
);
@@ -7,11 +7,13 @@ import { ApplicationEntity } from 'src/engine/core-modules/application/applicati
import { FileStorageModule } from 'src/engine/core-modules/file-storage/file-storage.module';
import { FileEntity } from 'src/engine/core-modules/file/entities/file.entity';
import { TwentyConfigModule } from 'src/engine/core-modules/twenty-config/twenty-config.module';
import { UpgradeModule } from 'src/engine/core-modules/upgrade/upgrade.module';
@Module({
imports: [
FileStorageModule,
TwentyConfigModule,
UpgradeModule,
TypeOrmModule.forFeature([FileEntity, ApplicationEntity]),
],
providers: [
@@ -2,8 +2,7 @@ import { Injectable } from '@nestjs/common';
import semver from 'semver';
import { isDefined } from 'twenty-shared/utils';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { UpgradeMigrationService } from 'src/engine/core-modules/upgrade/services/upgrade-migration.service';
export type VersionValidationFailureReason =
| 'INVALID_REQUIRED_VERSION'
@@ -20,11 +19,13 @@ export type VersionValidationResult =
@Injectable()
export class ApplicationVersionValidationService {
constructor(private readonly twentyConfigService: TwentyConfigService) {}
constructor(
private readonly upgradeMigrationService: UpgradeMigrationService,
) {}
validateServerCompatibility(
async validateServerCompatibility(
requiredServerVersion: string | undefined,
): VersionValidationResult {
): Promise<VersionValidationResult> {
if (!isDefined(requiredServerVersion)) {
return { compatible: true };
}
@@ -37,21 +38,25 @@ export class ApplicationVersionValidationService {
};
}
const serverVersion = this.twentyConfigService.get('APP_VERSION');
const inferredServerVersion =
await this.upgradeMigrationService.getInferredVersion();
if (!isDefined(serverVersion) || !isDefined(semver.valid(serverVersion))) {
if (
!isDefined(inferredServerVersion) ||
!isDefined(semver.valid(inferredServerVersion))
) {
return {
compatible: false,
reason: 'INVALID_SERVER_VERSION',
message: `Cannot verify server compatibility: APP_VERSION "${serverVersion ?? 'undefined'}" is not a valid semver version. Self-hosted instances must set a valid APP_VERSION.`,
message: `Cannot verify server compatibility: inferred server version "${inferredServerVersion ?? 'undefined'}" is not a valid semver version.`,
};
}
if (!semver.satisfies(serverVersion, requiredServerVersion)) {
if (!semver.satisfies(inferredServerVersion, requiredServerVersion)) {
return {
compatible: false,
reason: 'INCOMPATIBLE',
message: `App requires Twenty server ${requiredServerVersion} but this server is ${serverVersion}.`,
message: `App requires Twenty server ${requiredServerVersion} but this server is ${inferredServerVersion}.`,
};
}
@@ -96,7 +96,7 @@ export class ApplicationTarballService {
const requiredServerVersion = packageJson?.engines?.twenty;
const versionValidation =
this.applicationVersionValidationService.validateServerCompatibility(
await this.applicationVersionValidationService.validateServerCompatibility(
requiredServerVersion,
);
@@ -22,6 +22,10 @@ import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrap
import { SecureHttpClientService } from 'src/engine/core-modules/secure-http-client/secure-http-client.service';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import {
CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX,
ConnectedAccountTokenEncryptionService,
} from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
describe('ConnectionProviderOAuthFlowService', () => {
let service: ConnectionProviderOAuthFlowService;
@@ -110,6 +114,29 @@ describe('ConnectionProviderOAuthFlowService', () => {
provide: getRepositoryToken(ConnectedAccountEntity),
useValue: connectedAccountRepository,
},
{
// Real prefix/round-trip behavior is asserted in
// connected-account-token-encryption.service.spec.ts; here we use a
// CIPHER(...) wrapper so assertions can match exact ciphertext.
provide: ConnectedAccountTokenEncryptionService,
useValue: {
encryptTokenPair: jest.fn(
({
accessToken,
refreshToken,
}: {
accessToken: string;
refreshToken: string | null;
}) => ({
encryptedAccessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(${accessToken})`,
encryptedRefreshToken:
refreshToken === null
? null
: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(${refreshToken})`,
}),
),
},
},
],
}).compile();
@@ -313,11 +340,12 @@ describe('ConnectionProviderOAuthFlowService', () => {
expect(result.workspaceId).toBe('workspace-1');
expect(result.applicationId).toBe('app-1');
// Encrypt-at-receipt: the entity must never hold the IDP plaintext.
expect(connectedAccountRepository.create).toHaveBeenCalledWith(
expect.objectContaining({
provider: ConnectedAccountProvider.APP,
accessToken: 'new_access',
refreshToken: 'new_refresh',
accessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(new_access)`,
refreshToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(new_refresh)`,
connectionProviderId: 'provider-1',
applicationId: 'app-1',
workspaceId: 'workspace-1',
@@ -344,8 +372,8 @@ describe('ConnectionProviderOAuthFlowService', () => {
expect(connectedAccountRepository.update).toHaveBeenCalledWith(
{ id: 'existing-account-id', workspaceId: 'workspace-1' },
expect.objectContaining({
accessToken: 'new_access',
refreshToken: 'new_refresh',
accessToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(new_access)`,
refreshToken: `${CONNECTED_ACCOUNT_TOKEN_ENCRYPTION_PREFIX}CIPHER(new_refresh)`,
authFailedAt: null,
visibility: 'user',
}),
@@ -6,8 +6,8 @@ import { Repository } from 'typeorm';
import { ConnectedAccountProvider } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { type ConnectionProviderEntity } from 'src/engine/core-modules/application/connection-provider/connection-provider.entity';
import { ConnectionProviderExceptionCode } from 'src/engine/core-modules/application/connection-provider/connection-provider-exception-code.enum';
import { type ConnectionProviderEntity } from 'src/engine/core-modules/application/connection-provider/connection-provider.entity';
import { ConnectionProviderException } from 'src/engine/core-modules/application/connection-provider/connection-provider.exception';
import { ConnectionProviderService } from 'src/engine/core-modules/application/connection-provider/connection-provider.service';
import { type TokenExchangeResponse } from 'src/engine/core-modules/application/connection-provider/types/token-exchange-response.type';
@@ -27,6 +27,7 @@ import { JwtWrapperService } from 'src/engine/core-modules/jwt/services/jwt-wrap
import { SecureHttpClientService } from 'src/engine/core-modules/secure-http-client/secure-http-client.service';
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionService } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
const STATE_JWT_EXPIRES_IN = '10m';
@@ -61,6 +62,7 @@ export class ConnectionProviderOAuthFlowService {
private readonly jwtWrapperService: JwtWrapperService,
private readonly secureHttpClientService: SecureHttpClientService,
private readonly twentyConfigService: TwentyConfigService,
private readonly connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService,
@InjectRepository(ConnectedAccountEntity)
private readonly connectedAccountRepository: Repository<ConnectedAccountEntity>,
) {}
@@ -248,9 +250,15 @@ export class ConnectionProviderOAuthFlowService {
visibility: 'user' | 'workspace';
reconnectingConnectedAccountId: string | null;
}): Promise<ConnectedAccountEntity> {
const { encryptedAccessToken, encryptedRefreshToken } =
this.connectedAccountTokenEncryptionService.encryptTokenPair({
accessToken: tokenResponse.accessToken,
refreshToken: tokenResponse.refreshToken,
});
const sharedFields = {
accessToken: tokenResponse.accessToken,
refreshToken: tokenResponse.refreshToken,
accessToken: encryptedAccessToken,
refreshToken: encryptedRefreshToken,
scopes: tokenResponse.scopes ?? provider.oauthConfig.scopes,
lastCredentialsRefreshedAt: new Date(),
authFailedAt: null,
@@ -12,6 +12,7 @@ import { SecretEncryptionModule } from 'src/engine/core-modules/secret-encryptio
import { SecureHttpClientModule } from 'src/engine/core-modules/secure-http-client/secure-http-client.module';
import { TwentyConfigModule } from 'src/engine/core-modules/twenty-config/twenty-config.module';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionModule } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.module';
import { FlatConnectionProviderModule } from 'src/engine/metadata-modules/flat-connection-provider/flat-connection-provider.module';
@Module({
@@ -27,6 +28,7 @@ import { FlatConnectionProviderModule } from 'src/engine/metadata-modules/flat-c
SecureHttpClientModule,
TwentyConfigModule,
FlatConnectionProviderModule,
ConnectedAccountTokenEncryptionModule,
],
providers: [
ConnectionProviderService,
@@ -5,12 +5,14 @@ import { AppOAuthRefreshAccessTokenService } from 'src/engine/core-modules/appli
import { AppOAuthRevokeService } from 'src/engine/core-modules/application/connection-provider/refresh/services/app-oauth-revoke.service';
import { ApplicationVariableEntityModule } from 'src/engine/core-modules/application/application-variable/application-variable.module';
import { SecureHttpClientModule } from 'src/engine/core-modules/secure-http-client/secure-http-client.module';
import { ConnectedAccountTokenEncryptionModule } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.module';
@Module({
imports: [
ConnectionProviderModule,
ApplicationVariableEntityModule,
SecureHttpClientModule,
ConnectedAccountTokenEncryptionModule,
],
providers: [AppOAuthRefreshAccessTokenService, AppOAuthRevokeService],
exports: [AppOAuthRefreshAccessTokenService, AppOAuthRevokeService],
@@ -5,6 +5,7 @@ import { isDefined } from 'twenty-shared/utils';
import { ConnectionProviderService } from 'src/engine/core-modules/application/connection-provider/connection-provider.service';
import { SecureHttpClientService } from 'src/engine/core-modules/secure-http-client/secure-http-client.service';
import { type ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionService } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
@Injectable()
export class AppOAuthRevokeService {
@@ -13,6 +14,7 @@ export class AppOAuthRevokeService {
constructor(
private readonly connectionProviderService: ConnectionProviderService,
private readonly secureHttpClientService: SecureHttpClientService,
private readonly connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService,
) {}
// Best-effort: failures are logged but never block disconnect.
@@ -41,6 +43,11 @@ export class AppOAuthRevokeService {
}
try {
const decryptedAccessToken =
this.connectedAccountTokenEncryptionService.decrypt(
connectedAccount.accessToken,
);
const response = await this.secureHttpClientService.createSsrfSafeFetch()(
revokeEndpoint,
{
@@ -49,7 +56,7 @@ export class AppOAuthRevokeService {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
token: connectedAccount.accessToken,
token: decryptedAccessToken,
token_type_hint: 'access_token',
}).toString(),
},
@@ -63,6 +63,7 @@ import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.ent
import { CoreEntityCacheModule } from 'src/engine/core-entity-cache/core-entity-cache.module';
import { CalendarChannelEntity } from 'src/engine/metadata-modules/calendar-channel/entities/calendar-channel.entity';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionModule } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.module';
import { MessageChannelEntity } from 'src/engine/metadata-modules/message-channel/entities/message-channel.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module';
@@ -125,6 +126,7 @@ import { JwtAuthStrategy } from './strategies/jwt.auth.strategy';
SecureHttpClientModule,
EnterpriseModule,
FileModule,
ConnectedAccountTokenEncryptionModule,
],
controllers: [
GoogleAuthController,
@@ -6,6 +6,7 @@ import { EntityManager, Repository } from 'typeorm';
import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionService } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
import { getWorkspaceContext } from 'src/engine/twenty-orm/storage/orm-workspace-context.storage';
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
@@ -28,6 +29,7 @@ export type CreateConnectedAccountInput = {
export class CreateConnectedAccountService {
constructor(
private readonly globalWorkspaceOrmManager: GlobalWorkspaceOrmManager,
private readonly connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService,
@InjectRepository(UserWorkspaceEntity)
private readonly userWorkspaceRepository: Repository<UserWorkspaceEntity>,
) {}
@@ -85,14 +87,20 @@ export class CreateConnectedAccountService {
const userWorkspaceId = userWorkspace.id;
const { encryptedAccessToken, encryptedRefreshToken } =
this.connectedAccountTokenEncryptionService.encryptTokenPair({
accessToken,
refreshToken,
});
await input.transactionManager
.getRepository(ConnectedAccountEntity)
.save({
id: connectedAccountId,
handle,
provider,
accessToken,
refreshToken,
accessToken: encryptedAccessToken,
refreshToken: encryptedRefreshToken,
userWorkspaceId,
scopes,
workspaceId,
@@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { EntityManager } from 'typeorm';
import { ConnectedAccountEntity } from 'src/engine/metadata-modules/connected-account/entities/connected-account.entity';
import { ConnectedAccountTokenEncryptionService } from 'src/engine/metadata-modules/connected-account/services/connected-account-token-encryption.service';
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
@@ -19,6 +20,7 @@ export type UpdateConnectedAccountOnReconnectInput = {
export class UpdateConnectedAccountOnReconnectService {
constructor(
private readonly globalWorkspaceOrmManager: GlobalWorkspaceOrmManager,
private readonly connectedAccountTokenEncryptionService: ConnectedAccountTokenEncryptionService,
) {}
async updateConnectedAccountOnReconnect(
@@ -32,6 +34,12 @@ export class UpdateConnectedAccountOnReconnectService {
scopes,
} = input;
const { encryptedAccessToken, encryptedRefreshToken } =
this.connectedAccountTokenEncryptionService.encryptTokenPair({
accessToken,
refreshToken,
});
const authContext = buildSystemAuthContext(workspaceId);
await this.globalWorkspaceOrmManager.executeInWorkspaceContext(async () => {
@@ -43,8 +51,8 @@ export class UpdateConnectedAccountOnReconnectService {
workspaceId,
},
{
accessToken,
refreshToken,
accessToken: encryptedAccessToken,
refreshToken: encryptedRefreshToken,
scopes,
authFailedAt: null,
},
@@ -0,0 +1,205 @@
/* @license Enterprise */
import { type Request } from 'express';
import { type SSOService } from 'src/engine/core-modules/sso/services/sso.service';
import { SamlAuthStrategy } from './saml.auth.strategy';
const IDP_A = 'idp-a-uuid';
const IDP_B = 'idp-b-uuid';
const VALID_EMAIL = '[email protected]';
type RelayStateInput =
| { kind: 'absent' }
| { kind: 'raw'; value: string }
| { kind: 'json'; value: Record<string, unknown> };
const buildRequest = ({
paramsIdpId,
relayState = { kind: 'absent' },
}: {
paramsIdpId: string;
relayState?: RelayStateInput;
}) => {
let body: Record<string, unknown> = {};
if (relayState.kind === 'raw') {
body = { RelayState: relayState.value };
} else if (relayState.kind === 'json') {
body = { RelayState: JSON.stringify(relayState.value) };
}
return {
params: { identityProviderId: paramsIdpId },
body,
} as unknown as Request;
};
const buildProfile = (email: string = VALID_EMAIL) =>
({
email,
nameID: email,
issuer: 'irrelevant',
}) as unknown as Parameters<SamlAuthStrategy['validate']>[1];
describe('SamlAuthStrategy.validate', () => {
let strategy: SamlAuthStrategy;
beforeEach(() => {
const ssoService = {
findSSOIdentityProviderById: jest.fn(),
isSAMLIdentityProvider: jest.fn(),
buildIssuerURL: jest.fn(),
buildCallbackUrl: jest.fn(),
} as unknown as SSOService;
strategy = new SamlAuthStrategy(ssoService);
});
// Regression test for the workspace-confusion finding. An attacker-controlled
// RelayState that claims a different identity-provider id than the one whose
// cert verified the assertion must have zero influence on the resolved IdP.
it('ignores RelayState.identityProviderId and sources it exclusively from the URL path', async () => {
const request = buildRequest({
paramsIdpId: IDP_A,
relayState: { kind: 'json', value: { identityProviderId: IDP_B } },
});
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: undefined,
email: VALID_EMAIL,
});
});
it('accepts a request with no RelayState at all (no workspaceInviteHash threaded through)', async () => {
const request = buildRequest({ paramsIdpId: IDP_A });
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: undefined,
email: VALID_EMAIL,
});
});
it('threads workspaceInviteHash from RelayState through to req.user', async () => {
const request = buildRequest({
paramsIdpId: IDP_A,
relayState: {
kind: 'json',
value: { workspaceInviteHash: 'invite-hash-123' },
},
});
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: 'invite-hash-123',
email: VALID_EMAIL,
});
});
it('still resolves identityProviderId from the URL path when RelayState mixes a malicious id with a real invite hash', async () => {
const request = buildRequest({
paramsIdpId: IDP_A,
relayState: {
kind: 'json',
value: {
identityProviderId: IDP_B,
workspaceInviteHash: 'invite-hash-123',
},
},
});
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: 'invite-hash-123',
email: VALID_EMAIL,
});
});
it('tolerates malformed RelayState JSON without throwing (no invite hash extracted)', async () => {
const request = buildRequest({
paramsIdpId: IDP_A,
relayState: { kind: 'raw', value: 'not-json{' },
});
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: undefined,
email: VALID_EMAIL,
});
});
it('ignores non-string workspaceInviteHash payloads in RelayState', async () => {
const request = buildRequest({
paramsIdpId: IDP_A,
relayState: {
kind: 'json',
value: { workspaceInviteHash: { nested: 'object' } },
},
});
const done = jest.fn();
await strategy.validate(request, buildProfile(), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeNull();
expect(done.mock.calls[0][1]).toEqual({
identityProviderId: IDP_A,
workspaceInviteHash: undefined,
email: VALID_EMAIL,
});
});
it('rejects auth when the email claim is invalid', async () => {
const request = buildRequest({ paramsIdpId: IDP_A });
const done = jest.fn();
await strategy.validate(request, buildProfile('not-an-email'), done);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeInstanceOf(Error);
expect(done.mock.calls[0][0].message).toBe('Invalid email');
});
it('rejects auth when the profile is missing', async () => {
const request = buildRequest({ paramsIdpId: IDP_A });
const done = jest.fn();
await strategy.validate(
request,
undefined as unknown as Parameters<SamlAuthStrategy['validate']>[1],
done,
);
expect(done).toHaveBeenCalledTimes(1);
expect(done.mock.calls[0][0]).toBeInstanceOf(Error);
expect(done.mock.calls[0][0].message).toBe('Profile must be provided');
});
});
@@ -13,13 +13,32 @@ import {
import { type AuthenticateOptions } from '@node-saml/passport-saml/lib/types';
import { isEmail } from 'class-validator';
import { type Request } from 'express';
import { z } from 'zod';
import {
AuthException,
AuthExceptionCode,
} from 'src/engine/core-modules/auth/auth.exception';
import { SSOService } from 'src/engine/core-modules/sso/services/sso.service';
const WORKSPACE_INVITE_HASH_PAYLOAD_SCHEMA = z.object({
workspaceInviteHash: z.string().optional(),
});
const RELAY_STATE_BODY_SCHEMA = z.object({
RelayState: z
.string()
.transform((raw, ctx) => {
try {
return JSON.parse(raw) as unknown;
} catch {
ctx.addIssue({
code: 'custom',
message: 'RelayState is not valid JSON',
});
return z.NEVER;
}
})
.pipe(WORKSPACE_INVITE_HASH_PAYLOAD_SCHEMA),
});
export type SAMLRequest = Omit<
Request,
'user' | 'workspace' | 'workspaceMetadataVersion'
@@ -83,43 +102,37 @@ export class SamlAuthStrategy extends PassportStrategy(
}
authenticate(req: Request, options: AuthenticateOptions) {
const queryParseResult = WORKSPACE_INVITE_HASH_PAYLOAD_SCHEMA.safeParse(
req.query,
);
const workspaceInviteHash = queryParseResult.success
? queryParseResult.data.workspaceInviteHash
: undefined;
super.authenticate(req, {
...options,
additionalParams: {
RelayState: JSON.stringify({
identityProviderId: req.params.identityProviderId,
...(req.query.workspaceInviteHash
? { workspaceInviteHash: req.query.workspaceInviteHash }
: {}),
}),
},
...(workspaceInviteHash !== undefined
? {
additionalParams: {
RelayState: JSON.stringify({ workspaceInviteHash }),
},
}
: {}),
});
}
private extractState(req: Request): {
identityProviderId: string;
workspaceInviteHash?: string;
} {
try {
if ('RelayState' in req.body && typeof req.body.RelayState === 'string') {
const RelayState = JSON.parse(req.body.RelayState);
private extractWorkspaceInviteHash(req: Request): string | undefined {
const result = RELAY_STATE_BODY_SCHEMA.safeParse(req.body);
return {
identityProviderId: RelayState.identityProviderId,
workspaceInviteHash: RelayState.workspaceInviteHash,
};
}
throw new Error();
} catch {
throw new AuthException('Invalid state', AuthExceptionCode.INVALID_INPUT);
}
return result.success
? result.data.RelayState.workspaceInviteHash
: undefined;
}
validate: VerifyWithRequest = async (request, profile, done) => {
try {
if (!profile) {
return done(new Error('Profile is must be provided'));
return done(new Error('Profile must be provided'));
}
const email = profile.email ?? profile.mail ?? profile.nameID;
@@ -127,9 +140,12 @@ export class SamlAuthStrategy extends PassportStrategy(
if (!isEmail(email)) {
return done(new Error('Invalid email'));
}
const state = this.extractState(request);
done(null, { ...state, email });
done(null, {
identityProviderId: request.params.identityProviderId,
workspaceInviteHash: this.extractWorkspaceInviteHash(request),
email,
});
} catch (err) {
done(err);
}
@@ -7,4 +7,4 @@
* |___/
*/
export const TWENTY_CURRENT_VERSION = '2.4.0' as const;
export const TWENTY_CURRENT_VERSION = '2.5.0' as const;
@@ -7,4 +7,4 @@
* |___/
*/
export const TWENTY_NEXT_VERSIONS = ['2.5.0'] as const;
export const TWENTY_NEXT_VERSIONS = ['2.6.0'] as const;
@@ -15,4 +15,5 @@ export const TWENTY_PREVIOUS_VERSIONS = [
'2.1.0',
'2.2.0',
'2.3.0',
'2.4.0',
] as const;

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