Compare commits

...
104 Commits
Author SHA1 Message Date
Charles Bochet 9ad35b39ed Bump version 2025-02-27 10:32:34 +01:00
Charles BochetandCharles Bochet db9a906130 Fix field empty value check for Person standard object (#10533)
The previous code was not correct if labelIdentifier is a FULL_NAME.
We already have an util for this

Fixes: https://github.com/twentyhq/twenty/issues/10532
2025-02-27 10:32:08 +01:00
Weiko 218cb798e6 translate = no 2025-02-26 18:03:51 +01:00
Weiko a364692925 Bump version 2025-02-26 18:02:35 +01:00
Weiko 1991f0d3c0 Fix REST API not using metadata cache (#10521) 2025-02-26 18:00:07 +01:00
Charles Bochet ce428985aa Bump version 2025-02-21 18:37:03 +01:00
Charles BochetandGitHub 2039986684 Fix error messages on sign up (#10399)
In this PR:
- adding logs to track workspace creation performance
- refactor useIsWorkspaceSuspended to be more generic
- only fetch favorites and views if workspace is Active to avoid error
messages on sign up (workspace is not created yet)
2025-02-21 18:34:40 +01:00
MarieandGitHub 1ed9de2300 [permission] (fix ) use SettingsPermissions and not SettingsFeatures (#10398)
oops
2025-02-21 17:29:01 +01:00
MarieandGitHub ee2810281e [permissions] Add permission gates on workspace-invitations (#10394)
Adding permission gates on all workspace-invitations endpoints:
sendInvitation, resendInvitation, deleteWorkspaceInvitation,
findWorkspaceInvitations (the latter being from my understanding only
used to list the invitations to then re-send them or detee them).

+ tests on Api & webhooks permission gates
2025-02-21 17:26:01 +01:00
MarieandGitHub 50bd91262f [permissions] Rename enum SettingsFeatures --> SettingsPermissions (#10389) 2025-02-21 16:04:30 +00:00
bf92860d19 feat(twenty-server): add trusted domain - backend crud (#10290)
Co-authored-by: Etienne <45695613+etiennejouan@users.noreply.github.com>
Co-authored-by: Paul Rastoin <45004772+prastoin@users.noreply.github.com>
2025-02-21 16:02:48 +00:00
Lucas BordeauandGitHub 22203bfd3c Removed sort definitions (#10368)
This PR focuses on complete removal of sort definitions.
2025-02-21 16:59:38 +01:00
Charles BochetandGitHub d747366bf3 Provide a wrapper to execute command on workspace with easier devXP (#10391)
Proposal:
- Add a method in ActiveWorkspaceCommand to loop over workspace safely
(add counter, add try / catch, provide datasource with fresh cache,
destroy datasource => as we do always do it)

Also in this PR:
- make sure we clear all dataSources (and not only the one on metadata
version in RAM)
2025-02-21 16:40:33 +01:00
Raphaël BosiandGitHub 7a3e92fe0b Fix command menu selectable items ordering (#10392)
The order of the selectableItems was not the same as the command groups
so the navigation with arrow keys inside the command menu was broken.

Before:


https://github.com/user-attachments/assets/a3487b58-9c26-4522-9e7b-584d30396a21


After:


https://github.com/user-attachments/assets/bd60263b-b4e2-4d41-bad1-eef9115caec6
2025-02-21 16:05:31 +01:00
Félix MalfaitandGitHub ba51c091f0 Improve i18n CI (#10390) 2025-02-21 15:42:01 +01:00
Raphaël BosiandGitHub f269f8b905 Fix autogrow input whitespace bug (#10388)
Also fixed chip alignment.

Before:


https://github.com/user-attachments/assets/7bfe7c73-676a-4dee-b5df-fed15b663267

After:


https://github.com/user-attachments/assets/9060b3cc-051b-41f7-8149-418ed1c223cb
2025-02-21 15:37:07 +01:00
MarieandGitHub 6fb81e757b [permissions] Add conditional permission gate on billing's checkoutSession (#10387)
Following a conversation with @etiennejouan and @martmull, we are adding
a permission gate on billing resolver's checkoutSession, which should
only be accessible to entitled users or at workspace creation (when
there are no roles yet), when the subscription is incomplete
2025-02-21 14:01:36 +00:00
Raphaël BosiandGitHub 0571eb2cf6 Only display record actions inside the RecordIndexActionMenuDropdown (#10384)
In the action menu dropdown, we only want to display the actions for the
selected records, so we need to filter available actions according to
their type and scope.
Note: the `Search record` action was appearing twice because one is a
standard action and one is a fallback action and both are registered in
the available actions. We don't want to display this action because it
isn't related to the selected records, it is a global action.

Before:
<img width="226" alt="Capture d’écran 2025-02-21 à 12 12 53"
src="https://github.com/user-attachments/assets/0a4f9b8c-4e30-4697-9861-559e76dc288f"
/>

After:
<img width="241" alt="Capture d’écran 2025-02-21 à 12 10 34"
src="https://github.com/user-attachments/assets/0a98c9d5-432d-4018-a4d3-bf3a6d0c49be"
/>
2025-02-21 12:29:41 +01:00
EtienneandGitHub 5863c45d4b cleaning workspace job - fix on soft delete condition (#10380)
Context
If the command runs multiple times, soft deleted workspaces are soft
deleted again (+ email spamming)

Solution
Check for soft deletion before entering soft delete condition
2025-02-21 12:12:08 +01:00
WeikoandGitHub 29d079babc [FE] Improve Read-only field behavior (#10382)
Fixes https://github.com/twentyhq/core-team-issues/issues/235
2025-02-21 12:09:52 +01:00
Raphaël BosiandGitHub ec9587414b Fix open record in setting for command menu v1 (#10383)
- Hide open record in settings for command menu version 1 users
- Create a selector to check which version of the command menu the user
has before returning if the record should be opened in the record page
or in the side panel
2025-02-21 12:06:27 +01:00
Charles BochetandGitHub 311fc402d5 Enhance ActiveWorkspaceCommand to order, limit and startFrom workspaceId (#10378)
I have tested it locally with all combinaisons of params
2025-02-21 10:37:04 +01:00
nitinandGitHub 4720afe3fb health status refactor followup fix (#10379) 2025-02-21 10:32:00 +01:00
Raphaël BosiandGitHub 9f454c565b 410 open in side panel (#10363)
Closes https://github.com/twentyhq/core-team-issues/issues/410

- Added `openRecordIn` column in the `view` entity, which is set to
`SIDE_PANEL` by default
- Created a new option inside the view option dropdown to be able to set
`openRecordIn`
- Updated all record show page openings to reflect the setting behavior
- For `workflow`, `workflowVersion` and `workflowRun` (what I call
workflow objects), we want the default view `openRecordIn` to be set to
`RECORD_PAGE`. When seeding the views for the new workspaces, we set
`openRecordIn` to `RECORD_PAGE` for workflow objects. Since the workflow
objects views `openRecordIn` will be set to the default value
`SIDE_PANEL` for the existing workspaces when the sync metadata runs, I
created a script to run in the 0.43 update to update this value.
- Updated `closeCommandMenu` because of problems introduced by the
animate presence wrapper around the command menu. We now reset the
states at the end of the animation.

Note: We want to be able to open all workflow objects pages in the side
panel, but this requires some refactoring of the workflow module. For
now @Bonapara wanted to allow the possibility to change the
`openRecordIn` setting to `SIDE_PANEL` even for the workflows even if
it's buggy and not ready for the moment. Since this is an experimental
feature, it shouldn't cause too many problems.
2025-02-21 09:27:33 +00:00
e301c7856b Add all object level read-only behavior (#10356)
Fixes https://github.com/twentyhq/core-team-issues/issues/427

---------

Co-authored-by: Marie Stoppa <marie.stoppa@essec.edu>
2025-02-21 09:59:47 +01:00
nitinandGitHub c46f7848b7 refactor + new account sync metrics + isolating health status inside folder admin-panel > health-status (#10314)
closes https://github.com/twentyhq/core-team-issues/issues/444
https://github.com/twentyhq/core-team-issues/issues/443
https://github.com/twentyhq/core-team-issues/issues/442
2025-02-21 09:48:47 +01:00
Charles Bochet 41bbb4b47f Fix upgrade command 0.42 2025-02-21 00:20:44 +01:00
Weiko d397981d99 Fix billing page routing 2025-02-20 23:49:16 +01:00
Charles BochetandGitHub 4037fb5860 Fix upgrade command 0.42 (#10373) 2025-02-20 20:22:27 +01:00
WeikoandGitHub c0fda41519 Fix N+1 featureFlags (#10371)
## Context
featureFlag query was done for each record returned by the ORM and
transformed in the QueryResultGettersFactory which was causing an N+1
2025-02-20 19:32:30 +01:00
Baptiste DevessierandGitHub 05d00e6604 Store the current flow definition in a state to not depend on a specific workflow version (#10352)
This PR introduces a new Recoil state to store the flow.

A few parts of the application need to know the definition of the
current flow. Previously, we stored the workflow version's ID and
fetched its definition with the `useWorkflowVersion` hook. However, we
must use another strategy to visualize workflow runs. Indeed, we now
store the definition of the workflow in the workflow run output when it
is executed. This is useful for draft versions, which can change between
the moment they were executed and the moment they are visualized.
2025-02-20 17:12:03 +01:00
EtienneandGitHub d96865abc3 fix deleteCurrentWorkspace resolver output (#10365)
Tests are planned in this sprint - Core priority

closes https://github.com/twentyhq/twenty/issues/10347
2025-02-20 17:09:59 +01:00
Paul RastoinandGitHub 68cb94f365 [BUGFIX] Call and await destroyDataSourceForWorkspace to avoid killing poor pod (#10364)
# Motivations
Upgrade migration is not possible atm in production because running over
all workspaces cause cpu raise leading to pod termination
2025-02-20 16:45:21 +01:00
GuillimGitHubgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
f12bc5e126 Deduplicate-emails (#10361)
last request from @felix

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-02-20 16:34:27 +01:00
MarieandGitHub b2bbf88e28 [permissions] Place lab + billing behind settings/workspace permission gates (#10354) 2025-02-20 15:31:11 +00:00
Lucas BordeauandGitHub 3c80e2601f Add initialization of new record sorts state and added remove record sorts util (#10358)
This PR adds the same synchronization utils and hooks from view to
record sorts, as we did with view and record filters.

The goal is to apply what's in the view sorts only when needed.

Also added tests for those utils and hooks.

We also add useRemoveRecordSorts.
2025-02-20 16:24:02 +01:00
GuillimandGitHub aeb8806f0d replyto-microsoft-fix (#10360)
During QA on main, I realised there was a tiny issue with this new
button for microsoft
2025-02-20 14:49:56 +00:00
GuillimGitHubgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
04a62e9749 Deduplicate-emails (#10355)
Following User request to remove duplicate emails

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-02-20 15:40:49 +01:00
EtienneandGitHub d4aba8d1ff move deletion limit on hard deletion (#10353) 2025-02-20 11:20:58 +01:00
94c0d0f8d2 [BUG] Refactor actor composite type (#10232)
fixes #10200 

The FieldActor Zod schema was updated to correctly handle null context.

---------

Co-authored-by: prastoin <paul@twenty.com>
2025-02-20 11:05:26 +01:00
martmullandGitHub 927b8c717e Poc lambda deployment duration (#10340)
closes https://github.com/twentyhq/core-team-issues/issues/436

## Acheivements
Improve aws lambda deployment time from ~10/15 secs to less that 1 sec

## Done
- migrate with the new code executor architecture for local and lambda
drivers
- support old and new executor architecture to avoid breaking changes
- first run is long, next runs are quick even if code step is updated

## Demo using `lambda` driver
### Before


https://github.com/user-attachments/assets/7f7664b4-658f-4689-8949-ea2c31131252


### After



https://github.com/user-attachments/assets/d486c8e2-f8f8-4dbd-a801-c9901e440b29
2025-02-20 10:49:57 +01:00
Lucas BordeauandGitHub 3f93aba5fc Added parallel code path to set new record sorts state (#10345)
This PR implements a parallel code path to set record sorts without
impacting the actual sort, like we did on record filter.

We add a ViewBarRecordSortEffect which mirrors
ViewBarRecordFilterEffect.

It also adds availableFieldMetadataItemsForSortFamilySelector to replace
sortDefinitions progressively.
2025-02-20 10:40:25 +01:00
316876fcb5 Add files deletion when destroying attachment, workspace or workspaceMember (#10222)
Solution
- update attachment soft delete logic by destroy (seen with Weiko &
Felix)
- add two jobs for file and workspace folder deletion
- add listener to attachment and workspaceMember destroy event -> add
file deletion job
- update logic in deleteWorkspace method -> add wokspace folder deletion
job

closes https://github.com/twentyhq/core-team-issues/issues/147

To go further
- delete old avatar when workspaceMember replaces its avatar
- same with workspace picture

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2025-02-20 09:35:14 +00:00
Paul RastoinandGitHub 422e4e33c0 [BUGFIX][PROD] RICH_TEXT_V2 command handle {} body col value (#10324)
# Introduction
Encountered in issue in production where we have a lot of records that
has RICH_TEXT_FIELD set to `{}`

```sh
[Nest] 20106  - 02/19/2025, 12:43:08 PM     LOG [MigrateRichTextFieldCommand] Generating markdown for 1 records
[Nest] 20106  - 02/19/2025, 12:43:09 PM     LOG [MigrateRichTextFieldCommand] Error in workspace 3b8e6458-5fc1-4e63-8563-008ccddaa6db: TypeError: o is not iterable
```

## Fix
While reading `fieldValue` definition also strictly check if it's `{}` +
checking after JSON parse if it's an iterable to pass to the
`serverBlockNoteEditor` in order to be 100 bullet proof for prod
migration command

## Refactor Dry run
Implemented dry run

## Refactor to Idempotency
Made the script idempotent in order to avoid issues with re-running
commands

## Error repro
- In local checkout on v0.41.5 run `yarn && npx nx reset && npx nx
start`
- Create record manually in db that has a RICH_TEXT body to `{}`
- Checkout to main, `yarn && npx nx reset && npx nx build twenty-server
&& yarn command:prod upgrade-0.42:migrate-rich-text-field -d`
2025-02-20 09:16:58 +00:00
EtienneandGitHub ef9328e2e9 add not found redirection logic if object in url param not exists (#10339)
closes #10150
2025-02-20 09:17:52 +01:00
WeikoandGitHub 65bd1d7775 Role permissions tab should display object permissions from API result (#10344)
## Context
Role all-objects permissions were mocked. Now that the backend returns
it, we are using its values.

<img width="556" alt="Screenshot 2025-02-19 at 18 39 07"
src="https://github.com/user-attachments/assets/9a1c57fd-dc18-43ef-bc2d-be738d1716f5"
/>
2025-02-19 18:58:19 +01:00
WeikoandGitHub 4a2a312efd remove lingui no single variables to translate #2 (#10342) 2025-02-19 18:34:35 +01:00
WeikoandGitHub 202af87be5 Remove no-single-variables-to-translate eslint rule (#10341)
## Context
This rule crashes the FE for some reason, disabling it for now
2025-02-19 18:22:41 +01:00
GuillimandGitHub 78178010f1 following emails logic with intertnal conversaiotn (#10333) 2025-02-19 16:44:09 +00:00
984eeda807 refactor(sso): standardize SSO identity provider query names (#10335)
Updated method, query, and variable names to align with a consistent
naming convention for fetching SSO identity providers. Added
comprehensive unit tests to validate SSO service logic, ensuring better
reliability and maintainability.

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2025-02-19 17:39:31 +01:00
4fd0c28439 i18n - translations (#10334)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-19 17:17:07 +01:00
Lucas BordeauandGitHub 2fc8eaa25b Implement record sort states and record sort context (#10257)
This PR is simple, it creates states for record sort, mirroring record
filter states.

It also implements RecordSortsComponentInstanceContext everywhere
RecordFiltersComponentInstanceContext is used.

This could be later merged into a common RecordContext concept but we
first need to decide how to handle the existing ContextStore and
RecordIndexContext and ideally end up with a unique context (or a
context provider component that wraps in all those contexts at once).

Some bugs are already present on main when trying to delete a sort, they
will be fixed in the next PRs.
2025-02-19 16:51:49 +01:00
2372114f52 i18n - translations (#10332)
Created by Github action

---------

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: github-actions <github-actions@twenty.com>
2025-02-19 16:45:44 +01:00
ad47ab5bcd Display confirmation dialog on connected account deletion (#10323)
![deleteConfirmation](https://github.com/user-attachments/assets/1f0fea78-d02c-4351-b79f-733c08e0e0ec)

Fairly straightforward change, it's my first contribution in this
project so tried to follow the existing patterns.
I couldn't find any component tests or e2e Playwright tests touching
this area to update - happy to write some from scratch if necessary!

Closes #10285

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2025-02-19 16:29:10 +01:00
Félix MalfaitandGitHub 7bf851b29b I18n ci 9 (#10331) 2025-02-19 16:08:31 +01:00
Félix MalfaitandGitHub 3b8647e368 Improve i18n CI - 8 (#10330) 2025-02-19 15:44:34 +01:00
Baptiste DevessierandGitHub 77caf36d90 Fix workflow run ouput format (#10302)
- Adapt the frontend to use the new output format
2025-02-19 15:10:59 +01:00
GuillimandGitHub ad9af65898 internal-messages-backend-and-frontend (#10291)
fixes https://github.com/twentyhq/twenty/issues/10263
fixes https://github.com/twentyhq/twenty/issues/10262 also
2025-02-19 15:02:10 +01:00
GuillimandGitHub 7636def54d typo (#10327)
typo when doing the fix
2025-02-19 13:52:43 +00:00
f9763ff7ac fixing test mainly by @charlesBochet (#10325)
to enable CI to work

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2025-02-19 14:13:30 +01:00
Thomas TrompetteandGitHub d628958905 Remove status check when ending workflow (#10299)
Should be possible to end workflow, not matter what the current status
is.
On failure before the workflow was started, this error prevent the
workflow to be marked as failed with the right error message.
2025-02-19 13:58:32 +01:00
nitinandGitHub d5b04fae28 impersonate regression fix (#10306) 2025-02-19 12:05:40 +01:00
MarieandGitHub 861face2a8 [permissions] Enforce object-records permission checks in resolvers (#10304)
Closes https://github.com/twentyhq/core-team-issues/issues/393

- enforcing object-records permission checks in resolvers for now. we
will move the logic to a lower level asap
- add integration tests that will still be useful when we have moved the
logic
- introduce guest seeded role to test limited permissions on
object-records
2025-02-19 11:21:03 +01:00
Lucas BordeauandGitHub 33178fa8b2 Fix sorts on table and board (#10311)
This PR fixes sorts on table and board.

The sorts were not taken into account due to the recent view refactor
that had the side effect of removing the synchronization between
recordSortsState and changing the state.

The fix was to use combined view sorts instead, which are currently the
source of truth for sorts.

Also added a confirmation modal for manual sorting on board.
2025-02-19 10:57:13 +01:00
MarieandGitHub 645065abba Fix queryRunnerArgsFactory for updateMany resolver (#10322)
This was updated a few weeks ago and went unnoticed since 1) integration
tests were broken + 2) we don't have actionnable updateMany mutations in
the product at the moment

It will fix some tests, at least
all-people-resolvers.integration-spec.ts for instance
2025-02-19 10:09:27 +01:00
Antoine MoreauxGitHubgreptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
c0014cfe96 refactor(domain-manager): improve default workspace resolution (#10282)
Refactor logic for determining the default workspace in single-workspace
mode. Added fallback to Apple workspace when multiple workspaces are
found and updated validations to ensure a workspace is always returned.
Simplified handling of scenarios where multi-workspace mode is enabled.

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-02-19 09:06:34 +00:00
GuillimandGitHub dca4fc1423 [BUGFIX] Reply button opens google (#10269)
fixes https://github.com/twentyhq/twenty/issues/10242
2025-02-19 09:58:50 +01:00
Félix MalfaitandGitHub 248ec4cd6f i18n CI 7 (#10321) 2025-02-19 09:24:01 +01:00
Félix MalfaitandGitHub df3d3a3c0c I18n ci 6 (#10320) 2025-02-19 08:35:07 +01:00
45566fbdb6 i18n - translations (#10319)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-19 07:21:43 +01:00
84eb5fa46a i18n - translations (#10318)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-19 05:20:53 +01:00
dce7f375bc i18n - translations (#10317)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-19 03:44:15 +01:00
46914652b2 i18n - translations (#10316)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-19 01:32:47 +01:00
8d819a1489 i18n - translations (#10315)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 23:20:04 +01:00
Félix MalfaitandGitHub 7f4b5795bf Stop showing lines on translation files (#10313) 2025-02-18 21:21:32 +01:00
9c5b6c844b i18n - translations (#10312)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 21:21:01 +01:00
82acafb843 i18n - translations (#10310)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 19:21:28 +01:00
GuillimandGitHub 8d8bd4a597 feedback from Thomas (#10297)
as required by @bonapara
here :
https://discord.com/channels/1130383047699738754/1341421200739536978/1341421200739536978
2025-02-18 19:05:24 +01:00
GuillimandGitHub 9cdfa3384f fix the missing createdBy icon for Companies (#10307)
fixes the missing icons for createdBy chips on Companies

Refference fo the bug detection :
https://discord.com/channels/1130383047699738754/1341407800424927232/1341407800424927232


<img width="378" alt="Screenshot 2025-02-18 at 17 37 34"
src="https://github.com/user-attachments/assets/8c35ebf4-b946-4674-9f56-290be7c20c4f"
/>
2025-02-18 19:04:07 +01:00
MarieandGitHub 222f475cc6 [permissions] Fix db reset leads to broken state if env var permission is not true (#10309) 2025-02-18 17:25:54 +00:00
Baptiste DevessierandGitHub 804aab6e0b Bring back raw workflow run output visualizer (#10294)
[My last
PR](https://github.com/twentyhq/twenty/pull/10146#issuecomment-2665863910),
which introduced the workflow run visualizer, made it impossible to
debug an execution as it's not complete yet.

In this PR, I'm bringing back the raw output visualizer and hiding the
flow visualizer as it's been broken by the recent change to the output
format.
2025-02-18 18:14:46 +01:00
ded6767dae 0.42 changelog (#10298)
Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2025-02-18 18:11:52 +01:00
EtienneandGitHub af8a167fb2 Update searchVector on new richTextV2 note and task entities + migration command (#10303)
closes https://github.com/twentyhq/core-team-issues/issues/343
closes https://github.com/twentyhq/core-team-issues/issues/340
2025-02-18 18:11:29 +01:00
Raphaël BosiandGitHub aeed1c9f15 406 animate the command menu button (#10305)
Closes https://github.com/twentyhq/core-team-issues/issues/406

- Added animation on the Icon (The dots rotate and transform into an a
cross)
- Introduced a new component `AnimatedButton`. All the button styling
could be extracted to another file so we don't duplicate the code, but
since `AnimatedLightIconButton` duplicates the style from
`LightIconButton`, I did the same here.
- Added an animate presence component on the command menu to have a
smooth transition from `open` to `close` state
- Merged the open and close command menu button
- For all the pages that are not an index page or a record page, we want
the old behavior because there is no button in the page header to open
the command menu

# Before


https://github.com/user-attachments/assets/5ec7d9eb-9d8b-4838-af1b-c04382694342


# After


https://github.com/user-attachments/assets/f700deec-1c52-4afd-b294-f9ee7b9206e9
2025-02-18 18:07:11 +01:00
fef6a7dcee i18n - translations (#10300)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 17:21:14 +01:00
WeikoandGitHub 5cf0a71d12 fix server ci integration (#10296)
Now that the CI is running, I'm trying to fix the tests
2025-02-18 17:01:29 +01:00
d6655a2c3b Health monitor status for admin panel (#10186)
# Health Monitoring for Self-Hosted Instances

This PR implements basic health monitoring for self-hosted instances in
the admin panel.

## Service Status Checks
We're adding real-time health checks for:
- Redis Connection
- Database Connection
- Worker Status
- Message Sync Status

## Existing Functionality
We already have message sync and captcha counters that store aggregated
metrics in cache within a configurable time window (default: 5 minutes).

## New Endpoints
1. `/healthz` - Basic server health check for Kubernetes pod monitoring
2. `/healthz/{serviceName}` - Individual service health checks (returns
200 if healthy)
3. `/metricsz/{metricName}` - Time-windowed metrics (message sync,
captcha)
4. GraphQL resolver in admin panel for UI consumption

All endpoints use the same underlying service, with different
presentation layers for infrastructure and UI needs.

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2025-02-18 15:52:19 +01:00
WeikoandGitHub 2fca60436b Add settingsPermission gate on the frontend (#10179)
## Context
With the new permissions system, we now need to hide some items from the
settings navigation and gate some routes so they can't be accessed
directly.
To avoid having to set permission gates in all the component pages, I'm
introducing wrapper at the route level and in the Navigation. This is
not required and is mostly for pages that are strictly mapped to a
single permission, for the rest we still need to use the different hooks
manually but it should avoid a bit of boilerplate for most of the cases.

- currentUserWorkspaceState to access settingsPermissions
- SettingsProtectedRouteWrapper in the router that can take a
settingFeature or a featureFlag as a gate logic, if the currentUser does
not have access to the settingFeature or the featureFlag is not enabled
they will be redirected to the profile page.
- SettingsNavigationItemWrapper & SettingsNavigationSectionWrapper. The
former will check the same logic as SettingsProtectedRouteWrapper and
not display the item if needed. The later will check if all
SettingsNavigationItemWrapper are not visible and hide itself if that's
the case.
- useHasSettingsPermission to get a specific permission state for the
current user
- useSettingsPermissionMap to get a map of all permissions with their
values for the current user
- useFeatureFlagsMap same but for featureFlags
2025-02-18 15:50:23 +01:00
755d1786fc i18n - translations (#10292)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 15:20:07 +01:00
WeikoandGitHub 0234c8d707 Fix featureFlag N+1 queries (#10261)
## Context
Regression was introduced 3 weeks ago when we added relations v2.
Because the relation logic is recursive during the life of a request, we
were querying the featureFlags many times.

We are now always using the featureFlag map and it's now available in
the base resolver so we don't need to query it everywhere, preferably
passing it as a parameter instead.

Note: We should introduce a cache for featureFlags in the future, this
is something easy to control and invalidate when needed.
2025-02-18 14:43:42 +01:00
Baptiste DevessierandGitHub ade13826c2 Fix e2e tests (#10289)
- Remove the demo test as I don't think it provides much value
- Re-run a test that was discarded because it failed due to a bug;
modified the test so the bug doesn't make the test fail
- Fixed all workflow tests
2025-02-18 14:30:40 +01:00
fb42046033 Refacto views (#10272)
In this huge (sorry!) PR:
- introducing objectMetadataItem in contextStore instead of
objectMetadataId which is more convenient
- splitting some big hooks into smaller parts to avoid re-renders
- removing Effects to avoid re-renders (especially onViewChange)
- making the view prefetch separate from favorites to avoid re-renders
- making the view prefetch load a state and add selectors on top of it
to avoir re-renders

As a result, the performance is WAY better (I suspect the favorite
implementation to trigger a lot of re-renders unfortunately).
However, we are still facing a random app freeze on view creation. I
could not investigate the root cause. As this seems to be already there
in the precedent release, we can move forward but this seems a urgent
follow up to me ==> EDIT: I've found the root cause after a few ours of
deep dive... an infinite loop in RecordTableNoRecordGroupBodyEffect...

prastoin edit: close https://github.com/twentyhq/twenty/issues/10253

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
Co-authored-by: prastoin <paul@twenty.com>
2025-02-18 13:51:07 +01:00
Félix MalfaitandGitHub 103dff4bd0 File previewer (#10260)
Add a file previewer for pdf, image, doc, xls

<img width="991" alt="Screenshot 2025-02-17 at 15 03 10"
src="https://github.com/user-attachments/assets/7516c13d-d6cb-4a10-b10f-b422268d223b"
/>
2025-02-18 10:18:59 +01:00
Raphaël BosiandGitHub 270744eca6 Fix command menu context chip display on show page (#10267)
## New Company
### Before:
<img width="500" alt="Capture d’écran 2025-02-17 à 16 47 54"
src="https://github.com/user-attachments/assets/4573450d-14b1-41f0-9b86-24003f489fde"
/>

### After:
<img width="500" alt="Capture d’écran 2025-02-17 à 16 46 24"
src="https://github.com/user-attachments/assets/6622bd75-900a-451b-ac21-c98bddeee32d"
/>


## Task
### Before:
<img width="500" alt="Capture d’écran 2025-02-17 à 16 47 35"
src="https://github.com/user-attachments/assets/04b77faa-b628-4839-ab94-95c8570c1818"
/>

### After:
<img width="501" alt="Capture d’écran 2025-02-17 à 16 47 03"
src="https://github.com/user-attachments/assets/1577dea6-7541-497e-af6e-3a4559f1a913"
/>
2025-02-18 09:52:25 +01:00
905cfedaf0 i18n - translations (#10279)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 09:21:08 +01:00
5b38059c4d i18n - translations (#10278)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 07:21:23 +01:00
3bebc187fd i18n - translations (#10277)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 05:20:50 +01:00
09f5e230ff i18n - translations (#10276)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 03:43:55 +01:00
3dbd2ec39e i18n - translations (#10275)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-18 01:32:25 +01:00
41ff6aaf89 i18n - translations (#10274)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-17 23:19:50 +01:00
0cb6f35baf i18n - translations (#10273)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-17 21:20:21 +01:00
df30850e82 i18n - translations (#10271)
Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-17 19:21:20 +01:00
Paul RastoinandGitHub cd8e240311 [NITPICK] call closeDropdown before openModal import spreadsheet (#10254)
# Introduction
Just a nitpick resulting from
https://github.com/twentyhq/twenty/pull/10205
Avoid any possible race condition between competing event handlers by
closing dropdown before opening modal
2025-02-17 19:14:46 +01:00
MarieandGitHub cb3bd1353a [permissions] Add object records permissions to role entity (#10255)
Closes https://github.com/twentyhq/core-team-issues/issues/388

- Add object records-related permissions to role entity
- Add it to queriable `currentUserWorkspace` (used in FE)
2025-02-17 18:32:39 +01:00
843 changed files with 66488 additions and 55119 deletions
+1
View File
@@ -10,6 +10,7 @@ module.exports = {
'lingui',
],
rules: {
'lingui/no-single-variables-to-translate': 'off',
'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
'no-console': ['warn', { allow: ['group', 'groupCollapsed', 'groupEnd'] }],
'no-control-regex': 0,
+3 -3
View File
@@ -195,15 +195,15 @@ jobs:
npx nx build twenty-shared
npx nx build twenty-emails
- name: Server / Create Test DB
env:
NODE_ENV: test
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
PG_DATABASE_URL=postgres://postgres:postgres@localhost:5432/test npx nx run twenty-server:database:init:prod
PG_DATABASE_URL=postgres://postgres:postgres@localhost:5432/test npx nx run twenty-server:database:migrate:prod
- name: Server / Run Integration Tests
uses: ./.github/workflows/actions/nx-affected
with:
tag: scope:backend
tasks: 'test:integration --configuration=with-db-reset'
tasks: 'test:integration:with-db-reset'
- name: Server / Upload reset-logs file
if: always()
uses: actions/upload-artifact@v4
+21 -18
View File
@@ -1,7 +1,7 @@
# Pull down translations from Crowdin every two hours or when triggered manually.
# When force_pull input is true, translations will be pulled regardless of compilation status.
name: 'Pull translations'
name: 'Pull translations from Crowdin'
on:
schedule:
@@ -53,7 +53,7 @@ jobs:
# Strict mode fails if there are missing translations.
- name: Compile translations
id: compile_translations
id: compile_translations_strict
run: |
npx nx run twenty-server:lingui:compile --strict
npx nx run twenty-emails:lingui:compile --strict
@@ -68,7 +68,7 @@ jobs:
git stash
- name: Pull translations from Crowdin
if: inputs.force_pull || steps.compile_translations.outcome == 'failure'
if: inputs.force_pull || steps.compile_translations_strict.outcome == 'failure'
uses: crowdin/github-action@v2
with:
upload_sources: false
@@ -76,8 +76,6 @@ jobs:
download_translations: true
export_only_approved: false
localization_branch_name: i18n
commit_message: 'i18n - translations'
pull_request_title: 'i18n - translations'
base_url: 'https://twenty.api.crowdin.com'
auto_approve_imported: false
import_eq_suggestions: false
@@ -86,43 +84,48 @@ jobs:
skip_untranslated_strings: false
skip_untranslated_files: false
push_translations: true
create_pull_request: true
create_pull_request: false
skip_ref_checkout: true
dryrun_action: false
github_base_url: 'github.com'
github_user_name: 'Crowdin Bot'
github_user_email: 'support+bot@crowdin.com'
env:
GITHUB_TOKEN: ${{ github.token }}
CROWDIN_PROJECT_ID: '1'
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
# As the files are extracted from a Docker container, they belong to root:root
# We need to fix this before the next steps
- name: Fix file permissions
run: sudo chown -R runner:docker .
- name: Compile translations
if: inputs.force_pull || steps.compile_translations.outcome == 'failure'
id: compile_translations
if: inputs.force_pull || steps.compile_translations_strict.outcome == 'failure'
run: |
npx nx run twenty-server:lingui:compile
npx nx run twenty-emails:lingui:compile
npx nx run twenty-front:lingui:compile
- name: Check and commit compiled files
id: check_changes
run: |
git status
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@twenty.com'
git add .
if ! git diff --staged --quiet --exit-code; then
git commit -m "chore: compile translations [skip ci]"
git commit -m "chore: compile translations"
echo "changes_detected=true" >> $GITHUB_OUTPUT
else
echo "changes_detected=false" >> $GITHUB_OUTPUT
fi
- name: Push changes
if: steps.check_changes.outputs.changes_detected == 'true'
if: steps.compile_translations.outputs.changes_detected == 'true'
run: git push origin HEAD:i18n
- name: Create pull request
if: steps.check_changes.outputs.changes_detected == 'true'
run: gh pr create -B main -H i18n --title 'i18n - translations' --body 'Created by Github action' || true
if: steps.compile_translations.outputs.changes_detected == 'true'
run: |
if git diff --name-only origin/main..HEAD | grep -q .; then
gh pr create -B main -H i18n --title 'i18n - translations' --body 'Created by Github action' || true
else
echo "No file differences between branches, skipping PR creation"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+33 -15
View File
@@ -1,4 +1,4 @@
name: 'Extract translations when there is a push to main, and upload them to Crowdin'
name: 'Push translations to Crowdin'
on:
workflow_dispatch:
@@ -16,6 +16,7 @@ jobs:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -40,14 +41,8 @@ jobs:
npx nx run twenty-emails:lingui:extract
npx nx run twenty-front:lingui:extract
- name: Compile translations
run: |
npx nx run twenty-server:lingui:compile
npx nx run twenty-emails:lingui:compile
npx nx run twenty-front:lingui:compile
- name: Check and commit any files created
id: check_changes
- name: Check and commit extracted files
id: check_extract_changes
run: |
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@twenty.com'
@@ -59,12 +54,31 @@ jobs:
echo "changes_detected=false" >> $GITHUB_OUTPUT
fi
- name: Compile translations
run: |
npx nx run twenty-server:lingui:compile
npx nx run twenty-emails:lingui:compile
npx nx run twenty-front:lingui:compile
- name: Check and commit compiled files
id: check_compile_changes
run: |
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@twenty.com'
git add .
if ! git diff --staged --quiet --exit-code; then
git commit -m "chore: compile translations"
echo "changes_detected=true" >> $GITHUB_OUTPUT
else
echo "changes_detected=false" >> $GITHUB_OUTPUT
fi
- name: Push changes and create remote branch if needed
if: steps.check_changes.outputs.changes_detected == 'true'
if: steps.check_extract_changes.outputs.changes_detected == 'true' || steps.check_compile_changes.outputs.changes_detected == 'true'
run: git push origin HEAD:i18n
- name: Upload missing translations
if: steps.check_changes.outputs.changes_detected == 'true'
if: steps.check_extract_changes.outputs.changes_detected == 'true'
uses: crowdin/github-action@v2
with:
upload_sources: true
@@ -78,9 +92,13 @@ jobs:
# Visit https://crowdin.com/settings#api-key to create this token
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
- name: Create a pull request
if: steps.check_changes.outputs.changes_detected == 'true'
run: gh pr create -B main -H i18n --title 'i18n - translations' --body 'Created by Github action' || true
if: steps.check_extract_changes.outputs.changes_detected == 'true' || steps.check_compile_changes.outputs.changes_detected == 'true'
run: |
if git diff --name-only origin/main..HEAD | grep -q .; then
gh pr create -B main -H i18n --title 'i18n - translations' --body 'Created by Github action' || true
else
echo "No file differences between branches, skipping PR creation"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -39,7 +39,7 @@
"@nestjs/passport": "^9.0.3",
"@nestjs/platform-express": "^9.0.0",
"@nestjs/serve-static": "^4.0.1",
"@nestjs/terminus": "^9.2.2",
"@nestjs/terminus": "^11.0.0",
"@nestjs/typeorm": "^10.0.0",
"@nx/eslint-plugin": "^17.2.8",
"@octokit/graphql": "^7.0.2",
@@ -17,7 +17,7 @@ export class WorkflowVisualizerPage {
readonly deactivateWorkflowButton: Locator;
readonly addTriggerButton: Locator;
readonly commandMenu: Locator;
readonly workflowNameButton: Locator;
readonly workflowNameLabel: Locator;
readonly triggerNode: Locator;
readonly background: Locator;
readonly useAsDraftButton: Locator;
@@ -68,9 +68,9 @@ export class WorkflowVisualizerPage {
});
this.addTriggerButton = page.getByText('Add a Trigger');
this.commandMenu = page.getByTestId('command-menu');
this.workflowNameButton = page.getByRole('button', {
name: this.workflowName,
});
this.workflowNameLabel = page
.getByTestId('top-bar-title')
.getByText(this.workflowName);
this.triggerNode = this.#page.getByTestId('rf__node-trigger');
this.background = page.locator('.react-flow__pane');
this.useAsDraftButton = page.getByRole('button', { name: 'Use as draft' });
@@ -100,7 +100,7 @@ export class WorkflowVisualizerPage {
}
async waitForWorkflowVisualizerLoad() {
await expect(this.workflowNameButton).toBeVisible();
await expect(this.workflowNameLabel).toBeVisible();
}
async goToWorkflowVisualizerPage() {
@@ -132,8 +132,10 @@ export class WorkflowVisualizerPage {
const actionToCreateOption = this.commandMenu.getByText(actionName);
const [createWorkflowStepResponse] = await Promise.all([
this.#page.waitForResponse((response) => {
await actionToCreateOption.click();
const createWorkflowStepResponse = await this.#page.waitForResponse(
(response) => {
if (!response.url().endsWith('/graphql')) {
return false;
}
@@ -141,19 +143,14 @@ export class WorkflowVisualizerPage {
const requestBody = response.request().postDataJSON();
return requestBody.operationName === 'CreateWorkflowVersionStep';
}),
},
);
actionToCreateOption.click(),
]);
const createWorkflowStepResponseBody =
await createWorkflowStepResponse.json();
const createdStepId =
createWorkflowStepResponseBody.data.createWorkflowVersionStep.id;
await expect(
this.#page.getByTestId('command-menu').getByRole('textbox').first(),
).toHaveValue(createdActionName);
const createdActionNode = this.#page
.locator('.react-flow__node.selected')
.getByText(createdActionName);
@@ -231,6 +228,14 @@ export class WorkflowVisualizerPage {
this.getDeleteNodeButton(this.triggerNode).click(),
]);
}
async closeSidePanel() {
const closeButton = this.#page.getByTestId(
'page-header-command-menu-button',
);
await closeButton.click();
}
}
export const test = base.extend<{ workflowVisualizer: WorkflowVisualizerPage }>(
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-e2e-testing",
"version": "0.42.0-canary",
"version": "0.42.17",
"description": "",
"author": "",
"private": true,
@@ -1,16 +0,0 @@
import { expect, test } from '@playwright/test';
test.fixme(
'Check if demo account is working properly @demo-only',
async ({ page }) => {
await page.goto('https://app.twenty-next.com/');
await page.getByRole('button', { name: 'Continue with Email' }).click();
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page.getByText('Welcome to Twenty')).not.toBeVisible();
await page.waitForTimeout(5000);
await expect(page.getByText('Servers on a coffee break')).not.toBeVisible({
timeout: 5000,
});
},
);
@@ -23,10 +23,13 @@ test('Create workflow', async ({ page }) => {
return requestBody.operationName === 'CreateOneWorkflow';
}),
await createWorkflowButton.click(),
createWorkflowButton.click(),
]);
const nameInput = page.getByRole('textbox');
const recordName = page.getByTestId('top-bar-title').getByTestId('tooltip');
await recordName.click();
const nameInput = page.getByTestId('top-bar-title').getByRole('textbox');
await nameInput.fill(NEW_WORKFLOW_NAME);
const workflowDiagramContainer = page.locator('.react-flow__renderer');
@@ -36,7 +39,9 @@ test('Create workflow', async ({ page }) => {
const newWorkflowId = body.data.createWorkflow.id;
try {
const workflowName = page.getByRole('button', { name: NEW_WORKFLOW_NAME });
const workflowName = page
.getByTestId('top-bar-title')
.getByText(NEW_WORKFLOW_NAME);
await expect(workflowName).toBeVisible();
@@ -0,0 +1,60 @@
import { expect } from '@playwright/test';
import { test } from '../lib/fixtures/blank-workflow';
test('The workflow run visualizer shows the executed draft version without the last draft changes', async ({
workflowVisualizer,
page,
}) => {
await workflowVisualizer.createInitialTrigger('manual');
const manualTriggerAvailabilitySelect = page.getByRole('button', {
name: 'When record(s) are selected',
});
await manualTriggerAvailabilitySelect.click();
const alwaysAvailableOption = page.getByText(
'When no record(s) are selected',
);
await alwaysAvailableOption.click();
await workflowVisualizer.closeSidePanel();
const { createdStepId: firstStepId } =
await workflowVisualizer.createStep('create-record');
await workflowVisualizer.closeSidePanel();
const launchTestButton = page.getByRole('button', { name: 'Test' });
await launchTestButton.click();
const goToExecutionPageLink = page.getByRole('link', {
name: 'View execution details',
});
const executionPageUrl = await goToExecutionPageLink.getAttribute('href');
expect(executionPageUrl).not.toBeNull();
await workflowVisualizer.deleteStep(firstStepId);
await page.goto(executionPageUrl!);
const workflowRunName = page.getByText('Execution of v1');
await expect(workflowRunName).toBeVisible();
const flowTab = page.getByText('Flow', { exact: true });
await flowTab.click();
const executedFirstStepNode = workflowVisualizer.getStepNode(firstStepId);
await expect(executedFirstStepNode).toBeVisible();
await executedFirstStepNode.click();
await expect(
workflowVisualizer.commandMenu.getByRole('textbox').first(),
).toHaveValue('Create Record');
});
@@ -86,90 +86,92 @@ test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
});
test.fixme(
'Use an old version as draft while having a pending draft version',
async ({ workflowVisualizer, page }) => {
await workflowVisualizer.createInitialTrigger('record-created');
test('Use an old version as draft while having a pending draft version', async ({
workflowVisualizer,
page,
}) => {
await workflowVisualizer.createInitialTrigger('record-created');
await workflowVisualizer.createStep('create-record');
await workflowVisualizer.createStep('create-record');
await workflowVisualizer.background.click();
await workflowVisualizer.background.click();
await Promise.all([
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
await Promise.all([
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
workflowVisualizer.activateWorkflowButton.click(),
]);
workflowVisualizer.activateWorkflowButton.click(),
]);
await Promise.all([
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
await Promise.all([
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
workflowVisualizer.createStep('delete-record'),
]);
workflowVisualizer.createStep('delete-record'),
]);
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
'Delete Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(2);
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
'Delete Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(2);
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
const workflowsLink = page.getByRole('link', { name: 'Workflows' });
await workflowsLink.click();
await workflowVisualizer.closeSidePanel();
const recordTableRowForWorkflow = page.getByRole('row', {
name: workflowVisualizer.workflowName,
});
const workflowsLink = page.getByRole('link', { name: 'Workflows' });
await workflowsLink.click();
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
name: workflowVisualizer.workflowName,
});
expect(linkToWorkflow).toBeVisible();
const recordTableRowForWorkflow = page.getByRole('row', {
name: workflowVisualizer.workflowName,
});
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
'link',
{
name: 'v1',
},
);
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
name: workflowVisualizer.workflowName,
});
expect(linkToWorkflow).toBeVisible();
await linkToFirstWorkflowVersion.click();
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
'link',
{
name: 'v1',
},
);
await expect(workflowVisualizer.workflowStatus).toHaveText('Active');
await expect(workflowVisualizer.useAsDraftButton).toBeVisible();
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
await linkToFirstWorkflowVersion.click();
await Promise.all([
expect(workflowVisualizer.overrideDraftButton).toBeVisible(),
await expect(workflowVisualizer.workflowStatus).toHaveText('Active');
await expect(workflowVisualizer.useAsDraftButton).toBeVisible();
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
workflowVisualizer.useAsDraftButton.click(),
]);
await Promise.all([
expect(workflowVisualizer.overrideDraftButton).toBeVisible(),
await Promise.all([
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
workflowVisualizer.useAsDraftButton.click(),
]);
workflowVisualizer.overrideDraftButton.click(),
]);
await Promise.all([
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
await expect(workflowVisualizer.activateWorkflowButton).toBeVisible();
await expect(workflowVisualizer.discardDraftButton).toBeVisible();
},
);
workflowVisualizer.overrideDraftButton.click(),
]);
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
await expect(workflowVisualizer.triggerNode).toContainText(
'Record is Created',
);
await expect(workflowVisualizer.getAllStepNodes()).toContainText([
'Create Record',
]);
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
await expect(workflowVisualizer.activateWorkflowButton).toBeVisible();
await expect(workflowVisualizer.discardDraftButton).toBeVisible();
});
+2
View File
@@ -1,4 +1,5 @@
import { defineConfig } from '@lingui/cli';
import { formatter } from '@lingui/format-po';
import { APP_LOCALES } from 'twenty-shared';
export default defineConfig({
@@ -19,4 +20,5 @@ export default defineConfig({
],
catalogsMergePath: '<rootDir>/src/locales/generated/{locale}',
compileNamespace: 'ts',
format: formatter({ lineNumbers: false }),
});
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-emails",
"version": "0.42.0-canary",
"version": "0.42.17",
"description": "",
"author": "",
"private": true,
@@ -0,0 +1,67 @@
import { t } from '@lingui/core/macro';
import { Trans } from '@lingui/react/macro';
import { Img } from '@react-email/components';
import { emailTheme } from 'src/common-style';
import { BaseEmail } from 'src/components/BaseEmail';
import { CallToAction } from 'src/components/CallToAction';
import { HighlightedContainer } from 'src/components/HighlightedContainer';
import { HighlightedText } from 'src/components/HighlightedText';
import { Link } from 'src/components/Link';
import { MainText } from 'src/components/MainText';
import { Title } from 'src/components/Title';
import { WhatIsTwenty } from 'src/components/WhatIsTwenty';
import { capitalize } from 'src/utils/capitalize';
import { APP_LOCALES, getImageAbsoluteURI } from 'twenty-shared';
type SendApprovedAccessDomainValidationProps = {
link: string;
domain: string;
workspace: { name: string | undefined; logo: string | undefined };
sender: {
email: string;
firstName: string;
lastName: string;
};
serverUrl: string;
locale: keyof typeof APP_LOCALES;
};
export const SendApprovedAccessDomainValidation = ({
link,
domain,
workspace,
sender,
serverUrl,
locale,
}: SendApprovedAccessDomainValidationProps) => {
const workspaceLogo = workspace.logo
? getImageAbsoluteURI({ imageUrl: workspace.logo, baseUrl: serverUrl })
: null;
return (
<BaseEmail width={333} locale={locale}>
<Title value={t`Validate domain`} />
<MainText>
{capitalize(sender.firstName)} (
<Link
href={`mailto:${sender.email}`}
value={sender.email}
color={emailTheme.font.colors.blue}
/>
)
<Trans>
Please validate this domain to allow users with <b>@{domain}</b> email
addresses to join your workspace without requiring an invitation.
</Trans>
<br />
</MainText>
<HighlightedContainer>
{workspaceLogo && <Img src={workspaceLogo} width={40} height={40} />}
{workspace.name && <HighlightedText value={workspace.name} />}
<CallToAction href={link} value={t`Validate domain`} />
</HighlightedContainer>
<WhatIsTwenty />
</BaseEmail>
);
};
+1
View File
@@ -4,3 +4,4 @@ export * from './emails/password-update-notify.email';
export * from './emails/send-email-verification-link.email';
export * from './emails/send-invite-link.email';
export * from './emails/warn-suspended-workspace.email';
export * from './emails/validate-approved-access-domain.email';
+26 -26
View File
@@ -18,107 +18,107 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "crwdns1:0crwdne1:0"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "crwdns3:0crwdne3:0"
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "crwdns5:0crwdne5:0"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "crwdns7:0crwdne7:0"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "crwdns9:0{userName}crwdne9:0"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "crwdns11:0crwdne11:0"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "crwdns13:0crwdne13:0"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "crwdns15:0crwdne15:0"
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "crwdns17:0{remainingDays}crwdnd17:0{dayOrDays}crwdne17:0"
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "crwdns19:0crwdne19:0"
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "crwdns21:0{workspaceDisplayName}crwdnd21:0{daysSinceInactive}crwdne21:0"
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "crwdns23:0crwdne23:0"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "crwdns25:0crwdne25:0"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "crwdns27:0crwdne27:0"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "crwdns29:0crwdne29:0"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "crwdns31:0crwdne31:0"
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "crwdns33:0{remainingDays}crwdnd33:0{dayOrDays}crwdne33:0"
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "crwdns35:0{email}crwdnd35:0{formattedDate}crwdne35:0"
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "crwdns37:0{duration}crwdne37:0"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "crwdns39:0crwdne39:0"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "crwdns41:0crwdne41:0"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "crwdns4845:0{workspaceDisplayName}crwdnd4845:0{daysSinceInactive}crwdne4845:0"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Aanvaar uitnodiging"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alle data in hierdie werkruimte is permanent verwyder."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bevestig jou e-posadres"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Konnekteer met Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Liewe {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "het jou genooi om aan te sluit by 'n werkruimte genaamd "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hallo"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "As jy nie hierdie verandering geïnisieer het nie, kontak asseblief jou werkruimte-eienaar dadelik."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "As jy wil voortgaan om Twenty te gebruik, moet asseblief jou intekening binne die volgende {remainingDays} {dayOrDays} opdateer."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "As jy Twenty weer wil gebruik, kan jy 'n nuwe werkruimte skep."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Dit blyk dat jou werkruimte <0>{workspaceDisplayName}</0> vir {daysSinceInactive} dae opgeskort is."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Sluit aan by jou span op Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Wagwoord opgedateer"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Stel terug"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Stel jou wagwoord terug 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Dankie dat jy registreer het vir 'n rekening op Twenty! Voordat ons begin, moet ons net bevestig dat dit jy is. Klik bo om jou e-posadres te verifieer."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Die werkruimte sal gedeaktiveer word in {remainingDays} {dayOrDays}, en al sy data sal verwyder word."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Dit is 'n bevestiging dat die wagwoord vir jou rekening ({email}) suksesvol verander is op {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Hierdie skakel is slegs geldig vir die volgende {duration}. Indien die skakel nie werk nie, kan jy die aanmeldverifiëringskakel direk gebruik:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Opdateer jou intekening"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifieer E-pos"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Jou werkruimte <0>{workspaceDisplayName}</0> is verwyder aangesien jou intekening {daysSinceInactive} dae gelede verval het."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "قبول الدعوة"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "تم حذف جميع البيانات في هذه الواجهة بشكل دائم."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "تأكد من عنوان بريدك الإلكتروني"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "الاتصال بـ Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "عزيزي {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "لقد دُعيت للإنضمام إلى مساحة عمل تسمى "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "مرحبًا"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "إذا لم تكن قد بدأت هذا التغيير، يرجى الاتصال بمالك مساحة العمل الخاصة بك على الفور."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "إذا كنت ترغب في الاستمرار في استخدام Twenty، يُرجى تحديث اشتراكك خلال الأيام {remainingDays} {dayOrDays} القادمة."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "إذا كنت ترغب في استخدام Twenty مرة أخرى، يمكنك إنشاء مساحة عمل جديدة."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "يبدو أن مساحة عملك <0>{workspaceDisplayName}</0> قد تم تعليقها لمدة {daysSinceInactive} أيام."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "انضم إلى فريقك في Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "تم تحديث كلمة المرور"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "إعادة تعيين"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "إعادة تعيين كلمة مرورك 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "شكراً لتسجيلك لحساب على Twenty! قبل أن نبدأ، نحتاج فقط إلى التأكد من أن هذا أنت. انقر أعلاه للتحقق من عنوان بريدك الإلكتروني."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "سيتم تعطيل مساحة العمل في غضون {remainingDays} {dayOrDays}، وسيتم حذف كل بياناتها."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "هذا تأكيد أن كلمة مرور حسابك ({email}) قد تم تغييرها بنجاح في {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "هذا الرابط صالح فقط للمدة {duration} القادمة. إذا لم يعمل الرابط، يمكنك استخدام رابط التحقق من تسجيل الدخول مباشرة:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "تحديث الاشتراك"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "تحقق من البريد الإلكتروني"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "تم حذف مساحة العمل <0>{workspaceDisplayName}</0> كون اشتراكك قد انتهى منذ {daysSinceInactive} أيام."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Accepta la invitació"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Totes les dades en aquest espai de treball s'han esborrat permanentment."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirma la teva adreça de correu electrònic"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Connecta't a Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Benvolgut {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "t'ha convidat a unir-te a un espai de treball anomenat "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hola"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Si no has iniciat aquest canvi, si us plau contacta amb el propietari de l'espai de treball immediatament."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Si vols continuar utilitzant Twenty, si us plau actualitza la teva subscripció en els propers {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Si vols utilitzar Twenty de nou, pots crear un nou espai de treball."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Sembla que el teu espai de treball <0>{workspaceDisplayName}</0> ha estat suspès per {daysSinceInactive} dies."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Uneix-te al teu equip a Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Contrasenya actualitzada"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Restableix"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Restableix la teva contrasenya 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Gràcies per registrar-te a Twenty! Abans de començar, només necessitem confirmar que ets tu. Clica a sobre per verificar la teva adreça de correu electrònic."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "L'espai de treball es desactivarà en {remainingDays} {dayOrDays}, i totes les seves dades seran eliminades."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Això és una confirmació que la contrasenya del teu compte ({email}) s'ha canviat amb èxit el {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Aquest enllaç només és vàlid durant els propers {duration}. Si l'enllaç no funciona, pots fer servir directament l'enllaç de verificació d'inici de sessió:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Actualitza la teva subscripció"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifica el correu electrònic"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "El teu espai de treball <0>{workspaceDisplayName}</0> s'ha eliminat ja que la teva subscripció va caducar fa {daysSinceInactive} dies."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Přijměte pozvánku"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Všechna data v tomto pracovním prostoru byla trvale odstraněna."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Potvrďte svou e-mailovou adresu"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Připojte se k Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Vážený {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "vás pozval do pracovního prostoru s názvem "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Dobrý den"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Pokud jste tuto změnu neiniciovali, prosím, okamžitě kontaktujte majitele vašeho pracovního prostoru."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Pokud si přejete dále používat Twenty, prosím, aktualizujte své předplatné během příštích {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Pokud si přejete znovu použít Twenty, můžete vytvořit nový pracovní prostor."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Zdá se, že váš pracovní prostor <0>{workspaceDisplayName}</0> byl pozastaven na dobu {daysSinceInactive} dní."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Připojte se k svému týmu na Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Heslo bylo aktualizováno"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Obnovit"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Obnovte své heslo 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Děkujeme za registraci účtu na Twenty! Než začneme, musíme potvrdit, že jste to vy. Klikněte výše k ověření vaší e-mailové adresy."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Pracovní prostor bude deaktivován za {remainingDays} {dayOrDays} a všechna jeho data budou smazána."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Toto je potvrzení, že heslo k vašemu účtu ({email}) bylo úspěšně změněno {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Tento odkaz je platný pouze následující {duration}. Pokud odkaz nefunguje, můžete přímo použít odkaz pro ověření přihlášení:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Aktualizujte své předplatné"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Ověřit e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Váš pracovní prostor <0>{workspaceDisplayName}</0> byl odstraněn, protože vaše předplatné vypršelo před {daysSinceInactive} dny."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Accepter invitation"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alle data i dette arbejdsområde er blevet permanent slettet."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bekræft din e-mailadresse"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Forbind til Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Kære {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "har inviteret dig til at deltage i et arbejdsområde kaldet "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hej"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Hvis du ikke har initieret denne ændring, bedes du straks kontakte ejeren af dit arbejdsområde."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Hvis du ønsker at fortsætte med at bruge Twenty, opdater da dit abonnement inden for de næste {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Hvis du ønsker at bruge Twenty igen, kan du oprette et nyt arbejdsområde."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Det ser ud til, at dit arbejdsområde <0>{workspaceDisplayName}</0> er blevet suspenderet i {daysSinceInactive} dage."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Deltag i dit team på Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Adgangskode opdateret"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Nulstil"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Nulstil din adgangskode 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Tak fordi du har registreret en konto på Twenty! Før vi starter, skal vi bare bekræfte, at det er dig. Klik ovenfor for at bekræfte din e-mailadresse."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Arbejdsområdet vil blive deaktiveret om {remainingDays} {dayOrDays}, og alle dens data vil blive slettet."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Dette er en bekræftelse på, at adgangskoden til din konto ({email}) er blevet ændret den {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Dette link er kun gyldigt i de næste {duration}. Hvis linket ikke fungerer, kan du bruge loginbekræftelseslinket direkte:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Opdater dit abonnement"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Bekræft e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Dit arbejdsområde <0>{workspaceDisplayName}</0> er blevet slettet, da dit abonnement udløb for {daysSinceInactive} dage siden."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Einladung akzeptieren"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alle Daten in diesem Workspace wurden dauerhaft gelöscht."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bestätigen Sie Ihre E-Mail-Adresse"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Mit Twenty verbinden"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Sehr geehrte/r {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "hat Sie eingeladen, einem Workspace namens "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hallo"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Wenn Sie diese Änderung nicht veranlasst haben, kontaktieren Sie bitte umgehend den Eigentümer Ihres Workspaces."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Wenn Sie Twenty weiterhin nutzen möchten, aktualisieren Sie bitte Ihr Abonnement innerhalb der nächsten {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Wenn Sie Twenty erneut nutzen möchten, können Sie einen neuen Workspace erstellen."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Es scheint, dass Ihr Workspace <0>{workspaceDisplayName}</0> seit {daysSinceInactive} Tagen gesperrt ist."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Treten Sie Ihrem Team auf Twenty bei"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Passwort wurde aktualisiert"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Zurücksetzen"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Setzen Sie Ihr Passwort zurück 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Vielen Dank für Ihre Registrierung bei Twenty! Bevor wir beginnen, müssen wir nur bestätigen, dass Sie es sind. Klicken Sie oben, um Ihre E-Mail-Adresse zu verifizieren."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Der Workspace wird in {remainingDays} {dayOrDays} deaktiviert, und alle Daten werden gelöscht."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Dies ist eine Bestätigung, dass das Passwort für Ihr Konto ({email}) am {formattedDate} erfolgreich geändert wurde."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Dieser Link ist nur für die nächsten {duration} gültig. Wenn der Link nicht funktioniert, können Sie den Anmeldebestätigungslink direkt verwenden:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Aktualisieren Sie Ihr Abonnement"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "E-Mail verifizieren"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ihr Workspace <0>{workspaceDisplayName}</0> wurde gelöscht, da Ihr Abonnement vor {daysSinceInactive} Tagen abgelaufen ist."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Αποδοχή πρόσκλησης"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Όλα τα δεδομένα σε αυτόν τον χώρο εργασίας έχουν διαγραφεί μόνιμα."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Επιβεβαιώστε τη διεύθυνση email σας"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Συνδεθείτε στο Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Αγαπητέ/ή {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "σας έχει προσκαλέσει να συμμετάσχετε σε έναν χώρο εργασίας με την ονομασία "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Γεια σας"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Εάν δεν έχετε προβεί εσείς σε αυτήν την αλλαγή, παρακαλώ επικοινωνήστε άμεσα με τον ιδιοκτήτη του χώρου εργασίας σας."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Εάν επιθυμείτε να συνεχίστε να χρησιμοποιείτε το Twenty, παρακαλούμε ενημερώστε την συνδρομή σας εντός των επόμενων {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Εάν επιθυμείτε να χρησιμοποιήσετε ξανά το Twenty, μπορείτε να δημιουργήσετε ένα νέο χώρο εργασίας."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Φαίνεται ότι ο χώρος εργασίας σας <0>{workspaceDisplayName}</0> έχει ανασταλεί για {daysSinceInactive} ημέρες."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Συμμετέχετε στην ομάδα σας στο Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Ο κωδικός έχει ενημερωθεί"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Επαναφορά"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Επαναφέρετε τον κωδικό σας 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Σας ευχαριστούμε που εγγραφήκατε για έναν λογαριασμό στο Twenty! Πριν ξεκινήσουμε, πρέπει μόνο να επιβεβαιώσουμε ότι αυτός είστε εσείς. Κάντε κλικ παραπάνω για να επαληθεύσετε τη διεύθυνση email σας."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Ο χώρος εργασίας θα απενεργοποιηθεί σε {remainingDays} {dayOrDays}, και όλα τα δεδομένα του θα διαγραφούν."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Αυτό είναι ένα επιβεβαίωση ότι ο κωδικός για τον λογαριασμό σας ({email}) άλλαξε με επιτυχία στις {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Αυτός ο σύνδεσμος ισχύει μόνο για τις επόμενες {duration}. Εάν ο σύνδεσμος δεν λειτουργεί, μπορείτε να χρησιμοποιήσετε τον σύνδεσμο επαλήθευσης σύνδεσης απευθείας:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Ενημερώστε τη συνδρομή σας"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Επαληθεύστε το Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ο χώρος εργασίας σας <0>{workspaceDisplayName}</0> έχει διαγραφεί καθώς η συνδρομή σας έληξε {daysSinceInactive} ημέρες πριν."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+26 -26
View File
@@ -13,106 +13,106 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Accept invite"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "All data in this workspace has been permanently deleted."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirm your email address"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Connect to Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Dear {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "has invited you to join a workspace called "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hello"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "If you wish to use Twenty again, you can create a new workspace."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Join your team on Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Password updated"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Reset"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Reset your password 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Update your subscription"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verify Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Aceptar invitación"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Todos los datos de este espacio de trabajo han sido eliminados permanentemente."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirma tu dirección de correo electrónico"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Conéctate a Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Estimado/a {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "te ha invitado a unirte a un espacio de trabajo llamado "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hola"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Si no iniciaste este cambio, contacta inmediatamente al propietario de tu espacio de trabajo."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Si deseas seguir usando Twenty, actualiza tu suscripción en los próximos {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Si deseas usar Twenty nuevamente, puedes crear un nuevo espacio de trabajo."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Parece que tu espacio de trabajo <0>{workspaceDisplayName}</0> ha estado suspendido durante {daysSinceInactive} días."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Únete a tu equipo en Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Contraseña actualizada"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Restablecer"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Restablece tu contraseña 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "¡Gracias por registrarte en Twenty! Antes de comenzar, solo necesitamos confirmar que eres tú. Haz clic arriba para verificar tu dirección de correo electrónico."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "El espacio de trabajo se desactivará en {remainingDays} {dayOrDays} y se eliminarán todos sus datos."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Esta es una confirmación de que la contraseña de tu cuenta ({email}) se cambió correctamente el {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Este enlace solo es válido por los próximos {duration}. Si el enlace no funciona, puedes usar directamente el enlace de verificación de inicio de sesión:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Actualiza tu suscripción"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verificar correo electrónico"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Tu espacio de trabajo <0>{workspaceDisplayName}</0> ha sido eliminado porque tu suscripción caducó hace {daysSinceInactive} días."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Hyväksy kutsu"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Kaikki tiedot tässä työtilassa on pysyvästi poistettu."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Vahvista sähköpostiosoitteesi"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Yhdistä Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Hyvä {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "on kutsunut sinut liittymään työtilaan nimeltä "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hei"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Jos et itse aloittanut tätä muutosta, ota heti yhteyttä työtilasi omistajaan."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Jos haluat jatkaa Twenty:n käyttöä, päivitä tilauksesi seuraavan {remainingDays} {dayOrDays} kuluessa."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Jos haluat käyttää Twentyä uudelleen, voit luoda uuden työtilan."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Vaikuttaa siltä, että työtilasi <0>{workspaceDisplayName}</0> on ollut jäädytettynä {daysSinceInactive} päivää."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Liity tiimiisi Twentyssä"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Salasana päivitetty"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Nollaa"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Nollaa salasanasi 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Kiitos, että rekisteröidyit Twenty:n käyttäjäksi! Ennen kuin aloitamme, meidän täytyy vahvistaa, että kyseessä on sinä. Klikkaa yllä vahvistaaksesi sähköpostiosoitteesi."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Työtila poistetaan käytöstä {remainingDays} {dayOrDays} kuluttua, ja kaikki sen tiedot poistetaan."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Tämä on vahvistus siitä, että tilisi ({email}) salasana on vaihdettu onnistuneesti {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Tämä linkki on voimassa vain seuraavat {duration}. Jos linkki ei toimi, voit käyttää suoraan kirjautumisen varmennuslinkkiä:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Päivitä tilauksesi"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Vahvista sähköposti"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Työtilasi <0>{workspaceDisplayName}</0> on poistettu, koska tilauksesi vanheni {daysSinceInactive} päivää sitten."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Accepter l'invitation"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Toutes les données de cet espace de travail ont été supprimées définitivement."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirmez votre adresse e-mail"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Connectez-vous à Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Cher {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "vous a invité à rejoindre un espace de travail appelé "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Bonjour"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Si vous n'avez pas initié ce changement, veuillez contacter immédiatement le propriétaire de votre espace de travail."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Pour continuer à utiliser Twenty, veuillez mettre à jour votre abonnement dans les {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Pour réutiliser Twenty, vous pouvez créer un nouvel espace de travail."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Il semble que votre espace de travail <0>{workspaceDisplayName}</0> soit suspendu depuis {daysSinceInactive} jours."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Rejoignez votre équipe sur Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Mot de passe mis à jour"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Réinitialiser"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Réinitialisez votre mot de passe 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Merci de vous être inscrit sur Twenty ! Avant de commencer, nous devons confirmer votre identité. Cliquez ci-dessus pour vérifier votre adresse e-mail."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "L'espace de travail sera désactivé dans {remainingDays} {dayOrDays} et toutes ses données seront supprimées."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Ceci est une confirmation que le mot de passe de votre compte ({email}) a été modifié avec succès le {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Ce lien n'est valable que pour les {duration} suivants. Si le lien ne fonctionne pas, vous pouvez utiliser directement le lien de vérification de connexion :"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Mettez à jour votre abonnement"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Vérifiez l'e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Votre espace de travail <0>{workspaceDisplayName}</0> a été supprimé car votre abonnement a expiré il y a {daysSinceInactive} jours."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "קבל הזמנה"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "כל הנתונים במרחב העבודה הזה נמחקו לצמיתות."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "אמת את כתובת האימייל שלך"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "התחבר ל-Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "יקר {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "הזמין אותך להצטרף למרחב עבודה בשם "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "שלום"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "אם לא אתה התחלת את השינוי הזה, אנא פנה מיד לבעל מרחב העבודה שלך."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "אם תרצה להמשיך ולהשתמש ב-Twenty, אנא עדכן את המנוי שלך במהלך {remainingDays} {dayOrDays} הבאים."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "אם תרצה להשתמש ב-Twenty שוב, תוכל ליצור מרחב עבודה חדש."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "נראה כי מרחב העבודה שלך <0>{workspaceDisplayName}</0> הושעה ל-{daysSinceInactive} ימים."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "הצטרף לצוות שלך ב-Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "הסיסמה עודכנה"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "איפוס"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "אפס את הסיסמה שלך 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "תודה שנרשמת לחשבון ב-Twenty! לפני שנתחיל, אנחנו רק צריכים לוודא שזה אתה. לחץ למעלה כדי לאמת את כתובת המייל שלך."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "המרחב ייסגר בעוד {remainingDays} {dayOrDays}, וכל הנתונים שלו ימחקו."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "זוהי אישור שהסיסמה לחשבון שלך ({email}) שונתה בהצלחה ב-{formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "הקישור הזה תקף רק ל-{duration} הבאים. אם הקישור לא עובד, תוכל להשתמש בקישור אימות ההתחברות ישירות:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "עדכן את המנוי שלך"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "אמת דוא\"ל"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "המרחב שלך <0>{workspaceDisplayName}</0> נמחק כי המנוי שלך פג תוקף לפני {daysSinceInactive} ימים."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Meghívó elfogadása"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "A munkaterület minden adata végérvényesen törlésre került."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Erősítse meg email címét"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Csatlakozás a Twentyhez"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Kedves {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "meghívta Önt, hogy csatlakozzon egy munkaterülethez, amelynek a neve: "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Üdvözlöm"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Amennyiben Ön nem kezdeményezte ezt a változtatást, kérjük azonnal lépjen kapcsolatba a munkaterület tulajdonosával."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Amennyiben szeretné folytatni a Twenty használatát, kérjük frissítse előfizetését a következő {remainingDays} {dayOrDays} időszakban."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Ha újra szeretné használni a Twenty-t, létrehozhat egy új munkaterületet."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Úgy tűnik, hogy a munkaterülete <0>{workspaceDisplayName}</0> felfüggesztésre került {daysSinceInactive} napja."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Csatlakozzon a csapatához a Twentyn"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Jelszó frissítve"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Visszaállítás"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Jelszó visszaállítása 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Köszönjük, hogy regisztrált a Twenty szolgáltatására! Mielőtt elkezdenénk, csak meg kell erősítenünk, hogy ez Ön. Kattintson a fenti hivatkozásra email címének megerősítéséhez."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "A munkaterület {remainingDays} {dayOrDays} múlva lesz deaktiválva, és minden adat törlésre kerül."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Ez egy megerősítés arról, hogy fiókja jelszavát ({email}) sikeresen megváltoztatták {formattedDate} napján."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Ez a hivatkozás csak a következő {duration} ideig érvényes. Ha a hivatkozás nem működik, használhatja közvetlenül a belépés ellenőrző hivatkozását:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Előfizetés frissítése"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Email ellenőrzése"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Munkaterülete <0>{workspaceDisplayName}</0> törlésre került, mivel előfizetése {daysSinceInactive} nappal ezelőtt lejárt."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Accetta l'invito"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Tutti i dati in questo spazio di lavoro sono stati eliminati definitivamente."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Conferma il tuo indirizzo e-mail"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Accedi a Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Gentile {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "ti ha invitato a unirti a uno spazio di lavoro chiamato "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Salve"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Se non hai avviato questa modifica, contatta immediatamente il proprietario dello spazio di lavoro."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Se desideri continuare a utilizzare Twenty, aggiorna il tuo abbonamento entro i prossimi {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Se desideri utilizzare nuovamente Twenty, puoi creare un nuovo spazio di lavoro."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Sembra che il tuo spazio di lavoro <0>{workspaceDisplayName}</0> sia stato sospeso per {daysSinceInactive} giorni."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Unisciti al tuo team su Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Password aggiornata"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Reimposta"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Reimposta la tua password 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Grazie per esserti registrato su Twenty! Prima di iniziare, dobbiamo solo confermare che sei tu. Clicca sopra per verificare il tuo indirizzo e-mail."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "L'area di lavoro sarà disattivata in {remainingDays} {dayOrDays} e tutti i suoi dati saranno cancellati."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Questa è la conferma che la password del tuo account ({email}) è stata modificata con successo in data {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Questo link è valido solo per i prossimi {duration}. Se il link non funziona, puoi utilizzare direttamente il link di verifica del login:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Aggiorna il tuo abbonamento"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifica e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Il tuo spazio di lavoro <0>{workspaceDisplayName}</0> è stato cancellato poiché il tuo abbonamento è scaduto {daysSinceInactive} giorni fa."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "招待を承諾"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "このワークスペースのすべてのデータは永久に削除されました。"
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "メールアドレスを確認"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Twentyに接続"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "{userName}様"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "というワークスペースに招待されました。"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "こんにちは"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "この変更を行っていない場合は、すぐにワークスペースの所有者に連絡してください。"
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Twentyを引き続きご利用になる場合は、{remainingDays} {dayOrDays}以内にサブスクリプションを更新してください。"
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Twentyを再度使用するには、新しいワークスペースを作成してください。"
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "ワークスペース<0>{workspaceDisplayName}</0>は{daysSinceInactive}日間停止されているようです。"
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Twentyでチームに参加"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "パスワードが更新されました"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "リセット"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "パスワードをリセット"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Twentyにご登録いただきありがとうございます!開始する前に、ご本人確認のために上記をクリックしてメールアドレスを確認してください。"
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "ワークスペースは{remainingDays} {dayOrDays}後に無効化され、すべてのデータが削除されます。"
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "アカウント({email})のパスワードが{formattedDate}に正常に変更されたことを確認しました。"
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "このリンクは{duration}のみ有効です。リンクが機能しない場合は、ログイン認証リンクを直接ご利用ください:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "サブスクリプションを更新"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "メールを確認"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "サブスクリプションが{daysSinceInactive}日前に期限切れとなったため、ワークスペース<0>{workspaceDisplayName}</0>が削除されました。"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "초대 수락"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "이 워크스페이스의 모든 데이터가 영구적으로 삭제되었습니다."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "이메일 주소를 확인하세요"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Twenty에 연결하세요"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "{userName}님께"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "라는 워크스페이스에 초대되었습니다 "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "안녕하세요"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "이 변경을 시작하지 않으셨다면 즉시 워크스페이스 소유자에게 문의하세요."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Twenty를 계속 사용하려면 다음 {remainingDays} {dayOrDays} 내에 구독을 업데이트하세요."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Twenty를 다시 사용하려면 새 워크스페이스를 생성하세요."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "워크스페이스 <0>{workspaceDisplayName}</0>이(가) {daysSinceInactive}일 동안 일시 중단된 것 같습니다."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Twenty에서 팀에 합류하세요"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "비밀번호가 업데이트되었습니다"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "초기화"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "비밀번호를 재설정하세요 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Twenty에 계정을 등록해 주셔서 감사합니다! 시작하기 전에 본인 확인이 필요합니다. 위를 클릭하여 이메일 주소를 인증하세요."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "워크스페이스는 {remainingDays} {dayOrDays} 후에 비활성화되며 모든 데이터가 삭제됩니다."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "계정({email})의 비밀번호가 {formattedDate}에 성공적으로 변경되었음을 확인합니다."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "이 링크는 다음 {duration} 동안만 유효합니다. 링크가 작동하지 않으면 로그인 인증 링크를 직접 사용할 수 있습니다:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "구독을 업데이트하세요"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "이메일 인증"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "구독이 {daysSinceInactive}일 전에 만료되어 워크스페이스 <0>{workspaceDisplayName}</0>이(가) 삭제되었습니다."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Uitnodiging accepteren"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alle gegevens in deze werkruimte zijn definitief verwijderd."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bevestig uw e-mailadres"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Verbinden met Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Beste {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "heeft u uitgenodigd om deel te nemen aan een werkruimte genaamd "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hallo"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Als u deze wijziging niet heeft geïnitieerd, neem dan onmiddellijk contact op met de eigenaar van uw werkruimte."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Als u Twenty wilt blijven gebruiken, werk dan uw abonnement bij binnen de komende {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Als u Twenty opnieuw wilt gebruiken, kunt u een nieuwe werkruimte aanmaken."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Het lijkt erop dat uw werkruimte <0>{workspaceDisplayName}</0> al voor {daysSinceInactive} dagen is opgeschort."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Sluit je aan bij je team op Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Wachtwoord bijgewerkt"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Resetten"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Reset uw wachtwoord 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Bedankt voor uw registratie voor een account op Twenty! Voordat we beginnen, moeten we gewoon bevestigen dat dit u bent. Klik hierboven om uw e-mailadres te verifiëren."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "De werkruimte wordt gedeactiveerd in {remainingDays} {dayOrDays}, en alle gegevens zullen worden verwijderd."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Dit is een bevestiging dat het wachtwoord voor uw account ({email}) succesvol is gewijzigd op {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Deze link is slechts geldig voor de komende {duration}. Als de link niet werkt, kunt u direct de inlogverificatielink gebruiken:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Werk uw abonnement bij"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "E-mail verifiëren"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Uw werkruimte <0>{workspaceDisplayName}</0> is verwijderd omdat uw abonnement {daysSinceInactive} dagen geleden is verlopen."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Godta invitasjon"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alle data i dette arbeidsområdet har blitt permanent slettet."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bekreft e-postadressen din"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Koble til Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Kjære {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "har invitert deg til å bli med i et arbeidsområde kalt "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hei"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Hvis du ikke initierte denne endringen, vennligst kontakt eieren av arbeidsområdet ditt umiddelbart."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Hvis du ønsker å fortsette å bruke Twenty, vennligst oppdater abonnementet ditt innen de neste {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Hvis du ønsker å bruke Twenty igjen, kan du opprette et nytt arbeidsområde."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Det ser ut til at ditt arbeidsområde <0>{workspaceDisplayName}</0> har blitt suspendert i {daysSinceInactive} dager."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Bli med teamet ditt på Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Passord oppdatert"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Tilbakestill"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Tilbakestill passordet ditt 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Takk for at du registrerte deg for en konto på Twenty! Før vi begynner, vi må bare bekrefte at dette er deg. Klikk ovenfor for å verifisere e-postadressen din."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Arbeidsområdet vil bli deaktivert om {remainingDays} {dayOrDays}, og alle dens data vil bli slettet."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Dette er en bekreftelse på at passordet for kontoen din ({email}) ble vellykket endret den {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Denne lenken er kun gyldig i de neste {duration}. Hvis lenken ikke fungerer, kan du bruke verifiseringslenken for innlogging direkte:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Oppdater abonnementet ditt"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifiser e-post"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ditt arbeidsområde <0>{workspaceDisplayName}</0> har blitt slettet da ditt abonnement utløp for {daysSinceInactive} dager siden."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Zaakceptuj zaproszenie"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Wszystkie dane w tej przestrzeni roboczej zostały trwale usunięte."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Potwierdź swój adres email"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Połącz z Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Szanowny {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "zaprosił Cię do przyłączenia się do przestrzeni roboczej o nazwie "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Witaj"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Jeśli to nie Ty zainicjowałeś tę zmianę, skontaktuj się niezwłocznie z właścicielem przestrzeni roboczej."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Jeśli chcesz kontynuować korzystanie z Twenty, proszę zaktualizuj swoją subskrypcję w ciągu następnych {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Jeśli chcesz ponownie korzystać z Twenty, możesz utworzyć nową przestrzeń roboczą."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Wygląda na to, że Twoja przestrzeń robocza <0>{workspaceDisplayName}</0> została zawieszona na {daysSinceInactive} dni."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Dołącz do swojego zespołu w Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Hasło zaktualizowane"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Zresetuj"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Zresetuj swoje hasło 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Dziękujemy za rejestrację konta w Twenty! Zanim zaczniemy, musimy tylko potwierdzić, że to Ty. Kliknij powyżej, aby zweryfikować swój adres email."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Przestrzeń robocza zostanie deaktywowana za {remainingDays} {dayOrDays}, a wszystkie jej dane zostaną usunięte."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "To jest potwierdzenie, że hasło do Twojego konta ({email}) zostało pomyślnie zmienione {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Ten link jest ważny tylko przez {duration}. Jeśli link nie działa, można bezpośrednio użyć linku weryfikacyjnego logowania:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Zaktualizuj swoją subskrypcję"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Zweryfikuj Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Twoja przestrzeń robocza <0>{workspaceDisplayName}</0> została usunięta, ponieważ Twoja subskrypcja wygasła {daysSinceInactive} dni temu."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+26 -26
View File
@@ -13,106 +13,106 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr ""
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr ""
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr ""
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr ""
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr ""
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr ""
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr ""
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr ""
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr ""
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr ""
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr ""
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr ""
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr ""
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr ""
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr ""
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr ""
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr ""
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr ""
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr ""
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr ""
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr ""
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr ""
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr ""
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr ""
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr ""
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr ""
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Aceitar convite"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Todos os dados deste workspace foram excluídos permanentemente."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirme seu endereço de e-mail"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Conecte-se ao Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Caro {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "convidou você para participar de um workspace chamado "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Olá"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Se você não iniciou essa alteração, entre em contato com o proprietário do workspace imediatamente."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Se quiser continuar usando o Twenty, atualize sua assinatura nos próximos {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Se quiser usar o Twenty novamente, você pode criar um novo workspace."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Parece que seu workspace <0>{workspaceDisplayName}</0> foi suspenso por {daysSinceInactive} dias."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Junte-se à sua equipe no Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Senha atualizada"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Redefinir"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Redefina sua senha 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Obrigado por se registrar no Twenty! Antes de começarmos, precisamos confirmar que é você. Clique acima para verificar seu endereço de e-mail."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "O workspace será desativado em {remainingDays} {dayOrDays}, e todos os seus dados serão excluídos."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Esta é uma confirmação de que a senha da sua conta ({email}) foi alterada com sucesso em {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Este link é válido apenas para os próximos {duration}. Se o link não funcionar, você pode usar o link de verificação de login diretamente:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Atualize sua assinatura"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verificar e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Seu workspace <0>{workspaceDisplayName}</0> foi excluído porque sua assinatura expirou há {daysSinceInactive} dias."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Aceitar convite"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Todos os dados deste workspace foram eliminados permanentemente."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirme o seu endereço de e-mail"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Conecte-se ao Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Caro {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "convidou-o a juntar-se a um workspace chamado "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Olá"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Se não iniciou esta alteração, contacte imediatamente o proprietário do seu workspace."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Se quiser continuar a usar o Twenty, atualize a sua subscrição nos próximos {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Se quiser usar o Twenty novamente, pode criar um novo workspace."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Parece que o seu workspace <0>{workspaceDisplayName}</0> foi suspenso há {daysSinceInactive} dias."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Junte-se à sua equipa no Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Palavra-passe atualizada"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Redefinir"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Redefina a sua palavra-passe 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Obrigado por se registar no Twenty! Antes de começarmos, precisamos confirmar que é você. Clique acima para verificar o seu endereço de e-mail."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "O workspace será desativado em {remainingDays} {dayOrDays} e todos os seus dados serão eliminados."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Esta é uma confirmação de que a palavra-passe da sua conta ({email}) foi alterada com sucesso em {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Este link só é válido para os próximos {duration}. Se o link não funcionar, pode usar diretamente o link de verificação de login:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Atualize a sua subscrição"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifique o e-mail"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "O seu workspace <0>{workspaceDisplayName}</0> foi eliminado porque a sua subscrição expirou há {daysSinceInactive} dias."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Acceptați invitația"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Toate datele din acest spațiu de lucru au fost șterse permanent."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Confirmați adresa de email"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Conectați-vă la Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Dragă {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "v-a invitat să vă alăturați unui spațiu de lucru numit "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Salut"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Dacă nu ați inițiat această schimbare, vă rugăm să contactați imediat proprietarul spațiului de lucru."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Dacă doriți să continuați utilizarea Twenty, vă rugăm să vă actualizați abonamentul în următoarele {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Dacă doriți să folosiți din nou Twenty, puteți crea un spațiu de lucru nou."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Se pare că spațiul dvs. de lucru <0>{workspaceDisplayName}</0> a fost suspendat de {daysSinceInactive} zile."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Alăturați-vă echipei pe Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Parola a fost actualizată"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Resetează"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Resetați-vă parola 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Vă mulțumim că v-ați înregistrat pentru un cont pe Twenty! Înainte de a începe, trebuie doar să confirmăm că acesta sunteți dvs. Faceți clic mai sus pentru a verifica adresa de email."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Spațiul de lucru va fi dezactivat în {remainingDays} {dayOrDays}, iar toate datele sale vor fi șterse."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Aceasta este o confirmare că parola contului dvs. ({email}) a fost schimbată cu succes la data de {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Acest link este valabil doar pentru următoarele {duration}. Dacă linkul nu funcționează, puteți folosi direct linkul de verificare a autentificării:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Actualizați abonamentul"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verificați Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Spațiul dvs. de lucru <0>{workspaceDisplayName}</0> a fost șters, deoarece abonamentul a expirat cu {daysSinceInactive} zile în urmă."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Принять приглашение"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Все данные в этом рабочем пространстве были окончательно удалены."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Подтвердите ваш адрес электронной почты"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Подключиться к Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Уважаемый {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "пригласил вас присоединиться к рабочему пространству под названием "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Здравствуйте"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Если вы не инициировали это изменение, немедленно свяжитесь с владельцем вашего рабочего пространства."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Если вы хотите продолжить использование Twenty, пожалуйста, обновите вашу подписку в течение следующих {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Если вы захотите снова использовать Twenty, вы сможете создать новое рабочее пространство."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Похоже, что ваше рабочее пространство <0>{workspaceDisplayName}</0> было приостановлено на {daysSinceInactive} {daysSinceInactive, plural, one {день} few {дня} many {дней} other {дня}}."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Присоединяйтесь к вашей команде на Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Пароль обновлен"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Сбросить"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Сбросьте ваш пароль 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Спасибо за регистрацию в аккаунте Twenty! Прежде чем начать, нам нужно убедиться, что это вы. Кликните выше, чтобы подтвердить ваш адрес электронной почты."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Рабочее пространство будет деактивировано через {remainingDays} {remainingDays, plural, one {день} few {дня} many {дней} other {дней}}, и все его данные будут удалены."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Это подтверждение того, что пароль для вашего аккаунта ({email}) был успешно изменен {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Эта ссылка действительна только в течение следующих {duration}. Если ссылка не работает, вы можете использовать ссылку для подтверждения входа напрямую:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Обновите вашу подписку"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Подтвердить электронную почту"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ваше рабочее пространство <0>{workspaceDisplayName}</0> было удалено, так как ваша подписка истекла {daysSinceInactive} {inactiveDaysBeforeDelete, plural, one {день} few {дня} many {дней} other {дней}} назад."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Прихвати позив"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Сви подаци у овом радном простору су трајно избрисани."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Потврдите вашу е-адресу"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Повежите се са Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Поштовани {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "вас је позвао да се придружите радном простору под називом "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Здраво"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Ако ову промену нисте покренули ви, молимо вас да одмах контактирате власника вашег радног простора."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Ако желите наставити коришћење Twenty, молимо вас да освежите вашу претплату у наредних {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Ако желите поново користити Twenty, можете створити нови радни простор."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Чини се да је ваш радни простор <0>{workspaceDisplayName}</0> суспендован већ {daysSinceInactive} дана."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Придружите се свом тиму на Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Шифра је освежена"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Ресетуј"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Ресетујте вашу шифру 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Хвала вам што сте се регистровали за налог на Twenty! Прије него што почнемо, само требамо да потврдимо да сте то ви. Кликните изнад да потврдите вашу е-адресу."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Радни простор ће бити деактивиран за {remainingDays} {dayOrDays}, и сви његови подаци ће бити избрисани."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Ово је потврда да је шифра вашег налога ({email}) успешно промењена на {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Овај линк је валидан само следећих {duration}. Ако линк не функционише, моћи ћете директно користити линк за верификацију пријаве:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Освежите вашу претплату"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Потврдите е-адресу"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ваш радни простор <0>{workspaceDisplayName}</0> је избрисан пошто је ваша претплата истекла пре {daysSinceInactive} дана."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Acceptera inbjudan"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Alla data i det här arbetsutrymmet har raderats permanent."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Bekräfta din e-postadress"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Anslut till Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Kära {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "har bjudit in dig till ett arbetsutrymme som heter "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Hej"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Om du inte initierade denna förändring, vänligen kontakta ägaren av ditt arbetsutrymme omedelbart."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Om du vill fortsätta använda Twenty, vänligen uppdatera din prenumeration inom de nästa {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Om du vill använda Twenty igen kan du skapa ett nytt arbetsutrymme."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Det verkar som att ditt arbetsutrymme <0>{workspaceDisplayName}</0> har varit inaktivt i {daysSinceInactive} dagar."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Gå med i ditt team på Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Lösenordet uppdaterat"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Återställ"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Återställ ditt lösenord 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Tack för att du registrerade ett konto på Twenty! Innan vi börjar behöver vi bara bekräfta att det är du. Klicka ovan för att verifiera din e-postadress."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Arbetsutrymmet kommer att inaktiveras om {remainingDays} {dayOrDays}, och all dess data kommer att raderas."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Det här är en bekräftelse på att lösenordet för ditt konto ({email}) har ändrats framgångsrikt den {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Den här länken är bara giltig under de nästa {duration}. Om länken inte fungerar kan du använda länken för inloggningsverifiering direkt:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Uppdatera din prenumeration"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Verifiera e-post"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ditt arbetsutrymme <0>{workspaceDisplayName}</0> har raderats eftersom din prenumeration gick ut för {daysSinceInactive} dagar sedan."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Daveti kabul et"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Bu çalışma alanındaki tüm veriler kalıcı olarak silindi."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "E-posta adresinizi onaylayın"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Twenty'e bağlan"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Sevgili {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "seni "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Merhaba"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Bu değişikliği başlatmadıysanız, lütfen hemen çalışma alanı sahibinizle iletişime geçin."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Twenty kullanmaya devam etmek istiyorsanız, lütfen aboneliğinizi önümüzdeki {remainingDays} {dayOrDays} içinde güncelleyin."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Twenty'yi tekrar kullanmak isterseniz, yeni bir çalışma alanı oluşturabilirsiniz."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "<0>{workspaceDisplayName}</0> çalışma alanınızın {daysSinceInactive} gün boyunca askıya alındığı görülüyor."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Takımına Twenty üzerinden katıl"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Şifre güncellendi"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Sıfırla"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Şifreni sıfırla 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Twenty hesabı için kayıt olduğunuz için teşekkürler! Başlamadan önce, bu işlemin sizin tarafınızdan yapıldığını doğrulamamız gerekiyor. E-posta adresinizi doğrulamak için yukarıdaki bağlantıya tıklayın."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Çalışma alanı {remainingDays} {dayOrDays} içinde devre dışı bırakılacak ve tüm verileri silinecektir."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Hesabınızın ({email}) şifresinin {formattedDate} tarihinde başarıyla değiştirildiğine dair bir doğrulama bu."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Bu bağlantı sadece {duration} boyunca geçerlidir. Bağlantı çalışmazsa, doğrudan giriş doğrulama bağlantısını kullanabilirsiniz:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Aboneliğini güncelle"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "E-postayı Doğrula"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "<0>{workspaceDisplayName}</0> çalışma alanınız aboneliğinizin bitmesinin ardından {daysSinceInactive} gün önce silindi."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Прийняти запрошення"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Всі дані в цьому робочому просторі були назавжди видалені."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Підтвердіть свою адресу електронної пошти"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Підключитися до Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Шановний {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "запрошує вас приєднатися до робочого простору під назвою "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Привіт"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Якщо ви не починали цю зміну, будь ласка, негайно зверніться до власника вашого робочого простору."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Якщо ви бажаєте продовжити користування Twenty, будь ласка, оновіть свою підписку протягом наступних {remainingDays} {dayOrDays}."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Якщо ви бажаєте знову використовувати Twenty, ви можете створити новий робочий простір."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Схоже, що ваш робочий простір <0>{workspaceDisplayName}</0> був призупинений на {daysSinceInactive} днів."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Приєднуйтесь до своєї команди на Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Пароль оновлено"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Скинути"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Скинути ваш пароль 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Дякуємо за реєстрацію облікового запису на Twenty! Перш ніж розпочати, нам просто потрібно підтвердити, що це ви. Натисніть вище, щоб підтвердити свою адресу електронної пошти."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Робочий простір буде деактивовано через {remainingDays} {dayOrDays}, і всі його дані будуть видалені."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Це підтвердження того, що пароль для вашого облікового запису ({email}) було успішно змінено {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Це посилання дійсне протягом наступних {duration}. Якщо посилання не працює, ви можете напряму використовувати посилання для перевірки логіна:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Оновіть свою підписку"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Підтвердіть Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Ваш робочий простір <0>{workspaceDisplayName}</0> було видалено, оскільки ваша підписка закінчилась {daysSinceInactive} днів тому."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "Chấp nhận lời mời"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "Tất cả dữ liệu trong không gian làm việc này đã bị xóa vĩnh viễn."
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "Xác nhận địa chỉ email của bạn"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "Kết nối với Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "Kính gửi {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "đã mời bạn tham gia một không gian làm việc có tên là "
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "Xin chào"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "Nếu bạn không khởi xướng việc thay đổi này, vui lòng liên hệ ngay với chủ sở hữu của không gian làm việc của bạn."
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "Nếu bạn muốn tiếp tục sử dụng Twenty, vui lòng cập nhật gói đăng ký của bạn trong vòng {remainingDays} ngày kế tiếp."
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "Nếu bạn muốn sử dụng Twenty lại, bạn có thể tạo một không gian làm việc mới."
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "Có vẻ như không gian làm việc của bạn <0>{workspaceDisplayName}</0> đã bị đình chỉ vì {daysSinceInactive} ngày."
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "Tham gia vào đội ngũ của bạn trên Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "Mật khẩu đã được cập nhật"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "Đặt lại"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "Đặt lại mật khẩu của bạn 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "Cảm ơn bạn đã đăng ký tài khoản trên Twenty! Trước khi chúng ta bắt đầu, chúng ta chỉ cần xác nhận đây có phải là bạn không. Nhấp vào phía trên để xác minh địa chỉ email của bạn."
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "Không gian làm việc sẽ bị ngừng hoạt động trong {remainingDays} ngày tới, và tất cả dữ liệu của nó sẽ bị xóa bỏ."
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "Đây là xác nhận rằng mật khẩu cho tài khoản của bạn ({email}) đã được thay đổi thành công vào {formattedDate}."
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "Liên kết này chỉ có hiệu lực trong thời gian {duration} kế tiếp. Nếu liên kết không hoạt động, bạn có thể sử dụng liên kết xác minh đăng nhập trực tiếp:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "Cập nhật gói đăng ký của bạn"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "Xác minh Email"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "Không gian làm việc của bạn <0>{workspaceDisplayName}</0> đã bị xóa bỏ vì gói đăng ký của bạn đã hết hạn từ {daysSinceInactive} ngày trước."
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "接受邀请"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "此工作区中的所有数据已被永久删除。"
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "确认您的邮箱地址"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "连接 Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "亲爱的 {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "邀请您加入名为"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "您好"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "如果您没有发起此更改,请立即联系您的工作区所有者。"
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "如果您希望继续使用 Twenty,请在接下来的 {remainingDays} {dayOrDays} 内更新您的订阅。"
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "如果您想再次使用 Twenty,可以创建一个新工作区。"
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "您的工作区 <0>{workspaceDisplayName}</0> 已被暂停 {daysSinceInactive} 天。"
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "加入您的团队,使用 Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "密码已更新"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "重置"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "重置您的密码 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "感谢您在 Twenty 注册账户!在开始之前,我们只需确认是您本人。请点击上方验证您的邮箱地址。"
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "工作区将在 {remainingDays} {dayOrDays} 后停用,其所有数据将被删除。"
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "确认您的账户({email})密码已在 {formattedDate} 成功更改。"
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "此链接仅在接下来的 {duration} 内有效。如果链接无效,您可以直接使用登录验证链接:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "更新您的订阅"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "验证邮箱"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "您的工作区 <0>{workspaceDisplayName}</0> 已被删除,因为您的订阅已于 {daysSinceInactive} 天前过期。"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+27 -28
View File
@@ -18,107 +18,106 @@ msgstr ""
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
"X-Crowdin-File-ID: 27\n"
#: src/emails/send-invite-link.email.tsx:57
#: src/emails/send-invite-link.email.tsx
msgid "Accept invite"
msgstr "接受邀請"
#: src/emails/clean-suspended-workspace.email.tsx:33
#: src/emails/clean-suspended-workspace.email.tsx
msgid "All data in this workspace has been permanently deleted."
msgstr "此工作區中的所有數據已被永久刪除。"
#: src/emails/send-email-verification-link.email.tsx:22
#: src/emails/send-email-verification-link.email.tsx
msgid "Confirm your email address"
msgstr "確認您的電子郵件地址"
#: src/emails/password-update-notify.email.tsx:46
#: src/emails/password-update-notify.email.tsx
msgid "Connect to Twenty"
msgstr "連接到 Twenty"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
#~ msgid "Dear"
#~ msgstr "Dear"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Dear {userName}"
msgstr "親愛的 {userName}"
#: src/emails/send-invite-link.email.tsx:50
#: src/emails/send-invite-link.email.tsx
msgid "has invited you to join a workspace called "
msgstr "已邀請您加入名為"
#: src/emails/password-update-notify.email.tsx:24
#: src/emails/password-update-notify.email.tsx
msgid "Hello"
msgstr "您好"
#: src/emails/password-update-notify.email.tsx:40
#: src/emails/password-update-notify.email.tsx
msgid "If you did not initiate this change, please contact your workspace owner immediately."
msgstr "如果您未發起此更改,請立即聯繫您的工作區擁有者。"
#: src/emails/warn-suspended-workspace.email.tsx:46
#: src/emails/warn-suspended-workspace.email.tsx
msgid "If you wish to continue using Twenty, please update your subscription within the next {remainingDays} {dayOrDays}."
msgstr "如果您希望繼續使用 Twenty,請在接下來的 {remainingDays} {dayOrDays} 內更新您的訂閱。"
#: src/emails/clean-suspended-workspace.email.tsx:36
#: src/emails/clean-suspended-workspace.email.tsx
msgid "If you wish to use Twenty again, you can create a new workspace."
msgstr "如果您想再次使用 Twenty,可以創建一個新的工作區。"
#: src/emails/warn-suspended-workspace.email.tsx:34
#: src/emails/warn-suspended-workspace.email.tsx
msgid "It appears that your workspace <0>{workspaceDisplayName}</0> has been suspended for {daysSinceInactive} days."
msgstr "您的工作區 <0>{workspaceDisplayName}</0> 已被暫停 {daysSinceInactive} 天。"
#: src/emails/send-invite-link.email.tsx:42
#: src/emails/send-invite-link.email.tsx
msgid "Join your team on Twenty"
msgstr "加入您的團隊,使用 Twenty"
#: src/emails/password-update-notify.email.tsx:29
#: src/emails/password-update-notify.email.tsx
msgid "Password updated"
msgstr "密碼已更新"
#: src/emails/password-reset-link.email.tsx:24
#: src/emails/password-reset-link.email.tsx
msgid "Reset"
msgstr "重設"
#: src/emails/password-reset-link.email.tsx:23
#: src/emails/password-reset-link.email.tsx
msgid "Reset your password 🗝"
msgstr "重設您的密碼 🗝"
#: src/emails/send-email-verification-link.email.tsx:27
#: src/emails/send-email-verification-link.email.tsx
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
msgstr "感謝您在 Twenty 註冊帳戶!在開始之前,我們需要確認是您本人。請點擊上方驗證您的電子郵件地址。"
#: src/emails/warn-suspended-workspace.email.tsx:40
#: src/emails/warn-suspended-workspace.email.tsx
msgid "The workspace will be deactivated in {remainingDays} {dayOrDays}, and all its data will be deleted."
msgstr "工作區將在 {remainingDays} {dayOrDays} 後停用,所有數據將被刪除。"
#: src/emails/password-update-notify.email.tsx:34
#: src/emails/password-update-notify.email.tsx
msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}."
msgstr "這是確認您的帳戶({email})的密碼已於 {formattedDate} 成功更改。"
#: src/emails/password-update-notify.email.tsx:36
#: src/emails/password-update-notify.email.tsx
#~ msgid "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#~ msgstr "This is a confirmation that password for your account ({email}) was successfully changed on {formattedDate}.<0/><1/>If you did not initiate this change, please contact your workspace owner immediately."
#: src/emails/password-reset-link.email.tsx:26
#: src/emails/password-reset-link.email.tsx
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
msgstr "此鏈接僅在接下來的 {duration} 內有效。如果鏈接無效,您可以直接使用登錄驗證鏈接:"
#: src/emails/password-reset-link.email.tsx:28
#: src/emails/password-reset-link.email.tsx
#~ msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#~ msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:<0/>"
#: src/emails/warn-suspended-workspace.email.tsx:53
#: src/emails/warn-suspended-workspace.email.tsx
msgid "Update your subscription"
msgstr "更新您的訂閱"
#: src/emails/send-email-verification-link.email.tsx:23
#: src/emails/send-email-verification-link.email.tsx
msgid "Verify Email"
msgstr "驗證電子郵件"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {daysSinceInactive} days ago."
msgstr "由於您的訂閱已於 {daysSinceInactive} 天前過期,您的工作區 <0>{workspaceDisplayName}</0> 已被刪除。"
#: src/emails/clean-suspended-workspace.email.tsx:27
#: src/emails/clean-suspended-workspace.email.tsx
#~ msgid "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
#~ msgstr "Your workspace <0>{workspaceDisplayName}</0> has been deleted as your subscription expired {inactiveDaysBeforeDelete} days ago."
+1 -1
View File
@@ -1,5 +1,5 @@
<!doctype html>
<html lang="en">
<html lang="en" translate="no">
<head>
<meta charset="UTF-8" />
+2
View File
@@ -1,4 +1,5 @@
import { defineConfig } from '@lingui/cli';
import { formatter } from '@lingui/format-po';
import { APP_LOCALES } from 'twenty-shared';
export default defineConfig({
@@ -16,4 +17,5 @@ export default defineConfig({
],
catalogsMergePath: '<rootDir>/src/locales/generated/{locale}',
compileNamespace: 'ts',
format: formatter({ lineNumbers: false }),
});
+2 -1
View File
@@ -1,6 +1,6 @@
{
"name": "twenty-front",
"version": "0.42.0-canary",
"version": "0.42.17",
"private": true,
"type": "module",
"scripts": {
@@ -32,6 +32,7 @@
"dependencies": {
"@blocknote/xl-docx-exporter": "^0.22.0",
"@blocknote/xl-pdf-exporter": "^0.22.0",
"@cyntler/react-doc-viewer": "^1.17.0",
"@lingui/detect-locale": "^5.2.0",
"@nivo/calendar": "^0.87.0",
"@nivo/core": "^0.87.0",
@@ -34,7 +34,6 @@ const documents = {
"\n mutation DeleteOneRelationMetadataItem($idToDelete: UUID!) {\n deleteOneRelation(input: { id: $idToDelete }) {\n id\n }\n }\n": types.DeleteOneRelationMetadataItemDocument,
"\n query ObjectMetadataItems {\n objects(paging: { first: 1000 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n shortcut\n isLabelSyncedWithName\n duplicateCriteria\n indexMetadatas(paging: { first: 100 }) {\n edges {\n node {\n id\n createdAt\n updatedAt\n name\n indexWhereClause\n indexType\n isUnique\n indexFieldMetadatas(paging: { first: 100 }) {\n edges {\n node {\n id\n createdAt\n updatedAt\n order\n fieldMetadataId\n }\n }\n }\n }\n }\n }\n fieldsList {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n isUnique\n createdAt\n updatedAt\n defaultValue\n options\n settings\n isLabelSyncedWithName\n relationDefinition {\n relationId\n direction\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n": types.ObjectMetadataItemsDocument,
"\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n syncStatus\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n": types.ServerlessFunctionFieldsFragmentDoc,
"\n \n mutation BuildDraftServerlessFunction(\n $input: BuildDraftServerlessFunctionInput!\n ) {\n buildDraftServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.BuildDraftServerlessFunctionDocument,
"\n \n mutation CreateOneServerlessFunctionItem(\n $input: CreateServerlessFunctionInput!\n ) {\n createOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.CreateOneServerlessFunctionItemDocument,
"\n \n mutation DeleteOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n deleteOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.DeleteOneServerlessFunctionDocument,
"\n mutation ExecuteOneServerlessFunction(\n $input: ExecuteServerlessFunctionInput!\n ) {\n executeOneServerlessFunction(input: $input) {\n data\n duration\n status\n error\n }\n }\n": types.ExecuteOneServerlessFunctionDocument,
@@ -144,10 +143,6 @@ export function graphql(source: "\n query ObjectMetadataItems {\n objects(pa
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n syncStatus\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n"): (typeof documents)["\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n syncStatus\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n \n mutation BuildDraftServerlessFunction(\n $input: BuildDraftServerlessFunctionInput!\n ) {\n buildDraftServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n mutation BuildDraftServerlessFunction(\n $input: BuildDraftServerlessFunctionInput!\n ) {\n buildDraftServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
File diff suppressed because one or more lines are too long
+416 -37
View File
@@ -1,5 +1,5 @@
import * as Apollo from '@apollo/client';
import { gql } from '@apollo/client';
import * as Apollo from '@apollo/client';
export type Maybe<T> = T | null;
export type InputMaybe<T> = Maybe<T>;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
@@ -25,6 +25,30 @@ export type ActivateWorkspaceInput = {
displayName?: InputMaybe<Scalars['String']>;
};
export type AdminPanelHealthServiceData = {
__typename?: 'AdminPanelHealthServiceData';
description: Scalars['String'];
details?: Maybe<Scalars['String']>;
id: Scalars['String'];
label: Scalars['String'];
queues?: Maybe<Array<AdminPanelWorkerQueueHealth>>;
status: AdminPanelHealthServiceStatus;
};
export enum AdminPanelHealthServiceStatus {
OPERATIONAL = 'OPERATIONAL',
OUTAGE = 'OUTAGE'
}
export type AdminPanelWorkerQueueHealth = {
__typename?: 'AdminPanelWorkerQueueHealth';
id: Scalars['String'];
metrics: WorkerQueueMetrics;
queueName: Scalars['String'];
status: AdminPanelHealthServiceStatus;
workers: Scalars['Float'];
};
export type Analytics = {
__typename?: 'Analytics';
/** Boolean that confirms query was dispatched */
@@ -68,6 +92,14 @@ export type AppTokenEdge = {
node: AppToken;
};
export type ApprovedAccessDomain = {
__typename?: 'ApprovedAccessDomain';
createdAt: Scalars['DateTime'];
domain: Scalars['String'];
id: Scalars['UUID'];
isValidated: Scalars['Boolean'];
};
export type AuthProviders = {
__typename?: 'AuthProviders';
google: Scalars['Boolean'];
@@ -216,11 +248,6 @@ export type BooleanFieldComparison = {
isNot?: InputMaybe<Scalars['Boolean']>;
};
export type BuildDraftServerlessFunctionInput = {
/** The id of the function. */
id: Scalars['ID'];
};
export enum CalendarChannelVisibility {
METADATA = 'METADATA',
SHARE_EVERYTHING = 'SHARE_EVERYTHING'
@@ -249,6 +276,7 @@ export type ClientConfig = {
debugMode: Scalars['Boolean'];
defaultSubdomain?: Maybe<Scalars['String']>;
frontDomain: Scalars['String'];
isAttachmentPreviewEnabled: Scalars['Boolean'];
isEmailVerificationRequired: Scalars['Boolean'];
isGoogleCalendarEnabled: Scalars['Boolean'];
isGoogleMessagingEnabled: Scalars['Boolean'];
@@ -266,6 +294,11 @@ export type ComputeStepOutputSchemaInput = {
step: Scalars['JSON'];
};
export type CreateApprovedAccessDomainInput = {
domain: Scalars['String'];
email: Scalars['String'];
};
export type CreateDraftFromWorkflowVersionInput = {
/** Workflow ID */
workflowId: Scalars['String'];
@@ -337,6 +370,10 @@ export type CustomDomainValidRecords = {
records: Array<CustomDomainRecord>;
};
export type DeleteApprovedAccessDomainInput = {
id: Scalars['String'];
};
export type DeleteOneFieldInput = {
/** The id of the field to delete. */
id: Scalars['UUID'];
@@ -454,6 +491,7 @@ export enum FeatureFlagKey {
IsAdvancedFiltersEnabled = 'IsAdvancedFiltersEnabled',
IsAirtableIntegrationEnabled = 'IsAirtableIntegrationEnabled',
IsAnalyticsV2Enabled = 'IsAnalyticsV2Enabled',
IsApprovedAccessDomainsEnabled = 'IsApprovedAccessDomainsEnabled',
IsBillingPlansEnabled = 'IsBillingPlansEnabled',
IsCommandMenuV2Enabled = 'IsCommandMenuV2Enabled',
IsCopilotEnabled = 'IsCopilotEnabled',
@@ -591,6 +629,13 @@ export type GetServerlessFunctionSourceCodeInput = {
version?: Scalars['String'];
};
export enum HealthIndicatorId {
connectedAccount = 'connectedAccount',
database = 'database',
redis = 'redis',
worker = 'worker'
}
export enum IdentityProviderType {
OIDC = 'OIDC',
SAML = 'SAML'
@@ -732,10 +777,10 @@ export type Mutation = {
activateWorkflowVersion: Scalars['Boolean'];
activateWorkspace: Workspace;
authorizeApp: AuthorizeApp;
buildDraftServerlessFunction: ServerlessFunction;
checkCustomDomainValidRecords?: Maybe<CustomDomainValidRecords>;
checkoutSession: BillingSessionOutput;
computeStepOutputSchema: Scalars['JSON'];
createApprovedAccessDomain: ApprovedAccessDomain;
createDraftFromWorkflowVersion: WorkflowVersion;
createOIDCIdentityProvider: SetupSsoOutput;
createOneAppToken: AppToken;
@@ -745,6 +790,7 @@ export type Mutation = {
createSAMLIdentityProvider: SetupSsoOutput;
createWorkflowVersionStep: WorkflowAction;
deactivateWorkflowVersion: Scalars['Boolean'];
deleteApprovedAccessDomain: Scalars['Boolean'];
deleteCurrentWorkspace: Workspace;
deleteOneField: Field;
deleteOneObject: Object;
@@ -789,6 +835,7 @@ export type Mutation = {
uploadProfilePicture: Scalars['String'];
uploadWorkspaceLogo: Scalars['String'];
userLookupAdminPanel: UserLookup;
validateApprovedAccessDomain: ApprovedAccessDomain;
};
@@ -809,11 +856,6 @@ export type MutationAuthorizeAppArgs = {
};
export type MutationBuildDraftServerlessFunctionArgs = {
input: BuildDraftServerlessFunctionInput;
};
export type MutationCheckoutSessionArgs = {
plan?: BillingPlanKey;
recurringInterval: SubscriptionInterval;
@@ -827,6 +869,11 @@ export type MutationComputeStepOutputSchemaArgs = {
};
export type MutationCreateApprovedAccessDomainArgs = {
input: CreateApprovedAccessDomainInput;
};
export type MutationCreateDraftFromWorkflowVersionArgs = {
input: CreateDraftFromWorkflowVersionInput;
};
@@ -862,6 +909,11 @@ export type MutationDeactivateWorkflowVersionArgs = {
};
export type MutationDeleteApprovedAccessDomainArgs = {
input: DeleteApprovedAccessDomainInput;
};
export type MutationDeleteOneFieldArgs = {
input: DeleteOneFieldInput;
};
@@ -1064,6 +1116,11 @@ export type MutationUserLookupAdminPanelArgs = {
userIdentifier: Scalars['String'];
};
export type MutationValidateApprovedAccessDomainArgs = {
input: ValidateApprovedAccessDomainInput;
};
export type Object = {
__typename?: 'Object';
createdAt: Scalars['DateTime'];
@@ -1172,6 +1229,13 @@ export type PageInfo = {
startCursor?: Maybe<Scalars['ConnectionCursor']>;
};
export enum PermissionsOnAllObjectRecords {
DESTROY_ALL_OBJECT_RECORDS = 'DESTROY_ALL_OBJECT_RECORDS',
READ_ALL_OBJECT_RECORDS = 'READ_ALL_OBJECT_RECORDS',
SOFT_DELETE_ALL_OBJECT_RECORDS = 'SOFT_DELETE_ALL_OBJECT_RECORDS',
UPDATE_ALL_OBJECT_RECORDS = 'UPDATE_ALL_OBJECT_RECORDS'
}
export type PostgresCredentials = {
__typename?: 'PostgresCredentials';
id: Scalars['UUID'];
@@ -1222,20 +1286,23 @@ export type Query = {
findOneServerlessFunction: ServerlessFunction;
findWorkspaceFromInviteHash: Workspace;
findWorkspaceInvitations: Array<WorkspaceInvitation>;
getApprovedAccessDomains: Array<ApprovedAccessDomain>;
getAvailablePackages: Scalars['JSON'];
getEnvironmentVariablesGrouped: EnvironmentVariablesOutput;
getIndicatorHealthStatus: AdminPanelHealthServiceData;
getPostgresCredentials?: Maybe<PostgresCredentials>;
getProductPrices: BillingProductPricesOutput;
getPublicWorkspaceDataByDomain: PublicWorkspaceDataOutput;
getRoles: Array<Role>;
getSSOIdentityProviders: Array<FindAvailableSsoidpOutput>;
getServerlessFunctionSourceCode?: Maybe<Scalars['JSON']>;
getSystemHealthStatus: SystemHealth;
getTimelineCalendarEventsFromCompanyId: TimelineCalendarEventsWithTotal;
getTimelineCalendarEventsFromPersonId: TimelineCalendarEventsWithTotal;
getTimelineThreadsFromCompanyId: TimelineThreadsWithTotal;
getTimelineThreadsFromPersonId: TimelineThreadsWithTotal;
index: Index;
indexMetadatas: IndexConnection;
listSSOIdentityProvidersByWorkspaceId: Array<FindAvailableSsoidpOutput>;
object: Object;
objects: ObjectConnection;
plans: Array<BillingPlanOutput>;
@@ -1279,6 +1346,11 @@ export type QueryGetAvailablePackagesArgs = {
};
export type QueryGetIndicatorHealthStatusArgs = {
indicatorId: HealthIndicatorId;
};
export type QueryGetProductPricesArgs = {
product: Scalars['String'];
};
@@ -1428,6 +1500,10 @@ export type ResendEmailVerificationTokenOutput = {
export type Role = {
__typename?: 'Role';
canDestroyAllObjectRecords: Scalars['Boolean'];
canReadAllObjectRecords: Scalars['Boolean'];
canSoftDeleteAllObjectRecords: Scalars['Boolean'];
canUpdateAllObjectRecords: Scalars['Boolean'];
canUpdateAllSettings: Scalars['Boolean'];
description?: Maybe<Scalars['String']>;
id: Scalars['String'];
@@ -1528,7 +1604,7 @@ export enum ServerlessFunctionSyncStatus {
READY = 'READY'
}
export enum SettingsFeatures {
export enum SettingsPermissions {
ADMIN_PANEL = 'ADMIN_PANEL',
API_KEYS_AND_WEBHOOKS = 'API_KEYS_AND_WEBHOOKS',
DATA_MODEL = 'DATA_MODEL',
@@ -1593,6 +1669,18 @@ export type Support = {
supportFrontChatId?: Maybe<Scalars['String']>;
};
export type SystemHealth = {
__typename?: 'SystemHealth';
services: Array<SystemHealthService>;
};
export type SystemHealthService = {
__typename?: 'SystemHealthService';
id: HealthIndicatorId;
label: Scalars['String'];
status: AdminPanelHealthServiceStatus;
};
export type TimelineCalendarEvent = {
__typename?: 'TimelineCalendarEvent';
conferenceLink: LinksMetadata;
@@ -1827,7 +1915,8 @@ export type UserWorkspace = {
createdAt: Scalars['DateTime'];
deletedAt?: Maybe<Scalars['DateTime']>;
id: Scalars['UUID'];
settingsPermissions?: Maybe<Array<SettingsFeatures>>;
objectRecordsPermissions?: Maybe<Array<PermissionsOnAllObjectRecords>>;
settingsPermissions?: Maybe<Array<SettingsPermissions>>;
updatedAt: Scalars['DateTime'];
user: User;
userId: Scalars['String'];
@@ -1835,12 +1924,27 @@ export type UserWorkspace = {
workspaceId: Scalars['String'];
};
export type ValidateApprovedAccessDomainInput = {
approvedAccessDomainId: Scalars['String'];
validationToken: Scalars['String'];
};
export type ValidatePasswordResetToken = {
__typename?: 'ValidatePasswordResetToken';
email: Scalars['String'];
id: Scalars['String'];
};
export type WorkerQueueMetrics = {
__typename?: 'WorkerQueueMetrics';
active: Scalars['Float'];
completed: Scalars['Float'];
delayed: Scalars['Float'];
failed: Scalars['Float'];
prioritized: Scalars['Float'];
waiting: Scalars['Float'];
};
export type WorkflowAction = {
__typename?: 'WorkflowAction';
id: Scalars['UUID'];
@@ -2209,7 +2313,7 @@ export type UpdateBillingSubscriptionMutation = { __typename?: 'Mutation', updat
export type GetClientConfigQueryVariables = Exact<{ [key: string]: never; }>;
export type GetClientConfigQuery = { __typename?: 'Query', clientConfig: { __typename?: 'ClientConfig', signInPrefilled: boolean, isMultiWorkspaceEnabled: boolean, isEmailVerificationRequired: boolean, defaultSubdomain?: string | null, frontDomain: string, debugMode: boolean, analyticsEnabled: boolean, chromeExtensionId?: string | null, canManageFeatureFlags: boolean, isMicrosoftMessagingEnabled: boolean, isMicrosoftCalendarEnabled: boolean, isGoogleMessagingEnabled: boolean, isGoogleCalendarEnabled: boolean, billing: { __typename?: 'Billing', isBillingEnabled: boolean, billingUrl?: string | null, trialPeriods: Array<{ __typename?: 'BillingTrialPeriodDTO', duration: number, isCreditCardRequired: boolean }> }, authProviders: { __typename?: 'AuthProviders', google: boolean, password: boolean, microsoft: boolean, sso: Array<{ __typename?: 'SSOIdentityProvider', id: string, name: string, type: IdentityProviderType, status: SsoIdentityProviderStatus, issuer: string }> }, support: { __typename?: 'Support', supportDriver: string, supportFrontChatId?: string | null }, sentry: { __typename?: 'Sentry', dsn?: string | null, environment?: string | null, release?: string | null }, captcha: { __typename?: 'Captcha', provider?: CaptchaDriverType | null, siteKey?: string | null }, api: { __typename?: 'ApiConfig', mutationMaximumAffectedRecords: number }, publicFeatureFlags: Array<{ __typename?: 'PublicFeatureFlag', key: FeatureFlagKey, metadata: { __typename?: 'PublicFeatureFlagMetadata', label: string, description: string, imagePath: string } }> } };
export type GetClientConfigQuery = { __typename?: 'Query', clientConfig: { __typename?: 'ClientConfig', signInPrefilled: boolean, isMultiWorkspaceEnabled: boolean, isEmailVerificationRequired: boolean, defaultSubdomain?: string | null, frontDomain: string, debugMode: boolean, analyticsEnabled: boolean, isAttachmentPreviewEnabled: boolean, chromeExtensionId?: string | null, canManageFeatureFlags: boolean, isMicrosoftMessagingEnabled: boolean, isMicrosoftCalendarEnabled: boolean, isGoogleMessagingEnabled: boolean, isGoogleCalendarEnabled: boolean, billing: { __typename?: 'Billing', isBillingEnabled: boolean, billingUrl?: string | null, trialPeriods: Array<{ __typename?: 'BillingTrialPeriodDTO', duration: number, isCreditCardRequired: boolean }> }, authProviders: { __typename?: 'AuthProviders', google: boolean, password: boolean, microsoft: boolean, sso: Array<{ __typename?: 'SSOIdentityProvider', id: string, name: string, type: IdentityProviderType, status: SsoIdentityProviderStatus, issuer: string }> }, support: { __typename?: 'Support', supportDriver: string, supportFrontChatId?: string | null }, sentry: { __typename?: 'Sentry', dsn?: string | null, environment?: string | null, release?: string | null }, captcha: { __typename?: 'Captcha', provider?: CaptchaDriverType | null, siteKey?: string | null }, api: { __typename?: 'ApiConfig', mutationMaximumAffectedRecords: number }, publicFeatureFlags: Array<{ __typename?: 'PublicFeatureFlag', key: FeatureFlagKey, metadata: { __typename?: 'PublicFeatureFlagMetadata', label: string, description: string, imagePath: string } }> } };
export type SkipSyncEmailOnboardingStepMutationVariables = Exact<{ [key: string]: never; }>;
@@ -2237,6 +2341,18 @@ export type GetEnvironmentVariablesGroupedQueryVariables = Exact<{ [key: string]
export type GetEnvironmentVariablesGroupedQuery = { __typename?: 'Query', getEnvironmentVariablesGrouped: { __typename?: 'EnvironmentVariablesOutput', groups: Array<{ __typename?: 'EnvironmentVariablesGroupData', name: EnvironmentVariablesGroup, description: string, isHiddenOnLoad: boolean, variables: Array<{ __typename?: 'EnvironmentVariable', name: string, description: string, value: string, sensitive: boolean }> }> } };
export type GetIndicatorHealthStatusQueryVariables = Exact<{
indicatorId: HealthIndicatorId;
}>;
export type GetIndicatorHealthStatusQuery = { __typename?: 'Query', getIndicatorHealthStatus: { __typename?: 'AdminPanelHealthServiceData', id: string, label: string, description: string, status: AdminPanelHealthServiceStatus, details?: string | null, queues?: Array<{ __typename?: 'AdminPanelWorkerQueueHealth', id: string, queueName: string, status: AdminPanelHealthServiceStatus, workers: number, metrics: { __typename?: 'WorkerQueueMetrics', failed: number, completed: number, waiting: number, active: number, delayed: number, prioritized: number } }> | null } };
export type GetSystemHealthStatusQueryVariables = Exact<{ [key: string]: never; }>;
export type GetSystemHealthStatusQuery = { __typename?: 'Query', getSystemHealthStatus: { __typename?: 'SystemHealth', services: Array<{ __typename?: 'SystemHealthService', id: HealthIndicatorId, label: string, status: AdminPanelHealthServiceStatus }> } };
export type UpdateLabPublicFeatureFlagMutationVariables = Exact<{
input: UpdateLabPublicFeatureFlagInput;
}>;
@@ -2244,7 +2360,7 @@ export type UpdateLabPublicFeatureFlagMutationVariables = Exact<{
export type UpdateLabPublicFeatureFlagMutation = { __typename?: 'Mutation', updateLabPublicFeatureFlag: { __typename?: 'FeatureFlag', id: any, key: FeatureFlagKey, value: boolean } };
export type RoleFragmentFragment = { __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean };
export type RoleFragmentFragment = { __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean, canReadAllObjectRecords: boolean, canUpdateAllObjectRecords: boolean, canSoftDeleteAllObjectRecords: boolean, canDestroyAllObjectRecords: boolean };
export type UpdateWorkspaceMemberRoleMutationVariables = Exact<{
workspaceMemberId: Scalars['String'];
@@ -2252,12 +2368,19 @@ export type UpdateWorkspaceMemberRoleMutationVariables = Exact<{
}>;
export type UpdateWorkspaceMemberRoleMutation = { __typename?: 'Mutation', updateWorkspaceMemberRole: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, roles?: Array<{ __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean }> | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } };
export type UpdateWorkspaceMemberRoleMutation = { __typename?: 'Mutation', updateWorkspaceMemberRole: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, roles?: Array<{ __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean, canReadAllObjectRecords: boolean, canUpdateAllObjectRecords: boolean, canSoftDeleteAllObjectRecords: boolean, canDestroyAllObjectRecords: boolean }> | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } };
export type GetRolesQueryVariables = Exact<{ [key: string]: never; }>;
export type GetRolesQuery = { __typename?: 'Query', getRoles: Array<{ __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean, workspaceMembers: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> }> };
export type GetRolesQuery = { __typename?: 'Query', getRoles: Array<{ __typename?: 'Role', id: string, label: string, description?: string | null, canUpdateAllSettings: boolean, isEditable: boolean, canReadAllObjectRecords: boolean, canUpdateAllObjectRecords: boolean, canSoftDeleteAllObjectRecords: boolean, canDestroyAllObjectRecords: boolean, workspaceMembers: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> }> };
export type CreateApprovedAccessDomainMutationVariables = Exact<{
input: CreateApprovedAccessDomainInput;
}>;
export type CreateApprovedAccessDomainMutation = { __typename?: 'Mutation', createApprovedAccessDomain: { __typename?: 'ApprovedAccessDomain', id: any, domain: string, isValidated: boolean, createdAt: string } };
export type CreateOidcIdentityProviderMutationVariables = Exact<{
input: SetupOidcSsoInput;
@@ -2273,6 +2396,13 @@ export type CreateSamlIdentityProviderMutationVariables = Exact<{
export type CreateSamlIdentityProviderMutation = { __typename?: 'Mutation', createSAMLIdentityProvider: { __typename?: 'SetupSsoOutput', id: string, type: IdentityProviderType, issuer: string, name: string, status: SsoIdentityProviderStatus } };
export type DeleteApprovedAccessDomainMutationVariables = Exact<{
input: DeleteApprovedAccessDomainInput;
}>;
export type DeleteApprovedAccessDomainMutation = { __typename?: 'Mutation', deleteApprovedAccessDomain: boolean };
export type DeleteSsoIdentityProviderMutationVariables = Exact<{
input: DeleteSsoInput;
}>;
@@ -2287,12 +2417,24 @@ export type EditSsoIdentityProviderMutationVariables = Exact<{
export type EditSsoIdentityProviderMutation = { __typename?: 'Mutation', editSSOIdentityProvider: { __typename?: 'EditSsoOutput', id: string, type: IdentityProviderType, issuer: string, name: string, status: SsoIdentityProviderStatus } };
export type ListSsoIdentityProvidersByWorkspaceIdQueryVariables = Exact<{ [key: string]: never; }>;
export type ValidateApprovedAccessDomainMutationVariables = Exact<{
input: ValidateApprovedAccessDomainInput;
}>;
export type ListSsoIdentityProvidersByWorkspaceIdQuery = { __typename?: 'Query', listSSOIdentityProvidersByWorkspaceId: Array<{ __typename?: 'FindAvailableSSOIDPOutput', type: IdentityProviderType, id: string, name: string, issuer: string, status: SsoIdentityProviderStatus }> };
export type ValidateApprovedAccessDomainMutation = { __typename?: 'Mutation', validateApprovedAccessDomain: { __typename?: 'ApprovedAccessDomain', id: any, isValidated: boolean, domain: string, createdAt: string } };
export type UserQueryFragmentFragment = { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, onboardingStatus?: OnboardingStatus | null, userVars: any, analyticsTinybirdJwts?: { __typename?: 'AnalyticsTinybirdJwtMap', getWebhookAnalytics: string, getPageviewsAnalytics: string, getUsersAnalytics: string, getServerlessFunctionDuration: string, getServerlessFunctionSuccessRate: string, getServerlessFunctionErrorCount: string } | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, workspaceMembers?: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> | null, currentUserWorkspace?: { __typename?: 'UserWorkspace', settingsPermissions?: Array<SettingsFeatures> | null } | null, currentWorkspace?: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, inviteHash?: string | null, allowImpersonation: boolean, activationStatus: WorkspaceActivationStatus, isPublicInviteLinkEnabled: boolean, isGoogleAuthEnabled: boolean, isMicrosoftAuthEnabled: boolean, isPasswordAuthEnabled: boolean, subdomain: string, hasValidEnterpriseKey: boolean, customDomain?: string | null, metadataVersion: number, workspaceMembersCount?: number | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null }, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: FeatureFlagKey, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus, interval?: SubscriptionInterval | null } | null, billingSubscriptions: Array<{ __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus }> } | null, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, subdomain: string, customDomain?: string | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null } } | null }> };
export type GetApprovedAccessDomainsQueryVariables = Exact<{ [key: string]: never; }>;
export type GetApprovedAccessDomainsQuery = { __typename?: 'Query', getApprovedAccessDomains: Array<{ __typename?: 'ApprovedAccessDomain', id: any, createdAt: string, domain: string, isValidated: boolean }> };
export type GetSsoIdentityProvidersQueryVariables = Exact<{ [key: string]: never; }>;
export type GetSsoIdentityProvidersQuery = { __typename?: 'Query', getSSOIdentityProviders: Array<{ __typename?: 'FindAvailableSSOIDPOutput', type: IdentityProviderType, id: string, name: string, issuer: string, status: SsoIdentityProviderStatus }> };
export type UserQueryFragmentFragment = { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, onboardingStatus?: OnboardingStatus | null, userVars: any, analyticsTinybirdJwts?: { __typename?: 'AnalyticsTinybirdJwtMap', getWebhookAnalytics: string, getPageviewsAnalytics: string, getUsersAnalytics: string, getServerlessFunctionDuration: string, getServerlessFunctionSuccessRate: string, getServerlessFunctionErrorCount: string } | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, workspaceMembers?: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> | null, currentUserWorkspace?: { __typename?: 'UserWorkspace', settingsPermissions?: Array<SettingsPermissions> | null, objectRecordsPermissions?: Array<PermissionsOnAllObjectRecords> | null } | null, currentWorkspace?: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, inviteHash?: string | null, allowImpersonation: boolean, activationStatus: WorkspaceActivationStatus, isPublicInviteLinkEnabled: boolean, isGoogleAuthEnabled: boolean, isMicrosoftAuthEnabled: boolean, isPasswordAuthEnabled: boolean, subdomain: string, hasValidEnterpriseKey: boolean, customDomain?: string | null, metadataVersion: number, workspaceMembersCount?: number | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null }, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: FeatureFlagKey, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus, interval?: SubscriptionInterval | null } | null, billingSubscriptions: Array<{ __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus }> } | null, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, subdomain: string, customDomain?: string | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null } } | null }> };
export type DeleteUserAccountMutationVariables = Exact<{ [key: string]: never; }>;
@@ -2309,7 +2451,7 @@ export type UploadProfilePictureMutation = { __typename?: 'Mutation', uploadProf
export type GetCurrentUserQueryVariables = Exact<{ [key: string]: never; }>;
export type GetCurrentUserQuery = { __typename?: 'Query', currentUser: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, onboardingStatus?: OnboardingStatus | null, userVars: any, analyticsTinybirdJwts?: { __typename?: 'AnalyticsTinybirdJwtMap', getWebhookAnalytics: string, getPageviewsAnalytics: string, getUsersAnalytics: string, getServerlessFunctionDuration: string, getServerlessFunctionSuccessRate: string, getServerlessFunctionErrorCount: string } | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, workspaceMembers?: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> | null, currentUserWorkspace?: { __typename?: 'UserWorkspace', settingsPermissions?: Array<SettingsFeatures> | null } | null, currentWorkspace?: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, inviteHash?: string | null, allowImpersonation: boolean, activationStatus: WorkspaceActivationStatus, isPublicInviteLinkEnabled: boolean, isGoogleAuthEnabled: boolean, isMicrosoftAuthEnabled: boolean, isPasswordAuthEnabled: boolean, subdomain: string, hasValidEnterpriseKey: boolean, customDomain?: string | null, metadataVersion: number, workspaceMembersCount?: number | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null }, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: FeatureFlagKey, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus, interval?: SubscriptionInterval | null } | null, billingSubscriptions: Array<{ __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus }> } | null, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, subdomain: string, customDomain?: string | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null } } | null }> } };
export type GetCurrentUserQuery = { __typename?: 'Query', currentUser: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, onboardingStatus?: OnboardingStatus | null, userVars: any, analyticsTinybirdJwts?: { __typename?: 'AnalyticsTinybirdJwtMap', getWebhookAnalytics: string, getPageviewsAnalytics: string, getUsersAnalytics: string, getServerlessFunctionDuration: string, getServerlessFunctionSuccessRate: string, getServerlessFunctionErrorCount: string } | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, workspaceMembers?: Array<{ __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale?: string | null, userEmail: string, timeZone?: string | null, dateFormat?: WorkspaceMemberDateFormatEnum | null, timeFormat?: WorkspaceMemberTimeFormatEnum | null, name: { __typename?: 'FullName', firstName: string, lastName: string } }> | null, currentUserWorkspace?: { __typename?: 'UserWorkspace', settingsPermissions?: Array<SettingsPermissions> | null, objectRecordsPermissions?: Array<PermissionsOnAllObjectRecords> | null } | null, currentWorkspace?: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, inviteHash?: string | null, allowImpersonation: boolean, activationStatus: WorkspaceActivationStatus, isPublicInviteLinkEnabled: boolean, isGoogleAuthEnabled: boolean, isMicrosoftAuthEnabled: boolean, isPasswordAuthEnabled: boolean, subdomain: string, hasValidEnterpriseKey: boolean, customDomain?: string | null, metadataVersion: number, workspaceMembersCount?: number | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null }, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: FeatureFlagKey, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus, interval?: SubscriptionInterval | null } | null, billingSubscriptions: Array<{ __typename?: 'BillingSubscription', id: any, status: SubscriptionStatus }> } | null, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, subdomain: string, customDomain?: string | null, workspaceUrls: { __typename?: 'workspaceUrls', subdomainUrl: string, customUrl?: string | null } } | null }> } };
export type ActivateWorkflowVersionMutationVariables = Exact<{
workflowVersionId: Scalars['String'];
@@ -2539,6 +2681,10 @@ export const RoleFragmentFragmentDoc = gql`
description
canUpdateAllSettings
isEditable
canReadAllObjectRecords
canUpdateAllObjectRecords
canSoftDeleteAllObjectRecords
canDestroyAllObjectRecords
}
`;
export const WorkspaceMemberQueryFragmentFragmentDoc = gql`
@@ -2582,6 +2728,7 @@ export const UserQueryFragmentFragmentDoc = gql`
}
currentUserWorkspace {
settingsPermissions
objectRecordsPermissions
}
currentWorkspace {
id
@@ -3717,6 +3864,7 @@ export const GetClientConfigDocument = gql`
frontDomain
debugMode
analyticsEnabled
isAttachmentPreviewEnabled
support {
supportDriver
supportFrontChatId
@@ -3945,6 +4093,97 @@ export function useGetEnvironmentVariablesGroupedLazyQuery(baseOptions?: Apollo.
export type GetEnvironmentVariablesGroupedQueryHookResult = ReturnType<typeof useGetEnvironmentVariablesGroupedQuery>;
export type GetEnvironmentVariablesGroupedLazyQueryHookResult = ReturnType<typeof useGetEnvironmentVariablesGroupedLazyQuery>;
export type GetEnvironmentVariablesGroupedQueryResult = Apollo.QueryResult<GetEnvironmentVariablesGroupedQuery, GetEnvironmentVariablesGroupedQueryVariables>;
export const GetIndicatorHealthStatusDocument = gql`
query GetIndicatorHealthStatus($indicatorId: HealthIndicatorId!) {
getIndicatorHealthStatus(indicatorId: $indicatorId) {
id
label
description
status
details
queues {
id
queueName
status
workers
metrics {
failed
completed
waiting
active
delayed
prioritized
}
}
}
}
`;
/**
* __useGetIndicatorHealthStatusQuery__
*
* To run a query within a React component, call `useGetIndicatorHealthStatusQuery` and pass it any options that fit your needs.
* When your component renders, `useGetIndicatorHealthStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useGetIndicatorHealthStatusQuery({
* variables: {
* indicatorId: // value for 'indicatorId'
* },
* });
*/
export function useGetIndicatorHealthStatusQuery(baseOptions: Apollo.QueryHookOptions<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>(GetIndicatorHealthStatusDocument, options);
}
export function useGetIndicatorHealthStatusLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>(GetIndicatorHealthStatusDocument, options);
}
export type GetIndicatorHealthStatusQueryHookResult = ReturnType<typeof useGetIndicatorHealthStatusQuery>;
export type GetIndicatorHealthStatusLazyQueryHookResult = ReturnType<typeof useGetIndicatorHealthStatusLazyQuery>;
export type GetIndicatorHealthStatusQueryResult = Apollo.QueryResult<GetIndicatorHealthStatusQuery, GetIndicatorHealthStatusQueryVariables>;
export const GetSystemHealthStatusDocument = gql`
query GetSystemHealthStatus {
getSystemHealthStatus {
services {
id
label
status
}
}
}
`;
/**
* __useGetSystemHealthStatusQuery__
*
* To run a query within a React component, call `useGetSystemHealthStatusQuery` and pass it any options that fit your needs.
* When your component renders, `useGetSystemHealthStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useGetSystemHealthStatusQuery({
* variables: {
* },
* });
*/
export function useGetSystemHealthStatusQuery(baseOptions?: Apollo.QueryHookOptions<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>(GetSystemHealthStatusDocument, options);
}
export function useGetSystemHealthStatusLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>(GetSystemHealthStatusDocument, options);
}
export type GetSystemHealthStatusQueryHookResult = ReturnType<typeof useGetSystemHealthStatusQuery>;
export type GetSystemHealthStatusLazyQueryHookResult = ReturnType<typeof useGetSystemHealthStatusLazyQuery>;
export type GetSystemHealthStatusQueryResult = Apollo.QueryResult<GetSystemHealthStatusQuery, GetSystemHealthStatusQueryVariables>;
export const UpdateLabPublicFeatureFlagDocument = gql`
mutation UpdateLabPublicFeatureFlag($input: UpdateLabPublicFeatureFlagInput!) {
updateLabPublicFeatureFlag(input: $input) {
@@ -4059,6 +4298,42 @@ export function useGetRolesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<G
export type GetRolesQueryHookResult = ReturnType<typeof useGetRolesQuery>;
export type GetRolesLazyQueryHookResult = ReturnType<typeof useGetRolesLazyQuery>;
export type GetRolesQueryResult = Apollo.QueryResult<GetRolesQuery, GetRolesQueryVariables>;
export const CreateApprovedAccessDomainDocument = gql`
mutation CreateApprovedAccessDomain($input: CreateApprovedAccessDomainInput!) {
createApprovedAccessDomain(input: $input) {
id
domain
isValidated
createdAt
}
}
`;
export type CreateApprovedAccessDomainMutationFn = Apollo.MutationFunction<CreateApprovedAccessDomainMutation, CreateApprovedAccessDomainMutationVariables>;
/**
* __useCreateApprovedAccessDomainMutation__
*
* To run a mutation, you first call `useCreateApprovedAccessDomainMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useCreateApprovedAccessDomainMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [createApprovedAccessDomainMutation, { data, loading, error }] = useCreateApprovedAccessDomainMutation({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useCreateApprovedAccessDomainMutation(baseOptions?: Apollo.MutationHookOptions<CreateApprovedAccessDomainMutation, CreateApprovedAccessDomainMutationVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useMutation<CreateApprovedAccessDomainMutation, CreateApprovedAccessDomainMutationVariables>(CreateApprovedAccessDomainDocument, options);
}
export type CreateApprovedAccessDomainMutationHookResult = ReturnType<typeof useCreateApprovedAccessDomainMutation>;
export type CreateApprovedAccessDomainMutationResult = Apollo.MutationResult<CreateApprovedAccessDomainMutation>;
export type CreateApprovedAccessDomainMutationOptions = Apollo.BaseMutationOptions<CreateApprovedAccessDomainMutation, CreateApprovedAccessDomainMutationVariables>;
export const CreateOidcIdentityProviderDocument = gql`
mutation CreateOIDCIdentityProvider($input: SetupOIDCSsoInput!) {
createOIDCIdentityProvider(input: $input) {
@@ -4133,6 +4408,37 @@ export function useCreateSamlIdentityProviderMutation(baseOptions?: Apollo.Mutat
export type CreateSamlIdentityProviderMutationHookResult = ReturnType<typeof useCreateSamlIdentityProviderMutation>;
export type CreateSamlIdentityProviderMutationResult = Apollo.MutationResult<CreateSamlIdentityProviderMutation>;
export type CreateSamlIdentityProviderMutationOptions = Apollo.BaseMutationOptions<CreateSamlIdentityProviderMutation, CreateSamlIdentityProviderMutationVariables>;
export const DeleteApprovedAccessDomainDocument = gql`
mutation DeleteApprovedAccessDomain($input: DeleteApprovedAccessDomainInput!) {
deleteApprovedAccessDomain(input: $input)
}
`;
export type DeleteApprovedAccessDomainMutationFn = Apollo.MutationFunction<DeleteApprovedAccessDomainMutation, DeleteApprovedAccessDomainMutationVariables>;
/**
* __useDeleteApprovedAccessDomainMutation__
*
* To run a mutation, you first call `useDeleteApprovedAccessDomainMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useDeleteApprovedAccessDomainMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [deleteApprovedAccessDomainMutation, { data, loading, error }] = useDeleteApprovedAccessDomainMutation({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useDeleteApprovedAccessDomainMutation(baseOptions?: Apollo.MutationHookOptions<DeleteApprovedAccessDomainMutation, DeleteApprovedAccessDomainMutationVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useMutation<DeleteApprovedAccessDomainMutation, DeleteApprovedAccessDomainMutationVariables>(DeleteApprovedAccessDomainDocument, options);
}
export type DeleteApprovedAccessDomainMutationHookResult = ReturnType<typeof useDeleteApprovedAccessDomainMutation>;
export type DeleteApprovedAccessDomainMutationResult = Apollo.MutationResult<DeleteApprovedAccessDomainMutation>;
export type DeleteApprovedAccessDomainMutationOptions = Apollo.BaseMutationOptions<DeleteApprovedAccessDomainMutation, DeleteApprovedAccessDomainMutationVariables>;
export const DeleteSsoIdentityProviderDocument = gql`
mutation DeleteSSOIdentityProvider($input: DeleteSsoInput!) {
deleteSSOIdentityProvider(input: $input) {
@@ -4203,9 +4509,82 @@ export function useEditSsoIdentityProviderMutation(baseOptions?: Apollo.Mutation
export type EditSsoIdentityProviderMutationHookResult = ReturnType<typeof useEditSsoIdentityProviderMutation>;
export type EditSsoIdentityProviderMutationResult = Apollo.MutationResult<EditSsoIdentityProviderMutation>;
export type EditSsoIdentityProviderMutationOptions = Apollo.BaseMutationOptions<EditSsoIdentityProviderMutation, EditSsoIdentityProviderMutationVariables>;
export const ListSsoIdentityProvidersByWorkspaceIdDocument = gql`
query ListSSOIdentityProvidersByWorkspaceId {
listSSOIdentityProvidersByWorkspaceId {
export const ValidateApprovedAccessDomainDocument = gql`
mutation ValidateApprovedAccessDomain($input: ValidateApprovedAccessDomainInput!) {
validateApprovedAccessDomain(input: $input) {
id
isValidated
domain
createdAt
}
}
`;
export type ValidateApprovedAccessDomainMutationFn = Apollo.MutationFunction<ValidateApprovedAccessDomainMutation, ValidateApprovedAccessDomainMutationVariables>;
/**
* __useValidateApprovedAccessDomainMutation__
*
* To run a mutation, you first call `useValidateApprovedAccessDomainMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useValidateApprovedAccessDomainMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [validateApprovedAccessDomainMutation, { data, loading, error }] = useValidateApprovedAccessDomainMutation({
* variables: {
* input: // value for 'input'
* },
* });
*/
export function useValidateApprovedAccessDomainMutation(baseOptions?: Apollo.MutationHookOptions<ValidateApprovedAccessDomainMutation, ValidateApprovedAccessDomainMutationVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useMutation<ValidateApprovedAccessDomainMutation, ValidateApprovedAccessDomainMutationVariables>(ValidateApprovedAccessDomainDocument, options);
}
export type ValidateApprovedAccessDomainMutationHookResult = ReturnType<typeof useValidateApprovedAccessDomainMutation>;
export type ValidateApprovedAccessDomainMutationResult = Apollo.MutationResult<ValidateApprovedAccessDomainMutation>;
export type ValidateApprovedAccessDomainMutationOptions = Apollo.BaseMutationOptions<ValidateApprovedAccessDomainMutation, ValidateApprovedAccessDomainMutationVariables>;
export const GetApprovedAccessDomainsDocument = gql`
query GetApprovedAccessDomains {
getApprovedAccessDomains {
id
createdAt
domain
isValidated
}
}
`;
/**
* __useGetApprovedAccessDomainsQuery__
*
* To run a query within a React component, call `useGetApprovedAccessDomainsQuery` and pass it any options that fit your needs.
* When your component renders, `useGetApprovedAccessDomainsQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useGetApprovedAccessDomainsQuery({
* variables: {
* },
* });
*/
export function useGetApprovedAccessDomainsQuery(baseOptions?: Apollo.QueryHookOptions<GetApprovedAccessDomainsQuery, GetApprovedAccessDomainsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<GetApprovedAccessDomainsQuery, GetApprovedAccessDomainsQueryVariables>(GetApprovedAccessDomainsDocument, options);
}
export function useGetApprovedAccessDomainsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetApprovedAccessDomainsQuery, GetApprovedAccessDomainsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<GetApprovedAccessDomainsQuery, GetApprovedAccessDomainsQueryVariables>(GetApprovedAccessDomainsDocument, options);
}
export type GetApprovedAccessDomainsQueryHookResult = ReturnType<typeof useGetApprovedAccessDomainsQuery>;
export type GetApprovedAccessDomainsLazyQueryHookResult = ReturnType<typeof useGetApprovedAccessDomainsLazyQuery>;
export type GetApprovedAccessDomainsQueryResult = Apollo.QueryResult<GetApprovedAccessDomainsQuery, GetApprovedAccessDomainsQueryVariables>;
export const GetSsoIdentityProvidersDocument = gql`
query GetSSOIdentityProviders {
getSSOIdentityProviders {
type
id
name
@@ -4216,31 +4595,31 @@ export const ListSsoIdentityProvidersByWorkspaceIdDocument = gql`
`;
/**
* __useListSsoIdentityProvidersByWorkspaceIdQuery__
* __useGetSsoIdentityProvidersQuery__
*
* To run a query within a React component, call `useListSsoIdentityProvidersByWorkspaceIdQuery` and pass it any options that fit your needs.
* When your component renders, `useListSsoIdentityProvidersByWorkspaceIdQuery` returns an object from Apollo Client that contains loading, error, and data properties
* To run a query within a React component, call `useGetSsoIdentityProvidersQuery` and pass it any options that fit your needs.
* When your component renders, `useGetSsoIdentityProvidersQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
*
* @example
* const { data, loading, error } = useListSsoIdentityProvidersByWorkspaceIdQuery({
* const { data, loading, error } = useGetSsoIdentityProvidersQuery({
* variables: {
* },
* });
*/
export function useListSsoIdentityProvidersByWorkspaceIdQuery(baseOptions?: Apollo.QueryHookOptions<ListSsoIdentityProvidersByWorkspaceIdQuery, ListSsoIdentityProvidersByWorkspaceIdQueryVariables>) {
export function useGetSsoIdentityProvidersQuery(baseOptions?: Apollo.QueryHookOptions<GetSsoIdentityProvidersQuery, GetSsoIdentityProvidersQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<ListSsoIdentityProvidersByWorkspaceIdQuery, ListSsoIdentityProvidersByWorkspaceIdQueryVariables>(ListSsoIdentityProvidersByWorkspaceIdDocument, options);
return Apollo.useQuery<GetSsoIdentityProvidersQuery, GetSsoIdentityProvidersQueryVariables>(GetSsoIdentityProvidersDocument, options);
}
export function useListSsoIdentityProvidersByWorkspaceIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<ListSsoIdentityProvidersByWorkspaceIdQuery, ListSsoIdentityProvidersByWorkspaceIdQueryVariables>) {
export function useGetSsoIdentityProvidersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetSsoIdentityProvidersQuery, GetSsoIdentityProvidersQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<ListSsoIdentityProvidersByWorkspaceIdQuery, ListSsoIdentityProvidersByWorkspaceIdQueryVariables>(ListSsoIdentityProvidersByWorkspaceIdDocument, options);
return Apollo.useLazyQuery<GetSsoIdentityProvidersQuery, GetSsoIdentityProvidersQueryVariables>(GetSsoIdentityProvidersDocument, options);
}
export type ListSsoIdentityProvidersByWorkspaceIdQueryHookResult = ReturnType<typeof useListSsoIdentityProvidersByWorkspaceIdQuery>;
export type ListSsoIdentityProvidersByWorkspaceIdLazyQueryHookResult = ReturnType<typeof useListSsoIdentityProvidersByWorkspaceIdLazyQuery>;
export type ListSsoIdentityProvidersByWorkspaceIdQueryResult = Apollo.QueryResult<ListSsoIdentityProvidersByWorkspaceIdQuery, ListSsoIdentityProvidersByWorkspaceIdQueryVariables>;
export type GetSsoIdentityProvidersQueryHookResult = ReturnType<typeof useGetSsoIdentityProvidersQuery>;
export type GetSsoIdentityProvidersLazyQueryHookResult = ReturnType<typeof useGetSsoIdentityProvidersLazyQuery>;
export type GetSsoIdentityProvidersQueryResult = Apollo.QueryResult<GetSsoIdentityProvidersQuery, GetSsoIdentityProvidersQueryVariables>;
export const DeleteUserAccountDocument = gql`
mutation DeleteUserAccount {
deleteUser {
@@ -2,7 +2,9 @@ import { useIsLogged } from '@/auth/hooks/useIsLogged';
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { AppPath } from '@/types/AppPath';
import { useIsWorkspaceActivationStatusSuspended } from '@/workspace/hooks/useIsWorkspaceActivationStatusSuspended';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { useParams } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { OnboardingStatus } from '~/generated/graphql';
@@ -17,12 +19,12 @@ const setupMockOnboardingStatus = (
jest.mocked(useOnboardingStatus).mockReturnValueOnce(onboardingStatus);
};
jest.mock('@/workspace/hooks/useIsWorkspaceActivationStatusSuspended');
const setupMockIsWorkspaceActivationStatusSuspended = (
jest.mock('@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo');
const setupMockIsWorkspaceActivationStatusEqualsTo = (
isWorkspaceSuspended: boolean,
) => {
jest
.mocked(useIsWorkspaceActivationStatusSuspended)
.mocked(useIsWorkspaceActivationStatusEqualsTo)
.mockReturnValueOnce(isWorkspaceSuspended);
};
@@ -47,8 +49,30 @@ jest.mocked(useDefaultHomePagePath).mockReturnValue({
defaultHomePagePath,
});
jest.mock('react-router-dom');
const setupMockUseParams = (objectNamePlural?: string) => {
jest
.mocked(useParams)
.mockReturnValueOnce({ objectNamePlural: objectNamePlural ?? '' });
};
jest.mock('recoil');
const setupMockRecoil = (objectNamePlural?: string) => {
jest
.mocked(useRecoilValue)
.mockReturnValueOnce([{ namePlural: objectNamePlural ?? '' }]);
};
// prettier-ignore
const testCases = [
const testCases: {
loc: AppPath;
isLoggedIn: boolean;
isWorkspaceSuspended: boolean;
onboardingStatus: OnboardingStatus | undefined;
res: string | undefined;
objectNamePluralFromParams?: string;
objectNamePluralFromMetadata?: 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: '/settings/billing' },
{ loc: AppPath.Verify, isLoggedIn: false, isWorkspaceSuspended: false, onboardingStatus: undefined, res: undefined },
@@ -183,6 +207,8 @@ const testCases = [
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.SYNC_EMAIL, res: AppPath.SyncEmails },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.INVITE_TEAM, res: AppPath.InviteTeam },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: undefined, objectNamePluralFromParams: 'existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordIndexPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.COMPLETED, res: AppPath.NotFound, objectNamePluralFromParams: 'non-existing-object', objectNamePluralFromMetadata: 'existing-object' },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: false, onboardingStatus: OnboardingStatus.PLAN_REQUIRED, res: AppPath.PlanRequired },
{ loc: AppPath.RecordShowPage, isLoggedIn: true, isWorkspaceSuspended: true, onboardingStatus: OnboardingStatus.COMPLETED, res: '/settings/billing' },
@@ -244,10 +270,13 @@ describe('usePageChangeEffectNavigateLocation', () => {
it(`with location ${testCase.loc} and onboardingStatus ${testCase.onboardingStatus} and isWorkspaceSuspended ${testCase.isWorkspaceSuspended} should return ${testCase.res}`, () => {
setupMockIsMatchingLocation(testCase.loc);
setupMockOnboardingStatus(testCase.onboardingStatus);
setupMockIsWorkspaceActivationStatusSuspended(
setupMockIsWorkspaceActivationStatusEqualsTo(
testCase.isWorkspaceSuspended,
);
setupMockIsLogged(testCase.isLoggedIn);
setupMockUseParams(testCase.objectNamePluralFromParams);
setupMockRecoil(testCase.objectNamePluralFromMetadata);
expect(usePageChangeEffectNavigateLocation()).toEqual(testCase.res);
});
});
@@ -257,7 +286,9 @@ describe('usePageChangeEffectNavigateLocation', () => {
expect(testCases.length).toEqual(
(Object.keys(AppPath).length - UNTESTED_APP_PATHS.length) *
(Object.keys(OnboardingStatus).length +
['isWorkspaceSuspended:true', 'isWorkspaceSuspended:false'].length),
['isWorkspaceSuspended:true', 'isWorkspaceSuspended:false']
.length) +
['nonExistingObjectInParam', 'existingObjectInParam:false'].length,
);
});
});
@@ -1,9 +1,13 @@
import { useIsLogged } from '@/auth/hooks/useIsLogged';
import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
import { AppPath } from '@/types/AppPath';
import { SettingsPath } from '@/types/SettingsPath';
import { useIsWorkspaceActivationStatusSuspended } from '@/workspace/hooks/useIsWorkspaceActivationStatusSuspended';
import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo';
import { useParams } from 'react-router-dom';
import { useRecoilValue } from 'recoil';
import { WorkspaceActivationStatus, isDefined } from 'twenty-shared';
import { OnboardingStatus } from '~/generated/graphql';
import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation';
@@ -11,7 +15,9 @@ export const usePageChangeEffectNavigateLocation = () => {
const { isMatchingLocation } = useIsMatchingLocation();
const isLoggedIn = useIsLogged();
const onboardingStatus = useOnboardingStatus();
const isWorkspaceSuspended = useIsWorkspaceActivationStatusSuspended();
const isWorkspaceSuspended = useIsWorkspaceActivationStatusEqualsTo(
WorkspaceActivationStatus.SUSPENDED,
);
const { defaultHomePagePath } = useDefaultHomePagePath();
const isMatchingOpenRoute =
@@ -33,6 +39,12 @@ export const usePageChangeEffectNavigateLocation = () => {
isMatchingLocation(AppPath.PlanRequired) ||
isMatchingLocation(AppPath.PlanRequiredSuccess);
const objectNamePlural = useParams().objectNamePlural ?? '';
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
const objectMetadataItem = objectMetadataItems.find(
(objectMetadataItem) => objectMetadataItem.namePlural === objectNamePlural,
);
if (isMatchingOpenRoute) {
return;
}
@@ -96,5 +108,12 @@ export const usePageChangeEffectNavigateLocation = () => {
return defaultHomePagePath;
}
if (
isMatchingLocation(AppPath.RecordIndexPage) &&
!isDefined(objectMetadataItem)
) {
return AppPath.NotFound;
}
return;
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

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