Compare commits

..
Author SHA1 Message Date
prastoin 82f9a193f3 feat(create-app): scaffolding 2026-03-03 13:24:36 +01:00
prastoin 19bca23043 test(apps): integration 2026-03-03 12:57:50 +01:00
prastoin 90fb67c90b chore 2026-03-03 11:42:07 +01:00
prastoin e75057a1df lint and review 2026-03-03 11:40:12 +01:00
prastoin 1b900a5f32 review 2026-03-03 11:28:41 +01:00
prastoin 6e913c2f91 chore 2026-03-02 19:14:36 +01:00
prastoin e676c3fea6 chore 2026-03-02 19:13:10 +01:00
prastoin 5dfe9b7b49 naming 2026-03-02 19:05:39 +01:00
prastoin 670d88d373 naming and location 2026-03-02 18:58:29 +01:00
prastoin c5af23afc2 lint 2026-03-02 18:52:12 +01:00
prastoin 2f4cd688fd feat(sdk): logging typecheck and client export 2026-03-02 18:50:48 +01:00
prastoin 0ca6325f0d refactor(apps): hello world 2026-03-02 18:50:24 +01:00
prastoin 26b7e0a97d typecheck second sync 2026-03-02 18:01:52 +01:00
prastoin 868c019089 lint 2026-03-02 17:57:44 +01:00
prastoin 90658a8476 factorization 2026-03-02 17:57:27 +01:00
prastoin 43678cb782 revert app dev updates 2026-03-02 16:26:18 +01:00
prastoin b52ba1b3e3 Revert "refactor(sdk): no more two phases watcher"
This reverts commit 4f48a5d001.
2026-03-02 15:42:02 +01:00
prastoin 4f48a5d001 refactor(sdk): no more two phases watcher 2026-03-02 14:53:24 +01:00
prastoin a2b727cd7f avoid too many manifest buikd 2026-03-02 14:23:04 +01:00
prastoin 1d26940960 refactor(sdk): extract app build logic 2026-03-02 13:55:59 +01:00
prastoin 16aa8fc72a lockfile 2026-03-02 11:51:06 +01:00
prastoin cf0ad46587 naming 2026-03-02 11:45:55 +01:00
prastoin 9cea7c47e9 refactor(sdk): split cli and command logic 2026-03-02 11:36:53 +01:00
689 changed files with 11159 additions and 19836 deletions
@@ -1,80 +0,0 @@
name: Spawn Twenty Docker Image
description: >
Starts a full Twenty instance (server, worker, database, redis) using Docker
Compose. The server is available at http://localhost:3000 for subsequent steps
in the caller's job.
Pulls the specified semver image tag from Docker Hub.
Designed to be consumed from external repositories (e.g., twenty-app).
inputs:
twenty-version:
description: 'Twenty Docker Hub image tag as semver (e.g., v0.40.0, v1.0.0).'
required: true
twenty-repository:
description: 'Twenty repository to checkout docker compose files from.'
required: false
default: 'twentyhq/twenty'
github-token:
description: 'GitHub token for cross-repo checkout. Required when calling from an external repository.'
required: false
default: ${{ github.token }}
outputs:
server-url:
description: 'URL where the Twenty server can be reached'
value: http://localhost:3000
access-token:
description: 'Admin access token for the Twenty instance'
value: ${{ steps.admin-token.outputs.access-token }}
runs:
using: 'composite'
steps:
- name: Validate version
shell: bash
run: |
VERSION="${{ inputs.twenty-version }}"
if ! echo "$VERSION" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "::error::twenty-version must be a semver tag (e.g., v0.40.0). Got: '$VERSION'"
exit 1
fi
- name: Checkout docker compose files
uses: actions/checkout@v4
with:
repository: ${{ inputs.twenty-repository }}
ref: ${{ inputs.twenty-version }}
token: ${{ inputs.github-token }}
sparse-checkout: |
packages/twenty-docker
sparse-checkout-cone-mode: false
path: .twenty-spawn
- name: Prepare environment
shell: bash
working-directory: ./.twenty-spawn/packages/twenty-docker
run: |
cp .env.example .env
echo "" >> .env
echo "TAG=${{ inputs.twenty-version }}" >> .env
echo "APP_SECRET=replace_me_with_a_random_string" >> .env
echo "SERVER_URL=http://localhost:3000" >> .env
- name: Start Twenty instance
shell: bash
working-directory: ./.twenty-spawn/packages/twenty-docker
run: |
docker compose up -d --wait || {
echo "::error::Docker compose failed to start or health checks timed out"
docker compose logs
exit 1
}
echo "Twenty instance is ready at http://localhost:3000"
- name: Set admin access token
id: admin-token
shell: bash
run: |
ACCESS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ1c2VySWQiOiIyMDIwMjAyMC1lNmI1LTQ2ODAtOGEzMi1iODIwOTczNzE1NmIiLCJ3b3Jrc3BhY2VJZCI6IjIwMjAyMDIwLTFjMjUtNGQwMi1iZjI1LTZhZWNjZjdlYTQxOSIsIndvcmtzcGFjZU1lbWJlcklkIjoiMjAyMDIwMjAtNDYzZi00MzViLTgyOGMtMTA3ZTAwN2EyNzExIiwidXNlcldvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWU3Yy00M2Q5LWE1ZGItNjg1YjUwNjlkODE2IiwidHlwZSI6IkFDQ0VTUyIsImF1dGhQcm92aWRlciI6InBhc3N3b3JkIiwiaWF0IjoxNzUxMjgxNzA0LCJleHAiOjIwNjY4NTc3MDR9.HMGqCsVlOAPVUBhKSGlD1X86VoHKt4LIUtET3CGIdik"
echo "::add-mask::$ACCESS_TOKEN"
echo "access-token=$ACCESS_TOKEN" >> "$GITHUB_OUTPUT"
+6 -74
View File
@@ -1,9 +1,11 @@
name: CI Zapier
on:
pull_request:
push:
branches:
- main
merge_group:
pull_request:
permissions:
contents: read
@@ -12,9 +14,6 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
env:
SERVER_SETUP_CACHE_KEY: server-setup
jobs:
changed-files-check:
uses: ./.github/workflows/changed-files.yaml
@@ -24,81 +23,14 @@ jobs:
packages/twenty-server/**
!packages/twenty-zapier/package.json
!packages/twenty-zapier/CHANGELOG.md
server-setup:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: depot-ubuntu-24.04-8
services:
postgres:
image: twentycrm/twenty-postgres-spilo
env:
PGUSER_SUPERUSER: postgres
PGPASSWORD_SUPERUSER: postgres
ALLOW_NOSSL: 'true'
SPILO_PROVIDER: 'local'
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
steps:
- name: Fetch custom Github Actions and base branch history
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build twenty-shared
run: npx nx build twenty-shared
- name: Server / Write .env
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Server / Build
run: npx nx build twenty-server
- name: Create and setup database
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
npx nx run twenty-server:database:reset
- name: Server / Start
run: |
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Start worker
run: |
npx nx run twenty-server:worker &
echo "Worker started"
- name: Zapier / Build
run: npx nx build twenty-zapier
- name: Zapier / Run Tests
uses: ./.github/actions/nx-affected
with:
tag: scope:zapier
tasks: test
zapier-test:
needs: server-setup
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: depot-ubuntu-24.04
strategy:
matrix:
task: [lint, typecheck, validate]
task: [lint, typecheck, test, validate]
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
+2 -1
View File
@@ -1,7 +1,8 @@
name: 'Preview Environment Dispatch'
permissions:
contents: write
contents: read
actions: write
on:
pull_request_target:
-381
View File
@@ -1,381 +0,0 @@
# Emotion → Linaria Migration Plan: twenty-front
## Overview
Migrate all Emotion (`@emotion/styled`, `@emotion/react`) usages in
`packages/twenty-front/src` to Linaria (`@linaria/react`, `@linaria/core`),
following the same patterns already established in the `twenty-ui` package.
Linaria is a **zero-runtime** CSS-in-JS library. Styles are extracted at
build time by [wyw-in-js](https://wyw-in-js.dev/) (the Vite plugin is
`@wyw-in-js/vite`, already configured in `twenty-front/vite.config.ts`).
This means every expression inside a `styled` or `css` template literal
must be statically evaluable at build time — no runtime theme objects,
no closures over component state, no side-effects.
**Total files to migrate: ~998**
| Category | Files | Description |
|---|---|---|
| styled-only | 694 | Import `@emotion/styled` but not `useTheme` |
| styled + useTheme | 224 | Import both `@emotion/styled` and `useTheme` |
| useTheme-only | 79 | Import `useTheme` but not `@emotion/styled` |
| css / Global only | 1 | Import `css` or `Global` from `@emotion/react` only |
## Theme Architecture
Two build-time utilities produce the theme system:
- **`buildThemeReferencingRootCssVariables`** — walks the theme object and
builds a nested mirror where every leaf is a `var(--t-xxx)` string
(evaluated at build time by wyw-in-js)
- **`prepareThemeForRootCssVariableInjection`** — walks the runtime theme
and collects flat `[--css-variable-name, value]` pairs, injected onto
`document.documentElement` by `ThemeCssVariableInjectorEffect`
`themeCssVariables` is the build-time object; every leaf resolves to a CSS
`var()` reference. It is safe to use inside `styled` and `css` templates
because wyw-in-js can evaluate it statically.
## Migration Patterns
### 1. `styled` import
```diff
- import styled from '@emotion/styled';
+ import { styled } from '@linaria/react';
```
### 2. Theme access in styled components
Replace Emotion's `({ theme }) =>` prop-function pattern with static
`themeCssVariables` references:
```diff
+ import { themeCssVariables } from 'twenty-ui/theme';
const StyledTitle = styled.span`
- color: ${({ theme }) => theme.font.color.primary};
- font-size: ${({ theme }) => theme.font.size.lg};
+ color: ${themeCssVariables.font.color.primary};
+ font-size: ${themeCssVariables.font.size.lg};
`;
```
### 3. Spacing
`theme.spacing(N)` is a function; in Linaria it becomes an indexed lookup:
```diff
- margin-top: ${({ theme }) => theme.spacing(3)};
+ margin-top: ${themeCssVariables.spacing[3]};
```
For multi-arg spacing like `theme.spacing(2, 4)``"8px 16px"`:
```diff
- padding: ${({ theme }) => theme.spacing(2, 4)};
+ padding: ${themeCssVariables.spacing[2]} ${themeCssVariables.spacing[4]};
```
The spacing scale covers integers 032 plus `0.5` and `1.5`. Any other
fractional values (`0.25`, `0.75`, `1.25`, `2.5`, `3.5`) must be replaced
with literal pixel values (e.g. `theme.spacing(2.5)``10px`).
### 4. `useTheme` → `useContext(ThemeContext)`
For runtime theme access (icon sizes, animation durations, conditional logic
outside of styled components):
```diff
- import { useTheme } from '@emotion/react';
+ import { useContext } from 'react';
+ import { ThemeContext } from 'twenty-ui/theme';
const MyComponent = () => {
- const theme = useTheme();
+ const { theme } = useContext(ThemeContext);
return <Icon size={theme.icon.size.sm} />;
};
```
### 5. `css` template literal
Linaria's `css` (from `@linaria/core`) returns a **class name string**, not
a serialized style object like Emotion's `css`. This has two consequences:
**Standalone usage** — apply via `className`, not the `css` prop:
```diff
- import { css } from '@emotion/react';
+ import { css } from '@linaria/core';
const myClass = css`
text-decoration: none;
`;
- <Link css={myClass} />
+ <Link className={myClass} />
```
**Inside `styled` templates** — do NOT nest `css` tags. Linaria's `css`
returns a class name, not raw CSS text, so interpolating it inside `styled`
produces broken output. Use plain strings instead:
```diff
// WRONG — css`` returns a class name, not CSS text
${({ handle }) =>
handle === 'left'
- ? css`left: ${themeCssVariables.spacing[1]};`
- : css`right: ${themeCssVariables.spacing[1]};`}
+ ? `left: ${themeCssVariables.spacing[1]};`
+ : `right: ${themeCssVariables.spacing[1]};`}
```
### 6. Interpolation return types
wyw-in-js requires prop interpolation functions to return `string | number`.
They must **never** return `false`, `undefined`, or `null`. Replace
short-circuit `&&` with ternary expressions:
```diff
// WRONG — returns false when condition is false
- ${({ isActive }) => isActive && `background: ${themeCssVariables.color.blue};`}
// CORRECT
+ ${({ isActive }) => isActive ? `background: ${themeCssVariables.color.blue};` : ''}
```
### 7. Block interpolations (multi-declaration returns)
Linaria wraps each interpolation result in a single CSS custom property
(`var(--xxx)`). An interpolation that returns **multiple CSS declarations**
produces invalid CSS. Split into one interpolation per property:
```diff
// WRONG — single interpolation returning multiple declarations
- ${({ divider, theme }) => {
- const border = `1px solid ${theme.border.color.light}`;
- return divider === 'left' ? `border-left: ${border}` : `border-right: ${border}`;
- }}
// CORRECT — one interpolation per property
+ border-left: ${({ divider }) =>
+ divider === 'left' ? `1px solid ${themeCssVariables.border.color.light}` : 'none'};
+ border-right: ${({ divider }) =>
+ divider === 'right' ? `1px solid ${themeCssVariables.border.color.light}` : 'none'};
```
### 8. CSS var + unit concatenation
CSS custom properties can't be concatenated with unit suffixes directly
(`var(--x)px` is invalid). Use `calc()` to attach units:
```diff
- transition: background ${themeCssVariables.animation.duration.instant}s ease;
+ transition: background calc(${themeCssVariables.animation.duration.instant} * 1s) ease;
```
### 9. `styled(Component)` requires `className`
Linaria's `styled(Component)` works by passing a generated `className` to
the wrapped component. The component **must** accept and forward a
`className` prop — otherwise the styles are silently lost. If the component
doesn't support it, either add `className` support or use a wrapper div.
Linaria also does **not** support Emotion's `shouldForwardProp` option.
Custom props on HTML elements are automatically filtered by Linaria's
runtime (via `@emotion/is-prop-valid`). For custom components, all props are
forwarded — ensure the wrapped component ignores unknown props gracefully.
### 10. `type Theme` → `type ThemeType`
```diff
- import { type Theme } from '@emotion/react';
+ import { type ThemeType } from 'twenty-ui/theme';
```
### 11. Framer Motion integration
Linaria doesn't support `styled(motion.div)` — wrapping a motion element
with `styled()` causes the component body to be stripped at build time by
wyw-in-js. Define the styled component first, then wrap with
`motion.create()`:
```tsx
const StyledBarBase = styled.div`
background-color: ${themeCssVariables.font.color.primary};
height: 100%;
`;
const StyledBar = motion.create(StyledBarBase);
```
### 12. Dynamic styles via CSS variables
When a component needs to compute styles from multiple props with complex
branching logic (e.g. combining `variant`, `accent`, `disabled`, `focus`),
Linaria's prop interpolations become unwieldy. Use a `computeDynamicStyles`
helper that returns a `CSSProperties` object injected via `style={}`,
referenced from the static CSS with `var()`:
```tsx
const StyledButton = styled.button`
background: var(--btn-bg);
border-color: var(--btn-border-color);
&:hover { background: var(--btn-hover-bg); }
`;
const dynamicStyles = useMemo(() => {
const s = computeButtonDynamicStyles(variant, accent, ...);
return {
'--btn-bg': s.background,
'--btn-hover-bg': s.hoverBackground,
} as CSSProperties;
}, [variant, accent, ...]);
return <StyledButton style={dynamicStyles} />;
```
### 13. `Global` component
Replace Emotion's `<Global styles={...} />` with standard CSS or the
`ThemeCssVariableInjectorEffect` pattern from twenty-ui.
### 14. `ThemeProvider`
The `BaseThemeProvider` already wraps children with both Emotion's
`ThemeProvider` and Linaria's `ThemeContextProvider`. Once all Emotion usages
are gone, the Emotion `ThemeProvider` wrapper can be removed.
---
## PR Breakdown
Files are grouped to keep each PR around ~100 files with consistent review
surface. We start with the simplest, lowest-risk modules.
### PR 1 (~97 files) — Small standalone modules
Low-risk modules with mostly simple `styled`-only patterns.
| Module | Files |
|---|---|
| spreadsheet-import | 28 |
| billing | 10 |
| views | 14 |
| navigation-menu-item | 14 |
| blocknote-editor | 7 |
| advanced-text-editor | 7 |
| favorites | 7 |
| navigation | 4 |
| information-banner | 3 |
| sign-in-background-mock | 3 |
### PR 2 (~100 files) — Auth, tiny modules, loading, testing, pages (part 1)
| Module | Files |
|---|---|
| auth | 19 |
| action-menu | 3 |
| object-metadata | 3 |
| onboarding | 2 |
| workspace | 2 |
| file | 2 |
| error-handler | 2 |
| front-components | 1 |
| geo-map | 1 |
| hooks | 1 |
| loading | 5 |
| testing | 5 |
| pages (first ~55 files) | ~55 |
### PR 3 (~97 files) — Pages (remaining) + activities + AI
| Module | Files |
|---|---|
| pages (remaining ~16 files) | ~16 |
| activities | 53 |
| ai | 28 |
### PR 4 (~100 files) — Command-menu + workflow (part 1)
| Module | Files |
|---|---|
| command-menu | 53 |
| workflow (first ~47 files) | ~47 |
### PR 5 (~115 files) — Workflow (remaining) + page-layout
| Module | Files |
|---|---|
| workflow (remaining ~32 files) | ~32 |
| page-layout | 83 |
### PR 6 (~100 files) — UI module (part 1)
| Module | Files |
|---|---|
| ui (first ~100 files) | ~100 |
### PR 7 (~85 files) — UI module (remaining) + object-record (start)
| Module | Files |
|---|---|
| ui (remaining ~23 files) | ~23 |
| object-record (first ~62 files) | ~62 |
### PR 8 (~100 files) — Object-record (continued)
| Module | Files |
|---|---|
| object-record (next ~100 files) | ~100 |
### PR 9 (~100 files) — Settings (part 1)
| Module | Files |
|---|---|
| settings (first ~100 files) | ~100 |
### PR 10 (~102 files) — Settings (part 2) + final cleanup
| Module | Files |
|---|---|
| settings (remaining ~102 files) | ~102 |
| css/Global-only file | 1 |
### Post-migration PR — Remove Emotion
Once all PRs are merged:
- Remove `ThemeProvider` from `@emotion/react` in `BaseThemeProvider`
- Remove `@emotion/styled` and `@emotion/react` dependencies
- Remove `@styled/typescript-styled-plugin` from tsconfig
- Clean up any remaining Emotion-related configuration
---
## Risk Assessment
| Risk | Mitigation |
|---|---|
| wyw-in-js evaluates at build time; dynamic expressions may fail | Use `themeCssVariables` for static theme values; pass dynamic values as component props or via `style={}` CSS variables |
| `theme.spacing(N)` function → `themeCssVariables.spacing[N]` index | Pre-computed for integers 032 plus 0.5 and 1.5; other fractional values → literal pixel values |
| `useTheme` used for runtime logic (not just styles) | Replace with `useContext(ThemeContext)`, destructure `{ theme }` |
| Multi-arg `theme.spacing(a, b, c)` | Split into individual `themeCssVariables.spacing[N]` references |
| `css` tag inside `styled` templates | Linaria `css` returns class name, not CSS text; use plain strings inside `styled` |
| Interpolation returns `false` / `undefined` | wyw-in-js requires `string \| number`; use ternary `? : ''` instead of `&&` |
| Block interpolations (multiple declarations) | Split into one interpolation per CSS property |
| `var(--x)px` concatenation | Use `calc(var(--x) * 1px)` |
| `styled(motion.div)` stripped by wyw-in-js | Use `motion.create(StyledBase)` pattern |
| `styled(Component)` with no `className` prop | Add `className` support to wrapped component or use wrapper div |
| Complex multi-prop style branching | Use `computeDynamicStyles` + `style={}` + `var()` references |
---
## Validation Checklist (per PR)
- [ ] `npx nx lint:diff-with-main twenty-front` passes
- [ ] `npx nx typecheck twenty-front` passes
- [ ] `npx nx test twenty-front` passes
- [ ] Visual spot-check of affected components in the app
- [ ] No remaining `@emotion/styled` or `@emotion/react` imports in migrated files
@@ -15,7 +15,6 @@ const jestConfig = {
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^package.json$': '<rootDir>/package.json',
},
moduleFileExtensions: ['ts', 'js'],
extensionsToTreatAsEsm: ['.ts'],
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "0.6.3",
"version": "0.6.2",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -27,5 +27,5 @@
"~/*": ["./*"]
}
},
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts", "**/*.integration-test.ts"]
}
@@ -0,0 +1,13 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
testTimeout: 120_000,
hookTimeout: 120_000,
include: ['src/**/*.integration-test.ts'],
env: {
NODE_ENV: 'integration',
TWENTY_API_URL: 'http://localhost:3000',
},
},
});
@@ -115,6 +115,7 @@ export class CreateAppCommand {
includeExampleView: false,
includeExampleNavigationMenuItem: false,
includeExampleSkill: false,
includeIntegrationTest: false,
};
}
@@ -127,6 +128,7 @@ export class CreateAppCommand {
includeExampleView: true,
includeExampleNavigationMenuItem: true,
includeExampleSkill: true,
includeIntegrationTest: true,
};
}
@@ -171,19 +173,32 @@ export class CreateAppCommand {
value: 'skill',
checked: true,
},
{
name: 'Integration test (vitest test verifying app installation)',
value: 'integrationTest',
checked: true,
},
],
},
]);
const includeField = selectedExamples.includes('field');
const includeView = selectedExamples.includes('view');
const includeIntegrationTest =
selectedExamples.includes('integrationTest');
const includeObject =
selectedExamples.includes('object') || includeField || includeView;
selectedExamples.includes('object') ||
includeField ||
includeView ||
includeIntegrationTest;
if ((includeField || includeView) && !selectedExamples.includes('object')) {
if (
(includeField || includeView || includeIntegrationTest) &&
!selectedExamples.includes('object')
) {
console.log(
chalk.yellow(
'Note: Example object auto-included because example field/view depends on it.',
'Note: Example object auto-included because example field/view/integration test depends on it.',
),
);
}
@@ -197,6 +212,7 @@ export class CreateAppCommand {
includeExampleNavigationMenuItem:
selectedExamples.includes('navigationMenuItem'),
includeExampleSkill: selectedExamples.includes('skill'),
includeIntegrationTest,
};
}
@@ -8,4 +8,5 @@ export type ExampleOptions = {
includeExampleView: boolean;
includeExampleNavigationMenuItem: boolean;
includeExampleSkill: boolean;
includeIntegrationTest: boolean;
};
@@ -4,7 +4,6 @@ import { copyBaseApplicationProject } from '@/utils/app-template';
import * as fs from 'fs-extra';
import { tmpdir } from 'os';
import { join } from 'path';
import createTwentyAppPackageJson from 'package.json';
jest.mock('fs-extra', () => {
const actual = jest.requireActual('fs-extra');
@@ -25,6 +24,7 @@ const ALL_EXAMPLES: ExampleOptions = {
includeExampleView: true,
includeExampleNavigationMenuItem: true,
includeExampleSkill: true,
includeIntegrationTest: true,
};
const NO_EXAMPLES: ExampleOptions = {
@@ -35,6 +35,7 @@ const NO_EXAMPLES: ExampleOptions = {
includeExampleFrontComponent: false,
includeExampleView: false,
includeExampleNavigationMenuItem: false,
includeIntegrationTest: false,
};
describe('copyBaseApplicationProject', () => {
@@ -89,9 +90,7 @@ describe('copyBaseApplicationProject', () => {
const packageJson = await fs.readJson(packageJsonPath);
expect(packageJson.name).toBe('my-test-app');
expect(packageJson.version).toBe('0.1.0');
expect(packageJson.devDependencies['twenty-sdk']).toBe(
createTwentyAppPackageJson.version,
);
expect(packageJson.dependencies['twenty-sdk']).toBe('latest');
expect(packageJson.scripts['twenty']).toBe('twenty');
});
@@ -355,6 +354,12 @@ describe('copyBaseApplicationProject', () => {
),
).toBe(true);
expect(
await fs.pathExists(
join(srcPath, '__tests__', 'app-install.integration-test.ts'),
),
).toBe(true);
// Install functions should always exist
expect(
await fs.pathExists(
@@ -428,6 +433,11 @@ describe('copyBaseApplicationProject', () => {
),
),
).toBe(false);
expect(
await fs.pathExists(
join(srcPath, '__tests__', 'app-install.integration-test.ts'),
),
).toBe(false);
});
});
@@ -446,6 +456,7 @@ describe('copyBaseApplicationProject', () => {
includeExampleFrontComponent: true,
includeExampleView: false,
includeExampleNavigationMenuItem: false,
includeIntegrationTest: false,
},
});
@@ -483,6 +494,7 @@ describe('copyBaseApplicationProject', () => {
includeExampleFrontComponent: false,
includeExampleView: false,
includeExampleNavigationMenuItem: false,
includeIntegrationTest: false,
},
});
@@ -738,6 +750,76 @@ describe('copyBaseApplicationProject', () => {
});
});
describe('integration test', () => {
it('should create app-install.integration-test.ts with correct structure when enabled', async () => {
await copyBaseApplicationProject({
appName: 'my-test-app',
appDisplayName: 'My Test App',
appDescription: 'A test application',
appDirectory: testAppDirectory,
exampleOptions: ALL_EXAMPLES,
});
const testPath = join(
testAppDirectory,
'src',
'__tests__',
'app-install.integration-test.ts',
);
expect(await fs.pathExists(testPath)).toBe(true);
const content = await fs.readFile(testPath, 'utf8');
expect(content).toContain(
"import { appBuild, appUninstall } from 'twenty-sdk/cli'",
);
expect(content).toContain(
"import { MetadataApiClient } from 'twenty-sdk/generated'",
);
expect(content).toContain('assertServerIsReachable');
expect(content).toContain('appBuild');
expect(content).toContain('appUninstall');
expect(content).toContain('findManyApplications');
});
it('should include vitest and test scripts in package.json when enabled', async () => {
await copyBaseApplicationProject({
appName: 'my-test-app',
appDisplayName: 'My Test App',
appDescription: 'A test application',
appDirectory: testAppDirectory,
exampleOptions: ALL_EXAMPLES,
});
const packageJson = await fs.readJson(
join(testAppDirectory, 'package.json'),
);
expect(packageJson.scripts.test).toBe('vitest run');
expect(packageJson.scripts['test:watch']).toBe('vitest');
expect(packageJson.devDependencies.vitest).toBeDefined();
});
it('should not include vitest or test scripts when disabled', async () => {
await copyBaseApplicationProject({
appName: 'my-test-app',
appDisplayName: 'My Test App',
appDescription: 'A test application',
appDirectory: testAppDirectory,
exampleOptions: NO_EXAMPLES,
});
const packageJson = await fs.readJson(
join(testAppDirectory, 'package.json'),
);
expect(packageJson.scripts.test).toBeUndefined();
expect(packageJson.scripts['test:watch']).toBeUndefined();
expect(packageJson.devDependencies.vitest).toBeUndefined();
});
});
describe('post-install logic function', () => {
it('should create post-install.ts with definePostInstallLogicFunction and typed payload', async () => {
await copyBaseApplicationProject({
@@ -4,7 +4,6 @@ import { v4 } from 'uuid';
import { ASSETS_DIR } from 'twenty-shared/application';
import { type ExampleOptions } from '@/types/scaffolding-options';
import createTwentyAppPackageJson from 'package.json';
const SRC_FOLDER = 'src';
@@ -23,7 +22,11 @@ export const copyBaseApplicationProject = async ({
}) => {
await fs.copy(join(__dirname, './constants/base-application'), appDirectory);
await createPackageJson({ appName, appDirectory });
await createPackageJson({
appName,
appDirectory,
includeIntegrationTest: exampleOptions.includeIntegrationTest,
});
await createGitignore(appDirectory);
@@ -98,6 +101,14 @@ export const copyBaseApplicationProject = async ({
});
}
if (exampleOptions.includeIntegrationTest) {
await createIntegrationTest({
appDirectory: sourceFolderPath,
fileFolder: '__tests__',
fileName: 'app-install.integration-test.ts',
});
}
await createDefaultPreInstallFunction({
appDirectory: sourceFolderPath,
fileFolder: 'logic-functions',
@@ -147,7 +158,8 @@ generated
# dev
/dist/
.twenty
.twenty/*
!.twenty/output/
# production
/build
@@ -496,6 +508,113 @@ export default defineSkill({
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
};
const createIntegrationTest = async ({
appDirectory,
fileFolder,
fileName,
}: {
appDirectory: string;
fileFolder?: string;
fileName: string;
}) => {
const content = `import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { appBuild, appUninstall } from 'twenty-sdk/cli';
import { MetadataApiClient } from 'twenty-sdk/generated';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
const APP_PATH = path.resolve(__dirname, '../..');
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000';
const readApiKeyFromConfig = (): string | undefined => {
const configPath = path.join(os.homedir(), '.twenty', 'config.json');
if (!fs.existsSync(configPath)) {
return undefined;
}
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
const defaultProfile = config.profiles?.default;
return defaultProfile?.apiKey ?? config.apiKey;
};
const assertServerIsReachable = async () => {
try {
const response = await fetch(\`\${TWENTY_API_URL}/healthz\`);
if (!response.ok) {
throw new Error(\`Server returned \${response.status}\`);
}
} catch {
throw new Error(
\`Twenty server is not reachable at \${TWENTY_API_URL}. \` +
'Make sure the server is running before executing integration tests.',
);
}
};
describe('App installation', () => {
let appInstalled = false;
beforeAll(async () => {
await assertServerIsReachable();
const buildResult = await appBuild({
appPath: APP_PATH,
onProgress: (message: string) => console.log(\`[build] \${message}\`),
});
if (!buildResult.success) {
throw new Error(
\`App build failed: \${buildResult.error?.message ?? 'Unknown error'}\`,
);
}
appInstalled = true;
});
afterAll(async () => {
if (!appInstalled) {
return;
}
const uninstallResult = await appUninstall({ appPath: APP_PATH });
if (!uninstallResult.success) {
console.warn(
\`App uninstall failed: \${uninstallResult.error?.message ?? 'Unknown error'}\`,
);
}
});
it('should find the installed app in the applications list', async () => {
const apiKey = readApiKeyFromConfig();
const metadataClient = new MetadataApiClient({
url: \`\${TWENTY_API_URL}/metadata\`,
headers: {
Authorization: \`Bearer \${apiKey}\`,
},
});
const result = await metadataClient.query({
findManyApplications: {
id: true,
name: true,
universalIdentifier: true,
},
});
expect(result.findManyApplications.length).toBeGreaterThan(0);
});
});
`;
await fs.ensureDir(join(appDirectory, fileFolder ?? ''));
await fs.writeFile(join(appDirectory, fileFolder ?? '', fileName), content);
};
const createApplicationConfig = async ({
displayName,
description,
@@ -527,10 +646,33 @@ export default defineApplication({
const createPackageJson = async ({
appName,
appDirectory,
includeIntegrationTest,
}: {
appName: string;
appDirectory: string;
includeIntegrationTest: boolean;
}) => {
const scripts: Record<string, string> = {
twenty: 'twenty',
lint: 'eslint',
'lint:fix': 'eslint --fix',
};
const devDependencies: Record<string, string> = {
typescript: '^5.9.3',
'@types/node': '^24.7.2',
'@types/react': '^18.2.0',
react: '^18.2.0',
eslint: '^9.32.0',
'typescript-eslint': '^8.50.0',
};
if (includeIntegrationTest) {
scripts.test = 'vitest run';
scripts['test:watch'] = 'vitest';
devDependencies.vitest = '^3.1.1';
}
const packageJson = {
name: appName,
version: '0.1.0',
@@ -541,21 +683,11 @@ const createPackageJson = async ({
yarn: '>=4.0.2',
},
packageManager: 'yarn@4.9.2',
scripts: {
twenty: 'twenty',
lint: 'eslint',
'lint:fix': 'eslint --fix',
},
dependencies: {},
devDependencies: {
'twenty-sdk': createTwentyAppPackageJson.version,
typescript: '^5.9.3',
'@types/node': '^24.7.2',
'@types/react': '^18.2.0',
react: '^18.2.0',
eslint: '^9.32.0',
'typescript-eslint': '^8.50.0',
scripts,
dependencies: {
'twenty-sdk': 'latest',
},
devDependencies,
};
await fs.writeFile(
+1 -2
View File
@@ -11,8 +11,7 @@
"noEmit": true,
"types": ["jest", "node"],
"paths": {
"@/*": ["./src/*"],
"package.json": ["./package.json"]
"@/*": ["./src/*"]
},
"jsx": "react"
},
@@ -1,2 +1,3 @@
.yarn/install-state.gz
.env
.twenty
@@ -13,12 +13,15 @@
"dev": "twenty app dev",
"sync": "twenty app sync",
"uninstall": "twenty app uninstall",
"auth": "twenty auth login"
"auth": "twenty auth login",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"twenty-sdk": "0.2.4"
"twenty-sdk": "portal:../../twenty-sdk"
},
"devDependencies": {
"@types/node": "^24.7.2"
"@types/node": "^24.7.2",
"vitest": "^3.1.1"
}
}
@@ -0,0 +1,118 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { appBuild, appUninstall } from 'twenty-sdk/cli';
import { MetadataApiClient } from 'twenty-sdk/generated';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
const APP_PATH = path.resolve(__dirname, '../..');
const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:3000';
const POST_CARD_OBJECT_UNIVERSAL_IDENTIFIER =
'54b589ca-eeed-4950-a176-358418b85c05';
const readApiKeyFromConfig = (): string | undefined => {
const configPath = path.join(os.homedir(), '.twenty', 'config.json');
if (!fs.existsSync(configPath)) {
return undefined;
}
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
const defaultProfile = config.profiles?.default;
return defaultProfile?.apiKey ?? config.apiKey;
};
const assertServerIsReachable = async () => {
try {
const response = await fetch(`${TWENTY_API_URL}/healthz`);
if (!response.ok) {
throw new Error(`Server returned ${response.status}`);
}
} catch {
throw new Error(
`Twenty server is not reachable at ${TWENTY_API_URL}. ` +
'Make sure the server is running before executing integration tests.',
);
}
};
describe('Hello World app installation', () => {
let appInstalled = false;
beforeAll(async () => {
await assertServerIsReachable();
const buildResult = await appBuild({
appPath: APP_PATH,
onProgress: (message: string) => console.log(`[build] ${message}`),
});
if (!buildResult.success) {
throw new Error(
`App build failed: ${buildResult.error?.message ?? 'Unknown error'}`,
);
}
appInstalled = true;
});
afterAll(async () => {
if (!appInstalled) {
return;
}
const uninstallResult = await appUninstall({ appPath: APP_PATH });
if (!uninstallResult.success) {
console.warn(
`App uninstall failed: ${uninstallResult.error?.message ?? 'Unknown error'}`,
);
}
});
it('should have the postCard object in object metadata after installation', async () => {
const apiKey = readApiKeyFromConfig();
const metadataClient = new MetadataApiClient({
url: `${TWENTY_API_URL}/metadata`,
headers: {
Authorization: `Bearer ${apiKey}`,
},
});
const result = await metadataClient.query({
objects: {
__args: {
paging: { first: 200 },
filter: {},
},
edges: {
node: {
id: true,
universalIdentifier: true,
nameSingular: true,
namePlural: true,
isActive: true,
isCustom: true,
},
},
},
});
const postCardObject = result.objects.edges.find(
(edge) =>
edge.node.universalIdentifier ===
POST_CARD_OBJECT_UNIVERSAL_IDENTIFIER,
);
expect(postCardObject).toMatchObject({
node: {
nameSingular: 'postCard',
namePlural: 'postCards',
isActive: true,
},
});
});
});
@@ -1,67 +1,55 @@
import type {
FunctionConfig,
DatabaseEventPayload,
ObjectRecordCreateEvent,
CronPayload,
import {
defineLogicFunction,
type CronPayload,
type DatabaseEventPayload,
type ObjectRecordCreateEvent,
} from 'twenty-sdk';
import Twenty, { type Person } from '../../generated';
import { CoreApiClient as Twenty, type CoreSchema } from 'twenty-sdk/generated';
type CreateNewPostCardParams =
| { name?: string }
| DatabaseEventPayload<ObjectRecordCreateEvent<Person>>
| DatabaseEventPayload<ObjectRecordCreateEvent<CoreSchema.Person>>
| CronPayload;
export const main = async (params: CreateNewPostCardParams) => {
try {
const client = new Twenty();
const handler = async (params: CreateNewPostCardParams) => {
const client = new Twenty();
const name =
'name' in params
? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const name =
'name' in params
? params.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world'
: 'Hello world';
const createPostCard = await client.mutation({
createPostCard: {
__args: {
data: {
name,
},
const createPostCard = await client.mutation({
createPostCard: {
__args: {
data: {
name,
},
name: true,
id: true,
},
});
name: true,
id: true,
},
});
console.log('createPostCard result', createPostCard);
console.log('createPostCard result', createPostCard);
return createPostCard;
} catch (error) {
console.error(error);
throw error;
}
return createPostCard;
};
export const config: FunctionConfig = {
export default defineLogicFunction({
universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf',
name: 'create-new-post-card',
timeoutSeconds: 2,
triggers: [
{
universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6',
type: 'route',
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: false,
},
{
universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2',
type: 'cron',
pattern: '0 0 1 1 *', // Every year 1st of January
},
{
universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156',
type: 'databaseEvent',
eventName: 'person.created',
},
],
};
handler,
httpRouteTriggerSettings: {
path: '/post-card/create',
httpMethod: 'GET',
isAuthRequired: false,
},
cronTriggerSettings: {
pattern: '0 0 1 1 *',
},
databaseEventTriggerSettings: {
eventName: 'person.created',
},
});
@@ -1,6 +1,6 @@
import { type ApplicationConfig } from 'twenty-sdk';
import { defineApplication } from 'twenty-sdk';
const config: ApplicationConfig = {
export default defineApplication({
universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7',
displayName: 'Hello World',
description: 'A simple hello world app',
@@ -14,6 +14,4 @@ const config: ApplicationConfig = {
},
},
defaultRoleUniversalIdentifier: 'b648f87b-1d26-4961-b974-0908fd991061',
};
export default config;
});
@@ -1,112 +1,89 @@
import { type Note } from '../../generated';
import { defineObject, FieldType } from 'twenty-sdk';
import {
type AddressField,
Field,
FieldType,
type FullNameField,
Object,
OnDeleteAction,
Relation,
RelationType,
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
} from 'twenty-sdk';
const POST_CARD_STATUS = {
DRAFT: 'DRAFT',
SENT: 'SENT',
DELIVERED: 'DELIVERED',
RETURNED: 'RETURNED',
} as const;
enum PostCardStatus {
DRAFT = 'DRAFT',
SENT = 'SENT',
DELIVERED = 'DELIVERED',
RETURNED = 'RETURNED',
}
@Object({
export default defineObject({
universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
nameSingular: 'postCard',
namePlural: 'postCards',
labelSingular: 'Post card',
labelPlural: 'Post cards',
description: ' A post card object',
description: 'A post card object',
icon: 'IconMail',
})
export class PostCard {
@Field({
universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
type: FieldType.TEXT,
label: 'Content',
description: "Postcard's content",
icon: 'IconAbc',
})
content: string;
@Field({
universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
type: FieldType.FULL_NAME,
label: 'Recipient name',
icon: 'IconUser',
})
recipientName: FullNameField;
@Field({
universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
type: FieldType.ADDRESS,
label: 'Recipient address',
icon: 'IconHome',
})
recipientAddress: AddressField;
@Field({
universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
type: FieldType.SELECT,
label: 'Status',
icon: 'IconSend',
defaultValue: `'${PostCardStatus.DRAFT}'`,
options: [
{
value: PostCardStatus.DRAFT,
label: 'Draft',
position: 0,
color: 'gray',
},
{
value: PostCardStatus.SENT,
label: 'Sent',
position: 1,
color: 'orange',
},
{
value: PostCardStatus.DELIVERED,
label: 'Delivered',
position: 2,
color: 'green',
},
{
value: PostCardStatus.RETURNED,
label: 'Returned',
position: 3,
color: 'orange',
},
],
})
status: PostCardStatus;
@Relation({
universalIdentifier: 'c9e2b4f4-b9ad-4427-9b42-9971b785edfe',
type: RelationType.ONE_TO_MANY,
label: 'Notes',
icon: 'IconComment',
inverseSideTargetUniversalIdentifier:
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.note.universalIdentifier,
onDelete: OnDeleteAction.CASCADE,
})
notes: Note[];
@Field({
universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
type: FieldType.DATE_TIME,
label: 'Delivered at',
icon: 'IconCheck',
isNullable: true,
defaultValue: null,
})
deliveredAt?: Date;
}
fields: [
{
universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
type: FieldType.TEXT,
name: 'content',
label: 'Content',
description: "Postcard's content",
icon: 'IconAbc',
},
{
universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac',
type: FieldType.FULL_NAME,
name: 'recipientName',
label: 'Recipient name',
icon: 'IconUser',
},
{
universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266',
type: FieldType.ADDRESS,
name: 'recipientAddress',
label: 'Recipient address',
icon: 'IconHome',
},
{
universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e',
type: FieldType.SELECT,
name: 'status',
label: 'Status',
icon: 'IconSend',
defaultValue: `'${POST_CARD_STATUS.DRAFT}'`,
options: [
{
id: 'a1b2c3d4-0001-4000-8000-000000000001',
value: POST_CARD_STATUS.DRAFT,
label: 'Draft',
position: 0,
color: 'gray',
},
{
id: 'a1b2c3d4-0002-4000-8000-000000000002',
value: POST_CARD_STATUS.SENT,
label: 'Sent',
position: 1,
color: 'orange',
},
{
id: 'a1b2c3d4-0003-4000-8000-000000000003',
value: POST_CARD_STATUS.DELIVERED,
label: 'Delivered',
position: 2,
color: 'green',
},
{
id: 'a1b2c3d4-0004-4000-8000-000000000004',
value: POST_CARD_STATUS.RETURNED,
label: 'Returned',
position: 3,
color: 'orange',
},
],
},
{
universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433',
type: FieldType.DATE_TIME,
name: 'deliveredAt',
label: 'Delivered at',
icon: 'IconCheck',
isNullable: true,
defaultValue: null,
},
],
});
@@ -1,6 +1,6 @@
import { PermissionFlag, type RoleConfig } from 'twenty-sdk';
import { defineRole, PermissionFlag } from 'twenty-sdk';
export const functionRole: RoleConfig = {
export default defineRole({
universalIdentifier: 'b648f87b-1d26-4961-b974-0908fd991061',
label: 'Default function role',
description: 'Default role for function Twenty client',
@@ -14,7 +14,7 @@ export const functionRole: RoleConfig = {
canBeAssignedToApiKeys: false,
objectPermissions: [
{
objectUniversalIdentifier: '9f9882af-170c-4879-b013-f9628b77c050',
objectUniversalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
canReadObjectRecords: true,
canUpdateObjectRecords: true,
canSoftDeleteObjectRecords: false,
@@ -23,11 +23,11 @@ export const functionRole: RoleConfig = {
],
fieldPermissions: [
{
objectUniversalIdentifier: '9f9882af-170c-4879-b013-f9628b77c050',
fieldUniversalIdentifier: 'b2c37dc0-8ae7-470e-96cd-1476b47dfaff',
objectUniversalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05',
fieldUniversalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b',
canReadFieldValue: false,
canUpdateFieldValue: false,
},
],
permissionFlags: [PermissionFlag.APPLICATIONS],
};
});
@@ -0,0 +1,16 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
testTimeout: 120_000,
hookTimeout: 120_000,
include: ['src/**/*.integration-test.ts'],
env: {
// The SDK's ConfigService reads credentials from ~/.twenty/config.json
// but falls back to a temp dir when NODE_ENV=test.
NODE_ENV: 'integration',
// MetadataApiClient defaults to TWENTY_API_URL for its GraphQL endpoint.
TWENTY_API_URL: 'http://localhost:3000',
},
},
});
File diff suppressed because it is too large Load Diff
@@ -1,37 +1,2 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn
# codegen
generated
# testing
/coverage
# dev
/dist/
.twenty
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# typescript
*.tsbuildinfo
.yarn/install-state.gz
.env
@@ -2,6 +2,25 @@
Used to manage billing and telemetry of self-hosted instances
## Requirements
- twenty-cli `npm install -g twenty-cli`
- an `apiKey`. Go to `https://twenty.com/settings/api-webhooks` to generate one
## Install to your Twenty workspace
```bash
twenty auth login
twenty app sync
```
## Environment Variables
This application requires the following environment variables to be set:
- `TWENTY_API_URL`: The Twenty instance API URL where selfHostingUser records will be created
- `TWENTY_API_KEY`: API key for authentication (generate at `/settings/api-webhooks`)
## Features
### Telemetry Webhook
@@ -9,13 +9,26 @@
},
"packageManager": "yarn@4.9.2",
"scripts": {
"twenty": "twenty",
"auth:login": "twenty auth login",
"auth:logout": "twenty auth logout",
"auth:status": "twenty auth status",
"auth:switch": "twenty auth switch",
"auth:list": "twenty auth list",
"app:dev": "twenty app dev",
"app:sync": "twenty app sync",
"entity:add": "twenty entity add",
"function:logs": "twenty function logs",
"function:execute": "twenty function execute",
"app:uninstall": "twenty app uninstall",
"help": "twenty help",
"lint": "eslint",
"lint:fix": "eslint --fix"
},
"dependencies": {
"twenty-sdk": "0.3.1"
},
"devDependencies": {
"@types/node": "^24.7.2",
"twenty-sdk": "0.6.2"
"@types/node": "^24.7.2"
},
"$schema": "https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-cli/src/constants/schemas/appManifest.schema.json",
"universalIdentifier": "a7070f46-3158-4b40-828f-8e6b1febc233"
@@ -0,0 +1,19 @@
import { defineApp } from 'twenty-sdk';
export default defineApp({
universalIdentifier: '94f7db30-59e5-4b09-a5fe-64cd3d4a65b0',
displayName: 'Self Hosting',
description: 'Used to manage billing and telemetry of self-hosted instances',
applicationVariables: {
TWENTY_API_KEY: {
universalIdentifier: 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
description: 'Twenty API key for creating selfHostingUser records',
isSecret: true,
},
TWENTY_API_URL: {
universalIdentifier: 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
description: 'Twenty API URL (e.g., https://api.twenty.com)',
isSecret: false,
},
},
});
@@ -0,0 +1,18 @@
import { FieldType, defineObject } from 'twenty-sdk';
export default defineObject({
universalIdentifier: '06f3fb53-599e-4c6b-9df6-8f731973afd7',
nameSingular: 'selfHostingUser',
namePlural: 'selfHostingUsers',
labelSingular: 'Self Hosting User',
labelPlural: 'Self Hosting Users',
fields: [
{
type: FieldType.EMAILS,
name: 'email',
label: 'Email',
description: 'The email of the self hosting user',
universalIdentifier: 'a4b7892c-431a-4d44-973e-a5481652704f',
},
],
});
@@ -0,0 +1,132 @@
import { defineFunction } from 'twenty-sdk';
import { createClient } from '../../generated';
// TODO: import from twenty-sdk when 0.4.0 is deployed
type ServerlessFunctionEvent<TBody = object> = {
headers: Record<string, string | undefined>;
queryStringParameters: Record<string, string | undefined>;
pathParameters: Record<string, string | undefined>;
body: TBody | null;
isBase64Encoded: boolean;
requestContext: {
http: {
method: string;
path: string;
};
};
};
type TelemetryEventPayload = {
action: string;
timestamp: string;
version: string;
payload: {
userId: string | null;
workspaceId: string | null;
payload?: {
events?: Array<{
userId?: string;
userEmail?: string;
userFirstName?: string;
userLastName?: string;
locale?: string;
serverUrl?: string;
}>;
};
};
};
export const main = async (
params: ServerlessFunctionEvent<TelemetryEventPayload>,
): Promise<{ success: boolean; message: string; error?: string }> => {
try {
const { action, payload } = params.body || {};
if (action !== 'user_signup') {
return {
success: true,
message: `Event type '${action}' ignored`,
};
}
const userEmail =
payload?.payload?.events?.[0]?.userEmail ||
payload?.payload?.events?.[0]?.userId;
if (!userEmail) {
return {
success: false,
message: 'No email found in telemetry event',
error: 'Missing userEmail in payload',
};
}
if (
userEmail.toLowerCase().includes('example') ||
userEmail.toLowerCase().includes('test')
) {
return {
success: true,
message: `Email '${userEmail}' ignored (contains test/example data)`,
};
}
const client = createClient({
url: `${process.env.TWENTY_API_URL}/graphql`,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.TWENTY_API_KEY}`,
},
});
// Create or update selfHostingUser record
const result = await client.mutation({
createSelfHostingUser: {
__args: {
data: {
name:
payload?.payload?.events?.[0]?.userFirstName +
' ' +
payload?.payload?.events?.[0]?.userLastName,
email: {
primaryEmail: userEmail,
additionalEmails: null,
},
},
upsert: true,
},
id: true,
email: {
primaryEmail: true,
},
},
});
return {
success: true,
message: `Self hosting user created/updated: ${result.createSelfHostingUser?.id}`,
};
} catch (error) {
return {
success: false,
message: 'Failed to process telemetry event',
error: error instanceof Error ? error.message : String(error),
};
}
};
export default defineFunction({
universalIdentifier: '10104201-622b-4a5e-9f27-8f2af19b2a3c',
name: 'telemetry-webhook',
timeoutSeconds: 5,
handler: main,
triggers: [
{
universalIdentifier: '7c8e3f5a-9b4c-4d1e-8f2a-1b3c4d5e6f7a',
type: 'route',
path: '/webhook/telemetry',
httpMethod: 'POST',
isAuthRequired: false,
},
],
});
@@ -1,10 +0,0 @@
import { defineApplication } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineApplication({
universalIdentifier: '94f7db30-59e5-4b09-a5fe-64cd3d4a65b0',
displayName: 'Self Hosting',
description: 'Used to manage billing and telemetry of self-hosted instances',
defaultRoleUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.roles.defaultRole.universalIdentifier,
});
@@ -1,120 +0,0 @@
export const UNIVERSAL_IDENTIFIERS = {
objects: {
selfHostingUser: {
universalIdentifier: '06f3fb53-599e-4c6b-9df6-8f731973afd7',
fields: {
name: { universalIdentifier: '682cccbf-9f37-4290-a94c-902c771f61e4' },
email: { universalIdentifier: 'a4b7892c-431a-4d44-973e-a5481652704f' },
personId: {
universalIdentifier: 'b453a43c-1512-48ca-8604-db750ad3ffb8',
},
domain: {
universalIdentifier: '1dfa7d4e-c8f5-4639-b58e-3392a8789f76',
},
userWorkspaceId: {
universalIdentifier: '297a7d6b-e407-4b2d-8c03-8964bc1b7805',
},
userId: {
universalIdentifier: '5c7ba3ce-1473-4e3d-8e7c-31816fcb87d8',
},
locale: {
universalIdentifier: '7b39df37-a22e-4f38-ae77-91cf3ee7c076',
},
serverUrl: {
universalIdentifier: 'f2516b77-2912-4cbb-8838-46ac5a5465d9',
},
serverId: {
universalIdentifier: 'e68a2b15-786d-4e9d-a74d-6d6d577ae721',
},
numberOfEmailsWithSameDomain: {
universalIdentifier: '0bf05db0-6771-4400-91ca-1579ec11e76e',
},
isEnriched: {
universalIdentifier: 'fefe9fd6-23ae-4046-b60b-64d17e9ff7ed',
},
triedToBeEnriched: {
universalIdentifier: 'd32c8cc3-8855-453d-bb7d-9c9c0b3f2128',
},
isPersonalEmail: {
universalIdentifier: 'f4568391-9474-4ed8-8cbb-e36d86e0f5f9',
},
isTwenty: {
universalIdentifier: 'b1acef1f-7c10-47a9-899e-aaca45b36e04',
},
personCity: {
universalIdentifier: 'ca733484-e595-4257-9ca9-9a7802fb8bcb',
},
personCountry: {
universalIdentifier: '18c06357-1b50-4d5b-82cf-1f71f286fbe4',
},
personJobFunction: {
universalIdentifier: '26e7e2c7-ea83-41e0-8c07-1fc2549a3fb4',
},
personJobTitle: {
universalIdentifier: '177908e9-1ca6-4762-9518-0df966d3e9fc',
},
personLinkedIn: {
universalIdentifier: '3515683f-7f9f-4b6d-9b16-614824d277b7',
},
personSeniority: {
universalIdentifier: '8b63855a-5915-4d6a-a6ed-ef7d8f8e5dd1',
},
companyAlexaRank: {
universalIdentifier: '7c61335b-cd4b-4eae-8b02-0db746913e36',
},
companyAnnualRevenue: {
universalIdentifier: 'a2367973-aa12-42c2-9577-fe868f61b83b',
},
companyAnnualRevenuePrinted: {
universalIdentifier: 'bc02b6af-8f48-4fde-920d-1fd3e2a8557b',
},
companyDescription: {
universalIdentifier: 'a9bb622e-56b6-42ba-8b03-17a47d707409',
},
companyEmployees: {
universalIdentifier: '8e1dbc58-d444-470f-b8fe-9eed8da4b59e',
},
companyFoundedYear: {
universalIdentifier: '3cf95527-5064-43ab-bf5e-421eb45fac5f',
},
companyFundingLatestStage: {
universalIdentifier: 'a7dcd92a-6811-490b-a8dd-fad1c19091a1',
},
companyFundingTotalAmount: {
universalIdentifier: '6fca8a11-b49a-4081-a7c9-9646f43ad7aa',
},
companyFundingTotalAmountPrinted: {
universalIdentifier: '0078f0f0-2262-4c74-aaf8-4061c6c8a1f3',
},
companyIndustries: {
universalIdentifier: '6b971b9c-6ef5-4497-989e-f9a7c72720cf',
},
companyIndustry: {
universalIdentifier: 'ab84e651-d35b-4e02-8d69-1740af3e22f7',
},
companyLinkedIn: {
universalIdentifier: '4c44b956-f880-434f-b4cd-854b82076e56',
},
companyName: {
universalIdentifier: '1a25412b-f9ce-4406-ac53-f20d1ab8c5ea',
},
companyTags: {
universalIdentifier: 'ceb64d0b-1203-4c6d-af00-39b668f5f891',
},
companyTech: {
universalIdentifier: '11dd57c3-06bb-4722-bb65-96d0a899ca91',
},
},
},
},
roles: {
defaultRole: {
universalIdentifier: '66972e19-9fdb-4336-87ce-442a17fd179c',
},
},
views: {
selfHostingUserView: {
universalIdentifier: 'e903f0ee-52cb-4537-aca8-8940e30b023d',
},
},
};
@@ -1,29 +0,0 @@
import {
defineField,
FieldType,
RelationType,
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
} from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export const SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER =
'9507f244-fdea-47d5-a734-725d4dae43da';
export default defineField({
universalIdentifier: SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER,
name: 'selfHostingUsers',
label: 'Self hosting users',
description: 'Self hosting user related to the person',
type: FieldType.RELATION,
relationTargetFieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
relationTargetObjectMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
objectUniversalIdentifier:
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
isNullable: true,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -1,94 +0,0 @@
import {
defineLogicFunction,
type DatabaseEventPayload,
type ObjectRecordCreateEvent,
type ObjectRecordUpdateEvent,
} from 'twenty-sdk';
import { SELF_HOSTING_USER_NAME_SINGULAR } from 'src/objects/selfHostingUser.object';
import { type SelfHostingUser } from 'twenty-sdk/generated/core';
import { CoreApiClient } from 'twenty-sdk/generated';
const handler = async (
params: DatabaseEventPayload<
| ObjectRecordCreateEvent<SelfHostingUser>
| ObjectRecordUpdateEvent<SelfHostingUser>
>,
) => {
const [object, action] = params.name.split('.');
if (object !== SELF_HOSTING_USER_NAME_SINGULAR) {
return;
}
if (!['created', 'updated'].includes(action)) {
return;
}
const email = params.properties.after.email?.primaryEmail;
if (!email) {
return;
}
const client = new CoreApiClient();
const { people } = await client.query({
people: {
edges: { node: { id: true } },
__args: {
filter: {
emails: {
primaryEmail: { eq: email },
},
},
},
},
});
let personId = people?.edges[0]?.node?.id;
if (!personId) {
const { createPerson } = await client.mutation({
createPerson: {
__args: {
data: {
name: {
firstName: params.properties.after.name?.firstName,
lastName: params.properties.after.name?.lastName,
},
emails: {
primaryEmail: email,
},
},
},
id: true,
},
});
personId = createPerson?.id;
}
await client.mutation({
updateSelfHostingUser: {
__args: {
id: params.properties.after.id,
data: {
personId,
},
},
id: true,
},
});
};
export default defineLogicFunction({
universalIdentifier: '87f0293a-997a-4c7b-85e2-e77462ccf0c5',
name: 'match-telemetry-event-with-people',
description:
'Matches self hosting users with existing people based on email address',
timeoutSeconds: 10,
handler,
databaseEventTriggerSettings: {
eventName: `${SELF_HOSTING_USER_NAME_SINGULAR}.*`,
},
});
@@ -1,136 +0,0 @@
import { defineLogicFunction, type RoutePayload } from 'twenty-sdk';
import { CoreApiClient } from 'twenty-sdk/generated';
import { type TelemetryEvent } from 'src/logic-functions/types/telemetry-event.type';
export const main = async (
params: RoutePayload<TelemetryEvent>,
): Promise<{
success: boolean;
message: string;
error?: string;
}> => {
try {
const {
action,
workspaceId,
userWorkspaceId,
userId,
userEmail,
userFirstName,
userLastName,
locale,
serverUrl,
serverId,
} = params.body || {};
if (action !== 'user_signup') {
return {
success: true,
message: `Event type '${action}' ignored`,
};
}
if (!userEmail) {
return {
success: true,
message: 'No email found in telemetry event',
};
}
if (
userEmail.toLowerCase().includes('example') ||
userEmail.toLowerCase().includes('test')
) {
return {
success: true,
message: `Email '${userEmail}' ignored (contains test/example data)`,
};
}
const client = new CoreApiClient();
let existingSelfHostingUserId: string | undefined = undefined;
try {
const { selfHostingUser: existingSelfHostingUser } = await client.query({
selfHostingUser: {
__args: {
filter: {
email: { primaryEmail: { eq: userEmail } },
},
},
id: true,
},
});
existingSelfHostingUserId = existingSelfHostingUser?.id;
} catch {
//
}
if (existingSelfHostingUserId) {
await client.mutation({
updateSelfHostingUser: {
__args: {
id: existingSelfHostingUserId,
data: {
name: { firstName: userFirstName, lastName: userLastName },
email: { primaryEmail: userEmail, additionalEmails: null },
userWorkspaceId,
userId,
locale,
serverUrl,
serverId,
},
},
id: true,
},
});
return {
success: true,
message: `Self hosting user ${existingSelfHostingUserId} updated`,
};
}
const { createSelfHostingUser } = await client.mutation({
createSelfHostingUser: {
__args: {
data: {
name: { firstName: userFirstName, lastName: userLastName },
email: { primaryEmail: userEmail, additionalEmails: null },
workspaceId,
userWorkspaceId,
userId,
locale,
serverUrl,
serverId,
},
},
id: true,
},
});
return {
success: true,
message: `Self hosting user ${createSelfHostingUser?.id} created`,
};
} catch (error) {
return {
success: false,
message: 'Failed to process telemetry event',
error: error instanceof Error ? error.message : String(error),
};
}
};
export default defineLogicFunction({
universalIdentifier: '10104201-622b-4a5e-9f27-8f2af19b2a3c',
name: 'telemetry-webhook',
timeoutSeconds: 10,
handler: main,
httpRouteTriggerSettings: {
path: '/webhook/telemetry',
httpMethod: 'POST',
isAuthRequired: false,
},
});
@@ -1,12 +0,0 @@
export type TelemetryEvent = {
action: string;
workspaceId?: string;
userWorkspaceId?: string;
userId: string;
userEmail?: string;
userFirstName?: string;
userLastName?: string;
locale?: string;
serverUrl: string;
serverId: string;
};
@@ -1,11 +0,0 @@
import { defineNavigationMenuItem } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineNavigationMenuItem({
universalIdentifier: 'fe3aaca4-9eda-4565-b215-5d268fbf8164',
name: 'Self host user',
icon: 'IconList',
position: 1,
viewUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.views.selfHostingUserView.universalIdentifier,
});
@@ -1,354 +0,0 @@
import {
defineObject,
FieldType,
RelationType,
OnDeleteAction,
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
} from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
import { SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER } from 'src/fields/self-hosting-user-id';
export const SELF_HOSTING_USER_NAME_SINGULAR = 'selfHostingUser';
export default defineObject({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
nameSingular: SELF_HOSTING_USER_NAME_SINGULAR,
namePlural: 'selfHostingUsers',
labelSingular: 'Self Hosting User',
labelPlural: 'Self Hosting Users',
fields: [
{
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
name: 'person',
label: 'Person',
description: 'Person matching with the self hosting user',
type: FieldType.RELATION,
relationTargetFieldMetadataUniversalIdentifier:
SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER,
relationTargetObjectMetadataUniversalIdentifier:
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
isNullable: true,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'personId',
},
},
{
type: FieldType.FULL_NAME,
name: 'name',
label: 'Name',
description: 'Name of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.name
.universalIdentifier,
},
{
type: FieldType.EMAILS,
name: 'email',
label: 'Email',
description: 'The email of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.email
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'domain',
label: 'Domain',
description:
'Domain extracted from the email address (e.g. domain.com / https://domain.com/)',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.domain
.universalIdentifier,
},
{
type: FieldType.UUID,
name: 'userWorkspaceId',
label: 'User workspace Id',
description: 'User workspace id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userWorkspaceId
.universalIdentifier,
},
{
type: FieldType.UUID,
name: 'userId',
label: 'User Id',
description: 'User id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userId
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'locale',
label: 'Locale',
description: 'Locale of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.locale
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'serverUrl',
label: 'Server url',
description: 'Server url of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverUrl
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'serverId',
label: 'Server id',
description: 'Server id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverId
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'numberOfEmailsWithSameDomain',
label: 'Number of Emails with Same Domain',
description:
'Aggregated count of self hosting users sharing the same business domain',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.numberOfEmailsWithSameDomain.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isEnriched',
label: 'Is Enriched',
description: 'Whether the record has been enriched',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isEnriched
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'triedToBeEnriched',
label: 'Tried to Be Enriched',
description: 'Whether an enrichment attempt has been made',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.triedToBeEnriched
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isPersonalEmail',
label: 'Is Personal Email',
description: 'Whether the email is a personal email address',
defaultValue: true,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isPersonalEmail
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isTwenty',
label: 'Is Twenty',
description: 'Whether the user is from Twenty',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isTwenty
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personCity',
label: 'Person City',
description: 'City of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCity
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personCountry',
label: 'Person Country',
description: 'Country of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCountry
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personJobFunction',
label: 'Person Job Function',
description: 'Job function of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobFunction
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personJobTitle',
label: 'Person Job Title',
description: 'Job title of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobTitle
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'personLinkedIn',
label: 'Person LinkedIn',
description: 'LinkedIn profile of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personLinkedIn
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personSeniority',
label: 'Person Seniority',
description: 'Seniority level of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personSeniority
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyAlexaRank',
label: 'Company Alexa Rank',
description: 'Alexa rank of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyAlexaRank
.universalIdentifier,
},
{
type: FieldType.CURRENCY,
name: 'companyAnnualRevenue',
label: 'Company Annual Revenue',
description: 'Annual revenue of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenue.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyAnnualRevenuePrinted',
label: 'Company Annual Revenue Printed',
description: 'Formatted annual revenue of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenuePrinted.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyDescription',
label: 'Company Description',
description: 'Description of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyDescription
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyEmployees',
label: 'Company Employees',
description: 'Number of employees at the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyEmployees
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFoundedYear',
label: 'Company Founded Year',
description: 'Year the company was founded',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyFoundedYear
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFundingLatestStage',
label: 'Company Funding Latest Stage',
description: 'Latest funding stage of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingLatestStage.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyFundingTotalAmount',
label: 'Company Funding Total Amount',
description: 'Total funding amount of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmount.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFundingTotalAmountPrinted',
label: 'Company Funding Total Amount Printed',
description: 'Formatted total funding amount of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmountPrinted.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyIndustries',
label: 'Company Industries',
description: 'Industries the company operates in',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustries
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyIndustry',
label: 'Company Industry',
description: 'Primary industry of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustry
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'companyLinkedIn',
label: 'Company LinkedIn',
description: 'LinkedIn page of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyLinkedIn
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyName',
label: 'Company Name',
description: 'Name of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyName
.universalIdentifier,
},
{
type: FieldType.ARRAY,
name: 'companyTags',
label: 'Company Tags',
description: 'Tags associated with the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTags
.universalIdentifier,
},
{
type: FieldType.ARRAY,
name: 'companyTech',
label: 'Company Tech',
description: 'Technologies used by the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTech
.universalIdentifier,
},
],
});
@@ -1,13 +0,0 @@
import { defineRole } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineRole({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.roles.defaultRole.universalIdentifier,
label: 'default role',
description: 'Add a description for your role',
canReadAllObjectRecords: true,
canUpdateAllObjectRecords: true,
canSoftDeleteAllObjectRecords: true,
canDestroyAllObjectRecords: false,
});
@@ -1,308 +0,0 @@
import { defineView } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineView({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.views.selfHostingUserView.universalIdentifier,
name: 'Self hosting users',
objectUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
icon: 'IconList',
position: 0,
fields: [
{
universalIdentifier: '243a2401-cd13-440c-8dcd-649e26df36bc',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.name
.universalIdentifier,
position: 0,
isVisible: true,
size: 150,
},
{
universalIdentifier: 'dfa75ef8-d40d-416f-9f1c-3e86edfa9fce',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.email
.universalIdentifier,
position: 1,
isVisible: true,
size: 150,
},
{
universalIdentifier: '15cc9215-eb48-4487-a92e-a25d8e99702f',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.domain
.universalIdentifier,
position: 2,
isVisible: true,
size: 200,
},
{
universalIdentifier: '0f9e4f63-3664-443a-9f06-8a6cc04c1d90',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
position: 2.1,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'dcf88ae8-e71d-452f-b51e-d88cbc6dd273',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userWorkspaceId
.universalIdentifier,
position: 3,
isVisible: true,
},
{
universalIdentifier: 'aad70516-936b-41d1-b6c6-961a22299761',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userId
.universalIdentifier,
position: 4,
isVisible: true,
},
{
universalIdentifier: '8c210eb0-bdda-476e-9f98-42f909872f2a',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.locale
.universalIdentifier,
position: 5,
isVisible: true,
},
{
universalIdentifier: '367abe85-11c4-440f-80a2-663edd6b4231',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverUrl
.universalIdentifier,
position: 6,
isVisible: true,
},
{
universalIdentifier: '32c199d6-ebf3-434b-81b4-e2b59a0518b7',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverId
.universalIdentifier,
position: 6.1,
isVisible: true,
},
{
universalIdentifier: '924ee786-ab93-44be-9d21-941ff9ffe1ac',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.numberOfEmailsWithSameDomain.universalIdentifier,
position: 7,
isVisible: true,
},
{
universalIdentifier: '2feadf3d-e251-4356-add8-7fa70dea5401',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isEnriched
.universalIdentifier,
position: 8,
isVisible: true,
},
{
universalIdentifier: 'de252ae6-c723-4bf7-96cf-d93f5a539f36',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.triedToBeEnriched
.universalIdentifier,
position: 9,
isVisible: true,
},
{
universalIdentifier: 'b121e8e6-b3eb-4f6c-b67e-c7c6d19e1bc5',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isPersonalEmail
.universalIdentifier,
position: 10,
isVisible: true,
},
{
universalIdentifier: '0ada0bcc-8d6b-4df6-bcc1-78ba14cb04e6',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isTwenty
.universalIdentifier,
position: 11,
isVisible: true,
},
{
universalIdentifier: 'ec7c8d51-ea63-41bd-9eb1-995835b94218',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCity
.universalIdentifier,
position: 12,
isVisible: true,
},
{
universalIdentifier: '7522dd84-0d23-48e7-85dd-f0a8d9e275f8',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCountry
.universalIdentifier,
position: 13,
isVisible: true,
},
{
universalIdentifier: '54191cb9-4d5c-466e-affb-d9ba4adeff87',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobFunction
.universalIdentifier,
position: 14,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'ace75fc7-fb20-4e53-a9a2-6a7529befaf0',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobTitle
.universalIdentifier,
position: 15,
isVisible: true,
size: 180,
},
{
universalIdentifier: 'a0b42d61-4553-42eb-aca4-327b9bf9f30e',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personLinkedIn
.universalIdentifier,
position: 16,
isVisible: true,
},
{
universalIdentifier: '74bc7dd2-fe53-4ff4-8778-2768f3439571',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personSeniority
.universalIdentifier,
position: 17,
isVisible: true,
size: 180,
},
{
universalIdentifier: '61b34f41-8d56-472d-ab1e-414703c6ca12',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyAlexaRank
.universalIdentifier,
position: 18,
isVisible: true,
},
{
universalIdentifier: '5bb7d36b-6a73-4832-b41e-f67130a4708f',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenue.universalIdentifier,
position: 19,
isVisible: true,
},
{
universalIdentifier: 'ae6f23ce-006c-41dd-82a1-e9fe7b65bce3',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenuePrinted.universalIdentifier,
position: 20,
isVisible: true,
size: 250,
},
{
universalIdentifier: 'dd2a4728-a743-43bb-b096-9e7bd5125e56',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyDescription
.universalIdentifier,
position: 21,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'ecca02c9-db2e-41e2-b571-b5db75054b56',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyEmployees
.universalIdentifier,
position: 22,
isVisible: true,
},
{
universalIdentifier: '2e76775b-f8b8-4184-8cd3-72d2b93edaa2',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyFoundedYear
.universalIdentifier,
position: 23,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'a7eb002c-6f0c-48ba-a9eb-247c498ad9bd',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingLatestStage.universalIdentifier,
position: 24,
isVisible: true,
size: 240,
},
{
universalIdentifier: '61be97f6-20da-4b2b-861d-32345e0f9953',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmount.universalIdentifier,
position: 25,
isVisible: true,
},
{
universalIdentifier: '55720810-3120-4e76-bcf2-2da9517edbbc',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmountPrinted.universalIdentifier,
position: 26,
isVisible: true,
size: 280,
},
{
universalIdentifier: '01e31752-cbc1-499a-8ecf-504dd402d7e2',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustries
.universalIdentifier,
position: 27,
isVisible: true,
size: 200,
},
{
universalIdentifier: '2e1c8b8b-469b-483e-8348-1fe3d1764e17',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustry
.universalIdentifier,
position: 28,
isVisible: true,
size: 180,
},
{
universalIdentifier: '976cc8ae-6cf8-4c30-8da4-5bf61e799893',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyLinkedIn
.universalIdentifier,
position: 29,
isVisible: true,
},
{
universalIdentifier: '5f0776b3-2849-4b9b-82f0-baa38c6d889d',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyName
.universalIdentifier,
position: 30,
isVisible: true,
},
{
universalIdentifier: '86f0397a-2924-4e5c-a610-3c9ad7bb4923',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTags
.universalIdentifier,
position: 31,
isVisible: true,
},
{
universalIdentifier: '562084f4-1242-4e60-868b-1d9b268a35b0',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTech
.universalIdentifier,
position: 32,
isVisible: true,
},
],
});
@@ -5,14 +5,13 @@
"declaration": true,
"outDir": "./dist",
"rootDir": ".",
"jsx": "react-jsx",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"allowUnreachableCode": false,
"strict": true,
"strictNullChecks": true,
"alwaysStrict": true,
"noImplicitAny": true,
"strictBindCallApply": false,
@@ -27,5 +26,10 @@
"~/*": ["./*"]
}
},
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
"exclude": [
"node_modules",
"dist",
"**/*.test.ts",
"**/*.spec.ts"
]
}
File diff suppressed because it is too large Load Diff
@@ -1,115 +0,0 @@
import { expect, test as base } from '@playwright/test';
import { LoginPage } from '../../lib/pom/loginPage';
const test = base.extend<{ loginPage: LoginPage }>({
loginPage: async ({ page }, use) => {
const loginPage = new LoginPage(page);
await use(loginPage);
},
});
const loginAndSelectWorkspace = async (loginPage: LoginPage, page: any) => {
await page.waitForLoadState('networkidle');
await loginPage.clickLoginWithEmailIfVisible();
await loginPage.typeEmail(process.env.DEFAULT_LOGIN!);
await loginPage.clickContinueButton();
await loginPage.typePassword(process.env.DEFAULT_PASSWORD!);
await page.waitForLoadState('networkidle');
await loginPage.clickSignInButton();
await page.waitForLoadState('networkidle');
const workspaceButton = page.getByText('Apple', { exact: true });
await workspaceButton.waitFor({ state: 'visible', timeout: 15000 }).catch(
() => {
// Single workspace mode — no workspace selection
},
);
if (await workspaceButton.isVisible()) {
await workspaceButton.click();
}
await page.waitForFunction(
() =>
!window.location.href.includes('verify') &&
!window.location.href.includes('welcome'),
{ timeout: 15000 },
);
};
test.describe('Return-to-path after login', () => {
test.use({ storageState: { cookies: [], origins: [] } });
test('should redirect to deep link after login', async ({
page,
loginPage,
}) => {
const deepLink = '/settings/accounts';
await test.step('Navigate to deep link while logged out', async () => {
await page.goto(deepLink);
await page.waitForURL('**/welcome');
await page.waitForLoadState('domcontentloaded');
});
await test.step('Log in and select workspace', async () => {
await loginAndSelectWorkspace(loginPage, page);
});
await test.step(
'Verify redirected to original deep link',
async () => {
await page.waitForURL(`**${deepLink}`, {
timeout: 30000,
waitUntil: 'commit',
});
expect(new URL(page.url()).pathname).toBe(deepLink);
},
);
await test.step(
'Verify return-to-path query param was consumed',
async () => {
const url = new URL(page.url());
expect(url.searchParams.has('returnToPath')).toBe(false);
},
);
});
test('should preserve path with query params across login', async ({
page,
loginPage,
}) => {
const targetPath =
'/authorize?clientId=test-client-id&redirectUrl=https%3A%2F%2Fexample.com%2Fcallback';
await test.step(
'Navigate to path with query params while logged out',
async () => {
await page.goto(targetPath);
await page.waitForURL('**/welcome');
await page.waitForLoadState('domcontentloaded');
},
);
await test.step('Log in and select workspace', async () => {
await loginAndSelectWorkspace(loginPage, page);
});
await test.step(
'Verify redirected to original path with query params',
async () => {
await page.waitForURL('**/authorize**', { timeout: 15000 });
const url = new URL(page.url());
expect(url.pathname).toBe('/authorize');
expect(url.searchParams.get('clientId')).toBe('test-client-id');
expect(url.searchParams.get('redirectUrl')).toBe(
'https://example.com/callback',
);
},
);
});
});
@@ -2485,8 +2485,6 @@ export type MutationAuthorizeAppArgs = {
clientId: Scalars['String'];
codeChallenge?: InputMaybe<Scalars['String']>;
redirectUrl: Scalars['String'];
scope?: InputMaybe<Scalars['String']>;
state?: InputMaybe<Scalars['String']>;
};
@@ -3035,7 +3033,6 @@ export type MutationSaveImapSmtpCaldavAccountArgs = {
export type MutationSendInvitationsArgs = {
emails: Array<Scalars['String']>;
roleId?: InputMaybe<Scalars['UUID']>;
};
@@ -3807,15 +3804,6 @@ export type PostgresCredentials = {
workspaceId: Scalars['UUID'];
};
export type PublicApplicationRegistration = {
__typename?: 'PublicApplicationRegistration';
id: Scalars['UUID'];
logoUrl?: Maybe<Scalars['String']>;
name: Scalars['String'];
oAuthScopes: Array<Scalars['String']>;
websiteUrl?: Maybe<Scalars['String']>;
};
export type PublicDomain = {
__typename?: 'PublicDomain';
createdAt: Scalars['DateTime'];
@@ -3866,7 +3854,7 @@ export type Query = {
eventLogs: EventLogQueryResult;
field: Field;
fields: FieldConnection;
findApplicationRegistrationByClientId?: Maybe<PublicApplicationRegistration>;
findApplicationRegistrationByClientId?: Maybe<ApplicationRegistration>;
findApplicationRegistrationByUniversalIdentifier?: Maybe<ApplicationRegistration>;
findApplicationRegistrationStats: ApplicationRegistrationStats;
findApplicationRegistrationVariables: Array<ApplicationRegistrationVariable>;
@@ -5452,7 +5440,6 @@ export type WorkspaceInvitation = {
email: Scalars['String'];
expiresAt: Scalars['DateTime'];
id: Scalars['UUID'];
roleId?: Maybe<Scalars['UUID']>;
};
export type WorkspaceInviteHashValid = {
@@ -6474,7 +6461,7 @@ export type FindApplicationRegistrationByClientIdQueryVariables = Exact<{
}>;
export type FindApplicationRegistrationByClientIdQuery = { __typename?: 'Query', findApplicationRegistrationByClientId?: { __typename?: 'PublicApplicationRegistration', id: string, name: string, oAuthScopes: Array<string>, websiteUrl?: string | null, logoUrl?: string | null } | null };
export type FindApplicationRegistrationByClientIdQuery = { __typename?: 'Query', findApplicationRegistrationByClientId?: { __typename?: 'ApplicationRegistration', id: string, name: string, oAuthScopes: Array<string>, websiteUrl?: string | null, logoUrl?: string | null } | null };
export type FindApplicationRegistrationStatsQueryVariables = Exact<{
id: Scalars['String'];
@@ -7174,20 +7161,19 @@ export type ResendWorkspaceInvitationMutationVariables = Exact<{
}>;
export type ResendWorkspaceInvitationMutation = { __typename?: 'Mutation', resendWorkspaceInvitation: { __typename?: 'SendInvitations', success: boolean, errors: Array<string>, result: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, roleId?: string | null, expiresAt: string }> } };
export type ResendWorkspaceInvitationMutation = { __typename?: 'Mutation', resendWorkspaceInvitation: { __typename?: 'SendInvitations', success: boolean, errors: Array<string>, result: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, expiresAt: string }> } };
export type SendInvitationsMutationVariables = Exact<{
emails: Array<Scalars['String']> | Scalars['String'];
roleId?: InputMaybe<Scalars['UUID']>;
}>;
export type SendInvitationsMutation = { __typename?: 'Mutation', sendInvitations: { __typename?: 'SendInvitations', success: boolean, errors: Array<string>, result: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, roleId?: string | null, expiresAt: string }> } };
export type SendInvitationsMutation = { __typename?: 'Mutation', sendInvitations: { __typename?: 'SendInvitations', success: boolean, errors: Array<string>, result: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, expiresAt: string }> } };
export type GetWorkspaceInvitationsQueryVariables = Exact<{ [key: string]: never; }>;
export type GetWorkspaceInvitationsQuery = { __typename?: 'Query', findWorkspaceInvitations: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, roleId?: string | null, expiresAt: string }> };
export type GetWorkspaceInvitationsQuery = { __typename?: 'Query', findWorkspaceInvitations: Array<{ __typename?: 'WorkspaceInvitation', id: string, email: string, expiresAt: string }> };
export type DeletedWorkspaceMemberQueryFragmentFragment = { __typename?: 'DeletedWorkspaceMember', id: string, avatarUrl?: string | null, userEmail: string, name: { __typename?: 'FullName', firstName: string, lastName: string } };
@@ -16585,7 +16571,6 @@ export const ResendWorkspaceInvitationDocument = gql`
... on WorkspaceInvitation {
id
email
roleId
expiresAt
}
}
@@ -16619,15 +16604,14 @@ export type ResendWorkspaceInvitationMutationHookResult = ReturnType<typeof useR
export type ResendWorkspaceInvitationMutationResult = Apollo.MutationResult<ResendWorkspaceInvitationMutation>;
export type ResendWorkspaceInvitationMutationOptions = Apollo.BaseMutationOptions<ResendWorkspaceInvitationMutation, ResendWorkspaceInvitationMutationVariables>;
export const SendInvitationsDocument = gql`
mutation SendInvitations($emails: [String!]!, $roleId: UUID) {
sendInvitations(emails: $emails, roleId: $roleId) {
mutation SendInvitations($emails: [String!]!) {
sendInvitations(emails: $emails) {
success
errors
result {
... on WorkspaceInvitation {
id
email
roleId
expiresAt
}
}
@@ -16650,7 +16634,6 @@ export type SendInvitationsMutationFn = Apollo.MutationFunction<SendInvitationsM
* const [sendInvitationsMutation, { data, loading, error }] = useSendInvitationsMutation({
* variables: {
* emails: // value for 'emails'
* roleId: // value for 'roleId'
* },
* });
*/
@@ -16666,7 +16649,6 @@ export const GetWorkspaceInvitationsDocument = gql`
findWorkspaceInvitations {
id
email
roleId
expiresAt
}
}
@@ -52,11 +52,9 @@ jest.mocked(useDefaultHomePagePath).mockReturnValue({
});
jest.mock('@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace');
const setupMockIsOnAWorkspace = (isOnAWorkspace: boolean) => {
jest.mocked(useIsCurrentLocationOnAWorkspace).mockReturnValue({
isOnAWorkspace,
});
};
jest.mocked(useIsCurrentLocationOnAWorkspace).mockReturnValue({
isOnAWorkspace: true,
});
jest.mock('react-router-dom');
const setupMockUseParams = (objectNamePlural?: string) => {
@@ -70,14 +68,12 @@ const setupMockState = (
objectNamePlural?: string,
verifyEmailRedirectPath?: string,
calendarBookingPageId?: string | null,
returnToPath?: string,
) => {
jest
.mocked(useAtomStateValue)
.mockReturnValueOnce(calendarBookingPageId ?? 'mock-calendar-id')
.mockReturnValueOnce([{ namePlural: objectNamePlural ?? '' }])
.mockReturnValueOnce(verifyEmailRedirectPath)
.mockReturnValueOnce(returnToPath ?? '');
.mockReturnValueOnce(verifyEmailRedirectPath);
};
// prettier-ignore
@@ -87,11 +83,9 @@ const testCases: {
isWorkspaceSuspended: boolean;
onboardingStatus: OnboardingStatus | undefined;
res: string | undefined;
isOnAWorkspace?: boolean;
objectNamePluralFromParams?: string;
objectNamePluralFromMetadata?: string;
verifyEmailRedirectPath?: string;
returnToPath?: string;
}[] = [
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: getSettingsPath(SettingsPath.Billing) },
@@ -326,15 +320,6 @@ const testCases: {
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.BOOK_ONBOARDING, res: AppPath.BookCallDecision },
{ loc: AppPath.NotFound, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
// returnToPath: should redirect to saved path instead of defaultHomePagePath
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/authorize?clientId=abc', res: '/authorize?clientId=abc' },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/objects/tasks', res: '/objects/tasks' },
{ loc: AppPath.Index, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, returnToPath: '/settings/api-keys', res: '/settings/api-keys' },
// isOnAWorkspace:false — on default domain, don't redirect to returnToPath or defaultHomePagePath from auth pages
{ loc: AppPath.Verify, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
{ loc: AppPath.SignInUp, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, isOnAWorkspace: false, res: undefined },
];
describe('usePageChangeEffectNavigateLocation', () => {
@@ -345,25 +330,17 @@ describe('usePageChangeEffectNavigateLocation', () => {
onboardingStatus,
isWorkspaceSuspended,
isLoggedIn,
isOnAWorkspace,
objectNamePluralFromParams,
objectNamePluralFromMetadata,
verifyEmailRedirectPath,
returnToPath,
res,
}) => {
setupMockIsMatchingLocation(loc);
setupMockOnboardingStatus(onboardingStatus);
setupMockIsWorkspaceActivationStatusEqualsTo(isWorkspaceSuspended);
setupMockIsLogged(isLoggedIn);
setupMockIsOnAWorkspace(isOnAWorkspace ?? true);
setupMockUseParams(objectNamePluralFromParams);
setupMockState(
objectNamePluralFromMetadata,
verifyEmailRedirectPath,
undefined,
returnToPath,
);
setupMockState(objectNamePluralFromMetadata, verifyEmailRedirectPath);
expect(usePageChangeEffectNavigateLocation()).toEqual(res);
},
@@ -378,10 +355,7 @@ describe('usePageChangeEffectNavigateLocation', () => {
.length) +
['nonExistingObjectInParam', 'existingObjectInParam:false'].length +
['caseWithRedirectionToVerifyEmailRedirectPath', 'caseWithout']
.length +
['returnToPath:verify', 'returnToPath:signInUp', 'returnToPath:index']
.length +
['notOnWorkspace:verify', 'notOnWorkspace:signInUp'].length,
.length,
);
});
});
@@ -1,8 +1,5 @@
import { verifyEmailRedirectPathState } from '@/app/states/verifyEmailRedirectPathState';
import { ONBOARDING_PATHS } from '@/auth/constants/OnboardingPaths';
import { ONGOING_USER_CREATION_PATHS } from '@/auth/constants/OngoingUserCreationPaths';
import { useIsLogged } from '@/auth/hooks/useIsLogged';
import { returnToPathState } from '@/auth/states/returnToPathState';
import { calendarBookingPageIdState } from '@/client-config/states/calendarBookingPageIdState';
import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace';
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
@@ -10,8 +7,6 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { isValidReturnToPath } from '@/auth/utils/isValidReturnToPath';
import { isNonEmptyString } from '@sniptt/guards';
import { useLocation, useParams } from 'react-router-dom';
import { AppPath, SettingsPath } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
@@ -19,12 +14,6 @@ import { WorkspaceActivationStatus } from 'twenty-shared/workspace';
import { OnboardingStatus } from '~/generated-metadata/graphql';
import { isMatchingLocation } from '~/utils/isMatchingLocation';
const readReturnToPathFromUrlSearchParams = (): string | null => {
const value = new URLSearchParams(window.location.search).get('returnToPath');
return value && isValidReturnToPath(value) ? value : null;
};
export const usePageChangeEffectNavigateLocation = () => {
const isLoggedIn = useIsLogged();
const { isOnAWorkspace } = useIsCurrentLocationOnAWorkspace();
@@ -38,6 +27,22 @@ export const usePageChangeEffectNavigateLocation = () => {
const someMatchingLocationOf = (appPaths: AppPath[]): boolean =>
appPaths.some((appPath) => isMatchingLocation(location, appPath));
const onGoingUserCreationPaths = [
AppPath.Invite,
AppPath.SignInUp,
AppPath.VerifyEmail,
AppPath.Verify,
];
const onboardingPaths = [
AppPath.CreateWorkspace,
AppPath.CreateProfile,
AppPath.SyncEmails,
AppPath.InviteTeam,
AppPath.PlanRequired,
AppPath.PlanRequiredSuccess,
AppPath.BookCallDecision,
AppPath.BookCall,
];
const objectNamePlural = useParams().objectNamePlural ?? '';
const objectMetadataItems = useAtomStateValue(objectMetadataItemsState);
@@ -48,15 +53,10 @@ export const usePageChangeEffectNavigateLocation = () => {
verifyEmailRedirectPathState,
);
const returnToPath = useAtomStateValue(returnToPathState);
const resolvedReturnToPath = isNonEmptyString(returnToPath)
? returnToPath
: readReturnToPathFromUrlSearchParams();
if (
(!isLoggedIn || (isLoggedIn && !isOnAWorkspace)) &&
!someMatchingLocationOf([
...ONGOING_USER_CREATION_PATHS,
...onGoingUserCreationPaths,
AppPath.ResetPassword,
])
) {
@@ -135,19 +135,15 @@ export const usePageChangeEffectNavigateLocation = () => {
if (
onboardingStatus === OnboardingStatus.COMPLETED &&
someMatchingLocationOf([
...ONBOARDING_PATHS,
...ONGOING_USER_CREATION_PATHS,
]) &&
someMatchingLocationOf([...onboardingPaths, ...onGoingUserCreationPaths]) &&
!isMatchingLocation(location, AppPath.ResetPassword) &&
isLoggedIn &&
isOnAWorkspace
isLoggedIn
) {
return resolvedReturnToPath ?? defaultHomePagePath;
return defaultHomePagePath;
}
if (isMatchingLocation(location, AppPath.Index) && isLoggedIn) {
return resolvedReturnToPath ?? defaultHomePagePath;
return defaultHomePagePath;
}
if (
@@ -1,12 +1,12 @@
import { styled } from '@linaria/react';
import styled from '@emotion/styled';
import { motion } from 'framer-motion';
import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
import { SKELETON_LOADER_HEIGHT_SIZES } from '@/activities/components/SkeletonLoader';
import { NAVIGATION_DRAWER_CONSTRAINTS } from '@/ui/layout/resizable-panel/constants/NavigationDrawerConstraints';
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
import { useContext } from 'react';
import { ANIMATION, ThemeContext } from 'twenty-ui/theme';
import { useTheme } from '@emotion/react';
import { ANIMATION } from 'twenty-ui/theme';
import { MainNavigationDrawerItemsSkeletonLoader } from '~/loading/components/MainNavigationDrawerItemsSkeletonLoader';
const StyledAnimatedContainer = styled(motion.div)`
@@ -48,7 +48,7 @@ const StyledSkeletonTitleContainer = styled.div`
export const LeftPanelSkeletonLoader = () => {
const isMobile = useIsMobile();
const { theme } = useContext(ThemeContext);
const theme = useTheme();
return (
<StyledAnimatedContainer
@@ -1,8 +1,7 @@
import { SKELETON_LOADER_HEIGHT_SIZES } from '@/activities/components/SkeletonLoader';
import { styled } from '@linaria/react';
import { useContext } from 'react';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
import { ThemeContext } from 'twenty-ui/theme';
const StyledSkeletonContainer = styled.div`
align-items: flex-start;
@@ -21,7 +20,7 @@ export const MainNavigationDrawerItemsSkeletonLoader = ({
title?: boolean;
length: number;
}) => {
const { theme } = useContext(ThemeContext);
const theme = useTheme();
return (
<StyledSkeletonContainer>
@@ -1,19 +1,17 @@
import { SKELETON_LOADER_HEIGHT_SIZES } from '@/activities/components/SkeletonLoader';
import { styled } from '@linaria/react';
import { useContext } from 'react';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
import { ThemeContext } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
const StyledRightDrawerContainer = styled.div`
display: flex;
flex-direction: column;
width: 100%;
padding: ${themeCssVariables.spacing[4]};
padding: ${({ theme }) => theme.spacing(4)};
`;
const StyledSkeletonLoader = () => {
const { theme } = useContext(ThemeContext);
const theme = useTheme();
return (
<SkeletonTheme
@@ -1,12 +1,11 @@
import { SKELETON_LOADER_HEIGHT_SIZES } from '@/activities/components/SkeletonLoader';
import { styled } from '@linaria/react';
import { useContext } from 'react';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
import { BORDER_COMMON, MOBILE_VIEWPORT, ThemeContext } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
import { BORDER_COMMON, MOBILE_VIEWPORT } from 'twenty-ui/theme';
const StyledMainContainer = styled.div`
background: ${themeCssVariables.background.noisy};
background: ${({ theme }) => theme.background.noisy};
box-sizing: border-box;
display: flex;
flex: 1 1 auto;
@@ -23,8 +22,8 @@ const StyledMainContainer = styled.div`
`;
const StyledPanel = styled.div`
background: ${themeCssVariables.background.primary};
border: 1px solid ${themeCssVariables.border.color.medium};
background: ${({ theme }) => theme.background.primary};
border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: ${BORDER_COMMON.radius.md};
height: 100%;
overflow: auto;
@@ -50,7 +49,7 @@ const StyledRightPanelFlexContainer = styled.div`
`;
const StyledSkeletonHeaderLoader = () => {
const { theme } = useContext(ThemeContext);
const theme = useTheme();
return (
<StyledHeaderContainer>
@@ -69,7 +68,7 @@ const StyledSkeletonHeaderLoader = () => {
};
const StyledSkeletonAddLoader = () => {
const { theme } = useContext(ThemeContext);
const theme = useTheme();
return (
<SkeletonTheme
@@ -1,15 +1,14 @@
import { styled } from '@linaria/react';
import styled from '@emotion/styled';
import { useShowAuthModal } from '@/ui/layout/hooks/useShowAuthModal';
import { Modal } from '@/ui/layout/modal/components/Modal';
import { NAVIGATION_DRAWER_CONSTRAINTS } from '@/ui/layout/resizable-panel/constants/NavigationDrawerConstraints';
import { MOBILE_VIEWPORT } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
import { LeftPanelSkeletonLoader } from '~/loading/components/LeftPanelSkeletonLoader';
import { RightPanelSkeletonLoader } from '~/loading/components/RightPanelSkeletonLoader';
const StyledContainer = styled.div`
background: ${themeCssVariables.background.noisy};
background: ${({ theme }) => theme.background.noisy};
box-sizing: border-box;
display: flex;
flex-direction: row;
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} van {totalCount} in {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dag} other {{days} dae}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adres 1"
msgid "Address 2"
msgstr "Adres 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Stel die rolverwante instellings aan"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Toegewys {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Toegewys aan"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Magtiging App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Magtiging toep en blaaier-uitbreidings soos 1Password, Authy, Microsoft Authenticator, ens. genereer eenmalige wagwoorde wat as 'n tweede faktor gebruik word om jou identiteit te verifieer wanneer daar tydens aanmelding daarom gevra word."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Gemagtigde URI"
msgid "Authorized URL copied to clipboard"
msgstr "Gemagtigde URL na knipbord gekopieer"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Verstek landkode"
msgid "Default palette"
msgstr "Verstekpalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Verstekrol"
@@ -4192,7 +4165,6 @@ msgstr "verwyder"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Groepeer"
msgid "Group by"
msgstr "Groepeer volgens"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Opsionele geheim gebruik om die HMAC-handtekening vir webhook-vragte te
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Verwyder veranderlike"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Diensverskaffer Besonderhede"
msgid "Set {placeholderForEmptyCell}"
msgstr "Stel {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Stel 27n verstekrol vir hierdie werksruimte in"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Sommige"
msgid "Some folders"
msgstr "Sommige vouers"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} من {totalCount} في {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, zero {{days} أيام} one {{days} يوم} two {{days} يومان} few {{days} أيام} many {{days} أيام} other {{days} أيام}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "العنوان 1"
msgid "Address 2"
msgstr "العنوان 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "ضبط الإعدادات المتعلقة بالدور"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "معين {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "مُعين إلى"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "تطبيق المصادق"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "تقوم تطبيقات المصادقة وملحقات المتصفح مثل 1Password وAuthy وMicrosoft Authenticator وغيرها بإنشاء كلمات مرور لمرة واحدة يتم استخدامها كعامل ثانٍ للتحقق من هويتك عند المطالبة أثناء تسجيل الدخول."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "معرف URI المرخص"
msgid "Authorized URL copied to clipboard"
msgstr "تم نسخ رابط URL المرخص إلى الحافظة"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "رمز البلد الافتراضي"
msgid "Default palette"
msgstr "لوحة الألوان الافتراضية"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "الدور الافتراضي"
@@ -4192,7 +4165,6 @@ msgstr "حذف"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "مجموعة"
msgid "Group by"
msgstr "المجموعة حسب"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "سر اختياري يُستخدم لحساب توقيع HMAC لأحما
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "إزالة المتغير"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "دور"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "تفاصيل موفر الخدمة"
msgid "Set {placeholderForEmptyCell}"
msgstr "عيّن {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "تعيين دور افتراضي لمساحة العمل هذه"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "بعض"
msgid "Some folders"
msgstr "بعض المجلدات"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} de {totalCount} en {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dia} other {{days} dies}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adreça 1"
msgid "Address 2"
msgstr "Adreça 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Ajusta els paràmetres relacionats amb el rol"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Assignat {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Assignat a"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Aplicació d'autenticació"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Les aplicacions d'autenticació i extensions del navegador com 1Password, Authy, Microsoft Authenticator, etc. generen contrasenyes d'un sol ús que s'utilitzen com a segon factor per verificar la teva identitat quan se't sol·licita durant l'inici de sessió."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "URI autoritzat"
msgid "Authorized URL copied to clipboard"
msgstr "URL autoritzat copiat al porta-retalls"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Codi de país predeterminat"
msgid "Default palette"
msgstr "Paleta predeterminada"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Rol predeterminat"
@@ -4192,7 +4165,6 @@ msgstr "elimina"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Agrupament"
msgid "Group by"
msgstr "Agrupa per"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Secret opcional usat per calcular la signatura HMAC dels càrregues úti
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Elimina la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Detalls del Proveïdor de Serveis"
msgid "Set {placeholderForEmptyCell}"
msgstr "Estableix {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Defineix un rol predeterminat per a aquest espai de treball"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Alguns"
msgid "Some folders"
msgstr "Algunes carpetes"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} z {totalCount} v {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} den} few {{days} dny} many {{days} dnů} other {{days} dnů}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adresa 1"
msgid "Address 2"
msgstr "Adresa 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Upravit nastavení související s rolí"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Přiřazeno {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Přiřazeno"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Autentizační aplikace"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentizační aplikace a prohlížečové rozšíření, jako je 1Password, Authy, Microsoft Authenticator atd., generují jednorázová hesla, která se používají jako druhý faktor k ověření vaší identity během přihlášení."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Autorizované URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autorizovaná URL zkopírována do schránky"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Výchozí číselný kód země"
msgid "Default palette"
msgstr "Výchozí paleta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Výchozí role"
@@ -4192,7 +4165,6 @@ msgstr "smazat"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Skupina"
msgid "Group by"
msgstr "Skupina podle"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Volitelný tajný klíč použitý k výpočtu HMAC podpisu pro údaje w
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Odstranit proměnnou"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "role"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Detaily poskytovatele služby"
msgid "Set {placeholderForEmptyCell}"
msgstr "Nastavit {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Nastavit výchozí roli pro tento pracovní prostor"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Některé"
msgid "Some folders"
msgstr "Některé složky"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} af {totalCount} i {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dag} other {{days} dage}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adresse 1"
msgid "Address 2"
msgstr "Adresse 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Juster de rolle-relaterede indstillinger"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Tildelt {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Tildelt til"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentifikator apps og browserudvidelser som 1Password, Authy, Microsoft Authenticator mv. genererer engangskoder, der bruges som en anden faktor til at bekræfte din identitet, når du bliver bedt om under sign-in."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Autoriseret URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoriseret URL kopieret til udklipsholder"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Standardlandekode"
msgid "Default palette"
msgstr "Standardfarvepalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Standardrolle"
@@ -4192,7 +4165,6 @@ msgstr "slet"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Gruppér efter"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Valgfri hemmelighed brugt til at beregne HMAC-signatur for webhook-indho
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Fjern variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Tjenesteudbyderoplysninger"
msgid "Set {placeholderForEmptyCell}"
msgstr "Angiv {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Indstil en standardrolle for dette arbejdsområde"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Nogle"
msgid "Some folders"
msgstr "Nogle mapper"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13612,11 +13573,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} von {totalCount} in {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} Tag} other {{days} Tage}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adresse 1"
msgid "Address 2"
msgstr "Adresse 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Passen Sie die rollenspezifischen Einstellungen an"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Zugewiesen {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Zugewiesen an"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Authentifikator-App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authentifikator-Apps und Browser-Erweiterungen wie 1Password, Authy, Microsoft Authenticator usw. generieren Einmalpasswörter, die als zweiter Faktor verwendet werden, um Ihre Identität bei der Anmeldung zu verifizieren."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Autorisierte URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autorisierte URL in die Zwischenablage kopiert"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Standard-Ländercode"
msgid "Default palette"
msgstr "Standardpalette"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Standardrolle"
@@ -4192,7 +4165,6 @@ msgstr "löschen"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Gruppieren nach"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Optionales Geheimnis, um die HMAC-Signatur für Webhook-Nutzlasten zu be
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Variable entfernen"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Details des Dienstanbieters"
msgid "Set {placeholderForEmptyCell}"
msgstr "{placeholderForEmptyCell} festlegen"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Legen Sie eine Standardrolle für diesen Arbeitsbereich fest"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Einige"
msgid "Some folders"
msgstr "Einige Ordner"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} από {totalCount} στα {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} ημέρα} other {{days} ημέρες}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Διεύθυνση 1"
msgid "Address 2"
msgstr "Διεύθυνση 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Ρυθμίστε τις ρυθμίσεις που σχετίζονται με τον ρόλο"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Ανατίθεται {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Ανατεθειμένο σε"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Εφαρμογή Ταυτοποίησης"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Οι εφαρμογές ταυτοποίησης και οι επεκτάσεις προγράμματος περιήγησης όπως οι 1Password, Authy, Microsoft Authenticator, κ.λπ., δημιουργούν κωδικούς μιας χρήσης που χρησιμοποιούνται ως δεύτερος παράγοντας για να επαληθεύσουν την ταυτότητά σας όταν σας ζητηθεί στη διασύνδεση."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Εξουσιοδοτημένο URI"
msgid "Authorized URL copied to clipboard"
msgstr "Το εξουσιοδοτημένο URL αντιγράφηκε στο πρόχειρο"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Προεπιλεγμένος Κωδικός Χώρας"
msgid "Default palette"
msgstr "Προεπιλεγμένη παλέτα"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Προεπιλεγμένος Ρόλος"
@@ -4192,7 +4165,6 @@ msgstr "διαγραφή"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Ομάδα"
msgid "Group by"
msgstr "Ομαδοποίηση ανά"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Προαιρετικό μυστικό που χρησιμοποιείτ
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Αφαίρεση μεταβλητής"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "ρόλος"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Λεπτομέρειες Παρόχου Υπηρεσίας"
msgid "Set {placeholderForEmptyCell}"
msgstr "Ορίστε {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Ορίστε έναν προεπιλεγμένο ρόλο για αυτόν τον χώρο εργασίας"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12272,11 +12238,6 @@ msgstr "Μερικά"
msgid "Some folders"
msgstr "Ορισμένοι φάκελοι"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13614,11 +13575,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -207,11 +207,6 @@ msgstr "{currentRank} of {totalCount} in {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} day} other {{days} days}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr "{daysLeft} days"
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -468,11 +463,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr "1 day"
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1144,6 +1134,11 @@ msgstr "Address 1"
msgid "Address 2"
msgstr "Address 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Adjust the role-related settings"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1962,11 +1957,6 @@ msgstr "Assigned {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Assigned to"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2093,11 +2083,6 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr "Authorization failed. Please try again."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2113,11 +2098,6 @@ msgstr "Authorized URI"
msgid "Authorized URL copied to clipboard"
msgstr "Authorized URL copied to clipboard"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr "Authorizing..."
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4092,15 +4072,8 @@ msgstr "Default Country Code"
msgid "Default palette"
msgstr "Default palette"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr "Default role"
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Default Role"
@@ -4187,7 +4160,6 @@ msgstr "delete"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6675,11 +6647,6 @@ msgstr "Group"
msgid "Group by"
msgstr "Group by"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr "Group name"
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9794,6 +9761,7 @@ msgstr "Optional secret used to compute the HMAC signature for webhook payloads"
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10880,7 +10848,6 @@ msgid "Remove variable"
msgstr "Remove variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11099,7 +11066,6 @@ msgid "role"
msgstr "role"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11924,10 +11890,10 @@ msgstr "Service Provider Details"
msgid "Set {placeholderForEmptyCell}"
msgstr "Set {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr "Set a default for this workspace"
msgid "Set a default role for this workspace"
msgstr "Set a default role for this workspace"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12265,11 +12231,6 @@ msgstr "Some"
msgid "Some folders"
msgstr "Some folders"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr "Something went wrong"
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13607,11 +13568,6 @@ msgstr "ul"
msgid "Unable to delete member right now"
msgstr "Unable to delete member right now"
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr "Unable to load application details. Please try again later."
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} de {totalCount} en {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} día} other {{days} días}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Dirección 1"
msgid "Address 2"
msgstr "Dirección 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Ajusta la configuración relacionada con el rol"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Asignado {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Asignado a"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Aplicación de Autenticación"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Las aplicaciones de autenticación y las extensiones de navegador como 1Password, Authy, Microsoft Authenticator, etc., generan contraseñas de un solo uso que se utilizan como un segundo factor para verificar tu identidad cuando se te solicita durante el inicio de sesión."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "URI autorizado"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizada copiada al portapapeles"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Código de país predeterminado"
msgid "Default palette"
msgstr "Paleta predeterminada"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Rol predeterminado"
@@ -4192,7 +4165,6 @@ msgstr "eliminar"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Grupo"
msgid "Group by"
msgstr "Agrupar por"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Secreto opcional utilizado para calcular la firma HMAC de los datos del
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Eliminar variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Detalles del Proveedor de Servicios"
msgid "Set {placeholderForEmptyCell}"
msgstr "Establecer {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Configurar un rol predeterminado para este espacio de trabajo"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Alguno"
msgid "Some folders"
msgstr "Algunas carpetas"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13612,11 +13573,6 @@ msgstr "ul"
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} / {totalCount} joukossa {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} päivä} other {{days} päivää}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Osoite 1"
msgid "Address 2"
msgstr "Osoite 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Säädä rooliin liittyviä asetuksia"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Määritetty {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Määrätty henkilölle"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Todennussovellus"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Todennussovellukset ja selainlaajennukset kuten 1Password, Authy, Microsoft Authenticator, jne. luovat kertakäyttöisiä salasanoja, joita käytetään vaadittaessa toisen tekijän vahvistamiseen kirjautumisen yhteydessä."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Valtuutettu URI"
msgid "Authorized URL copied to clipboard"
msgstr "Valtuutettu URL kopioitu leikepöydälle"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Oletusmaakoodi"
msgid "Default palette"
msgstr "Oletuspaletti"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Oletusrooli"
@@ -4192,7 +4165,6 @@ msgstr "poista"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Ryhmä"
msgid "Group by"
msgstr "Ryhmittäin"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Vaihtoehtoinen salaisuus, jota käytetään HMAC-allekirjoituksen laskem
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Poista muuttuja"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rooli"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Palveluntarjoajan Tiedot"
msgid "Set {placeholderForEmptyCell}"
msgstr "Aseta {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Aseta oletusrooli tälle työtilalle"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Jotkut"
msgid "Some folders"
msgstr "Jotkin kansiot"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} sur {totalCount} dans {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} jour} other {{days} jours}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adresse 1"
msgid "Address 2"
msgstr "Adresse 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Ajuster les paramètres liés au rôle"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Assigné {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Attribué à"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Application d'authentification"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Les applications d'authentification et les extensions de navigateur telles que 1Password, Authy, Microsoft Authenticator, etc. génèrent des mots de passe à usage unique qui sont utilisés comme deuxième facteur pour vérifier votre identité lorsque vous y êtes invité lors de la connexion."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "URI autorisé"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorisée copiée dans le presse-papiers"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Code du pays par défaut"
msgid "Default palette"
msgstr "Palette par défaut"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Rôle par défaut"
@@ -4192,7 +4165,6 @@ msgstr "supprimer"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Groupe"
msgid "Group by"
msgstr "Grouper par"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Secret facultatif utilisé pour calculer la signature HMAC des charges u
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Supprimer la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rôle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Détails du fournisseur de services"
msgid "Set {placeholderForEmptyCell}"
msgstr "Définir {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Définir un rôle par défaut pour cet espace de travail"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Certains"
msgid "Some folders"
msgstr "Certains dossiers"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13612,11 +13573,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} מתוך {totalCount} ב{objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} יום} two {{days} ימים} many {{days} ימים} other {{days} ימים}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "כתובת 1"
msgid "Address 2"
msgstr "כתובת 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "התאם את ההגדרות הקשורות לתפקיד"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "ניתן להקצות את {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "מוקצה ל"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "אפליקציית מאמת"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "אפליקציות מאמת ותוספי דפדפן כמו 1Password, Authy, Microsoft Authenticator, וכו' מייצרים סיסמאות חד-פעמיות המשמשות כגורם שני לאימות זהותכם בעת התחברות."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "כתובת URI מורשית"
msgid "Authorized URL copied to clipboard"
msgstr "כתובת URL המורשית הועתקה ללוח הגזירים"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "קוד מדינה ברירת מחדל"
msgid "Default palette"
msgstr "פלטת ברירת המחדל"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "תפקיד ברירת מחדל"
@@ -4192,7 +4165,6 @@ msgstr "מחק"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "קבוצה"
msgid "Group by"
msgstr "קיבוץ לפי"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "סוד אופציונלי המשמש לחישוב חתימת HMAC עבו
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "הסר משתנה"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "תפקיד"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "פרטי ספק השירות"
msgid "Set {placeholderForEmptyCell}"
msgstr "הגדר {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "קבע תפקיד ברירת מחדל למרחב העבודה הזה"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "חלק"
msgid "Some folders"
msgstr "כמה תיקיות"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank}/{totalCount} a(z) {objectLabelPlural} között"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} nap} other {{days} napok}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Cím 1"
msgid "Address 2"
msgstr "Cím 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Állítsa be a szerepkörhöz kapcsolódó beállításokat"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Hozzárendelve {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Hozzárendelve"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Hitelesítő alkalmazás"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Hitelesítő alkalmazások és böngésző-kiegészítők, mint például a 1Password, Authy, Microsoft Authenticator, stb., egyszeri jelszavakat generálnak, amelyeket második tényezőként használnak fel az azonosításod megerősítésére belépéskor."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Engedélyezett URI"
msgid "Authorized URL copied to clipboard"
msgstr "Engedélyezett URL vágólapra másolva"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Alapértelmezett országkód"
msgid "Default palette"
msgstr "Alapértelmezett paletta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Alapértelmezett szerep"
@@ -4192,7 +4165,6 @@ msgstr "törlés"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Csoport"
msgid "Group by"
msgstr "Csoportosítás"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Opcionális titok az HMAC aláírás kiszámításához a webhook terhel
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Változó eltávolítása"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "szerepkör"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Szolgáltatói adatok"
msgid "Set {placeholderForEmptyCell}"
msgstr "Állítsa be: {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Állítson be egy alapértelmezett szerepkört ehhez a munkaterülethez"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Néhány"
msgid "Some folders"
msgstr "Néhány mappa"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} di {totalCount} in {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} giorno} other {{days} giorni}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Indirizzo 1"
msgid "Address 2"
msgstr "Indirizzo 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Regola le impostazioni relative al ruolo"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Assegnato {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Assegnato a"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "App Authenticator"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Le app di autenticazione e le estensioni del browser come 1Password, Authy, Microsoft Authenticator, ecc. generano password monouso utilizzate come secondo fattore per verificare la tua identità quando richiesto durante l'accesso."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "URI autorizzato"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizzato copiato negli appunti"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Prefisso internazionale predefinito"
msgid "Default palette"
msgstr "Tavolozza predefinita"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Ruolo predefinito"
@@ -4192,7 +4165,6 @@ msgstr "elimina"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Gruppo"
msgid "Group by"
msgstr "Raggruppa per"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Segreto opzionale usato per calcolare la firma HMAC per i payload dei we
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Rimuovi variabile"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "ruolo"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Dettagli del service provider"
msgid "Set {placeholderForEmptyCell}"
msgstr "Imposta {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Imposta un ruolo predefinito per questo spazio di lavoro"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Alcuni"
msgid "Some folders"
msgstr "Alcune cartelle"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13612,11 +13573,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{objectLabelPlural} の {totalCount} 件中 {currentRank}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, other {{days} 日}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "住所 1"
msgid "Address 2"
msgstr "住所 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "役割に関連した設定を調整する"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "{roleTargetDisplayName}を割り当て済み"
msgid "Assigned to"
msgstr "担当"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "認証アプリ"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "1Password、Authy、Microsoft Authenticator などの認証アプリやブラウザー拡張機能は、サインイン時にユーザーの身元確認として使用されるワンタイム パスワードを生成します。"
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "認可されたURI"
msgid "Authorized URL copied to clipboard"
msgstr "認可されたURLがクリップボードにコピーされました"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "デフォルトの国コード"
msgid "Default palette"
msgstr "デフォルトのパレット"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "デフォルト役割"
@@ -4192,7 +4165,6 @@ msgstr "削除"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "グループ"
msgid "Group by"
msgstr "グループ化"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Webhookペイロード用HMAC署名の計算に使用するオプショ
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "変数を削除"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "役割"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "サービスプロバイダーの詳細"
msgid "Set {placeholderForEmptyCell}"
msgstr "{placeholderForEmptyCell} を設定"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "このワークスペースのデフォルトロールを設定する"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "一部"
msgid "Some folders"
msgstr "いくつかのフォルダー"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{objectLabelPlural}에서 {totalCount}개 중 {currentRank}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, other {{days}일}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "주소 1"
msgid "Address 2"
msgstr "주소 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "역할 관련 설정 조정"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "{roleTargetDisplayName} 할당됨"
msgid "Assigned to"
msgstr "할당됨"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "인증 앱"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "1Password, Authy, Microsoft Authenticator 등의 인증 앱과 브라우저 확장 프로그램은 로그인 중 신원 확인 시 두 번째 인증 요소로 사용되는 일회용 비밀번호를 생성합니다."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "승인된 URI"
msgid "Authorized URL copied to clipboard"
msgstr "승인된 URL이 클립보드에 복사되었습니다"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "기본 국가 코드"
msgid "Default palette"
msgstr "기본 팔레트"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "기본 역할"
@@ -4192,7 +4165,6 @@ msgstr "삭제"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "그룹"
msgid "Group by"
msgstr "그룹별"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Webhook 페이로드에 대한 HMAC 서명을 계산하는 데 사용되
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "변수 제거"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "역할"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "서비스 공급자 세부 정보"
msgid "Set {placeholderForEmptyCell}"
msgstr "{placeholderForEmptyCell} 설정"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "이 작업 공간의 기본 역할 설정"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "일부"
msgid "Some folders"
msgstr "일부 폴더"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} van {totalCount} in {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dag} other {{days} dagen}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adres 1"
msgid "Address 2"
msgstr "Adres 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Pas de rolgerelateerde instellingen aan"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Toegewezen {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Toegewezen aan"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authenticator-apps en browserextensies zoals 1Password, Authy, Microsoft Authenticator, enz. genereren eenmalige wachtwoorden die als tweede factor worden gebruikt om uw identiteit te verifiëren wanneer daarom wordt gevraagd tijdens het inloggen."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Geautoriseerde URI"
msgid "Authorized URL copied to clipboard"
msgstr "Geautoriseerde URL gekopieerd naar klembord"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Standaard landcode"
msgid "Default palette"
msgstr "Standaardpalet"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Standaardrol"
@@ -4192,7 +4165,6 @@ msgstr "verwijderen"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Groep"
msgid "Group by"
msgstr "Groeperen op"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Optioneel geheim gebruikt om de HMAC-handtekening voor webhook-payloads
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Variabele verwijderen"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rol"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Serviceprovidergegevens"
msgid "Set {placeholderForEmptyCell}"
msgstr "Stel {placeholderForEmptyCell} in"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Stel een standaardrol in voor deze werkruimte"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Enkele"
msgid "Some folders"
msgstr "Sommige mappen"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13612,11 +13573,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} av {totalCount} i {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dag} other {{days} dager}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adresse 1"
msgid "Address 2"
msgstr "Adresse 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Juster innstillingen relatert til rollen"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Tildelt {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Tilordnet til"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Autentiseringsapp"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentiseringsapper og nettleserutvidelser som 1Password, Authy, Microsoft Authenticator, osv. genererer engangspassord som brukes som en andre faktor for å bekrefte din identitet når du blir bedt om det under pålogging."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Autoriserte URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoriserte URL kopiert til utklippstavlen"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Standardlandkode"
msgid "Default palette"
msgstr "Standardpalett"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Standardrolle"
@@ -4192,7 +4165,6 @@ msgstr "slett"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Grupper etter"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Valgfri hemmelighet brukt for å beregne HMAC-signaturen for webhook-pay
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Fjern variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rolle"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Tjenesteyterens detaljopplysninger"
msgid "Set {placeholderForEmptyCell}"
msgstr "Angi {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Angi en standardrolle for dette arbeidsområdet"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Noen"
msgid "Some folders"
msgstr "Noen mapper"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+9 -53
View File
@@ -212,11 +212,6 @@ msgstr "{currentRank} z {totalCount} w {objectLabelPlural}"
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr "{days, plural, one {{days} dzień} few {{days} dni} many {{days} dni} other {{days} dni}}"
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -473,11 +468,6 @@ msgstr "0"
msgid "0 */1 * * *"
msgstr "0 */1 * * *"
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1149,6 +1139,11 @@ msgstr "Adres 1"
msgid "Address 2"
msgstr "Adres 2"
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr "Dostosuj ustawienia związane z rolą"
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1967,11 +1962,6 @@ msgstr "Przypisano {roleTargetDisplayName}"
msgid "Assigned to"
msgstr "Przypisane do"
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2098,11 +2088,6 @@ msgstr "Aplikacja uwierzytelniająca"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Aplikacje uwierzytelniające i rozszerzenia przeglądarki, takie jak 1Password, Authy, Microsoft Authenticator, itp., generują jednorazowe hasła używane jako drugi czynnik do weryfikacji tożsamości podczas logowania."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2118,11 +2103,6 @@ msgstr "Autoryzowany URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoryzowany URL skopiowany do schowka"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4097,15 +4077,8 @@ msgstr "Domyślny kod kraju"
msgid "Default palette"
msgstr "Domyślna paleta"
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr "Domyślna rola"
@@ -4192,7 +4165,6 @@ msgstr "usuń"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6680,11 +6652,6 @@ msgstr "Grupa"
msgid "Group by"
msgstr "Grupuj według"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9799,6 +9766,7 @@ msgstr "Opcjonalny sekret używany do obliczenia sygnatury HMAC dla ładunków w
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10885,7 +10853,6 @@ msgid "Remove variable"
msgstr "Usuń zmienną"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11104,7 +11071,6 @@ msgid "role"
msgstr "rola"
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11929,10 +11895,10 @@ msgstr "Szczegóły dostawcy usług"
msgid "Set {placeholderForEmptyCell}"
msgstr "Ustaw {placeholderForEmptyCell}"
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgstr ""
msgid "Set a default role for this workspace"
msgstr "Ustaw domyślną rolę dla tego miejsca pracy"
#. js-lingui-id: PPcets
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectFormOptionRow.tsx
@@ -12270,11 +12236,6 @@ msgstr "Niektóre"
msgid "Some folders"
msgstr "Niektóre foldery"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13610,11 +13571,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+8 -52
View File
@@ -207,11 +207,6 @@ msgstr ""
msgid "{days, plural, one {{days} day} other {{days} days}}"
msgstr ""
#. js-lingui-id: Muj+po
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "{daysLeft} days"
msgstr ""
#. js-lingui-id: 0KwX9P
#. placeholder {0}: (1000).toFixed(decimals)
#. placeholder {1}: (1000).toFixed(decimals)
@@ -468,11 +463,6 @@ msgstr ""
msgid "0 */1 * * *"
msgstr ""
#. js-lingui-id: gphxoA
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
msgid "1 day"
msgstr ""
#. js-lingui-id: tEdOxj
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
#: src/pages/settings/accounts/SettingsAccountsConfigurationStepEmail.tsx
@@ -1144,6 +1134,11 @@ msgstr ""
msgid "Address 2"
msgstr ""
#. js-lingui-id: Eis4ey
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Adjust the role-related settings"
msgstr ""
#. js-lingui-id: U3pytU
#: src/modules/settings/members/components/MemberInfosTab.tsx
msgid "Admin"
@@ -1962,11 +1957,6 @@ msgstr ""
msgid "Assigned to"
msgstr ""
#. js-lingui-id: TzM/0+
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Assigned to users who join via invite link, approved domain, or SSO, and used as fallback when an assigned role is deleted"
msgstr ""
#. js-lingui-id: 0dtKl9
#: src/modules/settings/roles/role/components/SettingsRole.tsx
msgid "Assignment"
@@ -2093,11 +2083,6 @@ msgstr ""
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr ""
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2113,11 +2098,6 @@ msgstr ""
msgid "Authorized URL copied to clipboard"
msgstr ""
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4092,15 +4072,8 @@ msgstr ""
msgid "Default palette"
msgstr ""
#. js-lingui-id: v41VX6
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/modules/workspace/components/WorkspaceInviteTeam.tsx
msgid "Default role"
msgstr ""
#. js-lingui-id: CGhRMh
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Default Role"
msgstr ""
@@ -4187,7 +4160,6 @@ msgstr ""
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6675,11 +6647,6 @@ msgstr ""
msgid "Group by"
msgstr ""
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -9794,6 +9761,7 @@ msgstr ""
#. js-lingui-id: 0zpgxV
#: src/modules/ui/layout/dropdown/components/OptionsDropdownMenu.tsx
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
#: src/modules/settings/data-model/object-details/components/tabs/ObjectSettings.tsx
#: src/modules/settings/data-model/fields/forms/select/components/SettingsDataModelFieldSelectForm.tsx
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableFilterDropdown.tsx
@@ -10880,7 +10848,6 @@ msgid "Remove variable"
msgstr ""
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -11099,7 +11066,6 @@ msgid "role"
msgstr ""
#. js-lingui-id: GDvlUT
#: src/pages/settings/members/SettingsWorkspaceMembers.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeysNew.tsx
#: src/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail.tsx
#: src/pages/settings/ai/SettingsAgentForm.tsx
@@ -11924,9 +11890,9 @@ msgstr ""
msgid "Set {placeholderForEmptyCell}"
msgstr ""
#. js-lingui-id: QEVmIH
#. js-lingui-id: YZwx1e
#: src/modules/settings/roles/components/SettingsRolesDefaultRole.tsx
msgid "Set a default for this workspace"
msgid "Set a default role for this workspace"
msgstr ""
#. js-lingui-id: PPcets
@@ -12265,11 +12231,6 @@ msgstr ""
msgid "Some folders"
msgstr ""
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13605,11 +13566,6 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"

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