Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b155cb7b2c |
+1
-1
@@ -10,7 +10,6 @@ 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,
|
||||
@@ -82,6 +81,7 @@ module.exports = {
|
||||
'@typescript-eslint/explicit-function-return-type': 'off',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
||||
'@typescript-eslint/interface-name-prefix': 'off',
|
||||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/no-empty-interface': [
|
||||
'error',
|
||||
{
|
||||
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
run: NODE_ENV=production NODE_OPTIONS="--max-old-space-size=10240" npx nx build twenty-front
|
||||
|
||||
- name: Build server
|
||||
run: npx nx build twenty-server
|
||||
run: NODE_ENV=production npx nx build twenty-server
|
||||
|
||||
- name: Create and setup database
|
||||
run: |
|
||||
@@ -103,7 +103,7 @@ jobs:
|
||||
|
||||
- name: Start worker
|
||||
run: |
|
||||
npx nx run twenty-server:worker &
|
||||
npx nx run twenty-server:worker:ci &
|
||||
echo "Worker started"
|
||||
|
||||
- name: Run Playwright tests
|
||||
|
||||
@@ -78,15 +78,7 @@ jobs:
|
||||
npx nx run twenty-server:database:init:prod
|
||||
npx nx run twenty-server:database:migrate:prod
|
||||
- name: Worker / Run
|
||||
run: |
|
||||
timeout 30s npx nx run twenty-server:worker || exit_code=$?
|
||||
if [ $exit_code -eq 124 ]; then
|
||||
# If timeout was reached (exit code 124), consider it a success
|
||||
exit 0
|
||||
elif [ $exit_code -ne 0 ]; then
|
||||
# If worker failed for other reasons, fail the build
|
||||
exit $exit_code
|
||||
fi
|
||||
run: npx nx run twenty-server:worker:ci
|
||||
- name: Server / Check for Pending Migrations
|
||||
run: |
|
||||
METADATA_MIGRATION_OUTPUT=$(npx nx run twenty-server:typeorm migration:generate metadata-migration-check -d src/database/typeorm/metadata/metadata.datasource.ts || true)
|
||||
@@ -188,17 +180,6 @@ jobs:
|
||||
uses: ./.github/workflows/actions/restore-cache
|
||||
with:
|
||||
key: ${{ env.SERVER_SETUP_CACHE_KEY }}
|
||||
- name: Server / Build
|
||||
run: npx nx build twenty-server
|
||||
- name: Build dependencies
|
||||
run: |
|
||||
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";'
|
||||
- name: Server / Run Integration Tests
|
||||
uses: ./.github/workflows/actions/nx-affected
|
||||
with:
|
||||
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
echo "Generating secrets..."
|
||||
echo "# === Randomly generated secrets ===" >>.env
|
||||
echo "APP_SECRET=$(openssl rand -base64 32)" >>.env
|
||||
echo "PGPASSWORD_SUPERUSER=$(openssl rand -hex 16)" >>.env
|
||||
echo "PGPASSWORD_SUPERUSER=$(openssl rand -base64 32)" >>.env
|
||||
|
||||
echo "Docker compose up..."
|
||||
docker compose up -d || {
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
# 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 from Crowdin'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 */2 * * *' # Every two hours.
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
force_pull:
|
||||
description: 'Force pull translations regardless of compilation status'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
workflow_call:
|
||||
inputs:
|
||||
force_pull:
|
||||
description: 'Force pull translations regardless of compilation status'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
pull_translations:
|
||||
name: Pull translations
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
ref: ${{ github.head_ref || github.ref_name }}
|
||||
|
||||
- name: Setup i18n branch
|
||||
run: |
|
||||
git fetch origin i18n || true
|
||||
git checkout -B i18n origin/i18n || git checkout -b i18n
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/yarn-install
|
||||
|
||||
- name: Build twenty-shared
|
||||
run: npx nx build twenty-shared
|
||||
|
||||
# Strict mode fails if there are missing translations.
|
||||
- name: Compile translations
|
||||
id: compile_translations_strict
|
||||
run: |
|
||||
npx nx run twenty-server:lingui:compile --strict
|
||||
npx nx run twenty-emails:lingui:compile --strict
|
||||
npx nx run twenty-front:lingui:compile --strict
|
||||
continue-on-error: true
|
||||
|
||||
- name: Stash any changes before pulling translations
|
||||
run: |
|
||||
git config --global user.name 'github-actions'
|
||||
git config --global user.email 'github-actions@twenty.com'
|
||||
git add .
|
||||
git stash
|
||||
|
||||
- name: Pull translations from Crowdin
|
||||
if: inputs.force_pull || steps.compile_translations_strict.outcome == 'failure'
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
upload_sources: false
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
export_only_approved: false
|
||||
localization_branch_name: i18n
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
auto_approve_imported: false
|
||||
import_eq_suggestions: false
|
||||
download_sources: false
|
||||
push_sources: false
|
||||
skip_untranslated_strings: false
|
||||
skip_untranslated_files: false
|
||||
push_translations: true
|
||||
create_pull_request: false
|
||||
skip_ref_checkout: true
|
||||
dryrun_action: false
|
||||
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
|
||||
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
|
||||
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"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "changes_detected=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Push changes
|
||||
if: steps.compile_translations.outputs.changes_detected == 'true'
|
||||
run: git push origin HEAD:i18n
|
||||
|
||||
- name: Create pull request
|
||||
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 }}
|
||||
@@ -1,104 +0,0 @@
|
||||
name: 'Push translations to Crowdin'
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
push:
|
||||
branches: ['main']
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
extract_translations:
|
||||
name: Extract and upload translations
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
ref: main
|
||||
|
||||
- name: Setup i18n branch
|
||||
run: |
|
||||
git fetch origin i18n || true
|
||||
git checkout -B i18n origin/i18n || git checkout -b i18n
|
||||
|
||||
- name: Install dependencies
|
||||
uses: ./.github/workflows/actions/yarn-install
|
||||
|
||||
- name: Build dependencies
|
||||
run: npx nx build twenty-shared
|
||||
|
||||
- name: Extract translations
|
||||
run: |
|
||||
npx nx run twenty-server:lingui:extract
|
||||
npx nx run twenty-emails:lingui:extract
|
||||
npx nx run twenty-front:lingui:extract
|
||||
|
||||
- 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'
|
||||
git add .
|
||||
if ! git diff --staged --quiet --exit-code; then
|
||||
git commit -m "chore: extract translations"
|
||||
echo "changes_detected=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
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_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_extract_changes.outputs.changes_detected == 'true'
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
upload_sources: true
|
||||
upload_translations: true
|
||||
download_translations: false
|
||||
localization_branch_name: i18n
|
||||
base_url: 'https://twenty.api.crowdin.com'
|
||||
env:
|
||||
# A numeric ID, found at https://crowdin.com/project/<projectName>/tools/api
|
||||
CROWDIN_PROJECT_ID: 1
|
||||
|
||||
# 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_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 }}
|
||||
@@ -41,5 +41,3 @@ dump.rdb
|
||||
/devenv.nix
|
||||
/flake.lock
|
||||
/flake.nix
|
||||
|
||||
.crowdin.yml
|
||||
Vendored
-21
@@ -60,27 +60,6 @@
|
||||
"cwd": "${workspaceFolder}",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"envFile": "${workspaceFolder}/packages/twenty-e2e-testing/.env"
|
||||
},
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "twenty-server - debug integration test file (to launch with test file open)",
|
||||
"runtimeExecutable": "npx",
|
||||
"runtimeArgs": [
|
||||
"nx",
|
||||
"run",
|
||||
"twenty-server:jest",
|
||||
"--",
|
||||
"--config",
|
||||
"./jest-integration.config.ts",
|
||||
"${relativeFile}"
|
||||
],
|
||||
"cwd": "${workspaceFolder}/packages/twenty-server",
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"env": {
|
||||
"NODE_ENV": "test"
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
enableHardenedMode: true
|
||||
|
||||
enableInlineHunks: true
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
@@ -24,9 +24,16 @@
|
||||
|
||||
<br>
|
||||
|
||||
# Installation
|
||||
# Demo
|
||||
|
||||
See:
|
||||
Go to <a href="https://demo.twenty.com/">demo.twenty.com</a> and login with the following credentials:
|
||||
|
||||
```
|
||||
email: tim@apple.dev
|
||||
password: Applecar2025
|
||||
```
|
||||
|
||||
See also:
|
||||
🚀 [Self-hosting](https://twenty.com/developers/section/self-hosting)
|
||||
🖥️ [Local Setup](https://twenty.com/developers/local-setup)
|
||||
|
||||
@@ -145,7 +152,7 @@ Below are a few features we have implemented to date:
|
||||
- [NestJS](https://nestjs.com/), with [BullMQ](https://bullmq.io/), [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/)
|
||||
- [React](https://reactjs.org/), with [Recoil](https://recoiljs.org/) and [Emotion](https://emotion.sh/)
|
||||
- [Greptile](https://greptile.com) for code reviews.
|
||||
- [Lingui](https://lingui.dev/) and [Crowdin](https://twenty.crowdin.com/twenty) for translations.
|
||||
- [TranslationIO](https://translation.io/) for translations.
|
||||
|
||||
|
||||
# Join the Community
|
||||
@@ -154,7 +161,6 @@ Below are a few features we have implemented to date:
|
||||
- Subscribe to releases (watch -> custom -> releases)
|
||||
- Follow us on [Twitter](https://twitter.com/twentycrm) or [LinkedIn](https://www.linkedin.com/company/twenty/)
|
||||
- Join our [Discord](https://discord.gg/cx5n4Jzs57)
|
||||
- Improve translations on [Crowdin](https://twenty.crowdin.com/twenty)
|
||||
- [Contributions](https://github.com/twentyhq/twenty/contribute) are, of course, most welcome!
|
||||
|
||||
|
||||
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
#
|
||||
# Basic Crowdin CLI configuration
|
||||
# See https://crowdin.github.io/crowdin-cli/configuration for more information
|
||||
# See https://support.crowdin.com/developer/configuration-file/ for all available options
|
||||
#
|
||||
|
||||
#
|
||||
# Defines whether to preserve the original directory structure in the Crowdin project
|
||||
# Recommended to set to true
|
||||
#
|
||||
"preserve_hierarchy": true
|
||||
|
||||
#
|
||||
# Files configuration.
|
||||
# See https://support.crowdin.com/developer/configuration-file/ for all available options
|
||||
#
|
||||
files: [
|
||||
{
|
||||
#
|
||||
# Source files filter
|
||||
# e.g. "/resources/en/*.json"
|
||||
#
|
||||
"source": "**/en.po",
|
||||
|
||||
#
|
||||
# Translation files filter
|
||||
# e.g. "/resources/%two_letters_code%/%original_file_name%"
|
||||
#
|
||||
"translation": "%original_path%/%locale%.po",
|
||||
}
|
||||
]
|
||||
+8
-11
@@ -5,11 +5,9 @@
|
||||
"@apollo/server": "^4.7.3",
|
||||
"@aws-sdk/client-lambda": "^3.614.0",
|
||||
"@aws-sdk/client-s3": "^3.363.0",
|
||||
"@aws-sdk/client-sts": "^3.744.0",
|
||||
"@aws-sdk/credential-providers": "^3.363.0",
|
||||
"@blocknote/mantine": "^0.22.0",
|
||||
"@blocknote/react": "^0.22.0",
|
||||
"@blocknote/server-util": "0.17.1",
|
||||
"@codesandbox/sandpack-react": "^2.13.5",
|
||||
"@dagrejs/dagre": "^1.1.2",
|
||||
"@emotion/react": "^11.11.1",
|
||||
@@ -39,14 +37,14 @@
|
||||
"@nestjs/passport": "^9.0.3",
|
||||
"@nestjs/platform-express": "^9.0.0",
|
||||
"@nestjs/serve-static": "^4.0.1",
|
||||
"@nestjs/terminus": "^11.0.0",
|
||||
"@nestjs/terminus": "^9.2.2",
|
||||
"@nestjs/typeorm": "^10.0.0",
|
||||
"@nx/eslint-plugin": "^17.2.8",
|
||||
"@octokit/graphql": "^7.0.2",
|
||||
"@ptc-org/nestjs-query-core": "^4.2.0",
|
||||
"@ptc-org/nestjs-query-typeorm": "4.2.1-alpha.2",
|
||||
"@react-email/components": "0.0.32",
|
||||
"@react-email/render": "0.0.17",
|
||||
"@react-email/components": "0.0.12",
|
||||
"@react-email/render": "0.0.10",
|
||||
"@sentry/node": "^8",
|
||||
"@sentry/profiling-node": "^8",
|
||||
"@sentry/react": "^8",
|
||||
@@ -63,7 +61,7 @@
|
||||
"@types/nodemailer": "^6.4.14",
|
||||
"@types/passport-microsoft": "^1.0.3",
|
||||
"@wyw-in-js/vite": "^0.5.3",
|
||||
"@xyflow/react": "^12.4.2",
|
||||
"@xyflow/react": "^12.3.5",
|
||||
"add": "^2.0.6",
|
||||
"addressparser": "^1.0.1",
|
||||
"afterframe": "^1.0.2",
|
||||
@@ -74,11 +72,10 @@
|
||||
"bcrypt": "^5.1.1",
|
||||
"better-sqlite3": "^9.2.2",
|
||||
"body-parser": "^1.20.2",
|
||||
"bullmq": "^5.40.0",
|
||||
"bullmq": "^4.15.0",
|
||||
"bytes": "^3.1.2",
|
||||
"class-transformer": "^0.5.1",
|
||||
"clsx": "^2.1.1",
|
||||
"cron-validate": "^1.4.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^7.1.2",
|
||||
"danger-plugin-todos": "^1.3.1",
|
||||
@@ -167,7 +164,7 @@
|
||||
"react-hotkeys-hook": "^4.4.4",
|
||||
"react-icons": "^4.12.0",
|
||||
"react-imask": "^7.6.0",
|
||||
"react-intersection-observer": "^9.15.1",
|
||||
"react-intersection-observer": "^9.5.2",
|
||||
"react-loading-skeleton": "^3.3.1",
|
||||
"react-phone-number-input": "^3.3.4",
|
||||
"react-responsive": "^9.0.2",
|
||||
@@ -208,7 +205,7 @@
|
||||
"@graphql-codegen/typescript-operations": "^3.0.4",
|
||||
"@graphql-codegen/typescript-react-apollo": "^3.3.7",
|
||||
"@lingui/cli": "^5.1.2",
|
||||
"@lingui/swc-plugin": "^5.1.0",
|
||||
"@lingui/swc-plugin": "^5.0.2",
|
||||
"@lingui/vite-plugin": "^5.1.2",
|
||||
"@microsoft/microsoft-graph-types": "^2.40.0",
|
||||
"@nestjs/cli": "^9.0.0",
|
||||
@@ -243,7 +240,7 @@
|
||||
"@stylistic/eslint-plugin": "^1.5.0",
|
||||
"@swc-node/register": "1.8.0",
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "1.7.42",
|
||||
"@swc/core": "~1.3.100",
|
||||
"@swc/helpers": "~0.5.2",
|
||||
"@testing-library/jest-dom": "^6.1.5",
|
||||
"@testing-library/react": "14.0.0",
|
||||
|
||||
@@ -6,8 +6,5 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "npx vite build"
|
||||
},
|
||||
"dependencies": {
|
||||
"twenty-shared": "workspace:*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
"outputs": ["{options.outputPath}"],
|
||||
"options": {
|
||||
"outputPath": "{projectRoot}/dist"
|
||||
},
|
||||
"dependsOn": ["^build"]
|
||||
}
|
||||
},
|
||||
"start": {
|
||||
"executor": "nx:run-commands",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
// Open options page programmatically in a new tab.
|
||||
// chrome.runtime.onInstalled.addListener((details) => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
interface CustomDiv extends HTMLDivElement {
|
||||
onClickHandler: (newHandler: () => void) => void;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { createDefaultButton } from '~/contentScript/createButton';
|
||||
import changeSidePanelUrl from '~/contentScript/utils/changeSidepanelUrl';
|
||||
import extractCompanyLinkedinLink from '~/contentScript/utils/extractCompanyLinkedinLink';
|
||||
import extractDomain from '~/contentScript/utils/extractDomain';
|
||||
import { createCompany, fetchCompany } from '~/db/company.db';
|
||||
import { CompanyInput } from '~/db/types/company.types';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const checkIfCompanyExists = async () => {
|
||||
const { tab: activeTab } = await chrome.runtime.sendMessage({
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { createDefaultButton } from '~/contentScript/createButton';
|
||||
import changeSidePanelUrl from '~/contentScript/utils/changeSidepanelUrl';
|
||||
import extractFirstAndLastName from '~/contentScript/utils/extractFirstAndLastName';
|
||||
import { createPerson, fetchPerson } from '~/db/person.db';
|
||||
import { PersonInput } from '~/db/types/person.types';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const checkIfPersonExists = async () => {
|
||||
const { tab: activeTab } = await chrome.runtime.sendMessage({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { insertButtonForCompany } from '~/contentScript/extractCompanyProfile';
|
||||
import { insertButtonForPerson } from '~/contentScript/extractPersonProfile';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
// Inject buttons into the DOM when SPA is reloaded on the resource url.
|
||||
// e.g. reload the page when on https://www.linkedin.com/in/mabdullahabaid/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const btn = document.getElementById('twenty-settings-btn');
|
||||
if (!isDefined(btn)) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const changeSidePanelUrl = async (url: string) => {
|
||||
if (isDefined(url)) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// Extract "https://www.linkedin.com/company/twenty/" from any of the following urls, which the user can visit while on the company page.
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
// "https://www.linkedin.com/company/twenty/" "https://www.linkedin.com/company/twenty/about/" "https://www.linkedin.com/company/twenty/people/".
|
||||
const extractCompanyLinkedinLink = (activeTabUrl: string) => {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import {
|
||||
ExchangeAuthCodeInput,
|
||||
ExchangeAuthCodeResponse,
|
||||
Tokens,
|
||||
} from '~/db/types/auth.types';
|
||||
import { EXCHANGE_AUTHORIZATION_CODE } from '~/graphql/auth/mutations';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
import { callMutation } from '~/utils/requestDb';
|
||||
|
||||
export const exchangeAuthorizationCode = async (
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import {
|
||||
CompanyInput,
|
||||
CreateCompanyResponse,
|
||||
@@ -7,6 +6,7 @@ import {
|
||||
import { Company, CompanyFilterInput } from '~/generated/graphql';
|
||||
import { CREATE_COMPANY } from '~/graphql/company/mutations';
|
||||
import { FIND_COMPANY } from '~/graphql/company/queries';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
import { callMutation, callQuery } from '../utils/requestDb';
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import {
|
||||
CreatePersonResponse,
|
||||
FindPersonResponse,
|
||||
@@ -7,6 +6,7 @@ import {
|
||||
import { Person, PersonFilterInput } from '~/generated/graphql';
|
||||
import { CREATE_PERSON } from '~/graphql/person/mutations';
|
||||
import { FIND_PERSON } from '~/graphql/person/queries';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
import { callMutation, callQuery } from '../utils/requestDb';
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ApolloClient, InMemoryCache } from '@apollo/client';
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { Tokens } from '~/db/types/auth.types';
|
||||
import { RENEW_TOKEN } from '~/graphql/auth/mutations';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const renewToken = async (
|
||||
appToken: string,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import Settings from '~/options/Settings';
|
||||
import Sidepanel from '~/options/Sidepanel';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const App = () => {
|
||||
const [currentScreen, setCurrentScreen] = useState('');
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import styled from '@emotion/styled';
|
||||
import { useEffect, useState } from 'react';
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
import { MainButton } from '@/ui/input/button/MainButton';
|
||||
import { TextInput } from '@/ui/input/components/TextInput';
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { clearStore } from '~/utils/apolloClient';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const StyledWrapper = styled.div`
|
||||
align-items: center;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import styled from '@emotion/styled';
|
||||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
import { MainButton } from '@/ui/input/button/MainButton';
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const StyledIframe = styled.iframe`
|
||||
display: block;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import styled from '@emotion/styled';
|
||||
import { motion } from 'framer-motion';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export type ToggleSize = 'small' | 'medium';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { ApolloClient, from, HttpLink, InMemoryCache } from '@apollo/client';
|
||||
import { setContext } from '@apollo/client/link/context';
|
||||
import { onError } from '@apollo/client/link/error';
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const clearStore = () => {
|
||||
chrome.storage.local.remove([
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { OperationVariables } from '@apollo/client';
|
||||
import { DocumentNode } from 'graphql';
|
||||
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import getApolloClient from '~/utils/apolloClient';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
export const callQuery = async <T>(
|
||||
query: DocumentNode,
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
TAG=latest
|
||||
|
||||
#PG_DATABASE_USER=postgres
|
||||
#PG_DATABASE_PASSWORD=replace_me_with_a_strong_password_without_special_characters
|
||||
#PGUSER_SUPERUSER=postgres
|
||||
#PGPASSWORD_SUPERUSER=replace_me_with_a_strong_password
|
||||
#PG_DATABASE_HOST=db
|
||||
#PG_DATABASE_PORT=5432
|
||||
#REDIS_URL=redis://redis:6379
|
||||
|
||||
SERVER_URL=http://localhost:3000
|
||||
|
||||
@@ -20,8 +20,8 @@ services:
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
NODE_PORT: 3000
|
||||
PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default
|
||||
PORT: 3000
|
||||
PG_DATABASE_URL: postgres://${PGUSER_SUPERUSER:-postgres}:${PGPASSWORD_SUPERUSER:-postgres}@${PG_DATABASE_HOST:-db:5432}/default
|
||||
SERVER_URL: ${SERVER_URL}
|
||||
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
||||
|
||||
@@ -47,7 +47,7 @@ services:
|
||||
image: twentycrm/twenty:${TAG:-latest}
|
||||
command: ["yarn", "worker:prod"]
|
||||
environment:
|
||||
PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default
|
||||
PG_DATABASE_URL: postgres://${PGUSER_SUPERUSER:-postgres}:${PGPASSWORD_SUPERUSER:-postgres}@${PG_DATABASE_HOST:-db:5432}/default
|
||||
SERVER_URL: ${SERVER_URL}
|
||||
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
|
||||
DISABLE_DB_MIGRATIONS: "true" # it already runs on the server
|
||||
@@ -70,12 +70,12 @@ services:
|
||||
volumes:
|
||||
- db-data:/home/postgres/pgdata
|
||||
environment:
|
||||
PGUSER_SUPERUSER: ${PG_DATABASE_USER:-postgres}
|
||||
PGPASSWORD_SUPERUSER: ${PG_DATABASE_PASSWORD:-postgres}
|
||||
PGUSER_SUPERUSER: ${PGUSER_SUPERUSER:-postgres}
|
||||
PGPASSWORD_SUPERUSER: ${PGPASSWORD_SUPERUSER:-postgres}
|
||||
ALLOW_NOSSL: "true"
|
||||
SPILO_PROVIDER: "local"
|
||||
healthcheck:
|
||||
test: pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres
|
||||
test: pg_isready -U ${PGUSER_SUPERUSER:-postgres} -h localhost -d postgres
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
@@ -33,7 +33,7 @@ spec:
|
||||
image: twentycrm/twenty:latest
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: NODE_PORT
|
||||
- name: PORT
|
||||
value: 3000
|
||||
- name: SERVER_URL
|
||||
value: "https://crm.example.com:443"
|
||||
@@ -45,6 +45,8 @@ spec:
|
||||
value: "false"
|
||||
- name: STORAGE_TYPE
|
||||
value: "local"
|
||||
- name: "MESSAGE_QUEUE_TYPE"
|
||||
value: "bull-mq"
|
||||
- name: "ACCESS_TOKEN_EXPIRES_IN"
|
||||
value: "7d"
|
||||
- name: "LOGIN_TOKEN_EXPIRES_IN"
|
||||
|
||||
@@ -34,6 +34,10 @@ spec:
|
||||
value: "false" # it already runs on the server
|
||||
- name: STORAGE_TYPE
|
||||
value: "local"
|
||||
- name: "MESSAGE_QUEUE_TYPE"
|
||||
value: "bull-mq"
|
||||
- name: "CACHE_STORAGE_TYPE"
|
||||
value: "redis"
|
||||
- name: "REDIS_URL"
|
||||
value: "redis://twentycrm-redis.twentycrm.svc.cluster.local:6379"
|
||||
- name: APP_SECRET
|
||||
|
||||
@@ -38,9 +38,13 @@ resource "kubernetes_deployment" "twentycrm_server" {
|
||||
tty = true
|
||||
|
||||
env {
|
||||
name = "NODE_PORT"
|
||||
name = "PORT"
|
||||
value = "3000"
|
||||
}
|
||||
# env {
|
||||
# name = "DEBUG_MODE"
|
||||
# value = false
|
||||
# }
|
||||
|
||||
env {
|
||||
name = "SERVER_URL"
|
||||
@@ -64,6 +68,10 @@ resource "kubernetes_deployment" "twentycrm_server" {
|
||||
name = "STORAGE_TYPE"
|
||||
value = "local"
|
||||
}
|
||||
env {
|
||||
name = "MESSAGE_QUEUE_TYPE"
|
||||
value = "bull-mq"
|
||||
}
|
||||
env {
|
||||
name = "ACCESS_TOKEN_EXPIRES_IN"
|
||||
value = "7d"
|
||||
|
||||
@@ -48,6 +48,11 @@ resource "kubernetes_deployment" "twentycrm_worker" {
|
||||
value = "postgres://twenty:${var.twentycrm_pgdb_admin_password}@${kubernetes_service.twentycrm_db.metadata.0.name}.${kubernetes_namespace.twentycrm.metadata.0.name}.svc.cluster.local/default"
|
||||
}
|
||||
|
||||
env {
|
||||
name = "CACHE_STORAGE_TYPE"
|
||||
value = "redis"
|
||||
}
|
||||
|
||||
env {
|
||||
name = "REDIS_URL"
|
||||
value = "redis://${kubernetes_service.twentycrm_redis.metadata.0.name}.${kubernetes_namespace.twentycrm.metadata.0.name}.svc.cluster.local:6379"
|
||||
@@ -62,6 +67,10 @@ resource "kubernetes_deployment" "twentycrm_worker" {
|
||||
name = "STORAGE_TYPE"
|
||||
value = "local"
|
||||
}
|
||||
env {
|
||||
name = "MESSAGE_QUEUE_TYPE"
|
||||
value = "bull-mq"
|
||||
}
|
||||
|
||||
env {
|
||||
name = "APP_SECRET"
|
||||
|
||||
@@ -90,11 +90,12 @@ else
|
||||
fi
|
||||
|
||||
# Generate random strings for secrets
|
||||
echo "# === Randomly generated secret ===" >> .env
|
||||
echo "APP_SECRET=$(openssl rand -base64 32)" >> .env
|
||||
echo "# === Randomly generated secret ===" >>.env
|
||||
echo "APP_SECRET=$(openssl rand -base64 32)" >>.env
|
||||
|
||||
echo "" >> .env
|
||||
echo "PG_DATABASE_PASSWORD=$(openssl rand -hex 16)" >> .env
|
||||
# Issue with Postgres spilo?
|
||||
#echo "" >>.env
|
||||
#echo "PGPASSWORD_SUPERUSER=$(openssl rand -hex 16)" >>.env
|
||||
|
||||
echo -e "\t• .env configuration completed"
|
||||
|
||||
|
||||
@@ -17,12 +17,9 @@ export class WorkflowVisualizerPage {
|
||||
readonly deactivateWorkflowButton: Locator;
|
||||
readonly addTriggerButton: Locator;
|
||||
readonly commandMenu: Locator;
|
||||
readonly workflowNameLabel: Locator;
|
||||
readonly workflowNameButton: Locator;
|
||||
readonly triggerNode: Locator;
|
||||
readonly background: Locator;
|
||||
readonly useAsDraftButton: Locator;
|
||||
readonly overrideDraftButton: Locator;
|
||||
readonly discardDraftButton: Locator;
|
||||
|
||||
#actionNames: Record<WorkflowActionType, string> = {
|
||||
'create-record': 'Create Record',
|
||||
@@ -68,18 +65,11 @@ export class WorkflowVisualizerPage {
|
||||
});
|
||||
this.addTriggerButton = page.getByText('Add a Trigger');
|
||||
this.commandMenu = page.getByTestId('command-menu');
|
||||
this.workflowNameLabel = page
|
||||
.getByTestId('top-bar-title')
|
||||
.getByText(this.workflowName);
|
||||
this.workflowNameButton = page.getByRole('button', {
|
||||
name: 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' });
|
||||
this.overrideDraftButton = page.getByRole('button', {
|
||||
name: 'Override Draft',
|
||||
});
|
||||
this.discardDraftButton = page.getByRole('button', {
|
||||
name: 'Discard Draft',
|
||||
});
|
||||
}
|
||||
|
||||
async createOneWorkflow() {
|
||||
@@ -100,7 +90,7 @@ export class WorkflowVisualizerPage {
|
||||
}
|
||||
|
||||
async waitForWorkflowVisualizerLoad() {
|
||||
await expect(this.workflowNameLabel).toBeVisible();
|
||||
await expect(this.workflowNameButton).toBeVisible();
|
||||
}
|
||||
|
||||
async goToWorkflowVisualizerPage() {
|
||||
@@ -132,10 +122,8 @@ export class WorkflowVisualizerPage {
|
||||
|
||||
const actionToCreateOption = this.commandMenu.getByText(actionName);
|
||||
|
||||
await actionToCreateOption.click();
|
||||
|
||||
const createWorkflowStepResponse = await this.#page.waitForResponse(
|
||||
(response) => {
|
||||
const [createWorkflowStepResponse] = await Promise.all([
|
||||
this.#page.waitForResponse((response) => {
|
||||
if (!response.url().endsWith('/graphql')) {
|
||||
return false;
|
||||
}
|
||||
@@ -143,14 +131,19 @@ 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);
|
||||
@@ -228,14 +221,6 @@ 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 }>(
|
||||
|
||||
@@ -35,7 +35,7 @@ export class LoginPage {
|
||||
name: 'Continue with Google',
|
||||
});
|
||||
this.loginWithEmailButton = page.getByRole('button', {
|
||||
name: 'Continue with Email',
|
||||
name: 'Continue With Email',
|
||||
});
|
||||
this.termsOfServiceLink = page.getByRole('link', {
|
||||
name: 'Terms of Service',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "twenty-e2e-testing",
|
||||
"version": "0.42.18",
|
||||
"version": "0.41.1",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { test as base } from '../../lib/fixtures/screenshot';
|
||||
import { ConfirmationModal } from '../../lib/pom/helper/confirmationModal';
|
||||
import { LeftMenu } from '../../lib/pom/leftMenu';
|
||||
import { LoginPage } from '../../lib/pom/loginPage';
|
||||
import { LeftMenu } from '../../lib/pom/leftMenu';
|
||||
import { SettingsPage } from '../../lib/pom/settingsPage';
|
||||
import { MembersSection } from '../../lib/pom/settings/membersSection';
|
||||
import { ProfileSection } from '../../lib/pom/settings/profileSection';
|
||||
import { SettingsPage } from '../../lib/pom/settingsPage';
|
||||
import { ConfirmationModal } from '../../lib/pom/helper/confirmationModal';
|
||||
|
||||
type Fixtures = {
|
||||
confirmationModal: ConfirmationModal;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
|
||||
test('Check if demo account is working properly @demo-only', async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto('https://demo.twenty.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('Server’s on a coffee break')).not.toBeVisible({
|
||||
timeout: 5000,
|
||||
});
|
||||
});
|
||||
@@ -19,7 +19,7 @@ test('Login test', async ({ loginPage, page }) => {
|
||||
async () => {
|
||||
await page.waitForLoadState('networkidle');
|
||||
if (
|
||||
page.url().includes('app.twenty-next.com') ||
|
||||
page.url().includes('demo.twenty.com') ||
|
||||
!page.url().includes('app.localhost:3001')
|
||||
) {
|
||||
await loginPage.clickLoginWithEmail();
|
||||
|
||||
@@ -23,29 +23,37 @@ test('Create workflow', async ({ page }) => {
|
||||
return requestBody.operationName === 'CreateOneWorkflow';
|
||||
}),
|
||||
|
||||
createWorkflowButton.click(),
|
||||
await createWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
const recordName = page.getByTestId('top-bar-title').getByTestId('tooltip');
|
||||
await recordName.click();
|
||||
const nameInputClosedState = page.getByText('Name').first();
|
||||
await nameInputClosedState.click();
|
||||
|
||||
const nameInput = page.getByTestId('top-bar-title').getByRole('textbox');
|
||||
const nameInput = page.getByRole('textbox');
|
||||
await nameInput.fill(NEW_WORKFLOW_NAME);
|
||||
|
||||
const workflowDiagramContainer = page.locator('.react-flow__renderer');
|
||||
await workflowDiagramContainer.click();
|
||||
await nameInput.press('Enter');
|
||||
|
||||
const body = await createWorkflowResponse.json();
|
||||
const newWorkflowId = body.data.createWorkflow.id;
|
||||
|
||||
try {
|
||||
const workflowName = page
|
||||
.getByTestId('top-bar-title')
|
||||
.getByText(NEW_WORKFLOW_NAME);
|
||||
const newWorkflowRowEntryName = page
|
||||
.getByTestId(`row-id-${newWorkflowId}`)
|
||||
.locator('div')
|
||||
.filter({ hasText: NEW_WORKFLOW_NAME })
|
||||
.nth(2);
|
||||
|
||||
await Promise.all([
|
||||
page.waitForURL(
|
||||
(url) => url.pathname === `/object/workflow/${newWorkflowId}`,
|
||||
),
|
||||
|
||||
newWorkflowRowEntryName.click(),
|
||||
]);
|
||||
|
||||
const workflowName = page.getByRole('button', { name: NEW_WORKFLOW_NAME });
|
||||
|
||||
await expect(workflowName).toBeVisible();
|
||||
|
||||
await expect(page).toHaveURL(`/object/workflow/${newWorkflowId}`);
|
||||
} finally {
|
||||
await deleteWorkflow({
|
||||
page,
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
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');
|
||||
});
|
||||
@@ -1,177 +0,0 @@
|
||||
import { expect } from '@playwright/test';
|
||||
import { test } from '../lib/fixtures/blank-workflow';
|
||||
|
||||
test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
|
||||
await workflowVisualizer.createInitialTrigger('record-created');
|
||||
|
||||
await workflowVisualizer.createStep('create-record');
|
||||
|
||||
await workflowVisualizer.background.click();
|
||||
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
|
||||
|
||||
workflowVisualizer.createStep('delete-record'),
|
||||
]);
|
||||
|
||||
await workflowVisualizer.background.click();
|
||||
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
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();
|
||||
|
||||
const recordTableRowForWorkflow = page.getByRole('row', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
|
||||
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
expect(linkToWorkflow).toBeVisible();
|
||||
|
||||
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
|
||||
'link',
|
||||
{
|
||||
name: 'v1',
|
||||
},
|
||||
);
|
||||
|
||||
await linkToFirstWorkflowVersion.click();
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Archived');
|
||||
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 Promise.all([
|
||||
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
|
||||
|
||||
workflowVisualizer.useAsDraftButton.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);
|
||||
});
|
||||
|
||||
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.background.click();
|
||||
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
|
||||
|
||||
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 workflowVisualizer.closeSidePanel();
|
||||
|
||||
const workflowsLink = page.getByRole('link', { name: 'Workflows' });
|
||||
await workflowsLink.click();
|
||||
|
||||
const recordTableRowForWorkflow = page.getByRole('row', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
|
||||
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
expect(linkToWorkflow).toBeVisible();
|
||||
|
||||
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
|
||||
'link',
|
||||
{
|
||||
name: 'v1',
|
||||
},
|
||||
);
|
||||
|
||||
await linkToFirstWorkflowVersion.click();
|
||||
|
||||
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 Promise.all([
|
||||
expect(workflowVisualizer.overrideDraftButton).toBeVisible(),
|
||||
|
||||
workflowVisualizer.useAsDraftButton.click(),
|
||||
]);
|
||||
|
||||
await Promise.all([
|
||||
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
|
||||
|
||||
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();
|
||||
});
|
||||
@@ -184,35 +184,3 @@ test('Replace the trigger of an active version', async ({
|
||||
'Create Record',
|
||||
]);
|
||||
});
|
||||
|
||||
test("Nodes can't be deleted by pressing Backspace or Delete keys", async ({
|
||||
workflowVisualizer,
|
||||
page,
|
||||
}) => {
|
||||
await workflowVisualizer.triggerNode.click();
|
||||
|
||||
await page.keyboard.press('Backspace');
|
||||
await page.keyboard.press('Delete');
|
||||
|
||||
await expect(workflowVisualizer.triggerNode).toBeVisible();
|
||||
|
||||
const { createdStepId: firstStepId } =
|
||||
await workflowVisualizer.createStep('create-record');
|
||||
const firstStep = workflowVisualizer.getStepNode(firstStepId);
|
||||
|
||||
await firstStep.click();
|
||||
|
||||
await expect(workflowVisualizer.getDeleteNodeButton(firstStep)).toBeVisible();
|
||||
|
||||
await page.keyboard.press('Backspace');
|
||||
await page.keyboard.press('Delete');
|
||||
|
||||
await expect(firstStep).toBeVisible();
|
||||
|
||||
await workflowVisualizer.addStepButton.click();
|
||||
|
||||
await page.keyboard.press('Backspace');
|
||||
await page.keyboard.press('Delete');
|
||||
|
||||
await expect(workflowVisualizer.addStepButton).toBeVisible();
|
||||
});
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/swcrc",
|
||||
"jsc": {
|
||||
"experimental": {
|
||||
"plugins": [
|
||||
[
|
||||
"@lingui/swc-plugin",
|
||||
{
|
||||
"runtimeModules": {
|
||||
"i18n": ["@lingui/core", "i18n"],
|
||||
"trans": ["@lingui/react", "Trans"]
|
||||
},
|
||||
"stripNonEssentialFields": false
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
import { defineConfig } from '@lingui/cli';
|
||||
import { formatter } from '@lingui/format-po';
|
||||
import { APP_LOCALES } from 'twenty-shared';
|
||||
|
||||
export default defineConfig({
|
||||
sourceLocale: 'en',
|
||||
locales: Object.values(APP_LOCALES),
|
||||
pseudoLocale: 'pseudo-en',
|
||||
fallbackLocales: {
|
||||
'pseudo-en': 'en',
|
||||
},
|
||||
extractorParserOptions: {
|
||||
tsExperimentalDecorators: true,
|
||||
},
|
||||
catalogs: [
|
||||
{
|
||||
path: '<rootDir>/src/locales/{locale}',
|
||||
include: ['src'],
|
||||
},
|
||||
],
|
||||
catalogsMergePath: '<rootDir>/src/locales/generated/{locale}',
|
||||
compileNamespace: 'ts',
|
||||
format: formatter({ lineNumbers: false }),
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "twenty-emails",
|
||||
"version": "0.42.18",
|
||||
"version": "0.41.1",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
@@ -9,14 +9,10 @@
|
||||
"scripts": {
|
||||
"build": "npx vite build"
|
||||
},
|
||||
"dependencies": {
|
||||
"twenty-shared": "workspace:*"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./dist/index.mjs",
|
||||
"require": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts"
|
||||
"require": "./dist/index.js"
|
||||
}
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
"outputs": ["{options.outputPath}"],
|
||||
"options": {
|
||||
"outputPath": "{projectRoot}/dist"
|
||||
},
|
||||
"dependsOn": ["^build"]
|
||||
}
|
||||
},
|
||||
"typecheck": {},
|
||||
"lint": {
|
||||
@@ -31,20 +30,6 @@
|
||||
"configurations": {
|
||||
"fix": {}
|
||||
}
|
||||
},
|
||||
"lingui:extract": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "{projectRoot}",
|
||||
"command": "lingui extract --overwrite"
|
||||
}
|
||||
},
|
||||
"lingui:compile": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "{projectRoot}",
|
||||
"command": "lingui compile --typescript"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,102 +1,21 @@
|
||||
import { i18n, Messages } from '@lingui/core';
|
||||
import { I18nProvider } from '@lingui/react';
|
||||
import { Container, Html } from '@react-email/components';
|
||||
import { PropsWithChildren } from 'react';
|
||||
import { Container, Html } from '@react-email/components';
|
||||
|
||||
import { BaseHead } from 'src/components/BaseHead';
|
||||
import { Logo } from 'src/components/Logo';
|
||||
import { APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared';
|
||||
import { messages as afMessages } from '../locales/generated/af-ZA';
|
||||
import { messages as arMessages } from '../locales/generated/ar-SA';
|
||||
import { messages as caMessages } from '../locales/generated/ca-ES';
|
||||
import { messages as csMessages } from '../locales/generated/cs-CZ';
|
||||
import { messages as daMessages } from '../locales/generated/da-DK';
|
||||
import { messages as deMessages } from '../locales/generated/de-DE';
|
||||
import { messages as elMessages } from '../locales/generated/el-GR';
|
||||
import { messages as enMessages } from '../locales/generated/en';
|
||||
import { messages as esMessages } from '../locales/generated/es-ES';
|
||||
import { messages as fiMessages } from '../locales/generated/fi-FI';
|
||||
import { messages as frMessages } from '../locales/generated/fr-FR';
|
||||
import { messages as heMessages } from '../locales/generated/he-IL';
|
||||
import { messages as huMessages } from '../locales/generated/hu-HU';
|
||||
import { messages as itMessages } from '../locales/generated/it-IT';
|
||||
import { messages as jaMessages } from '../locales/generated/ja-JP';
|
||||
import { messages as koMessages } from '../locales/generated/ko-KR';
|
||||
import { messages as nlMessages } from '../locales/generated/nl-NL';
|
||||
import { messages as noMessages } from '../locales/generated/no-NO';
|
||||
import { messages as plMessages } from '../locales/generated/pl-PL';
|
||||
import { messages as pseudoEnMessages } from '../locales/generated/pseudo-en';
|
||||
import { messages as ptBRMessages } from '../locales/generated/pt-BR';
|
||||
import { messages as ptPTMessages } from '../locales/generated/pt-PT';
|
||||
import { messages as roMessages } from '../locales/generated/ro-RO';
|
||||
import { messages as ruMessages } from '../locales/generated/ru-RU';
|
||||
import { messages as srMessages } from '../locales/generated/sr-Cyrl';
|
||||
import { messages as svMessages } from '../locales/generated/sv-SE';
|
||||
import { messages as trMessages } from '../locales/generated/tr-TR';
|
||||
import { messages as ukMessages } from '../locales/generated/uk-UA';
|
||||
import { messages as viMessages } from '../locales/generated/vi-VN';
|
||||
import { messages as zhHansMessages } from '../locales/generated/zh-CN';
|
||||
import { messages as zhHantMessages } from '../locales/generated/zh-TW';
|
||||
|
||||
type BaseEmailProps = PropsWithChildren<{
|
||||
width?: number;
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
}>;
|
||||
|
||||
const messages: Record<keyof typeof APP_LOCALES, Messages> = {
|
||||
en: enMessages,
|
||||
'pseudo-en': pseudoEnMessages,
|
||||
'af-ZA': afMessages,
|
||||
'ar-SA': arMessages,
|
||||
'ca-ES': caMessages,
|
||||
'cs-CZ': csMessages,
|
||||
'da-DK': daMessages,
|
||||
'de-DE': deMessages,
|
||||
'el-GR': elMessages,
|
||||
'es-ES': esMessages,
|
||||
'fi-FI': fiMessages,
|
||||
'fr-FR': frMessages,
|
||||
'he-IL': heMessages,
|
||||
'hu-HU': huMessages,
|
||||
'it-IT': itMessages,
|
||||
'ja-JP': jaMessages,
|
||||
'ko-KR': koMessages,
|
||||
'nl-NL': nlMessages,
|
||||
'no-NO': noMessages,
|
||||
'pl-PL': plMessages,
|
||||
'pt-BR': ptBRMessages,
|
||||
'pt-PT': ptPTMessages,
|
||||
'ro-RO': roMessages,
|
||||
'ru-RU': ruMessages,
|
||||
'sr-Cyrl': srMessages,
|
||||
'sv-SE': svMessages,
|
||||
'tr-TR': trMessages,
|
||||
'uk-UA': ukMessages,
|
||||
'vi-VN': viMessages,
|
||||
'zh-CN': zhHansMessages,
|
||||
'zh-TW': zhHantMessages,
|
||||
};
|
||||
|
||||
(Object.entries(messages) as [keyof typeof APP_LOCALES, any][]).forEach(
|
||||
([locale, message]) => {
|
||||
i18n.load(locale, message);
|
||||
},
|
||||
);
|
||||
|
||||
i18n.activate(SOURCE_LOCALE);
|
||||
|
||||
export const BaseEmail = ({ children, width, locale }: BaseEmailProps) => {
|
||||
i18n.activate(locale);
|
||||
|
||||
export const BaseEmail = ({ children, width }: BaseEmailProps) => {
|
||||
return (
|
||||
<I18nProvider i18n={i18n}>
|
||||
<Html lang={locale}>
|
||||
<BaseHead />
|
||||
<Container width={width || 290}>
|
||||
<Logo />
|
||||
{children}
|
||||
</Container>
|
||||
</Html>
|
||||
</I18nProvider>
|
||||
<Html lang="en">
|
||||
<BaseHead />
|
||||
<Container width={width || 290}>
|
||||
<Logo />
|
||||
{children}
|
||||
</Container>
|
||||
</Html>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { HighlightedText } from 'src/components/HighlightedText';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
|
||||
type CleanInactiveWorkspaceEmailProps = {
|
||||
daysLeft: number;
|
||||
userName: string;
|
||||
workspaceDisplayName: string;
|
||||
};
|
||||
|
||||
export const CleanInactiveWorkspaceEmail = ({
|
||||
daysLeft,
|
||||
userName,
|
||||
workspaceDisplayName,
|
||||
}: CleanInactiveWorkspaceEmailProps) => {
|
||||
const dayOrDays = daysLeft > 1 ? 'days' : 'day';
|
||||
const remainingDays = daysLeft > 1 ? `${daysLeft} ` : '';
|
||||
|
||||
const helloString = userName?.length > 1 ? `Hello ${userName}` : 'Hello';
|
||||
|
||||
return (
|
||||
<BaseEmail>
|
||||
<Title value="Inactive Workspace 😴" />
|
||||
<HighlightedText value={`${daysLeft} ${dayOrDays} left`} />
|
||||
<MainText>
|
||||
{helloString},
|
||||
<br />
|
||||
<br />
|
||||
It appears that there has been a period of inactivity on your{' '}
|
||||
<b>{workspaceDisplayName}</b> workspace.
|
||||
<br />
|
||||
<br />
|
||||
Please note that the account is due for deactivation soon, and all
|
||||
associated data within this workspace will be deleted.
|
||||
<br />
|
||||
<br />
|
||||
No need for concern, though! Simply create or edit a record within the
|
||||
next {remainingDays}
|
||||
{dayOrDays} to retain access.
|
||||
</MainText>
|
||||
<CallToAction href="https://app.twenty.com" value="Connect to Twenty" />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
export default CleanInactiveWorkspaceEmail;
|
||||
@@ -1,46 +0,0 @@
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
|
||||
type CleanSuspendedWorkspaceEmailProps = {
|
||||
daysSinceInactive: number;
|
||||
userName: string;
|
||||
workspaceDisplayName: string | undefined;
|
||||
};
|
||||
|
||||
export const CleanSuspendedWorkspaceEmail = ({
|
||||
daysSinceInactive,
|
||||
userName,
|
||||
workspaceDisplayName,
|
||||
}: CleanSuspendedWorkspaceEmailProps) => {
|
||||
const helloString = userName?.length > 1 ? `Hello ${userName}` : 'Hello';
|
||||
|
||||
return (
|
||||
<BaseEmail width={333} locale="en">
|
||||
<Title value="Deleted Workspace 🥺" />
|
||||
<MainText>
|
||||
{helloString},
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
Your workspace <b>{workspaceDisplayName}</b> has been deleted as your
|
||||
subscription expired {daysSinceInactive} days ago.
|
||||
</Trans>
|
||||
<br />
|
||||
<br />
|
||||
<Trans>All data in this workspace has been permanently deleted.</Trans>
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
If you wish to use Twenty again, you can create a new workspace.
|
||||
</Trans>
|
||||
</MainText>
|
||||
<CallToAction
|
||||
href="https://app.twenty.com/"
|
||||
value="Create a new workspace"
|
||||
/>
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
import { Column, Row, Section } from '@react-email/components';
|
||||
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
|
||||
type DeleteInactiveWorkspaceEmailData = {
|
||||
daysSinceInactive: number;
|
||||
workspaceId: string;
|
||||
};
|
||||
|
||||
export const DeleteInactiveWorkspaceEmail = (
|
||||
workspacesToDelete: DeleteInactiveWorkspaceEmailData[],
|
||||
) => {
|
||||
const minDaysSinceInactive = Math.min(
|
||||
...workspacesToDelete.map(
|
||||
(workspaceToDelete) => workspaceToDelete.daysSinceInactive,
|
||||
),
|
||||
);
|
||||
return (
|
||||
<BaseEmail width={350}>
|
||||
<Title value="Dead Workspaces 😵 that should be deleted" />
|
||||
<MainText>
|
||||
List of <b>workspaceIds</b> inactive since at least{' '}
|
||||
<b>{minDaysSinceInactive} days</b>:
|
||||
<Section>
|
||||
{workspacesToDelete.map((workspaceToDelete) => {
|
||||
return (
|
||||
<Row key={workspaceToDelete.workspaceId}>
|
||||
<Column>{workspaceToDelete.workspaceId}</Column>
|
||||
</Row>
|
||||
);
|
||||
})}
|
||||
</Section>
|
||||
</MainText>
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeleteInactiveWorkspaceEmail;
|
||||
@@ -1,32 +1,25 @@
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { Link } from 'src/components/Link';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
import { APP_LOCALES } from 'twenty-shared';
|
||||
|
||||
type PasswordResetLinkEmailProps = {
|
||||
duration: string;
|
||||
link: string;
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
};
|
||||
|
||||
export const PasswordResetLinkEmail = ({
|
||||
duration,
|
||||
link,
|
||||
locale,
|
||||
}: PasswordResetLinkEmailProps) => {
|
||||
return (
|
||||
<BaseEmail locale={locale}>
|
||||
<Title value={t`Reset your password 🗝`} />
|
||||
<CallToAction href={link} value={t`Reset`} />
|
||||
<BaseEmail>
|
||||
<Title value="Reset your password 🗝" />
|
||||
<CallToAction href={link} value="Reset" />
|
||||
<MainText>
|
||||
<Trans>
|
||||
This link is only valid for the next {duration}. If the link does not
|
||||
work, you can use the login verification link directly:
|
||||
</Trans>
|
||||
This link is only valid for the next {duration}. If link does not work,
|
||||
you can use the login verification link directly:
|
||||
<br />
|
||||
<Link href={link} value={link} />
|
||||
</MainText>
|
||||
|
||||
@@ -1,49 +1,38 @@
|
||||
import { i18n } from '@lingui/core';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { format } from 'date-fns';
|
||||
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
import { APP_LOCALES } from 'twenty-shared';
|
||||
|
||||
type PasswordUpdateNotifyEmailProps = {
|
||||
userName: string;
|
||||
email: string;
|
||||
link: string;
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
};
|
||||
|
||||
export const PasswordUpdateNotifyEmail = ({
|
||||
userName,
|
||||
email,
|
||||
link,
|
||||
locale,
|
||||
}: PasswordUpdateNotifyEmailProps) => {
|
||||
const helloString = userName?.length > 1 ? t`Dear ${userName}` : t`Hello`;
|
||||
const formattedDate = i18n.date(new Date());
|
||||
|
||||
const helloString = userName?.length > 1 ? `Dear ${userName}` : 'Dear';
|
||||
return (
|
||||
<BaseEmail locale={locale}>
|
||||
<Title value={t`Password updated`} />
|
||||
<BaseEmail>
|
||||
<Title value="Password updated" />
|
||||
<MainText>
|
||||
{helloString},
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
This is a confirmation that password for your account ({email}) was
|
||||
successfully changed on {formattedDate}.
|
||||
</Trans>
|
||||
This is a confirmation that password for your account ({email}) was
|
||||
successfully changed on {format(new Date(), 'MMMM d, yyyy')}.
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
If you did not initiate this change, please contact your workspace
|
||||
owner immediately.
|
||||
</Trans>
|
||||
If you did not initiate this change, please contact your workspace owner
|
||||
immediately.
|
||||
<br />
|
||||
</MainText>
|
||||
<CallToAction value={t`Connect to Twenty`} href={link} />
|
||||
<CallToAction value="Connect to Twenty" href={link} />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,34 +1,26 @@
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { Footer } from 'src/components/Footer';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
import { APP_LOCALES } from 'twenty-shared';
|
||||
|
||||
type SendEmailVerificationLinkEmailProps = {
|
||||
link: string;
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
};
|
||||
|
||||
export const SendEmailVerificationLinkEmail = ({
|
||||
link,
|
||||
locale,
|
||||
}: SendEmailVerificationLinkEmailProps) => {
|
||||
return (
|
||||
<BaseEmail width={333} locale={locale}>
|
||||
<Title value={t`Confirm your email address`} />
|
||||
<CallToAction href={link} value={t`Verify Email`} />
|
||||
<BaseEmail width={333}>
|
||||
<Title value="Confirm your email address" />
|
||||
<CallToAction href={link} value="Verify Email" />
|
||||
<br />
|
||||
<br />
|
||||
<MainText>
|
||||
<Trans>
|
||||
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.
|
||||
</Trans>
|
||||
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.
|
||||
</MainText>
|
||||
<Footer />
|
||||
</BaseEmail>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { Img } from '@react-email/components';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
@@ -12,7 +10,7 @@ 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';
|
||||
import { getImageAbsoluteURI } from 'twenty-shared';
|
||||
|
||||
type SendInviteLinkEmailProps = {
|
||||
link: string;
|
||||
@@ -23,7 +21,6 @@ type SendInviteLinkEmailProps = {
|
||||
lastName: string;
|
||||
};
|
||||
serverUrl: string;
|
||||
locale: keyof typeof APP_LOCALES;
|
||||
};
|
||||
|
||||
export const SendInviteLinkEmail = ({
|
||||
@@ -31,15 +28,14 @@ export const SendInviteLinkEmail = ({
|
||||
workspace,
|
||||
sender,
|
||||
serverUrl,
|
||||
locale,
|
||||
}: SendInviteLinkEmailProps) => {
|
||||
const workspaceLogo = workspace.logo
|
||||
? getImageAbsoluteURI({ imageUrl: workspace.logo, baseUrl: serverUrl })
|
||||
: null;
|
||||
|
||||
return (
|
||||
<BaseEmail width={333} locale={locale}>
|
||||
<Title value={t`Join your team on Twenty`} />
|
||||
<BaseEmail width={333}>
|
||||
<Title value="Join your team on Twenty" />
|
||||
<MainText>
|
||||
{capitalize(sender.firstName)} (
|
||||
<Link
|
||||
@@ -47,14 +43,13 @@ export const SendInviteLinkEmail = ({
|
||||
value={sender.email}
|
||||
color={emailTheme.font.colors.blue}
|
||||
/>
|
||||
)<Trans>has invited you to join a workspace called </Trans>
|
||||
<b>{workspace.name}</b>
|
||||
) has invited you to join a workspace called <b>{workspace.name}</b>
|
||||
<br />
|
||||
</MainText>
|
||||
<HighlightedContainer>
|
||||
{workspaceLogo && <Img src={workspaceLogo} width={40} height={40} />}
|
||||
{workspace.name && <HighlightedText value={workspace.name} />}
|
||||
<CallToAction href={link} value={t`Accept invite`} />
|
||||
<CallToAction href={link} value="Accept invite" />
|
||||
</HighlightedContainer>
|
||||
<WhatIsTwenty />
|
||||
</BaseEmail>
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
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,57 +0,0 @@
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
import { Title } from 'src/components/Title';
|
||||
|
||||
type WarnSuspendedWorkspaceEmailProps = {
|
||||
daysSinceInactive: number;
|
||||
inactiveDaysBeforeDelete: number;
|
||||
userName: string;
|
||||
workspaceDisplayName: string | undefined;
|
||||
};
|
||||
|
||||
export const WarnSuspendedWorkspaceEmail = ({
|
||||
daysSinceInactive,
|
||||
inactiveDaysBeforeDelete,
|
||||
userName,
|
||||
workspaceDisplayName,
|
||||
}: WarnSuspendedWorkspaceEmailProps) => {
|
||||
const daysLeft = inactiveDaysBeforeDelete - daysSinceInactive;
|
||||
const dayOrDays = daysLeft > 1 ? 'days' : 'day';
|
||||
const remainingDays = daysLeft > 0 ? `${daysLeft} ` : '';
|
||||
|
||||
const helloString = userName?.length > 1 ? `Hello ${userName}` : 'Hello';
|
||||
|
||||
return (
|
||||
<BaseEmail width={333} locale="en">
|
||||
<Title value="Suspended Workspace 😴" />
|
||||
<MainText>
|
||||
{helloString},
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
It appears that your workspace <b>{workspaceDisplayName}</b> has been
|
||||
suspended for {daysSinceInactive} days.
|
||||
</Trans>
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
The workspace will be deactivated in {remainingDays} {dayOrDays}, and
|
||||
all its data will be deleted.
|
||||
</Trans>
|
||||
<br />
|
||||
<br />
|
||||
<Trans>
|
||||
If you wish to continue using Twenty, please update your subscription
|
||||
within the next {remainingDays} {dayOrDays}.
|
||||
</Trans>
|
||||
</MainText>
|
||||
<CallToAction
|
||||
href="https://app.twenty.com/settings/billing"
|
||||
value={t`Update your subscription`}
|
||||
/>
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
@@ -1,7 +1,6 @@
|
||||
export * from './emails/clean-suspended-workspace.email';
|
||||
export * from './emails/clean-inactive-workspaces.email';
|
||||
export * from './emails/delete-inactive-workspaces.email';
|
||||
export * from './emails/password-reset-link.email';
|
||||
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';
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: aa\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afar\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: aa\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "crwdns1:0crwdne1:0"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "crwdns5:0crwdne5:0"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "crwdns7:0crwdne7:0"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "crwdns9:0{userName}crwdne9:0"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "crwdns13:0crwdne13:0"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "crwdns23:0crwdne23:0"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "crwdns25:0crwdne25:0"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "crwdns27:0crwdne27:0"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "crwdns29:0crwdne29:0"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "crwdns39:0crwdne39:0"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "crwdns41:0crwdne41:0"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: af\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: af\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Aanvaar uitnodiging"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Bevestig jou e-posadres"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Konnekteer met Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Liewe {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hallo"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Sluit aan by jou span op Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Wagwoord opgedateer"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Stel terug"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Stel jou wagwoord terug 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Opdateer jou intekening"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Verifieer E-pos"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: ar\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: ar\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "قبول الدعوة"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "تأكد من عنوان بريدك الإلكتروني"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "الاتصال بـ Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "عزيزي {userName}"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "has invited you to join a workspace called "
|
||||
msgstr "لقد دُعيت للإنضمام إلى مساحة عمل تسمى "
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Hello"
|
||||
msgstr "مرحبًا"
|
||||
|
||||
#: 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
|
||||
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
|
||||
msgid "If you wish to use Twenty again, you can create a new workspace."
|
||||
msgstr "إذا كنت ترغب في استخدام Twenty مرة أخرى، يمكنك إنشاء مساحة عمل جديدة."
|
||||
|
||||
#: 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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "انضم إلى فريقك في Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "تم تحديث كلمة المرور"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "إعادة تعيين"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "إعادة تعيين كلمة مرورك 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "تحديث الاشتراك"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "تحقق من البريد الإلكتروني"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: ca\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: ca\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Accepta la invitació"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Confirma la teva adreça de correu electrònic"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Connecta't a Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Benvolgut {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hola"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Uneix-te al teu equip a Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Contrasenya actualitzada"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Restableix"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Restableix la teva contrasenya 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Actualitza la teva subscripció"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Verifica el correu electrònic"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: cs\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: cs\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Přijměte pozvánku"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Potvrďte svou e-mailovou adresu"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Připojte se k Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Vážený {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Dobrý den"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Připojte se k svému týmu na Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Heslo bylo aktualizováno"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Obnovit"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Obnovte své heslo 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Aktualizujte své předplatné"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Ověřit e-mail"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: da\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Danish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: da\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Accepter invitation"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Bekræft din e-mailadresse"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Forbind til Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Kære {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hej"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Deltag i dit team på Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Adgangskode opdateret"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Nulstil"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Nulstil din adgangskode 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Opdater dit abonnement"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Bekræft e-mail"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: de\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Einladung akzeptieren"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Bestätigen Sie Ihre E-Mail-Adresse"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Mit Twenty verbinden"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Sehr geehrte/r {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hallo"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Treten Sie Ihrem Team auf Twenty bei"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Passwort wurde aktualisiert"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Aktualisieren Sie Ihr Abonnement"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "E-Mail verifizieren"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: el\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: el\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Αποδοχή πρόσκλησης"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Επιβεβαιώστε τη διεύθυνση email σας"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Συνδεθείτε στο Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Αγαπητέ/ή {userName}"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "has invited you to join a workspace called "
|
||||
msgstr "σας έχει προσκαλέσει να συμμετάσχετε σε έναν χώρο εργασίας με την ονομασία "
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Hello"
|
||||
msgstr "Γεια σας"
|
||||
|
||||
#: 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
|
||||
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
|
||||
msgid "If you wish to use Twenty again, you can create a new workspace."
|
||||
msgstr "Εάν επιθυμείτε να χρησιμοποιήσετε ξανά το Twenty, μπορείτε να δημιουργήσετε ένα νέο χώρο εργασίας."
|
||||
|
||||
#: 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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Συμμετέχετε στην ομάδα σας στο Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Ο κωδικός έχει ενημερωθεί"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Επαναφορά"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Επαναφέρετε τον κωδικό σας 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Ενημερώστε τη συνδρομή σας"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Επαληθεύστε το Email"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,118 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: en\n"
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Accept invite"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Confirm your email address"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Connect to Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Dear {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hello"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Join your team on Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Password updated"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Reset"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Reset your password 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Update your subscription"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Verify Email"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: es\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Aceptar invitación"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Confirma tu dirección de correo electrónico"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Conéctate a Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Estimado/a {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hola"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Únete a tu equipo en Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Contraseña actualizada"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Restablecer"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Restablece tu contraseña 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Actualiza tu suscripción"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Verificar correo electrónico"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: fi\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: fi\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Hyväksy kutsu"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Vahvista sähköpostiosoitteesi"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Yhdistä Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Hyvä {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Hei"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Liity tiimiisi Twentyssä"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Salasana päivitetty"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Nollaa"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset your password 🗝"
|
||||
msgstr "Nollaa salasanasi 🗝"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Päivitä tilauksesi"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Vahvista sähköposti"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1,123 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"POT-Creation-Date: 2025-02-01 18:53+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: @lingui/cli\n"
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-01-01 00:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Crowdin-Project: cf448e737e0d6d7b78742f963d761c61\n"
|
||||
"X-Crowdin-Project-ID: 1\n"
|
||||
"X-Crowdin-Language: fr\n"
|
||||
"X-Crowdin-File: /packages/twenty-emails/src/locales/en.po\n"
|
||||
"X-Crowdin-File-ID: 27\n"
|
||||
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
msgid "Accept invite"
|
||||
msgstr "Accepter l'invitation"
|
||||
|
||||
#: 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
|
||||
msgid "Confirm your email address"
|
||||
msgstr "Confirmez votre adresse e-mail"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Connect to Twenty"
|
||||
msgstr "Connectez-vous à Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
#~ msgid "Dear"
|
||||
#~ msgstr "Dear"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Dear {userName}"
|
||||
msgstr "Cher {userName}"
|
||||
|
||||
#: 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
|
||||
msgid "Hello"
|
||||
msgstr "Bonjour"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "Join your team on Twenty"
|
||||
msgstr "Rejoignez votre équipe sur Twenty"
|
||||
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
msgid "Password updated"
|
||||
msgstr "Mot de passe mis à jour"
|
||||
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
#: 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
|
||||
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
|
||||
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
|
||||
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
|
||||
#~ 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
|
||||
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
|
||||
#~ 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
|
||||
msgid "Update your subscription"
|
||||
msgstr "Mettez à jour votre abonnement"
|
||||
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Vérifiez l'e-mail"
|
||||
|
||||
#: 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
|
||||
#~ 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."
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Aanvaar uitnodiging\"],\"Yxj+Uc\":[\"Alle data in hierdie werkruimte is permanent verwyder.\"],\"RPHFhC\":[\"Bevestig jou e-posadres\"],\"nvkBPN\":[\"Konnekteer met Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Liewe \",[\"userName\"]],\"tGme7M\":[\"het jou genooi om aan te sluit by 'n werkruimte genaamd \"],\"uzTaYi\":[\"Hallo\"],\"eE1nG1\":[\"As jy nie hierdie verandering geïnisieer het nie, kontak asseblief jou werkruimte-eienaar dadelik.\"],\"Gz91L8\":[\"As jy wil voortgaan om Twenty te gebruik, moet asseblief jou intekening binne die volgende \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" opdateer.\"],\"0weyko\":[\"As jy Twenty weer wil gebruik, kan jy 'n nuwe werkruimte skep.\"],\"7JuhZQ\":[\"Dit blyk dat jou werkruimte <0>\",[\"workspaceDisplayName\"],\"</0> vir \",[\"daysSinceInactive\"],\" dae opgeskort is.\"],\"PviVyk\":[\"Sluit aan by jou span op Twenty\"],\"ogtYkT\":[\"Wagwoord opgedateer\"],\"OfhWJH\":[\"Stel terug\"],\"RE5NiU\":[\"Stel jou wagwoord terug 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Die werkruimte sal gedeaktiveer word in \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", en al sy data sal verwyder word.\"],\"7OEHy1\":[\"Dit is 'n bevestiging dat die wagwoord vir jou rekening (\",[\"email\"],\") suksesvol verander is op \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Hierdie skakel is slegs geldig vir die volgende \",[\"duration\"],\". Indien die skakel nie werk nie, kan jy die aanmeldverifiëringskakel direk gebruik:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Opdateer jou intekening\"],\"wCKkSr\":[\"Verifieer E-pos\"],\"9MqLGX\":[\"Jou werkruimte <0>\",[\"workspaceDisplayName\"],\"</0> is verwyder aangesien jou intekening \",[\"daysSinceInactive\"],\" dae gelede verval het.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"قبول الدعوة\"],\"Yxj+Uc\":[\"تم حذف جميع البيانات في هذه الواجهة بشكل دائم.\"],\"RPHFhC\":[\"تأكد من عنوان بريدك الإلكتروني\"],\"nvkBPN\":[\"الاتصال بـ Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"عزيزي \",[\"userName\"]],\"tGme7M\":[\"لقد دُعيت للإنضمام إلى مساحة عمل تسمى \"],\"uzTaYi\":[\"مرحبًا\"],\"eE1nG1\":[\"إذا لم تكن قد بدأت هذا التغيير، يرجى الاتصال بمالك مساحة العمل الخاصة بك على الفور.\"],\"Gz91L8\":[\"إذا كنت ترغب في الاستمرار في استخدام Twenty، يُرجى تحديث اشتراكك خلال الأيام \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" القادمة.\"],\"0weyko\":[\"إذا كنت ترغب في استخدام Twenty مرة أخرى، يمكنك إنشاء مساحة عمل جديدة.\"],\"7JuhZQ\":[\"يبدو أن مساحة عملك <0>\",[\"workspaceDisplayName\"],\"</0> قد تم تعليقها لمدة \",[\"daysSinceInactive\"],\" أيام.\"],\"PviVyk\":[\"انضم إلى فريقك في Twenty\"],\"ogtYkT\":[\"تم تحديث كلمة المرور\"],\"OfhWJH\":[\"إعادة تعيين\"],\"RE5NiU\":[\"إعادة تعيين كلمة مرورك 🗝\"],\"7yDt8q\":[\"شكراً لتسجيلك لحساب على Twenty! قبل أن نبدأ، نحتاج فقط إلى التأكد من أن هذا أنت. انقر أعلاه للتحقق من عنوان بريدك الإلكتروني.\"],\"igorB1\":[\"سيتم تعطيل مساحة العمل في غضون \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\"، وسيتم حذف كل بياناتها.\"],\"7OEHy1\":[\"هذا تأكيد أن كلمة مرور حسابك (\",[\"email\"],\") قد تم تغييرها بنجاح في \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"هذا الرابط صالح فقط للمدة \",[\"duration\"],\" القادمة. إذا لم يعمل الرابط، يمكنك استخدام رابط التحقق من تسجيل الدخول مباشرة:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"تحديث الاشتراك\"],\"wCKkSr\":[\"تحقق من البريد الإلكتروني\"],\"9MqLGX\":[\"تم حذف مساحة العمل <0>\",[\"workspaceDisplayName\"],\"</0> كون اشتراكك قد انتهى منذ \",[\"daysSinceInactive\"],\" أيام.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Accepta la invitació\"],\"Yxj+Uc\":[\"Totes les dades en aquest espai de treball s'han esborrat permanentment.\"],\"RPHFhC\":[\"Confirma la teva adreça de correu electrònic\"],\"nvkBPN\":[\"Connecta't a Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Benvolgut \",[\"userName\"]],\"tGme7M\":[\"t'ha convidat a unir-te a un espai de treball anomenat \"],\"uzTaYi\":[\"Hola\"],\"eE1nG1\":[\"Si no has iniciat aquest canvi, si us plau contacta amb el propietari de l'espai de treball immediatament.\"],\"Gz91L8\":[\"Si vols continuar utilitzant Twenty, si us plau actualitza la teva subscripció en els propers \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Si vols utilitzar Twenty de nou, pots crear un nou espai de treball.\"],\"7JuhZQ\":[\"Sembla que el teu espai de treball <0>\",[\"workspaceDisplayName\"],\"</0> ha estat suspès per \",[\"daysSinceInactive\"],\" dies.\"],\"PviVyk\":[\"Uneix-te al teu equip a Twenty\"],\"ogtYkT\":[\"Contrasenya actualitzada\"],\"OfhWJH\":[\"Restableix\"],\"RE5NiU\":[\"Restableix la teva contrasenya 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"L'espai de treball es desactivarà en \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", i totes les seves dades seran eliminades.\"],\"7OEHy1\":[\"Això és una confirmació que la contrasenya del teu compte (\",[\"email\"],\") s'ha canviat amb èxit el \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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ó:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Actualitza la teva subscripció\"],\"wCKkSr\":[\"Verifica el correu electrònic\"],\"9MqLGX\":[\"El teu espai de treball <0>\",[\"workspaceDisplayName\"],\"</0> s'ha eliminat ja que la teva subscripció va caducar fa \",[\"daysSinceInactive\"],\" dies.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Přijměte pozvánku\"],\"Yxj+Uc\":[\"Všechna data v tomto pracovním prostoru byla trvale odstraněna.\"],\"RPHFhC\":[\"Potvrďte svou e-mailovou adresu\"],\"nvkBPN\":[\"Připojte se k Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Vážený \",[\"userName\"]],\"tGme7M\":[\"vás pozval do pracovního prostoru s názvem \"],\"uzTaYi\":[\"Dobrý den\"],\"eE1nG1\":[\"Pokud jste tuto změnu neiniciovali, prosím, okamžitě kontaktujte majitele vašeho pracovního prostoru.\"],\"Gz91L8\":[\"Pokud si přejete dále používat Twenty, prosím, aktualizujte své předplatné během příštích \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Pokud si přejete znovu použít Twenty, můžete vytvořit nový pracovní prostor.\"],\"7JuhZQ\":[\"Zdá se, že váš pracovní prostor <0>\",[\"workspaceDisplayName\"],\"</0> byl pozastaven na dobu \",[\"daysSinceInactive\"],\" dní.\"],\"PviVyk\":[\"Připojte se k svému týmu na Twenty\"],\"ogtYkT\":[\"Heslo bylo aktualizováno\"],\"OfhWJH\":[\"Obnovit\"],\"RE5NiU\":[\"Obnovte své heslo 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Pracovní prostor bude deaktivován za \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" a všechna jeho data budou smazána.\"],\"7OEHy1\":[\"Toto je potvrzení, že heslo k vašemu účtu (\",[\"email\"],\") bylo úspěšně změněno \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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í:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Aktualizujte své předplatné\"],\"wCKkSr\":[\"Ověřit e-mail\"],\"9MqLGX\":[\"Váš pracovní prostor <0>\",[\"workspaceDisplayName\"],\"</0> byl odstraněn, protože vaše předplatné vypršelo před \",[\"daysSinceInactive\"],\" dny.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Accepter invitation\"],\"Yxj+Uc\":[\"Alle data i dette arbejdsområde er blevet permanent slettet.\"],\"RPHFhC\":[\"Bekræft din e-mailadresse\"],\"nvkBPN\":[\"Forbind til Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Kære \",[\"userName\"]],\"tGme7M\":[\"har inviteret dig til at deltage i et arbejdsområde kaldet \"],\"uzTaYi\":[\"Hej\"],\"eE1nG1\":[\"Hvis du ikke har initieret denne ændring, bedes du straks kontakte ejeren af dit arbejdsområde.\"],\"Gz91L8\":[\"Hvis du ønsker at fortsætte med at bruge Twenty, opdater da dit abonnement inden for de næste \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Hvis du ønsker at bruge Twenty igen, kan du oprette et nyt arbejdsområde.\"],\"7JuhZQ\":[\"Det ser ud til, at dit arbejdsområde <0>\",[\"workspaceDisplayName\"],\"</0> er blevet suspenderet i \",[\"daysSinceInactive\"],\" dage.\"],\"PviVyk\":[\"Deltag i dit team på Twenty\"],\"ogtYkT\":[\"Adgangskode opdateret\"],\"OfhWJH\":[\"Nulstil\"],\"RE5NiU\":[\"Nulstil din adgangskode 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Arbejdsområdet vil blive deaktiveret om \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", og alle dens data vil blive slettet.\"],\"7OEHy1\":[\"Dette er en bekræftelse på, at adgangskoden til din konto (\",[\"email\"],\") er blevet ændret den \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Dette link er kun gyldigt i de næste \",[\"duration\"],\". Hvis linket ikke fungerer, kan du bruge loginbekræftelseslinket direkte:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Opdater dit abonnement\"],\"wCKkSr\":[\"Bekræft e-mail\"],\"9MqLGX\":[\"Dit arbejdsområde <0>\",[\"workspaceDisplayName\"],\"</0> er blevet slettet, da dit abonnement udløb for \",[\"daysSinceInactive\"],\" dage siden.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Einladung akzeptieren\"],\"Yxj+Uc\":[\"Alle Daten in diesem Workspace wurden dauerhaft gelöscht.\"],\"RPHFhC\":[\"Bestätigen Sie Ihre E-Mail-Adresse\"],\"nvkBPN\":[\"Mit Twenty verbinden\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Sehr geehrte/r \",[\"userName\"]],\"tGme7M\":[\"hat Sie eingeladen, einem Workspace namens \"],\"uzTaYi\":[\"Hallo\"],\"eE1nG1\":[\"Wenn Sie diese Änderung nicht veranlasst haben, kontaktieren Sie bitte umgehend den Eigentümer Ihres Workspaces.\"],\"Gz91L8\":[\"Wenn Sie Twenty weiterhin nutzen möchten, aktualisieren Sie bitte Ihr Abonnement innerhalb der nächsten \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Wenn Sie Twenty erneut nutzen möchten, können Sie einen neuen Workspace erstellen.\"],\"7JuhZQ\":[\"Es scheint, dass Ihr Workspace <0>\",[\"workspaceDisplayName\"],\"</0> seit \",[\"daysSinceInactive\"],\" Tagen gesperrt ist.\"],\"PviVyk\":[\"Treten Sie Ihrem Team auf Twenty bei\"],\"ogtYkT\":[\"Passwort wurde aktualisiert\"],\"OfhWJH\":[\"Zurücksetzen\"],\"RE5NiU\":[\"Setzen Sie Ihr Passwort zurück 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Der Workspace wird in \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" deaktiviert, und alle Daten werden gelöscht.\"],\"7OEHy1\":[\"Dies ist eine Bestätigung, dass das Passwort für Ihr Konto (\",[\"email\"],\") am \",[\"formattedDate\"],\" erfolgreich geändert wurde.\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Aktualisieren Sie Ihr Abonnement\"],\"wCKkSr\":[\"E-Mail verifizieren\"],\"9MqLGX\":[\"Ihr Workspace <0>\",[\"workspaceDisplayName\"],\"</0> wurde gelöscht, da Ihr Abonnement vor \",[\"daysSinceInactive\"],\" Tagen abgelaufen ist.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Αποδοχή πρόσκλησης\"],\"Yxj+Uc\":[\"Όλα τα δεδομένα σε αυτόν τον χώρο εργασίας έχουν διαγραφεί μόνιμα.\"],\"RPHFhC\":[\"Επιβεβαιώστε τη διεύθυνση email σας\"],\"nvkBPN\":[\"Συνδεθείτε στο Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Αγαπητέ/ή \",[\"userName\"]],\"tGme7M\":[\"σας έχει προσκαλέσει να συμμετάσχετε σε έναν χώρο εργασίας με την ονομασία \"],\"uzTaYi\":[\"Γεια σας\"],\"eE1nG1\":[\"Εάν δεν έχετε προβεί εσείς σε αυτήν την αλλαγή, παρακαλώ επικοινωνήστε άμεσα με τον ιδιοκτήτη του χώρου εργασίας σας.\"],\"Gz91L8\":[\"Εάν επιθυμείτε να συνεχίστε να χρησιμοποιείτε το Twenty, παρακαλούμε ενημερώστε την συνδρομή σας εντός των επόμενων \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Εάν επιθυμείτε να χρησιμοποιήσετε ξανά το Twenty, μπορείτε να δημιουργήσετε ένα νέο χώρο εργασίας.\"],\"7JuhZQ\":[\"Φαίνεται ότι ο χώρος εργασίας σας <0>\",[\"workspaceDisplayName\"],\"</0> έχει ανασταλεί για \",[\"daysSinceInactive\"],\" ημέρες.\"],\"PviVyk\":[\"Συμμετέχετε στην ομάδα σας στο Twenty\"],\"ogtYkT\":[\"Ο κωδικός έχει ενημερωθεί\"],\"OfhWJH\":[\"Επαναφορά\"],\"RE5NiU\":[\"Επαναφέρετε τον κωδικό σας 🗝\"],\"7yDt8q\":[\"Σας ευχαριστούμε που εγγραφήκατε για έναν λογαριασμό στο Twenty! Πριν ξεκινήσουμε, πρέπει μόνο να επιβεβαιώσουμε ότι αυτός είστε εσείς. Κάντε κλικ παραπάνω για να επαληθεύσετε τη διεύθυνση email σας.\"],\"igorB1\":[\"Ο χώρος εργασίας θα απενεργοποιηθεί σε \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", και όλα τα δεδομένα του θα διαγραφούν.\"],\"7OEHy1\":[\"Αυτό είναι ένα επιβεβαίωση ότι ο κωδικός για τον λογαριασμό σας (\",[\"email\"],\") άλλαξε με επιτυχία στις \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Αυτός ο σύνδεσμος ισχύει μόνο για τις επόμενες \",[\"duration\"],\". Εάν ο σύνδεσμος δεν λειτουργεί, μπορείτε να χρησιμοποιήσετε τον σύνδεσμο επαλήθευσης σύνδεσης απευθείας:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Ενημερώστε τη συνδρομή σας\"],\"wCKkSr\":[\"Επαληθεύστε το Email\"],\"9MqLGX\":[\"Ο χώρος εργασίας σας <0>\",[\"workspaceDisplayName\"],\"</0> έχει διαγραφεί καθώς η συνδρομή σας έληξε \",[\"daysSinceInactive\"],\" ημέρες πριν.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Accept invite\"],\"Yxj+Uc\":[\"All data in this workspace has been permanently deleted.\"],\"RPHFhC\":[\"Confirm your email address\"],\"nvkBPN\":[\"Connect to Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Dear \",[\"userName\"]],\"tGme7M\":[\"has invited you to join a workspace called \"],\"uzTaYi\":[\"Hello\"],\"eE1nG1\":[\"If you did not initiate this change, please contact your workspace owner immediately.\"],\"Gz91L8\":[\"If you wish to continue using Twenty, please update your subscription within the next \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"If you wish to use Twenty again, you can create a new workspace.\"],\"7JuhZQ\":[\"It appears that your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been suspended for \",[\"daysSinceInactive\"],\" days.\"],\"PviVyk\":[\"Join your team on Twenty\"],\"ogtYkT\":[\"Password updated\"],\"OfhWJH\":[\"Reset\"],\"RE5NiU\":[\"Reset your password 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"The workspace will be deactivated in \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", and all its data will be deleted.\"],\"7OEHy1\":[\"This is a confirmation that password for your account (\",[\"email\"],\") was successfully changed on \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Update your subscription\"],\"wCKkSr\":[\"Verify Email\"],\"9MqLGX\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"daysSinceInactive\"],\" days ago.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Aceptar invitación\"],\"Yxj+Uc\":[\"Todos los datos de este espacio de trabajo han sido eliminados permanentemente.\"],\"RPHFhC\":[\"Confirma tu dirección de correo electrónico\"],\"nvkBPN\":[\"Conéctate a Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Estimado/a \",[\"userName\"]],\"tGme7M\":[\"te ha invitado a unirte a un espacio de trabajo llamado \"],\"uzTaYi\":[\"Hola\"],\"eE1nG1\":[\"Si no iniciaste este cambio, contacta inmediatamente al propietario de tu espacio de trabajo.\"],\"Gz91L8\":[\"Si deseas seguir usando Twenty, actualiza tu suscripción en los próximos \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Si deseas usar Twenty nuevamente, puedes crear un nuevo espacio de trabajo.\"],\"7JuhZQ\":[\"Parece que tu espacio de trabajo <0>\",[\"workspaceDisplayName\"],\"</0> ha estado suspendido durante \",[\"daysSinceInactive\"],\" días.\"],\"PviVyk\":[\"Únete a tu equipo en Twenty\"],\"ogtYkT\":[\"Contraseña actualizada\"],\"OfhWJH\":[\"Restablecer\"],\"RE5NiU\":[\"Restablece tu contraseña 🗝\"],\"7yDt8q\":[\"¡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.\"],\"igorB1\":[\"El espacio de trabajo se desactivará en \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" y se eliminarán todos sus datos.\"],\"7OEHy1\":[\"Esta es una confirmación de que la contraseña de tu cuenta (\",[\"email\"],\") se cambió correctamente el \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Actualiza tu suscripción\"],\"wCKkSr\":[\"Verificar correo electrónico\"],\"9MqLGX\":[\"Tu espacio de trabajo <0>\",[\"workspaceDisplayName\"],\"</0> ha sido eliminado porque tu suscripción caducó hace \",[\"daysSinceInactive\"],\" días.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Hyväksy kutsu\"],\"Yxj+Uc\":[\"Kaikki tiedot tässä työtilassa on pysyvästi poistettu.\"],\"RPHFhC\":[\"Vahvista sähköpostiosoitteesi\"],\"nvkBPN\":[\"Yhdistä Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Hyvä \",[\"userName\"]],\"tGme7M\":[\"on kutsunut sinut liittymään työtilaan nimeltä \"],\"uzTaYi\":[\"Hei\"],\"eE1nG1\":[\"Jos et itse aloittanut tätä muutosta, ota heti yhteyttä työtilasi omistajaan.\"],\"Gz91L8\":[\"Jos haluat jatkaa Twenty:n käyttöä, päivitä tilauksesi seuraavan \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" kuluessa.\"],\"0weyko\":[\"Jos haluat käyttää Twentyä uudelleen, voit luoda uuden työtilan.\"],\"7JuhZQ\":[\"Vaikuttaa siltä, että työtilasi <0>\",[\"workspaceDisplayName\"],\"</0> on ollut jäädytettynä \",[\"daysSinceInactive\"],\" päivää.\"],\"PviVyk\":[\"Liity tiimiisi Twentyssä\"],\"ogtYkT\":[\"Salasana päivitetty\"],\"OfhWJH\":[\"Nollaa\"],\"RE5NiU\":[\"Nollaa salasanasi 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Työtila poistetaan käytöstä \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" kuluttua, ja kaikki sen tiedot poistetaan.\"],\"7OEHy1\":[\"Tämä on vahvistus siitä, että tilisi (\",[\"email\"],\") salasana on vaihdettu onnistuneesti \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Tämä linkki on voimassa vain seuraavat \",[\"duration\"],\". Jos linkki ei toimi, voit käyttää suoraan kirjautumisen varmennuslinkkiä:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Päivitä tilauksesi\"],\"wCKkSr\":[\"Vahvista sähköposti\"],\"9MqLGX\":[\"Työtilasi <0>\",[\"workspaceDisplayName\"],\"</0> on poistettu, koska tilauksesi vanheni \",[\"daysSinceInactive\"],\" päivää sitten.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Accepter l'invitation\"],\"Yxj+Uc\":[\"Toutes les données de cet espace de travail ont été supprimées définitivement.\"],\"RPHFhC\":[\"Confirmez votre adresse e-mail\"],\"nvkBPN\":[\"Connectez-vous à Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Cher \",[\"userName\"]],\"tGme7M\":[\"vous a invité à rejoindre un espace de travail appelé \"],\"uzTaYi\":[\"Bonjour\"],\"eE1nG1\":[\"Si vous n'avez pas initié ce changement, veuillez contacter immédiatement le propriétaire de votre espace de travail.\"],\"Gz91L8\":[\"Pour continuer à utiliser Twenty, veuillez mettre à jour votre abonnement dans les \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Pour réutiliser Twenty, vous pouvez créer un nouvel espace de travail.\"],\"7JuhZQ\":[\"Il semble que votre espace de travail <0>\",[\"workspaceDisplayName\"],\"</0> soit suspendu depuis \",[\"daysSinceInactive\"],\" jours.\"],\"PviVyk\":[\"Rejoignez votre équipe sur Twenty\"],\"ogtYkT\":[\"Mot de passe mis à jour\"],\"OfhWJH\":[\"Réinitialiser\"],\"RE5NiU\":[\"Réinitialisez votre mot de passe 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"L'espace de travail sera désactivé dans \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" et toutes ses données seront supprimées.\"],\"7OEHy1\":[\"Ceci est une confirmation que le mot de passe de votre compte (\",[\"email\"],\") a été modifié avec succès le \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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 :\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Mettez à jour votre abonnement\"],\"wCKkSr\":[\"Vérifiez l'e-mail\"],\"9MqLGX\":[\"Votre espace de travail <0>\",[\"workspaceDisplayName\"],\"</0> a été supprimé car votre abonnement a expiré il y a \",[\"daysSinceInactive\"],\" jours.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"קבל הזמנה\"],\"Yxj+Uc\":[\"כל הנתונים במרחב העבודה הזה נמחקו לצמיתות.\"],\"RPHFhC\":[\"אמת את כתובת האימייל שלך\"],\"nvkBPN\":[\"התחבר ל-Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"יקר \",[\"userName\"]],\"tGme7M\":[\"הזמין אותך להצטרף למרחב עבודה בשם \"],\"uzTaYi\":[\"שלום\"],\"eE1nG1\":[\"אם לא אתה התחלת את השינוי הזה, אנא פנה מיד לבעל מרחב העבודה שלך.\"],\"Gz91L8\":[\"אם תרצה להמשיך ולהשתמש ב-Twenty, אנא עדכן את המנוי שלך במהלך \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" הבאים.\"],\"0weyko\":[\"אם תרצה להשתמש ב-Twenty שוב, תוכל ליצור מרחב עבודה חדש.\"],\"7JuhZQ\":[\"נראה כי מרחב העבודה שלך <0>\",[\"workspaceDisplayName\"],\"</0> הושעה ל-\",[\"daysSinceInactive\"],\" ימים.\"],\"PviVyk\":[\"הצטרף לצוות שלך ב-Twenty\"],\"ogtYkT\":[\"הסיסמה עודכנה\"],\"OfhWJH\":[\"איפוס\"],\"RE5NiU\":[\"אפס את הסיסמה שלך 🗝\"],\"7yDt8q\":[\"תודה שנרשמת לחשבון ב-Twenty! לפני שנתחיל, אנחנו רק צריכים לוודא שזה אתה. לחץ למעלה כדי לאמת את כתובת המייל שלך.\"],\"igorB1\":[\"המרחב ייסגר בעוד \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", וכל הנתונים שלו ימחקו.\"],\"7OEHy1\":[\"זוהי אישור שהסיסמה לחשבון שלך (\",[\"email\"],\") שונתה בהצלחה ב-\",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"הקישור הזה תקף רק ל-\",[\"duration\"],\" הבאים. אם הקישור לא עובד, תוכל להשתמש בקישור אימות ההתחברות ישירות:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"עדכן את המנוי שלך\"],\"wCKkSr\":[\"אמת דוא\\\"ל\"],\"9MqLGX\":[\"המרחב שלך <0>\",[\"workspaceDisplayName\"],\"</0> נמחק כי המנוי שלך פג תוקף לפני \",[\"daysSinceInactive\"],\" ימים.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Meghívó elfogadása\"],\"Yxj+Uc\":[\"A munkaterület minden adata végérvényesen törlésre került.\"],\"RPHFhC\":[\"Erősítse meg email címét\"],\"nvkBPN\":[\"Csatlakozás a Twentyhez\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Kedves \",[\"userName\"]],\"tGme7M\":[\"meghívta Önt, hogy csatlakozzon egy munkaterülethez, amelynek a neve: \"],\"uzTaYi\":[\"Üdvözlöm\"],\"eE1nG1\":[\"Amennyiben Ön nem kezdeményezte ezt a változtatást, kérjük azonnal lépjen kapcsolatba a munkaterület tulajdonosával.\"],\"Gz91L8\":[\"Amennyiben szeretné folytatni a Twenty használatát, kérjük frissítse előfizetését a következő \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" időszakban.\"],\"0weyko\":[\"Ha újra szeretné használni a Twenty-t, létrehozhat egy új munkaterületet.\"],\"7JuhZQ\":[\"Úgy tűnik, hogy a munkaterülete <0>\",[\"workspaceDisplayName\"],\"</0> felfüggesztésre került \",[\"daysSinceInactive\"],\" napja.\"],\"PviVyk\":[\"Csatlakozzon a csapatához a Twentyn\"],\"ogtYkT\":[\"Jelszó frissítve\"],\"OfhWJH\":[\"Visszaállítás\"],\"RE5NiU\":[\"Jelszó visszaállítása 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"A munkaterület \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" múlva lesz deaktiválva, és minden adat törlésre kerül.\"],\"7OEHy1\":[\"Ez egy megerősítés arról, hogy fiókja jelszavát (\",[\"email\"],\") sikeresen megváltoztatták \",[\"formattedDate\"],\" napján.\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Előfizetés frissítése\"],\"wCKkSr\":[\"Email ellenőrzése\"],\"9MqLGX\":[\"Munkaterülete <0>\",[\"workspaceDisplayName\"],\"</0> törlésre került, mivel előfizetése \",[\"daysSinceInactive\"],\" nappal ezelőtt lejárt.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Accetta l'invito\"],\"Yxj+Uc\":[\"Tutti i dati in questo spazio di lavoro sono stati eliminati definitivamente.\"],\"RPHFhC\":[\"Conferma il tuo indirizzo e-mail\"],\"nvkBPN\":[\"Accedi a Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Gentile \",[\"userName\"]],\"tGme7M\":[\"ti ha invitato a unirti a uno spazio di lavoro chiamato \"],\"uzTaYi\":[\"Salve\"],\"eE1nG1\":[\"Se non hai avviato questa modifica, contatta immediatamente il proprietario dello spazio di lavoro.\"],\"Gz91L8\":[\"Se desideri continuare a utilizzare Twenty, aggiorna il tuo abbonamento entro i prossimi \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Se desideri utilizzare nuovamente Twenty, puoi creare un nuovo spazio di lavoro.\"],\"7JuhZQ\":[\"Sembra che il tuo spazio di lavoro <0>\",[\"workspaceDisplayName\"],\"</0> sia stato sospeso per \",[\"daysSinceInactive\"],\" giorni.\"],\"PviVyk\":[\"Unisciti al tuo team su Twenty\"],\"ogtYkT\":[\"Password aggiornata\"],\"OfhWJH\":[\"Reimposta\"],\"RE5NiU\":[\"Reimposta la tua password 🗝\"],\"7yDt8q\":[\"Grazie per esserti registrato su Twenty! Prima di iniziare, dobbiamo solo confermare che sei tu. Clicca sopra per verificare il tuo indirizzo e-mail.\"],\"igorB1\":[\"L'area di lavoro sarà disattivata in \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" e tutti i suoi dati saranno cancellati.\"],\"7OEHy1\":[\"Questa è la conferma che la password del tuo account (\",[\"email\"],\") è stata modificata con successo in data \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Questo link è valido solo per i prossimi \",[\"duration\"],\". Se il link non funziona, puoi utilizzare direttamente il link di verifica del login:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Aggiorna il tuo abbonamento\"],\"wCKkSr\":[\"Verifica e-mail\"],\"9MqLGX\":[\"Il tuo spazio di lavoro <0>\",[\"workspaceDisplayName\"],\"</0> è stato cancellato poiché il tuo abbonamento è scaduto \",[\"daysSinceInactive\"],\" giorni fa.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"招待を承諾\"],\"Yxj+Uc\":[\"このワークスペースのすべてのデータは永久に削除されました。\"],\"RPHFhC\":[\"メールアドレスを確認\"],\"nvkBPN\":[\"Twentyに接続\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[[\"userName\"],\"様\"],\"tGme7M\":[\"というワークスペースに招待されました。\"],\"uzTaYi\":[\"こんにちは\"],\"eE1nG1\":[\"この変更を行っていない場合は、すぐにワークスペースの所有者に連絡してください。\"],\"Gz91L8\":[\"Twentyを引き続きご利用になる場合は、\",[\"remainingDays\"],\" \",[\"dayOrDays\"],\"以内にサブスクリプションを更新してください。\"],\"0weyko\":[\"Twentyを再度使用するには、新しいワークスペースを作成してください。\"],\"7JuhZQ\":[\"ワークスペース<0>\",[\"workspaceDisplayName\"],\"</0>は\",[\"daysSinceInactive\"],\"日間停止されているようです。\"],\"PviVyk\":[\"Twentyでチームに参加\"],\"ogtYkT\":[\"パスワードが更新されました\"],\"OfhWJH\":[\"リセット\"],\"RE5NiU\":[\"パスワードをリセット\"],\"7yDt8q\":[\"Twentyにご登録いただきありがとうございます!開始する前に、ご本人確認のために上記をクリックしてメールアドレスを確認してください。\"],\"igorB1\":[\"ワークスペースは\",[\"remainingDays\"],\" \",[\"dayOrDays\"],\"後に無効化され、すべてのデータが削除されます。\"],\"7OEHy1\":[\"アカウント(\",[\"email\"],\")のパスワードが\",[\"formattedDate\"],\"に正常に変更されたことを確認しました。\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"このリンクは\",[\"duration\"],\"のみ有効です。リンクが機能しない場合は、ログイン認証リンクを直接ご利用ください:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"サブスクリプションを更新\"],\"wCKkSr\":[\"メールを確認\"],\"9MqLGX\":[\"サブスクリプションが\",[\"daysSinceInactive\"],\"日前に期限切れとなったため、ワークスペース<0>\",[\"workspaceDisplayName\"],\"</0>が削除されました。\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"초대 수락\"],\"Yxj+Uc\":[\"이 워크스페이스의 모든 데이터가 영구적으로 삭제되었습니다.\"],\"RPHFhC\":[\"이메일 주소를 확인하세요\"],\"nvkBPN\":[\"Twenty에 연결하세요\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[[\"userName\"],\"님께\"],\"tGme7M\":[\"라는 워크스페이스에 초대되었습니다 \"],\"uzTaYi\":[\"안녕하세요\"],\"eE1nG1\":[\"이 변경을 시작하지 않으셨다면 즉시 워크스페이스 소유자에게 문의하세요.\"],\"Gz91L8\":[\"Twenty를 계속 사용하려면 다음 \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" 내에 구독을 업데이트하세요.\"],\"0weyko\":[\"Twenty를 다시 사용하려면 새 워크스페이스를 생성하세요.\"],\"7JuhZQ\":[\"워크스페이스 <0>\",[\"workspaceDisplayName\"],\"</0>이(가) \",[\"daysSinceInactive\"],\"일 동안 일시 중단된 것 같습니다.\"],\"PviVyk\":[\"Twenty에서 팀에 합류하세요\"],\"ogtYkT\":[\"비밀번호가 업데이트되었습니다\"],\"OfhWJH\":[\"초기화\"],\"RE5NiU\":[\"비밀번호를 재설정하세요 🗝\"],\"7yDt8q\":[\"Twenty에 계정을 등록해 주셔서 감사합니다! 시작하기 전에 본인 확인이 필요합니다. 위를 클릭하여 이메일 주소를 인증하세요.\"],\"igorB1\":[\"워크스페이스는 \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" 후에 비활성화되며 모든 데이터가 삭제됩니다.\"],\"7OEHy1\":[\"계정(\",[\"email\"],\")의 비밀번호가 \",[\"formattedDate\"],\"에 성공적으로 변경되었음을 확인합니다.\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"이 링크는 다음 \",[\"duration\"],\" 동안만 유효합니다. 링크가 작동하지 않으면 로그인 인증 링크를 직접 사용할 수 있습니다:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"구독을 업데이트하세요\"],\"wCKkSr\":[\"이메일 인증\"],\"9MqLGX\":[\"구독이 \",[\"daysSinceInactive\"],\"일 전에 만료되어 워크스페이스 <0>\",[\"workspaceDisplayName\"],\"</0>이(가) 삭제되었습니다.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Uitnodiging accepteren\"],\"Yxj+Uc\":[\"Alle gegevens in deze werkruimte zijn definitief verwijderd.\"],\"RPHFhC\":[\"Bevestig uw e-mailadres\"],\"nvkBPN\":[\"Verbinden met Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Beste \",[\"userName\"]],\"tGme7M\":[\"heeft u uitgenodigd om deel te nemen aan een werkruimte genaamd \"],\"uzTaYi\":[\"Hallo\"],\"eE1nG1\":[\"Als u deze wijziging niet heeft geïnitieerd, neem dan onmiddellijk contact op met de eigenaar van uw werkruimte.\"],\"Gz91L8\":[\"Als u Twenty wilt blijven gebruiken, werk dan uw abonnement bij binnen de komende \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Als u Twenty opnieuw wilt gebruiken, kunt u een nieuwe werkruimte aanmaken.\"],\"7JuhZQ\":[\"Het lijkt erop dat uw werkruimte <0>\",[\"workspaceDisplayName\"],\"</0> al voor \",[\"daysSinceInactive\"],\" dagen is opgeschort.\"],\"PviVyk\":[\"Sluit je aan bij je team op Twenty\"],\"ogtYkT\":[\"Wachtwoord bijgewerkt\"],\"OfhWJH\":[\"Resetten\"],\"RE5NiU\":[\"Reset uw wachtwoord 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"De werkruimte wordt gedeactiveerd in \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", en alle gegevens zullen worden verwijderd.\"],\"7OEHy1\":[\"Dit is een bevestiging dat het wachtwoord voor uw account (\",[\"email\"],\") succesvol is gewijzigd op \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Deze link is slechts geldig voor de komende \",[\"duration\"],\". Als de link niet werkt, kunt u direct de inlogverificatielink gebruiken:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Werk uw abonnement bij\"],\"wCKkSr\":[\"E-mail verifiëren\"],\"9MqLGX\":[\"Uw werkruimte <0>\",[\"workspaceDisplayName\"],\"</0> is verwijderd omdat uw abonnement \",[\"daysSinceInactive\"],\" dagen geleden is verlopen.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Godta invitasjon\"],\"Yxj+Uc\":[\"Alle data i dette arbeidsområdet har blitt permanent slettet.\"],\"RPHFhC\":[\"Bekreft e-postadressen din\"],\"nvkBPN\":[\"Koble til Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Kjære \",[\"userName\"]],\"tGme7M\":[\"har invitert deg til å bli med i et arbeidsområde kalt \"],\"uzTaYi\":[\"Hei\"],\"eE1nG1\":[\"Hvis du ikke initierte denne endringen, vennligst kontakt eieren av arbeidsområdet ditt umiddelbart.\"],\"Gz91L8\":[\"Hvis du ønsker å fortsette å bruke Twenty, vennligst oppdater abonnementet ditt innen de neste \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Hvis du ønsker å bruke Twenty igjen, kan du opprette et nytt arbeidsområde.\"],\"7JuhZQ\":[\"Det ser ut til at ditt arbeidsområde <0>\",[\"workspaceDisplayName\"],\"</0> har blitt suspendert i \",[\"daysSinceInactive\"],\" dager.\"],\"PviVyk\":[\"Bli med teamet ditt på Twenty\"],\"ogtYkT\":[\"Passord oppdatert\"],\"OfhWJH\":[\"Tilbakestill\"],\"RE5NiU\":[\"Tilbakestill passordet ditt 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Arbeidsområdet vil bli deaktivert om \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", og alle dens data vil bli slettet.\"],\"7OEHy1\":[\"Dette er en bekreftelse på at passordet for kontoen din (\",[\"email\"],\") ble vellykket endret den \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Denne lenken er kun gyldig i de neste \",[\"duration\"],\". Hvis lenken ikke fungerer, kan du bruke verifiseringslenken for innlogging direkte:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Oppdater abonnementet ditt\"],\"wCKkSr\":[\"Verifiser e-post\"],\"9MqLGX\":[\"Ditt arbeidsområde <0>\",[\"workspaceDisplayName\"],\"</0> har blitt slettet da ditt abonnement utløp for \",[\"daysSinceInactive\"],\" dager siden.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Zaakceptuj zaproszenie\"],\"Yxj+Uc\":[\"Wszystkie dane w tej przestrzeni roboczej zostały trwale usunięte.\"],\"RPHFhC\":[\"Potwierdź swój adres email\"],\"nvkBPN\":[\"Połącz z Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Szanowny \",[\"userName\"]],\"tGme7M\":[\"zaprosił Cię do przyłączenia się do przestrzeni roboczej o nazwie \"],\"uzTaYi\":[\"Witaj\"],\"eE1nG1\":[\"Jeśli to nie Ty zainicjowałeś tę zmianę, skontaktuj się niezwłocznie z właścicielem przestrzeni roboczej.\"],\"Gz91L8\":[\"Jeśli chcesz kontynuować korzystanie z Twenty, proszę zaktualizuj swoją subskrypcję w ciągu następnych \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Jeśli chcesz ponownie korzystać z Twenty, możesz utworzyć nową przestrzeń roboczą.\"],\"7JuhZQ\":[\"Wygląda na to, że Twoja przestrzeń robocza <0>\",[\"workspaceDisplayName\"],\"</0> została zawieszona na \",[\"daysSinceInactive\"],\" dni.\"],\"PviVyk\":[\"Dołącz do swojego zespołu w Twenty\"],\"ogtYkT\":[\"Hasło zaktualizowane\"],\"OfhWJH\":[\"Zresetuj\"],\"RE5NiU\":[\"Zresetuj swoje hasło 🗝\"],\"7yDt8q\":[\"Dziękujemy za rejestrację konta w Twenty! Zanim zaczniemy, musimy tylko potwierdzić, że to Ty. Kliknij powyżej, aby zweryfikować swój adres email.\"],\"igorB1\":[\"Przestrzeń robocza zostanie deaktywowana za \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", a wszystkie jej dane zostaną usunięte.\"],\"7OEHy1\":[\"To jest potwierdzenie, że hasło do Twojego konta (\",[\"email\"],\") zostało pomyślnie zmienione \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Ten link jest ważny tylko przez \",[\"duration\"],\". Jeśli link nie działa, można bezpośrednio użyć linku weryfikacyjnego logowania:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Zaktualizuj swoją subskrypcję\"],\"wCKkSr\":[\"Zweryfikuj Email\"],\"9MqLGX\":[\"Twoja przestrzeń robocza <0>\",[\"workspaceDisplayName\"],\"</0> została usunięta, ponieważ Twoja subskrypcja wygasła \",[\"daysSinceInactive\"],\" dni temu.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Àććēƥţ ĩńvĩţē\"],\"Yxj+Uc\":[\"Àĺĺ ďàţà ĩń ţĥĩś ŵōŕķśƥàćē ĥàś ƀēēń ƥēŕḿàńēńţĺŷ ďēĺēţēď.\"],\"RPHFhC\":[\"Ćōńƒĩŕḿ ŷōũŕ ēḿàĩĺ àďďŕēśś\"],\"nvkBPN\":[\"Ćōńńēćţ ţō Ţŵēńţŷ\"],\"JRzgV7\":[\"Ďēàŕ\"],\"Lm5BBI\":[\"Ďēàŕ \",[\"userName\"]],\"tGme7M\":[\"ĥàś ĩńvĩţēď ŷōũ ţō Ĵōĩń à ŵōŕķśƥàćē ćàĺĺēď \"],\"uzTaYi\":[\"Ĥēĺĺō\"],\"eE1nG1\":[\"Ĩƒ ŷōũ ďĩď ńōţ ĩńĩţĩàţē ţĥĩś ćĥàńĝē, ƥĺēàśē ćōńţàćţ ŷōũŕ ŵōŕķśƥàćē ōŵńēŕ ĩḿḿēďĩàţēĺŷ.\"],\"Gz91L8\":[\"Ĩƒ ŷōũ ŵĩśĥ ţō ćōńţĩńũē ũśĩńĝ Ţŵēńţŷ, ƥĺēàśē ũƥďàţē ŷōũŕ śũƀśćŕĩƥţĩōń ŵĩţĥĩń ţĥē ńēxţ \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Ĩƒ ŷōũ ŵĩśĥ ţō ũśē Ţŵēńţŷ àĝàĩń, ŷōũ ćàń ćŕēàţē à ńēŵ ŵōŕķśƥàćē.\"],\"7JuhZQ\":[\"Ĩţ àƥƥēàŕś ţĥàţ ŷōũŕ ŵōŕķśƥàćē <0>\",[\"workspaceDisplayName\"],\"</0> ĥàś ƀēēń śũśƥēńďēď ƒōŕ \",[\"daysSinceInactive\"],\" ďàŷś.\"],\"PviVyk\":[\"ĵōĩń ŷōũŕ ţēàḿ ōń Ţŵēńţŷ\"],\"ogtYkT\":[\"Ƥàśśŵōŕď ũƥďàţēď\"],\"OfhWJH\":[\"Ŕēśēţ\"],\"RE5NiU\":[\"Ŕēśēţ ŷōũŕ ƥàśśŵōŕď 🗝\"],\"7yDt8q\":[\"Ţĥàńķś ƒōŕ ŕēĝĩśţēŕĩńĝ ƒōŕ àń àććōũńţ ōń Ţŵēńţŷ! ßēƒōŕē ŵē ĝēţ śţàŕţēď, ŵē Ĵũśţ ńēēď ţō ćōńƒĩŕḿ ţĥàţ ţĥĩś ĩś ŷōũ. Ćĺĩćķ àƀōvē ţō vēŕĩƒŷ ŷōũŕ ēḿàĩĺ àďďŕēśś.\"],\"igorB1\":[\"Ţĥē ŵōŕķśƥàćē ŵĩĺĺ ƀē ďēàćţĩvàţēď ĩń \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", àńď àĺĺ ĩţś ďàţà ŵĩĺĺ ƀē ďēĺēţēď.\"],\"7OEHy1\":[\"Ţĥĩś ĩś à ćōńƒĩŕḿàţĩōń ţĥàţ ƥàśśŵōŕď ƒōŕ ŷōũŕ àććōũńţ (\",[\"email\"],\") ŵàś śũććēśśƒũĺĺŷ ćĥàńĝēď ōń \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"Ţĥĩś ĩś à ćōńƒĩŕḿàţĩōń ţĥàţ ƥàśśŵōŕď ƒōŕ ŷōũŕ àććōũńţ (\",[\"email\"],\") ŵàś śũććēśśƒũĺĺŷ ćĥàńĝēď ōń \",[\"formattedDate\"],\".<0/><1/>Ĩƒ ŷōũ ďĩď ńōţ ĩńĩţĩàţē ţĥĩś ćĥàńĝē, ƥĺēàśē ćōńţàćţ ŷōũŕ ŵōŕķśƥàćē ōŵńēŕ ĩḿḿēďĩàţēĺŷ.\"],\"R4gMjN\":[\"Ţĥĩś ĺĩńķ ĩś ōńĺŷ vàĺĩď ƒōŕ ţĥē ńēxţ \",[\"duration\"],\". Ĩƒ ţĥē ĺĩńķ ďōēś ńōţ ŵōŕķ, ŷōũ ćàń ũśē ţĥē ĺōĝĩń vēŕĩƒĩćàţĩōń ĺĩńķ ďĩŕēćţĺŷ:\"],\"2oA637\":[\"Ţĥĩś ĺĩńķ ĩś ōńĺŷ vàĺĩď ƒōŕ ţĥē ńēxţ \",[\"duration\"],\". Ĩƒ ţĥē ĺĩńķ ďōēś ńōţ ŵōŕķ, ŷōũ ćàń ũśē ţĥē ĺōĝĩń vēŕĩƒĩćàţĩōń ĺĩńķ ďĩŕēćţĺŷ:<0/>\"],\"H0v4yC\":[\"Ũƥďàţē ŷōũŕ śũƀśćŕĩƥţĩōń\"],\"wCKkSr\":[\"Vēŕĩƒŷ Ēḿàĩĺ\"],\"9MqLGX\":[\"Ŷōũŕ ŵōŕķśƥàćē <0>\",[\"workspaceDisplayName\"],\"</0> ĥàś ƀēēń ďēĺēţēď àś ŷōũŕ śũƀśćŕĩƥţĩōń ēxƥĩŕēď \",[\"daysSinceInactive\"],\" ďàŷś àĝō.\"],\"KFmFrQ\":[\"Ŷōũŕ ŵōŕķśƥàćē <0>\",[\"workspaceDisplayName\"],\"</0> ĥàś ƀēēń ďēĺēţēď àś ŷōũŕ śũƀśćŕĩƥţĩōń ēxƥĩŕēď \",[\"inactiveDaysBeforeDelete\"],\" ďàŷś àĝō.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Aceitar convite\"],\"Yxj+Uc\":[\"Todos os dados deste workspace foram excluídos permanentemente.\"],\"RPHFhC\":[\"Confirme seu endereço de e-mail\"],\"nvkBPN\":[\"Conecte-se ao Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Caro \",[\"userName\"]],\"tGme7M\":[\"convidou você para participar de um workspace chamado \"],\"uzTaYi\":[\"Olá\"],\"eE1nG1\":[\"Se você não iniciou essa alteração, entre em contato com o proprietário do workspace imediatamente.\"],\"Gz91L8\":[\"Se quiser continuar usando o Twenty, atualize sua assinatura nos próximos \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Se quiser usar o Twenty novamente, você pode criar um novo workspace.\"],\"7JuhZQ\":[\"Parece que seu workspace <0>\",[\"workspaceDisplayName\"],\"</0> foi suspenso por \",[\"daysSinceInactive\"],\" dias.\"],\"PviVyk\":[\"Junte-se à sua equipe no Twenty\"],\"ogtYkT\":[\"Senha atualizada\"],\"OfhWJH\":[\"Redefinir\"],\"RE5NiU\":[\"Redefina sua senha 🗝\"],\"7yDt8q\":[\"Obrigado por se registrar no Twenty! Antes de começarmos, precisamos confirmar que é você. Clique acima para verificar seu endereço de e-mail.\"],\"igorB1\":[\"O workspace será desativado em \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", e todos os seus dados serão excluídos.\"],\"7OEHy1\":[\"Esta é uma confirmação de que a senha da sua conta (\",[\"email\"],\") foi alterada com sucesso em \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Atualize sua assinatura\"],\"wCKkSr\":[\"Verificar e-mail\"],\"9MqLGX\":[\"Seu workspace <0>\",[\"workspaceDisplayName\"],\"</0> foi excluído porque sua assinatura expirou há \",[\"daysSinceInactive\"],\" dias.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Aceitar convite\"],\"Yxj+Uc\":[\"Todos os dados deste workspace foram eliminados permanentemente.\"],\"RPHFhC\":[\"Confirme o seu endereço de e-mail\"],\"nvkBPN\":[\"Conecte-se ao Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Caro \",[\"userName\"]],\"tGme7M\":[\"convidou-o a juntar-se a um workspace chamado \"],\"uzTaYi\":[\"Olá\"],\"eE1nG1\":[\"Se não iniciou esta alteração, contacte imediatamente o proprietário do seu workspace.\"],\"Gz91L8\":[\"Se quiser continuar a usar o Twenty, atualize a sua subscrição nos próximos \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Se quiser usar o Twenty novamente, pode criar um novo workspace.\"],\"7JuhZQ\":[\"Parece que o seu workspace <0>\",[\"workspaceDisplayName\"],\"</0> foi suspenso há \",[\"daysSinceInactive\"],\" dias.\"],\"PviVyk\":[\"Junte-se à sua equipa no Twenty\"],\"ogtYkT\":[\"Palavra-passe atualizada\"],\"OfhWJH\":[\"Redefinir\"],\"RE5NiU\":[\"Redefina a sua palavra-passe 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"O workspace será desativado em \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\" e todos os seus dados serão eliminados.\"],\"7OEHy1\":[\"Esta é uma confirmação de que a palavra-passe da sua conta (\",[\"email\"],\") foi alterada com sucesso em \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"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:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Atualize a sua subscrição\"],\"wCKkSr\":[\"Verifique o e-mail\"],\"9MqLGX\":[\"O seu workspace <0>\",[\"workspaceDisplayName\"],\"</0> foi eliminado porque a sua subscrição expirou há \",[\"daysSinceInactive\"],\" dias.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
@@ -1 +0,0 @@
|
||||
/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"4WPI3S\":[\"Acceptați invitația\"],\"Yxj+Uc\":[\"Toate datele din acest spațiu de lucru au fost șterse permanent.\"],\"RPHFhC\":[\"Confirmați adresa de email\"],\"nvkBPN\":[\"Conectați-vă la Twenty\"],\"JRzgV7\":[\"Dear\"],\"Lm5BBI\":[\"Dragă \",[\"userName\"]],\"tGme7M\":[\"v-a invitat să vă alăturați unui spațiu de lucru numit \"],\"uzTaYi\":[\"Salut\"],\"eE1nG1\":[\"Dacă nu ați inițiat această schimbare, vă rugăm să contactați imediat proprietarul spațiului de lucru.\"],\"Gz91L8\":[\"Dacă doriți să continuați utilizarea Twenty, vă rugăm să vă actualizați abonamentul în următoarele \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\".\"],\"0weyko\":[\"Dacă doriți să folosiți din nou Twenty, puteți crea un spațiu de lucru nou.\"],\"7JuhZQ\":[\"Se pare că spațiul dvs. de lucru <0>\",[\"workspaceDisplayName\"],\"</0> a fost suspendat de \",[\"daysSinceInactive\"],\" zile.\"],\"PviVyk\":[\"Alăturați-vă echipei pe Twenty\"],\"ogtYkT\":[\"Parola a fost actualizată\"],\"OfhWJH\":[\"Resetează\"],\"RE5NiU\":[\"Resetați-vă parola 🗝\"],\"7yDt8q\":[\"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.\"],\"igorB1\":[\"Spațiul de lucru va fi dezactivat în \",[\"remainingDays\"],\" \",[\"dayOrDays\"],\", iar toate datele sale vor fi șterse.\"],\"7OEHy1\":[\"Aceasta este o confirmare că parola contului dvs. (\",[\"email\"],\") a fost schimbată cu succes la data de \",[\"formattedDate\"],\".\"],\"wSOsS+\":[\"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.\"],\"R4gMjN\":[\"Acest link este valabil doar pentru următoarele \",[\"duration\"],\". Dacă linkul nu funcționează, puteți folosi direct linkul de verificare a autentificării:\"],\"2oA637\":[\"This link is only valid for the next \",[\"duration\"],\". If the link does not work, you can use the login verification link directly:<0/>\"],\"H0v4yC\":[\"Actualizați abonamentul\"],\"wCKkSr\":[\"Verificați Email\"],\"9MqLGX\":[\"Spațiul dvs. de lucru <0>\",[\"workspaceDisplayName\"],\"</0> a fost șters, deoarece abonamentul a expirat cu \",[\"daysSinceInactive\"],\" zile în urmă.\"],\"KFmFrQ\":[\"Your workspace <0>\",[\"workspaceDisplayName\"],\"</0> has been deleted as your subscription expired \",[\"inactiveDaysBeforeDelete\"],\" days ago.\"]}")as Messages;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user