Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4b38b9bc3 | ||
|
|
d32719ad8b | ||
|
|
99d0816d9f | ||
|
|
95f4b89fe8 | ||
|
|
3e63c2b717 | ||
|
|
42cd56578d | ||
|
|
31d4cb4eb7 | ||
|
|
fde3e8bea9 | ||
|
|
874ad29676 | ||
|
|
5503d9d432 | ||
|
|
43b3d68447 | ||
|
|
e3c747a867 | ||
|
|
e020a2c9a4 | ||
|
|
e6e6f09547 | ||
|
|
68ec946c59 | ||
|
|
5a6e5ce427 | ||
|
|
b2382211db | ||
|
|
12148506bd | ||
|
|
b5666fd4c3 | ||
|
|
bc7da563d8 | ||
|
|
d3acf4160d | ||
|
|
65e0c0e4c5 | ||
|
|
2dda6a509b | ||
|
|
7238414864 | ||
|
|
bab41ca8a6 | ||
|
|
376f023e0f | ||
|
|
0cbf525a78 | ||
|
|
f56fefec4d | ||
|
|
66eccd6dd8 | ||
|
|
c4b9a9e2f4 | ||
|
|
38921e58cd | ||
|
|
2c9c6c77f7 | ||
|
|
46605e049d | ||
|
|
01e1e82ced | ||
|
|
8e17716094 | ||
|
|
7c028b6479 | ||
|
|
cba4bae5cd | ||
|
|
55046f3017 | ||
|
|
4836621c31 | ||
|
|
6743aa4609 | ||
|
|
bbad0fbc18 | ||
|
|
8f6812ecb2 | ||
|
|
303b09f341 | ||
|
|
1f3ee41eb4 | ||
|
|
01c711a81e | ||
|
|
16bb5c3384 | ||
|
|
c55d97368e | ||
|
|
ef193aca31 | ||
|
|
c36a6797a9 | ||
|
|
f393fd4ad4 | ||
|
|
8987b9bdbc | ||
|
|
68bf426af0 | ||
|
|
1125900013 | ||
|
|
d272e823c3 | ||
|
|
3ea11d4f38 | ||
|
|
b4dc64594c | ||
|
|
6a763b3720 | ||
|
|
252ac1c704 | ||
|
|
c51e42a061 | ||
|
|
e3f9e477fe | ||
|
|
b265970b01 | ||
|
|
7b7b2ffc9a | ||
|
|
d019062709 | ||
|
|
ad9d728314 | ||
|
|
b564fb9a2f | ||
|
|
9c05f6839c | ||
|
|
4dea38f06d | ||
|
|
c4fc222204 | ||
|
|
00c3a2dd80 | ||
|
|
46fa0088f2 | ||
|
|
a19fd9b889 | ||
|
|
d379c10510 | ||
|
|
f3a58145ee | ||
|
|
e6125dc361 | ||
|
|
b78f718e9e | ||
|
|
53e87f7769 | ||
|
|
86eb40e0fd | ||
|
|
51caa6834a | ||
|
|
7a7a5b5285 | ||
|
|
f14ffb9e44 | ||
|
|
001b524005 | ||
|
|
a8cf4fb309 | ||
|
|
155775556d | ||
|
|
d66095bf9c | ||
|
|
0ddab30340 | ||
|
|
2a9e061575 | ||
|
|
351dce5cfd | ||
|
|
3255d9012c | ||
|
|
226dcb3fcf | ||
|
|
f80e9b2558 | ||
|
|
3f273235a6 | ||
|
|
e8554ed5c5 | ||
|
|
a03744008c | ||
|
|
fe8b13885c | ||
|
|
8995dcc82a | ||
|
|
e8e0d03265 | ||
|
|
56031f0358 | ||
|
|
1ef0f830d3 | ||
|
|
59e2f6e4a7 | ||
|
+15 |
67bb2ed798 | ||
|
|
ea4618a244 | ||
|
|
201a9d9356 | ||
|
|
40b0d57024 | ||
|
|
761f66fc5a | ||
|
|
2403d77166 | ||
|
|
b44f4d66f9 | ||
|
|
d178962c37 | ||
|
|
cf4d2b4ef5 | ||
|
|
3e4139ac23 | ||
|
|
9fb736f67a | ||
|
|
afc738141f | ||
|
|
efa195059e | ||
|
|
0f2b6bbe1a | ||
|
|
28b94a865f | ||
|
|
f45803fcfa | ||
|
|
053da1ec32 | ||
|
|
f0dcfc83c8 | ||
|
|
5eb3af54b3 | ||
|
|
3552bbc6cf | ||
|
|
028bd77c91 | ||
|
|
65a1aa6100 | ||
|
|
a09401c203 | ||
|
|
7c23773636 | ||
|
|
56ba8c0a07 | ||
|
|
5924bc0990 | ||
|
+27 |
10ffd9bacd | ||
|
|
20c45b5d88 | ||
|
|
3cab37ed8d | ||
|
|
98799b50f0 | ||
|
|
8071016848 | ||
|
|
aa5e2ac9a5 | ||
|
|
06857a4a69 | ||
|
|
b0d1720d92 | ||
|
|
e148ee7823 | ||
|
|
bb9a039931 | ||
|
|
053f93ea0a | ||
|
|
2a982c6b6d | ||
|
|
85490fef4d | ||
|
|
57afd7a2b1 | ||
|
|
0f9c3571fe | ||
|
|
1b3f676e57 | ||
|
|
3e17b1c5ef | ||
|
|
a466e71d4c | ||
|
|
5a7030d277 | ||
|
|
e72c25f02e | ||
|
|
06bc5facf3 | ||
|
|
9c8dc1b92c | ||
|
|
cfef92a7bc | ||
|
|
26149e2b04 | ||
|
|
3ca43ce3f3 | ||
|
|
7603ea6184 | ||
|
|
9c45da565e | ||
|
|
f84f1f5dda | ||
|
|
07f803e758 | ||
|
|
268ab882cd | ||
|
|
8052e6f6d4 | ||
|
|
99e9425257 | ||
|
|
471b2687c4 | ||
|
|
9f7152c4eb |
@@ -1,6 +1,7 @@
|
||||
# ********** INDEX **********
|
||||
#
|
||||
# - APP STORE
|
||||
# - BASECAMP
|
||||
# - DAILY.CO VIDEO
|
||||
# - GOOGLE CALENDAR/MEET/LOGIN
|
||||
# - HUBSPOT
|
||||
@@ -20,6 +21,14 @@
|
||||
|
||||
# - APP STORE **********************************************************************************************
|
||||
# ⚠️ ⚠️ ⚠️ THESE WILL BE MIGRATED TO THE DATABASE TO PREVENT AWS's 4KB ENV QUOTA ⚠️ ⚠️ ⚠️
|
||||
|
||||
# - BASECAMP
|
||||
# Used to enable Basecamp integration with Cal.com
|
||||
# @see https://github.com/calcom/cal.com#obtaining-basecamp-client-id-and-secret
|
||||
BASECAMP3_CLIENT_ID=
|
||||
BASECAMP3_CLIENT_SECRET=
|
||||
BASECAMP3_USER_AGENT=
|
||||
|
||||
# - DAILY.CO VIDEO
|
||||
# Enables Cal Video. to get your key
|
||||
# 1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
|
||||
|
||||
+12
-2
@@ -126,8 +126,7 @@ TWILIO_WHATSAPP_PHONE_NUMBER=
|
||||
NEXT_PUBLIC_SENDER_ID=
|
||||
TWILIO_VERIFY_SID=
|
||||
|
||||
# This is used so we can bypass emails in auth flows for E2E testing
|
||||
# Set it to "1" if you need to run E2E tests locally
|
||||
# Set it to "1" if you need to run E2E tests locally.
|
||||
NEXT_PUBLIC_IS_E2E=
|
||||
|
||||
# Used for internal billing system
|
||||
@@ -172,6 +171,12 @@ EMAIL_SERVER_PORT=1025
|
||||
## You will need to provision an App Password.
|
||||
## @see https://support.google.com/accounts/answer/185833
|
||||
# EMAIL_SERVER_PASSWORD='<gmail_app_password>'
|
||||
|
||||
# Used for E2E for email testing
|
||||
# Set it to "1" if you need to email checks in E2E tests locally
|
||||
# Make sure to run mailhog container manually or with `yarn dx`
|
||||
E2E_TEST_MAILHOG_ENABLED=
|
||||
|
||||
# **********************************************************************************************************
|
||||
|
||||
# Set the following value to true if you wish to enable Team Impersonation
|
||||
@@ -215,3 +220,8 @@ PROJECT_ID_VERCEL=
|
||||
TEAM_ID_VERCEL=
|
||||
# Get it from: https://vercel.com/account/tokens
|
||||
AUTH_BEARER_TOKEN_VERCEL=
|
||||
|
||||
# - APPLE CALENDAR
|
||||
# Used for E2E tests on Apple Calendar
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL=""
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD=""
|
||||
|
||||
@@ -5,16 +5,15 @@ on:
|
||||
types:
|
||||
- opened
|
||||
|
||||
|
||||
jobs:
|
||||
label_on_pr:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
permissions:
|
||||
contents: none
|
||||
issues: read
|
||||
pull-requests: write
|
||||
|
||||
|
||||
steps:
|
||||
- name: Apply labels from linked issue to PR
|
||||
uses: actions/github-script@v5
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# .github/workflows/chromatic.yml
|
||||
|
||||
# Workflow name
|
||||
name: 'Chromatic'
|
||||
name: "Chromatic"
|
||||
|
||||
# Event for the workflow
|
||||
on:
|
||||
|
||||
@@ -4,8 +4,8 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
|
||||
- cron: "0,15,30,45 * * * *"
|
||||
# Runs "At every 15th minute." (see https://crontab.guru)
|
||||
- cron: "*/15 * * * *"
|
||||
jobs:
|
||||
cron-bookingReminder:
|
||||
env:
|
||||
@@ -20,4 +20,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -5,7 +5,7 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “Every month at 1st (see https://crontab.guru)
|
||||
# Runs "At 00:00 on day-of-month 1." (see https://crontab.guru)
|
||||
- cron: "0 0 1 * *"
|
||||
jobs:
|
||||
cron-downgradeUsers:
|
||||
@@ -21,4 +21,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -4,8 +4,8 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
|
||||
- cron: "0,15,30,45 * * * *"
|
||||
# Runs "At every 15th minute." (see https://crontab.guru)
|
||||
- cron: "*/15 * * * *"
|
||||
jobs:
|
||||
cron-scheduleEmailReminders:
|
||||
env:
|
||||
@@ -20,4 +20,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -4,8 +4,8 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
|
||||
- cron: "0,15,30,45 * * * *"
|
||||
# Runs "At every 15th minute." (see https://crontab.guru)
|
||||
- cron: "*/15 * * * *"
|
||||
jobs:
|
||||
cron-scheduleSMSReminders:
|
||||
env:
|
||||
@@ -20,4 +20,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -4,8 +4,8 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
|
||||
- cron: "0,15,30,45 * * * *"
|
||||
# Runs "At every 15th minute." (see https://crontab.guru)
|
||||
- cron: "*/15 * * * *"
|
||||
jobs:
|
||||
cron-scheduleWhatsappReminders:
|
||||
env:
|
||||
@@ -20,4 +20,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs every day (see https://crontab.guru)
|
||||
# Runs "At 00:00." every day (see https://crontab.guru)
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
|
||||
@@ -5,7 +5,7 @@ on:
|
||||
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||
schedule:
|
||||
# Runs “Every month at 1st (see https://crontab.guru)
|
||||
# Runs "At 00:00 on day-of-month 1." (see https://crontab.guru)
|
||||
- cron: "0 0 1 * *"
|
||||
jobs:
|
||||
cron-syncAppMeta:
|
||||
@@ -21,4 +21,4 @@ jobs:
|
||||
-X POST \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||
--fail
|
||||
-sSf
|
||||
|
||||
@@ -41,6 +41,9 @@ jobs:
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
|
||||
@@ -38,6 +38,8 @@ jobs:
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
|
||||
@@ -41,6 +41,9 @@ jobs:
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
|
||||
@@ -40,11 +40,14 @@ jobs:
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
EMAIL_SERVER_HOST: ${{ secrets.CI_EMAIL_SERVER_HOST }}
|
||||
EMAIL_SERVER_PORT: ${{ secrets.CI_EMAIL_SERVER_PORT }}
|
||||
EMAIL_SERVER_USER: ${{ secrets.CI_EMAIL_SERVER_USER }}
|
||||
EMAIL_SERVER_PASSWORD: ${{ secrets.CI_EMAIL_SERVER_PASSWORD}}
|
||||
EMAIL_SERVER_PASSWORD: ${{ secrets.CI_EMAIL_SERVER_PASSWORD}}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
NEXTAUTH_URL: ${{ secrets.CI_NEXTAUTH_URL }}
|
||||
|
||||
@@ -7,6 +7,8 @@ env:
|
||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
|
||||
@@ -7,6 +7,8 @@ env:
|
||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||
|
||||
@@ -8,7 +8,7 @@ on: # yamllint disable-line rule:truthy
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
RELEASE_TAG:
|
||||
description: 'v{Major}.{Minor}.{Patch}'
|
||||
description: "v{Major}.{Minor}.{Patch}"
|
||||
|
||||
jobs:
|
||||
release:
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: "Determine tag"
|
||||
run: "echo \"RELEASE_TAG=${GITHUB_REF#refs/tags/}\" >> $GITHUB_ENV"
|
||||
run: 'echo "RELEASE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV'
|
||||
|
||||
- name: "Run remote release workflow"
|
||||
uses: "actions/github-script@v6"
|
||||
|
||||
@@ -29,11 +29,11 @@ jobs:
|
||||
header: pr-title-lint-error
|
||||
message: |
|
||||
Hey there and thank you for opening this pull request! 👋🏼
|
||||
|
||||
|
||||
We require pull request titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) and it looks like your proposed title needs to be adjusted.
|
||||
|
||||
Details:
|
||||
|
||||
|
||||
```
|
||||
${{ steps.lint_pr_title.outputs.error_message }}
|
||||
```
|
||||
@@ -41,7 +41,7 @@ jobs:
|
||||
# Delete a previous comment when the issue has been resolved
|
||||
- if: ${{ steps.lint_pr_title.outputs.error_message == null }}
|
||||
uses: marocchino/sticky-pull-request-comment@v2
|
||||
with:
|
||||
with:
|
||||
header: pr-title-lint-error
|
||||
message: |
|
||||
Thank you for following the naming conventions! 🙏
|
||||
Thank you for following the naming conventions! 🙏
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
name: Submodule Sync
|
||||
on:
|
||||
schedule:
|
||||
# Runs "At minute 15 past every 4th hour." (see https://crontab.guru)
|
||||
- cron: "15 */4 * * *"
|
||||
workflow_dispatch: ~
|
||||
jobs:
|
||||
|
||||
+1
-1
@@ -40,4 +40,4 @@ vscode:
|
||||
- bradlc.vscode-tailwindcss
|
||||
- ban.spellright
|
||||
- stripe.vscode-stripe
|
||||
- Prisma.prisma
|
||||
- Prisma.prisma
|
||||
|
||||
@@ -221,6 +221,7 @@ echo 'NEXT_PUBLIC_DEBUG=1' >> .env
|
||||
```
|
||||
|
||||
1. Run [mailhog](https://github.com/mailhog/MailHog) to view emails sent during development
|
||||
> **_NOTE:_** Required when `E2E_TEST_MAILHOG_ENABLED` is "1"
|
||||
|
||||
```sh
|
||||
docker pull mailhog/mailhog
|
||||
@@ -461,6 +462,18 @@ following
|
||||
4. Now paste the API key to your `.env` file into the `DAILY_API_KEY` field in your `.env` file.
|
||||
5. If you have the [Daily Scale Plan](https://daily.co/pricing) set the `DAILY_SCALE_PLAN` variable to `true` in order to use features like video recording.
|
||||
|
||||
### Obtaining Basecamp Client ID and Secret
|
||||
|
||||
1. Visit the [37 Signals Integrations Dashboard](launchpad.37signals.com/integrations) and sign in.
|
||||
2. Register a new application by clicking the Register one now link.
|
||||
3. Fill in your company details.
|
||||
4. Select Basecamp 4 as the product to integrate with.
|
||||
5. Set the Redirect URL for OAuth `<Cal.com URL>/api/integrations/basecamp3/callback` replacing Cal.com URL with the URI at which your application runs.
|
||||
6. Click on done and copy the Client ID and secret into the `BASECAMP3_CLIENT_ID` and `BASECAMP3_CLIENT_SECRET` fields.
|
||||
7. Set the `BASECAMP3_CLIENT_SECRET` env variable to `{your_domain} ({support_email})`.
|
||||
For example, `Cal.com (support@cal.com)`.
|
||||
|
||||
|
||||
### Obtaining HubSpot Client ID and Secret
|
||||
|
||||
1. Open [HubSpot Developer](https://developer.hubspot.com/) and sign into your account, or create a new one.
|
||||
|
||||
@@ -67,6 +67,7 @@ const schemaEventTypeCreateParams = z
|
||||
seatsPerTimeSlot: z.number().optional(),
|
||||
seatsShowAttendees: z.boolean().optional(),
|
||||
bookingFields: eventTypeBookingFields.optional(),
|
||||
scheduleId: z.number().optional(),
|
||||
})
|
||||
.strict();
|
||||
|
||||
@@ -85,6 +86,7 @@ const schemaEventTypeEditParams = z
|
||||
seatsPerTimeSlot: z.number().optional(),
|
||||
seatsShowAttendees: z.boolean().optional(),
|
||||
bookingFields: eventTypeBookingFields.optional(),
|
||||
scheduleId: z.number().optional(),
|
||||
})
|
||||
.strict();
|
||||
|
||||
@@ -98,6 +100,7 @@ export const schemaEventTypeReadPublic = EventType.pick({
|
||||
position: true,
|
||||
userId: true,
|
||||
teamId: true,
|
||||
scheduleId: true,
|
||||
eventName: true,
|
||||
timeZone: true,
|
||||
periodType: true,
|
||||
|
||||
@@ -29,7 +29,7 @@ enum locales {
|
||||
RO = "ro",
|
||||
NL = "nl",
|
||||
PT_BR = "pt-BR",
|
||||
ES_419 = "es-419",
|
||||
// ES_419 = "es-419", // Disabled until Crowdin reaches at least 80% completion
|
||||
KO = "ko",
|
||||
JA = "ja",
|
||||
PL = "pl",
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import type { NextApiRequest } from "next";
|
||||
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import { defaultResponder } from "@calcom/lib/server";
|
||||
|
||||
import { schemaEventTypeReadPublic } from "~/lib/validations/event-type";
|
||||
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
|
||||
import { checkPermissions as canAccessTeamEventOrThrow } from "~/pages/api/teams/[teamId]/_auth-middleware";
|
||||
|
||||
import getCalLink from "../_utils/getCalLink";
|
||||
|
||||
@@ -42,7 +44,8 @@ import getCalLink from "../_utils/getCalLink";
|
||||
export async function getHandler(req: NextApiRequest) {
|
||||
const { prisma, query } = req;
|
||||
const { id } = schemaQueryIdParseInt.parse(query);
|
||||
const event_type = await prisma.eventType.findUnique({
|
||||
|
||||
const eventType = await prisma.eventType.findUnique({
|
||||
where: { id },
|
||||
include: {
|
||||
customInputs: true,
|
||||
@@ -51,10 +54,43 @@ export async function getHandler(req: NextApiRequest) {
|
||||
owner: { select: { username: true, id: true } },
|
||||
},
|
||||
});
|
||||
await checkPermissions(req, eventType);
|
||||
|
||||
const link = event_type ? getCalLink(event_type) : null;
|
||||
const link = eventType ? getCalLink(eventType) : null;
|
||||
// user.defaultScheduleId doesn't work the same for team events.
|
||||
if (!eventType?.scheduleId && eventType?.userId && !eventType?.teamId) {
|
||||
const user = await prisma.user.findUniqueOrThrow({
|
||||
where: {
|
||||
id: eventType.userId,
|
||||
},
|
||||
select: {
|
||||
defaultScheduleId: true,
|
||||
},
|
||||
});
|
||||
eventType.scheduleId = user.defaultScheduleId;
|
||||
}
|
||||
|
||||
return { event_type: schemaEventTypeReadPublic.parse({ ...event_type, link }) };
|
||||
// TODO: eventType when not found should be a 404
|
||||
// but API consumers may depend on the {} behaviour.
|
||||
return { event_type: schemaEventTypeReadPublic.parse({ ...eventType, link }) };
|
||||
}
|
||||
|
||||
type BaseEventTypeCheckPermissions = {
|
||||
userId: number | null;
|
||||
teamId: number | null;
|
||||
};
|
||||
|
||||
async function checkPermissions<T extends BaseEventTypeCheckPermissions>(
|
||||
req: NextApiRequest,
|
||||
eventType: (T & Partial<Omit<T, keyof BaseEventTypeCheckPermissions>>) | null
|
||||
) {
|
||||
if (req.isAdmin) return true;
|
||||
if (eventType?.teamId) {
|
||||
req.query.teamId = String(eventType.teamId);
|
||||
await canAccessTeamEventOrThrow(req, "MEMBER");
|
||||
}
|
||||
if (eventType?.userId === req.userId) return true; // is owner.
|
||||
throw new HttpError({ statusCode: 403, message: "Forbidden" });
|
||||
}
|
||||
|
||||
export default defaultResponder(getHandler);
|
||||
|
||||
@@ -52,6 +52,9 @@ import checkTeamEventEditPermission from "../_utils/checkTeamEventEditPermission
|
||||
* slug:
|
||||
* type: string
|
||||
* description: Unique slug for the event type
|
||||
* scheduleId:
|
||||
* type: number
|
||||
* description: The ID of the schedule for this event type
|
||||
* hosts:
|
||||
* type: array
|
||||
* items:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import type { Prisma } from "@prisma/client";
|
||||
import type { NextApiRequest } from "next";
|
||||
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import { defaultResponder } from "@calcom/lib/server";
|
||||
import type { PrismaClient } from "@calcom/prisma/client";
|
||||
|
||||
import { schemaEventTypeReadPublic } from "~/lib/validations/event-type";
|
||||
import { schemaQuerySingleOrMultipleUserIds } from "~/lib/validations/shared/queryUserId";
|
||||
@@ -35,20 +35,12 @@ import getCalLink from "./_utils/getCalLink";
|
||||
* description: No event types were found
|
||||
*/
|
||||
async function getHandler(req: NextApiRequest) {
|
||||
const { userId, isAdmin, prisma } = req;
|
||||
|
||||
const args: Prisma.EventTypeFindManyArgs = {
|
||||
where: { userId },
|
||||
};
|
||||
/** Only admins can query other users */
|
||||
if (!isAdmin && req.query.userId) throw new HttpError({ statusCode: 401, message: "ADMIN required" });
|
||||
if (isAdmin && req.query.userId) {
|
||||
const query = schemaQuerySingleOrMultipleUserIds.parse(req.query);
|
||||
const userIds = Array.isArray(query.userId) ? query.userId : [query.userId || userId];
|
||||
args.where = { userId: { in: userIds } };
|
||||
}
|
||||
const { userId, prisma } = req;
|
||||
const userIds = req.query.userId ? extractUserIdsFromQuery(req) : [userId];
|
||||
const data = await prisma.eventType.findMany({
|
||||
...args,
|
||||
where: {
|
||||
userId: { in: userIds },
|
||||
},
|
||||
include: {
|
||||
customInputs: true,
|
||||
team: { select: { slug: true } },
|
||||
@@ -56,13 +48,74 @@ async function getHandler(req: NextApiRequest) {
|
||||
owner: { select: { username: true, id: true } },
|
||||
},
|
||||
});
|
||||
// this really should return [], but backwards compatibility..
|
||||
if (data.length === 0) new HttpError({ statusCode: 404, message: "No event types were found" });
|
||||
return {
|
||||
event_types: data.map((eventType) => {
|
||||
const link = getCalLink(eventType);
|
||||
return schemaEventTypeReadPublic.parse({ ...eventType, link });
|
||||
}),
|
||||
event_types: (await defaultScheduleId<(typeof data)[number]>({ eventTypes: data, prisma, userIds })).map(
|
||||
(eventType) => {
|
||||
const link = getCalLink(eventType);
|
||||
return schemaEventTypeReadPublic.parse({ ...eventType, link });
|
||||
}
|
||||
),
|
||||
};
|
||||
}
|
||||
// TODO: Extract & reuse.
|
||||
function extractUserIdsFromQuery({ isAdmin, query }: NextApiRequest) {
|
||||
/** Guard: Only admins can query other users */
|
||||
if (!isAdmin) {
|
||||
throw new HttpError({ statusCode: 401, message: "ADMIN required" });
|
||||
}
|
||||
const { userId: userIdOrUserIds } = schemaQuerySingleOrMultipleUserIds.parse(query);
|
||||
return Array.isArray(userIdOrUserIds) ? userIdOrUserIds : [userIdOrUserIds];
|
||||
}
|
||||
|
||||
type DefaultScheduleIdEventTypeBase = {
|
||||
scheduleId: number | null;
|
||||
userId: number | null;
|
||||
};
|
||||
// If an eventType is given w/o a scheduleId
|
||||
// Then we associate the default user schedule id to the eventType
|
||||
async function defaultScheduleId<T extends DefaultScheduleIdEventTypeBase>({
|
||||
prisma,
|
||||
eventTypes,
|
||||
userIds,
|
||||
}: {
|
||||
prisma: PrismaClient;
|
||||
eventTypes: (T & Partial<Omit<T, keyof DefaultScheduleIdEventTypeBase>>)[];
|
||||
userIds: number[];
|
||||
}) {
|
||||
// there is no event types without a scheduleId, skip the user query
|
||||
if (eventTypes.every((eventType) => eventType.scheduleId)) return eventTypes;
|
||||
|
||||
const users = await prisma.user.findMany({
|
||||
where: {
|
||||
id: {
|
||||
in: userIds,
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
defaultScheduleId: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!users.length) {
|
||||
return eventTypes;
|
||||
}
|
||||
|
||||
const defaultScheduleIds = users.reduce((result, user) => {
|
||||
result[user.id] = user.defaultScheduleId;
|
||||
return result;
|
||||
}, {} as { [x: number]: number | null });
|
||||
|
||||
return eventTypes.map((eventType) => {
|
||||
// realistically never happens, userId should't be null on personal event types.
|
||||
if (!eventType.userId) return eventType;
|
||||
return {
|
||||
...eventType,
|
||||
scheduleId: eventType.scheduleId || defaultScheduleIds[eventType.userId],
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export default defaultResponder(getHandler);
|
||||
|
||||
@@ -60,6 +60,9 @@ import ensureOnlyMembersAsHosts from "./_utils/ensureOnlyMembersAsHosts";
|
||||
* hidden:
|
||||
* type: boolean
|
||||
* description: If the event type should be hidden from your public booking page
|
||||
* scheduleId:
|
||||
* type: number
|
||||
* description: The ID of the schedule for this event type
|
||||
* position:
|
||||
* type: integer
|
||||
* description: The position of the event type on the public booking page
|
||||
@@ -178,6 +181,7 @@ import ensureOnlyMembersAsHosts from "./_utils/ensureOnlyMembersAsHosts";
|
||||
* position: 0
|
||||
* eventName: null
|
||||
* timeZone: null
|
||||
* scheduleId: 5
|
||||
* periodType: UNLIMITED
|
||||
* periodStartDate: 2023-02-15T08:46:16.000Z
|
||||
* periodEndDate: 2023-0-15T08:46:16.000Z
|
||||
|
||||
@@ -59,7 +59,7 @@ async function getHandler(req: NextApiRequest) {
|
||||
};
|
||||
|
||||
const data = await prisma.eventType.findMany(args);
|
||||
return { event_types: data.map((attendee) => schemaEventTypeReadPublic.parse(attendee)) };
|
||||
return { event_types: data.map((eventType) => schemaEventTypeReadPublic.parse(eventType)) };
|
||||
}
|
||||
|
||||
export default defaultResponder(getHandler);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Set the version of docker compose to use
|
||||
version: '3.9'
|
||||
version: "3.9"
|
||||
|
||||
# The containers that compose the project
|
||||
services:
|
||||
@@ -8,8 +8,8 @@ services:
|
||||
restart: always
|
||||
container_name: integration-tests-prisma
|
||||
ports:
|
||||
- '5433:5432'
|
||||
- "5433:5432"
|
||||
environment:
|
||||
POSTGRES_USER: prisma
|
||||
POSTGRES_PASSWORD: prisma
|
||||
POSTGRES_DB: tests
|
||||
POSTGRES_DB: tests
|
||||
|
||||
@@ -15,6 +15,7 @@ module.exports = {
|
||||
"storybook-addon-rtl-direction",
|
||||
"storybook-react-i18next",
|
||||
"storybook-addon-next",
|
||||
"storybook-addon-next-router",
|
||||
/*{
|
||||
name: "storybook-addon-next",
|
||||
options: {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<script>
|
||||
window.global = window;
|
||||
window.isEmbed = ()=> {
|
||||
return location.search.includes("embed=")
|
||||
}
|
||||
window.isEmbed = () => {
|
||||
return location.search.includes("embed=");
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@500&display=swap');
|
||||
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@500&display=swap");
|
||||
</style>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { addDecorator } from "@storybook/react";
|
||||
import { AppRouterContext } from "next/dist/shared/lib/app-router-context";
|
||||
import { I18nextProvider } from "react-i18next";
|
||||
|
||||
import "../styles/globals.css";
|
||||
@@ -13,6 +14,13 @@ export const parameters = {
|
||||
date: /Date$/,
|
||||
},
|
||||
},
|
||||
nextRouter: {
|
||||
pathname: "/",
|
||||
asPath: "/",
|
||||
query: {},
|
||||
push() {},
|
||||
Provider: AppRouterContext.Provider,
|
||||
},
|
||||
};
|
||||
|
||||
addDecorator((storyFn) => (
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
import { Meta } from '@storybook/addon-docs';
|
||||
import { Meta } from "@storybook/addon-docs";
|
||||
|
||||
<Meta title="Introduction" />
|
||||
|
||||
<div className="text-center flex flex-col items-center">
|
||||
<h1 style={{marginBottom: '24px', marginTop: '36px'}}>Welcome to Cal.com UI</h1>
|
||||
<p>This is the beginning of our storybook improvements to match Figma as close as possible. Like our Figma library, we will be adding more components as we go along.</p>
|
||||
<p>Our <a href="https://www.figma.com/file/9MOufQNLtdkpnDucmNX10R/%E2%9D%96-Cal-DS" target="_blank">Figma</a> library is avalible for anyone to view and use. If you have any questions or concerns, please reach out to the design team.</p>
|
||||
<div className="flex flex-col items-center text-center">
|
||||
<h1 style={{ marginBottom: "24px", marginTop: "36px" }}>Welcome to Cal.com UI</h1>
|
||||
<p>
|
||||
This is the beginning of our storybook improvements to match Figma as close as possible. Like our Figma
|
||||
library, we will be adding more components as we go along.
|
||||
</p>
|
||||
<p>
|
||||
Our{" "}
|
||||
<a href="https://www.figma.com/file/9MOufQNLtdkpnDucmNX10R/%E2%9D%96-Cal-DS" target="_blank">
|
||||
Figma
|
||||
</a>{" "}
|
||||
library is avalible for anyone to view and use. If you have any questions or concerns, please reach out to
|
||||
the design team.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<img src="/sb-cover.jpg" />
|
||||
<img src="/sb-cover.jpg" />
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
"next": "^13.4.6",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"storybook-addon-next-router": "^4.0.2",
|
||||
"storybook-addon-rtl-direction": "^0.0.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@import url("../../../packages/features/calendars/weeklyview/styles/styles.css");
|
||||
|
||||
.sbdocs {
|
||||
font-family: 'Inter var' !important;
|
||||
padding: 0!important;
|
||||
font-family: "Inter var" !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
#docs-root {
|
||||
@@ -21,8 +21,8 @@
|
||||
font-weight: 500;
|
||||
border: none;
|
||||
border-top: 2px solid rgba(0, 0, 0, 0.12);
|
||||
padding-top: 12px!important;
|
||||
padding-bottom: 12px!important;
|
||||
padding-top: 12px !important;
|
||||
padding-bottom: 12px !important;
|
||||
margin: 82px 0 0 0;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
}
|
||||
|
||||
/** Docs table **/
|
||||
.custom-args-wrapper{
|
||||
.custom-args-wrapper {
|
||||
max-height: 400px;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
@@ -45,7 +45,7 @@
|
||||
}
|
||||
|
||||
.docblock-argstable-body {
|
||||
box-shadow: none!important;
|
||||
box-shadow: none !important;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
.docblock-argstable-body div p,
|
||||
.docblock-argstable-body div span {
|
||||
color: #8F8F8F !important;
|
||||
color: #8f8f8f !important;
|
||||
}
|
||||
|
||||
/** Custom components **/
|
||||
@@ -83,8 +83,8 @@
|
||||
}
|
||||
|
||||
.story-title h1 span {
|
||||
color: #9CA3AF;
|
||||
font-family: 'Inter var';
|
||||
color: #9ca3af;
|
||||
font-family: "Inter var";
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
@@ -96,7 +96,7 @@
|
||||
}
|
||||
|
||||
.examples {
|
||||
background-color: #F9FAFB;
|
||||
background-color: #f9fafb;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -111,14 +111,14 @@
|
||||
}
|
||||
|
||||
.examples-title {
|
||||
color: #8F8F8F;
|
||||
color: #8f8f8f;
|
||||
font-size: 14px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.examples-item-title {
|
||||
font-size: 12px;
|
||||
color: #8F8F8F;
|
||||
color: #8f8f8f;
|
||||
margin-bottom: 12px;
|
||||
display: block;
|
||||
}
|
||||
@@ -130,7 +130,7 @@
|
||||
.examples-footnote p,
|
||||
.examples-footnote ul,
|
||||
.examples-footnote li {
|
||||
color: #8F8F8F;
|
||||
color: #8f8f8f;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@@ -139,11 +139,11 @@
|
||||
}
|
||||
|
||||
.examples-footnote li {
|
||||
margin: 0!important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.story-note {
|
||||
background-color: #F9FAFB;
|
||||
background-color: #f9fafb;
|
||||
font-size: 14px;
|
||||
padding: 20px;
|
||||
margin-bottom: 12px;
|
||||
@@ -161,12 +161,12 @@
|
||||
box-shadow: none !important;
|
||||
margin: 0 !important;
|
||||
border: none !important;
|
||||
border-radius: none!important;
|
||||
border-radius: none !important;
|
||||
}
|
||||
|
||||
.docs-story > div:first-child {
|
||||
padding: 0!important;
|
||||
margin: 0!important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.docs-story .innerZoomElementWrapper > div {
|
||||
@@ -174,7 +174,7 @@
|
||||
}
|
||||
|
||||
.sb-main-padded {
|
||||
padding: 0!important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1200px) {
|
||||
@@ -198,74 +198,72 @@
|
||||
:root {
|
||||
/* background */
|
||||
|
||||
--cal-bg-emphasis: #E5E7EB;
|
||||
--cal-bg-emphasis: #e5e7eb;
|
||||
--cal-bg: white;
|
||||
--cal-bg-subtle: #F3F4F6;
|
||||
--cal-bg-muted: #F9FAFB;
|
||||
--cal-bg-subtle: #f3f4f6;
|
||||
--cal-bg-muted: #f9fafb;
|
||||
--cal-bg-inverted: #111827;
|
||||
|
||||
/* background -> components*/
|
||||
--cal-bg-info: #DEE9FC;
|
||||
--cal-bg-success: #E2FBE8;
|
||||
--cal-bg-attention: #FCEED8;
|
||||
--cal-bg-error: #F9E3E2;
|
||||
--cal-bg-info: #dee9fc;
|
||||
--cal-bg-success: #e2fbe8;
|
||||
--cal-bg-attention: #fceed8;
|
||||
--cal-bg-error: #f9e3e2;
|
||||
--cal-bg-dark-error: #752522;
|
||||
|
||||
|
||||
/* Borders */
|
||||
--cal-border-emphasis:#9CA3AF;
|
||||
--cal-border: #D1D5DB;
|
||||
--cal-border-subtle:#E5E7EB;
|
||||
--cal-border-muted:#F3F4F6;
|
||||
--cal-border-emphasis: #9ca3af;
|
||||
--cal-border: #d1d5db;
|
||||
--cal-border-subtle: #e5e7eb;
|
||||
--cal-border-muted: #f3f4f6;
|
||||
--cal-border-error: #aa2e26;
|
||||
|
||||
/* Content/Text */
|
||||
--cal-text-emphasis: #111827;
|
||||
--cal-text:#374151;
|
||||
--cal-text-subtle:#6B7280;
|
||||
--cal-text-muted:#9CA3AF;
|
||||
--cal-text-inverted:white;
|
||||
--cal-text: #374151;
|
||||
--cal-text-subtle: #6b7280;
|
||||
--cal-text-muted: #9ca3af;
|
||||
--cal-text-inverted: white;
|
||||
|
||||
/* Content/Text -> components */
|
||||
--cal-text-info:#253985;
|
||||
--cal-text-success:#285231;
|
||||
--cal-text-attention:#73321B;
|
||||
--cal-text-error:#752522;
|
||||
--cal-text-info: #253985;
|
||||
--cal-text-success: #285231;
|
||||
--cal-text-attention: #73321b;
|
||||
--cal-text-error: #752522;
|
||||
|
||||
/* Brand shinanigans
|
||||
-> These will be computed for the users theme at runtime.
|
||||
*/
|
||||
--cal-brand:#111827;
|
||||
--cal-brand-emphasis:#101010;
|
||||
--cal-brand: #111827;
|
||||
--cal-brand-emphasis: #101010;
|
||||
--cal-brand-text: white;
|
||||
}
|
||||
.dark {
|
||||
/* background */
|
||||
|
||||
--cal-bg-emphasis: #2B2B2B;
|
||||
--cal-bg-emphasis: #2b2b2b;
|
||||
--cal-bg: #101010;
|
||||
--cal-bg-subtle: #2B2B2B;
|
||||
--cal-bg-muted: #1C1C1C;
|
||||
--cal-bg-inverted: #F3F4F6;
|
||||
--cal-bg-subtle: #2b2b2b;
|
||||
--cal-bg-muted: #1c1c1c;
|
||||
--cal-bg-inverted: #f3f4f6;
|
||||
|
||||
/* background -> components*/
|
||||
--cal-bg-info: #DEE9FC;
|
||||
--cal-bg-success: #E2FBE8;
|
||||
--cal-bg-attention: #FCEED8;
|
||||
--cal-bg-error: #F9E3E2;
|
||||
--cal-bg-info: #dee9fc;
|
||||
--cal-bg-success: #e2fbe8;
|
||||
--cal-bg-attention: #fceed8;
|
||||
--cal-bg-error: #f9e3e2;
|
||||
--cal-bg-dark-error: #752522;
|
||||
|
||||
|
||||
/* Borders */
|
||||
--cal-border-emphasis: #575757;
|
||||
--cal-border: #444444;
|
||||
--cal-border-subtle: #2B2B2B;
|
||||
--cal-border-muted: #1C1C1C;
|
||||
--cal-border-subtle: #2b2b2b;
|
||||
--cal-border-muted: #1c1c1c;
|
||||
--cal-border-error: #aa2e26;
|
||||
|
||||
/* Content/Text */
|
||||
--cal-text-emphasis: #F3F4F6;
|
||||
--cal-text: #D6D6D6;
|
||||
--cal-text-emphasis: #f3f4f6;
|
||||
--cal-text: #d6d6d6;
|
||||
--cal-text-subtle: #757575;
|
||||
--cal-text-muted: #575757;
|
||||
--cal-text-inverted: #101010;
|
||||
@@ -273,7 +271,7 @@
|
||||
/* Content/Text -> components */
|
||||
--cal-text-info: #253985;
|
||||
--cal-text-success: #285231;
|
||||
--cal-text-attention: #73321B;
|
||||
--cal-text-attention: #73321b;
|
||||
--cal-text-error: #752522;
|
||||
|
||||
/* Brand shenanigans
|
||||
|
||||
@@ -2,8 +2,8 @@ html,
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
||||
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans,
|
||||
Droid Sans, Helvetica Neue, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
@@ -21,7 +21,7 @@ a {
|
||||
}
|
||||
.swagger-ui .opblock .opblock-summary {
|
||||
display: grid;
|
||||
flex-direction: column;
|
||||
flex-direction: column;
|
||||
}
|
||||
.opblock-summary-path {
|
||||
flex-shrink: 0;
|
||||
@@ -43,22 +43,22 @@ a {
|
||||
font-size: 22px;
|
||||
}
|
||||
.swagger-ui .scheme-container {
|
||||
padding: 14px 0;
|
||||
padding: 14px 0;
|
||||
}
|
||||
.swagger-ui .info {
|
||||
margin: 10px 0;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.swagger-ui .auth-wrapper {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.swagger-ui .authorization__btn {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.swagger-ui .opblock {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
button.opblock-summary-control > svg {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.swagger-ui .filter .operation-filter-input {
|
||||
border: 2px solid #d8dde7;
|
||||
@@ -73,15 +73,16 @@ a {
|
||||
.swagger-ui .info .title small {
|
||||
top: 5px;
|
||||
}
|
||||
.swagger-ui a.nostyle, .swagger-ui a.nostyle:visited {
|
||||
.swagger-ui a.nostyle,
|
||||
.swagger-ui a.nostyle:visited {
|
||||
width: 100%;
|
||||
}
|
||||
div.request-snippets > div.curl-command > div:nth-child(1) {
|
||||
overscroll-behavior: contain;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
.swagger-ui .opblock-body pre.microlight {
|
||||
font-size: 9px;
|
||||
.swagger-ui .opblock-body pre.microlight {
|
||||
font-size: 9px;
|
||||
}
|
||||
.swagger-ui table tbody tr td {
|
||||
padding: 0px 0 0;
|
||||
@@ -91,7 +92,7 @@ a {
|
||||
font-size: 12px;
|
||||
}
|
||||
div.no-margin > div > div.responses-wrapper > div.responses-inner > div > div > table > tbody > tr {
|
||||
display: flex;
|
||||
display: flex;
|
||||
width: 100vw;
|
||||
flex-direction: column;
|
||||
font-size: 60%;
|
||||
@@ -99,4 +100,4 @@ a {
|
||||
div.no-margin > div > div.responses-wrapper > div.responses-inner > div > div > table > thead > tr {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,51 @@
|
||||
import { lookup } from "bcp-47-match";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useTranslation } from "next-i18next";
|
||||
import { useEffect } from "react";
|
||||
|
||||
import { CALCOM_VERSION } from "@calcom/lib/constants";
|
||||
import { trpc } from "@calcom/trpc/react";
|
||||
|
||||
export function useViewerI18n() {
|
||||
return trpc.viewer.public.i18n.useQuery(undefined, {
|
||||
staleTime: Infinity,
|
||||
/**
|
||||
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
|
||||
* We intend to not cache i18n query
|
||||
**/
|
||||
trpc: {
|
||||
context: { skipBatch: true },
|
||||
},
|
||||
});
|
||||
function useViewerI18n(locale: string) {
|
||||
return trpc.viewer.public.i18n.useQuery(
|
||||
{ locale, CalComVersion: CALCOM_VERSION },
|
||||
{
|
||||
/**
|
||||
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
|
||||
**/
|
||||
trpc: {
|
||||
context: { skipBatch: true },
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function useClientLocale(locales: string[]) {
|
||||
const session = useSession();
|
||||
// If the user is logged in, use their locale
|
||||
if (session.data?.user.locale) return session.data.user.locale;
|
||||
// If the user is not logged in, use the browser locale
|
||||
if (typeof window !== "undefined") {
|
||||
// This is the only way I found to ensure the prefetched locale is used on first render
|
||||
// FIXME: Find a better way to pick the best matching locale from the browser
|
||||
return lookup(locales, window.navigator.language) || window.navigator.language;
|
||||
}
|
||||
// If the browser is not available, use English
|
||||
return "en";
|
||||
}
|
||||
|
||||
export function useClientViewerI18n(locales: string[]) {
|
||||
const clientLocale = useClientLocale(locales);
|
||||
return useViewerI18n(clientLocale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Auto-switches locale client-side to the logged in user's preference
|
||||
*/
|
||||
const I18nLanguageHandler = () => {
|
||||
const I18nLanguageHandler = (props: { locales: string[] }) => {
|
||||
const { locales } = props;
|
||||
const { i18n } = useTranslation("common");
|
||||
const locale = useViewerI18n().data?.locale || i18n.language;
|
||||
const locale = useClientViewerI18n(locales).data?.locale || i18n.language;
|
||||
|
||||
useEffect(() => {
|
||||
// bail early when i18n = {}
|
||||
|
||||
@@ -6,7 +6,7 @@ import Script from "next/script";
|
||||
|
||||
import "@calcom/embed-core/src/embed-iframe";
|
||||
import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired";
|
||||
import { WEBAPP_URL, IS_CALCOM } from "@calcom/lib/constants";
|
||||
import { IS_CALCOM, WEBAPP_URL } from "@calcom/lib/constants";
|
||||
import { buildCanonical } from "@calcom/lib/next-seo.config";
|
||||
|
||||
import type { AppProps } from "@lib/app-providers";
|
||||
@@ -72,7 +72,7 @@ function PageWrapper(props: AppProps) {
|
||||
}
|
||||
{...seoConfig.defaultNextSeo}
|
||||
/>
|
||||
<I18nLanguageHandler />
|
||||
<I18nLanguageHandler locales={props.router.locales || []} />
|
||||
<Script
|
||||
nonce={nonce}
|
||||
id="page-status"
|
||||
|
||||
@@ -112,7 +112,7 @@ export const InstallAppButtonChild = ({
|
||||
);
|
||||
}}>
|
||||
<p>
|
||||
{team.name} {isInstalled && `(${t("installed")})`}
|
||||
{t(team.name)} {isInstalled && `(${t("installed")})`}
|
||||
</p>
|
||||
</DropdownItem>
|
||||
);
|
||||
|
||||
@@ -368,7 +368,7 @@ function BookingListItem(booking: BookingItemProps) {
|
||||
{t("error_collecting_card")}
|
||||
</Badge>
|
||||
) : booking.paid ? (
|
||||
<Badge className="ltr:mr-2 rtl:ml-2" variant="green">
|
||||
<Badge className="ltr:mr-2 rtl:ml-2" variant="green" data-testid="paid_badge">
|
||||
{booking.payment[0].paymentOption === "HOLD" ? t("card_held") : t("paid")}
|
||||
</Badge>
|
||||
) : null}
|
||||
|
||||
@@ -35,6 +35,7 @@ import {
|
||||
Tooltip,
|
||||
} from "@calcom/ui";
|
||||
import { Copy, Edit } from "@calcom/ui/components/icon";
|
||||
import { IS_VISUAL_REGRESSION_TESTING } from "@calcom/web/constants";
|
||||
|
||||
import RequiresConfirmationController from "./RequiresConfirmationController";
|
||||
|
||||
@@ -286,36 +287,38 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
|
||||
}}>
|
||||
{/* Textfield has some margin by default we remove that so we can keep consitant aligment */}
|
||||
<div className="lg:-ml-2">
|
||||
<TextField
|
||||
disabled
|
||||
name="hashedLink"
|
||||
label={t("private_link_label")}
|
||||
data-testid="generated-hash-url"
|
||||
labelSrOnly
|
||||
type="text"
|
||||
hint={t("private_link_hint")}
|
||||
defaultValue={placeholderHashedLink}
|
||||
addOnSuffix={
|
||||
<Tooltip content={eventType.hashedLink ? t("copy_to_clipboard") : t("enabled_after_update")}>
|
||||
<Button
|
||||
color="minimal"
|
||||
size="sm"
|
||||
type="button"
|
||||
className="hover:stroke-3 hover:text-emphasis min-w-fit !py-0 px-0 hover:bg-transparent"
|
||||
aria-label="copy link"
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(placeholderHashedLink);
|
||||
if (eventType.hashedLink) {
|
||||
showToast(t("private_link_copied"), "success");
|
||||
} else {
|
||||
showToast(t("enabled_after_update_description"), "warning");
|
||||
}
|
||||
}}>
|
||||
<Copy className="h-4 w-4" />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
}
|
||||
/>
|
||||
{!IS_VISUAL_REGRESSION_TESTING && (
|
||||
<TextField
|
||||
disabled
|
||||
name="hashedLink"
|
||||
label={t("private_link_label")}
|
||||
data-testid="generated-hash-url"
|
||||
labelSrOnly
|
||||
type="text"
|
||||
hint={t("private_link_hint")}
|
||||
defaultValue={placeholderHashedLink}
|
||||
addOnSuffix={
|
||||
<Tooltip content={eventType.hashedLink ? t("copy_to_clipboard") : t("enabled_after_update")}>
|
||||
<Button
|
||||
color="minimal"
|
||||
size="sm"
|
||||
type="button"
|
||||
className="hover:stroke-3 hover:text-emphasis min-w-fit !py-0 px-0 hover:bg-transparent"
|
||||
aria-label="copy link"
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(placeholderHashedLink);
|
||||
if (eventType.hashedLink) {
|
||||
showToast(t("private_link_copied"), "success");
|
||||
} else {
|
||||
showToast(t("enabled_after_update_description"), "warning");
|
||||
}
|
||||
}}>
|
||||
<Copy className="h-4 w-4" />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</SettingsToggle>
|
||||
<hr className="border-subtle" />
|
||||
@@ -338,6 +341,7 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
|
||||
toggleGuests(false);
|
||||
formMethods.setValue("requiresConfirmation", false);
|
||||
setRequiresConfirmation(false);
|
||||
formMethods.setValue("metadata.multipleDuration", undefined);
|
||||
formMethods.setValue("seatsPerTimeSlot", 2);
|
||||
} else {
|
||||
formMethods.setValue("seatsPerTimeSlot", null);
|
||||
|
||||
@@ -138,7 +138,7 @@ const EventTypeScheduleDetails = memo(
|
||||
<Globe className="h-3.5 w-3.5 ltr:mr-2 rtl:ml-2" />
|
||||
{schedule?.timeZone || <SkeletonText className="block h-5 w-32" />}
|
||||
</span>
|
||||
{!!schedule?.id && !schedule.isManaged && (
|
||||
{!!schedule?.id && !schedule.isManaged && !schedule.readOnly && (
|
||||
<Button
|
||||
href={`/availability/${schedule.id}`}
|
||||
disabled={isLoading}
|
||||
@@ -202,6 +202,15 @@ const EventTypeSchedule = ({ eventType }: { eventType: EventTypeSetup }) => {
|
||||
isManaged: false,
|
||||
});
|
||||
}
|
||||
// We push the selected schedule from the event type if it's not part of the list response. This happens if the user is an admin but not the schedule owner.
|
||||
else if (eventType.schedule && !schedules.find((schedule) => schedule.id === eventType.schedule)) {
|
||||
options.push({
|
||||
value: eventType.schedule,
|
||||
label: eventType.scheduleName ?? t("default_schedule_name"),
|
||||
isDefault: false,
|
||||
isManaged: false,
|
||||
});
|
||||
}
|
||||
|
||||
setOptions(options);
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import { z } from "zod";
|
||||
import type { EventLocationType } from "@calcom/app-store/locations";
|
||||
import { getEventLocationType, MeetLocationType, LocationType } from "@calcom/app-store/locations";
|
||||
import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager";
|
||||
import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider";
|
||||
import cx from "@calcom/lib/classNames";
|
||||
import { CAL_URL } from "@calcom/lib/constants";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
@@ -116,6 +117,8 @@ export const EventSetupTab = (
|
||||
const [editingLocationType, setEditingLocationType] = useState<string>("");
|
||||
const [selectedLocation, setSelectedLocation] = useState<LocationOption | undefined>(undefined);
|
||||
const [multipleDuration, setMultipleDuration] = useState(eventType.metadata?.multipleDuration);
|
||||
const orgBranding = useOrgBranding();
|
||||
const seatsEnabled = formMethods.watch("seatsPerTimeSlotEnabled");
|
||||
|
||||
const locationOptions = props.locationOptions.map((locationOption) => {
|
||||
const options = locationOption.options.filter((option) => {
|
||||
@@ -129,10 +132,12 @@ export const EventSetupTab = (
|
||||
};
|
||||
});
|
||||
|
||||
const multipleDurationOptions = [5, 10, 15, 20, 25, 30, 45, 50, 60, 75, 80, 90, 120, 180].map((mins) => ({
|
||||
value: mins,
|
||||
label: t("multiple_duration_mins", { count: mins }),
|
||||
}));
|
||||
const multipleDurationOptions = [5, 10, 15, 20, 25, 30, 45, 50, 60, 75, 80, 90, 120, 150, 180].map(
|
||||
(mins) => ({
|
||||
value: mins,
|
||||
label: t("multiple_duration_mins", { count: mins }),
|
||||
})
|
||||
);
|
||||
|
||||
const [selectedMultipleDuration, setSelectedMultipleDuration] = useState<
|
||||
MultiValue<{
|
||||
@@ -383,6 +388,9 @@ export const EventSetupTab = (
|
||||
|
||||
const lengthLockedProps = shouldLockDisableProps("length");
|
||||
const descriptionLockedProps = shouldLockDisableProps("description");
|
||||
const urlPrefix = orgBranding
|
||||
? orgBranding?.fullDomain.replace(/^(https?:|)\/\//, "")
|
||||
: `${CAL_URL?.replace(/^(https?:|)\/\//, "")}`;
|
||||
|
||||
return (
|
||||
<div>
|
||||
@@ -411,10 +419,10 @@ export const EventSetupTab = (
|
||||
defaultValue={eventType.slug}
|
||||
addOnLeading={
|
||||
<>
|
||||
{CAL_URL?.replace(/^(https?:|)\/\//, "")}/
|
||||
{urlPrefix}/
|
||||
{!isManagedEventType
|
||||
? team
|
||||
? "team/" + team.slug
|
||||
? (orgBranding ? "" : "team/") + team.slug
|
||||
: eventType.users[0].username
|
||||
: t("username_placeholder")}
|
||||
/
|
||||
@@ -501,6 +509,8 @@ export const EventSetupTab = (
|
||||
<SettingsToggle
|
||||
title={t("allow_booker_to_select_duration")}
|
||||
checked={multipleDuration !== undefined}
|
||||
disabled={seatsEnabled}
|
||||
tooltip={seatsEnabled ? t("seat_options_doesnt_multiple_durations") : undefined}
|
||||
onCheckedChange={() => {
|
||||
if (multipleDuration !== undefined) {
|
||||
setMultipleDuration(undefined);
|
||||
|
||||
@@ -20,10 +20,11 @@ const SetupAvailability = (props: ISetupAvailabilityProps) => {
|
||||
const { t } = useLocale();
|
||||
const { nextStep } = props;
|
||||
|
||||
const scheduleId = defaultScheduleId === null ? undefined : defaultScheduleId;
|
||||
const queryAvailability = trpc.viewer.availability.schedule.get.useQuery(
|
||||
{ scheduleId: defaultScheduleId! },
|
||||
{ scheduleId },
|
||||
{
|
||||
enabled: !!defaultScheduleId,
|
||||
enabled: !!scheduleId,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -12,9 +12,6 @@ const DisableUserImpersonation = ({ disableImpersonation }: { disableImpersonati
|
||||
showToast(t("your_user_profile_updated_successfully"), "success");
|
||||
await utils.viewer.me.invalidate();
|
||||
},
|
||||
async onSettled() {
|
||||
await utils.viewer.public.i18n.invalidate();
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { noop } from "lodash";
|
||||
import { useCallback, useState } from "react";
|
||||
import { Controller, FormProvider, useForm, useFormState } from "react-hook-form";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import classNames from "classnames";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { debounce, noop } from "lodash";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
||||
@@ -50,7 +51,7 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
|
||||
const pathname = usePathname();
|
||||
const router = useRouter();
|
||||
const { t } = useLocale();
|
||||
const { data: session, update } = useSession();
|
||||
const { update } = useSession();
|
||||
const {
|
||||
currentUsername,
|
||||
setCurrentUsername = noop,
|
||||
@@ -94,7 +95,6 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
|
||||
debouncedApiCall(inputUsernameValue);
|
||||
}, [debouncedApiCall, inputUsernameValue]);
|
||||
|
||||
const utils = trpc.useContext();
|
||||
const updateUsername = trpc.viewer.updateProfile.useMutation({
|
||||
onSuccess: async () => {
|
||||
onSuccessMutation && (await onSuccessMutation());
|
||||
@@ -104,9 +104,6 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
|
||||
onError: (error) => {
|
||||
onErrorMutation && onErrorMutation(error);
|
||||
},
|
||||
async onSettled() {
|
||||
await utils.viewer.public.i18n.invalidate();
|
||||
},
|
||||
});
|
||||
|
||||
// when current username isn't set - Go to stripe to check what username he wanted to buy and was it a premium and was it paid for
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import classNames from "classnames";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { debounce, noop } from "lodash";
|
||||
import { useSession } from "next-auth/react";
|
||||
import type { RefCallback } from "react";
|
||||
@@ -24,7 +25,7 @@ interface ICustomUsernameProps {
|
||||
|
||||
const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.ComponentProps<typeof TextField>>) => {
|
||||
const { t } = useLocale();
|
||||
const { data: session, update } = useSession();
|
||||
const { update } = useSession();
|
||||
|
||||
const {
|
||||
currentUsername,
|
||||
@@ -65,8 +66,6 @@ const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.Component
|
||||
}
|
||||
}, [inputUsernameValue, debouncedApiCall, currentUsername]);
|
||||
|
||||
const utils = trpc.useContext();
|
||||
|
||||
const updateUsernameMutation = trpc.viewer.updateProfile.useMutation({
|
||||
onSuccess: async () => {
|
||||
onSuccessMutation && (await onSuccessMutation());
|
||||
@@ -77,9 +76,6 @@ const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.Component
|
||||
onError: (error) => {
|
||||
onErrorMutation && onErrorMutation(error);
|
||||
},
|
||||
async onSettled() {
|
||||
await utils.viewer.public.i18n.invalidate();
|
||||
},
|
||||
});
|
||||
|
||||
const ActionButtons = () => {
|
||||
|
||||
@@ -1,35 +1,26 @@
|
||||
import dynamic from "next/dynamic";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
import { Controller, useForm } from "react-hook-form";
|
||||
|
||||
import { getOrgFullDomain } from "@calcom/features/ee/organizations/lib/orgDomains";
|
||||
import { IS_SELF_HOSTED } from "@calcom/lib/constants";
|
||||
import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider";
|
||||
import { CAL_URL, IS_SELF_HOSTED } from "@calcom/lib/constants";
|
||||
import type { TRPCClientErrorLike } from "@calcom/trpc/client";
|
||||
import type { RouterOutputs } from "@calcom/trpc/react";
|
||||
import { trpc } from "@calcom/trpc/react";
|
||||
import type { AppRouter } from "@calcom/trpc/server/routers/_app";
|
||||
|
||||
import useRouterQuery from "@lib/hooks/useRouterQuery";
|
||||
|
||||
import { PremiumTextfield } from "./PremiumTextfield";
|
||||
import { UsernameTextfield } from "./UsernameTextfield";
|
||||
|
||||
export const UsernameAvailability = IS_SELF_HOSTED ? UsernameTextfield : PremiumTextfield;
|
||||
|
||||
interface UsernameAvailabilityFieldProps {
|
||||
onSuccessMutation?: () => void;
|
||||
onErrorMutation?: (error: TRPCClientErrorLike<AppRouter>) => void;
|
||||
}
|
||||
|
||||
function useUserNamePrefix(organization: RouterOutputs["viewer"]["me"]["organization"]): string {
|
||||
return organization
|
||||
? organization.slug
|
||||
? getOrgFullDomain(organization.slug, { protocol: false })
|
||||
: organization.metadata && organization.metadata.requestedSlug
|
||||
? getOrgFullDomain(organization.metadata.requestedSlug, { protocol: false })
|
||||
: process.env.NEXT_PUBLIC_WEBSITE_URL.replace("https://", "").replace("http://", "")
|
||||
: process.env.NEXT_PUBLIC_WEBSITE_URL.replace("https://", "").replace("http://", "");
|
||||
}
|
||||
export const getUsernameAvailabilityComponent = (isPremium: boolean) => {
|
||||
if (isPremium)
|
||||
return dynamic(() => import("./PremiumTextfield").then((m) => m.PremiumTextfield), { ssr: false });
|
||||
return dynamic(() => import("./UsernameTextfield").then((m) => m.UsernameTextfield), { ssr: false });
|
||||
};
|
||||
|
||||
export const UsernameAvailabilityField = ({
|
||||
onSuccessMutation,
|
||||
@@ -49,7 +40,12 @@ export const UsernameAvailabilityField = ({
|
||||
},
|
||||
});
|
||||
|
||||
const usernamePrefix = useUserNamePrefix(user.organization);
|
||||
const UsernameAvailability = getUsernameAvailabilityComponent(!IS_SELF_HOSTED && !user.organization?.id);
|
||||
const orgBranding = useOrgBranding();
|
||||
|
||||
const usernamePrefix = orgBranding
|
||||
? orgBranding?.fullDomain.replace(/^(https?:|)\/\//, "")
|
||||
: `${CAL_URL?.replace(/^(https?:|)\/\//, "")}`;
|
||||
|
||||
return (
|
||||
<Controller
|
||||
@@ -65,7 +61,8 @@ export const UsernameAvailabilityField = ({
|
||||
setInputUsernameValue={onChange}
|
||||
onSuccessMutation={onSuccessMutation}
|
||||
onErrorMutation={onErrorMutation}
|
||||
addOnLeading={usernamePrefix}
|
||||
disabled={!!user.organization?.id}
|
||||
addOnLeading={`${usernamePrefix}/`}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export const IS_VISUAL_REGRESSION_TESTING = Boolean(globalThis.window?.Meticulous?.isRunningAsTest);
|
||||
@@ -1,7 +1,6 @@
|
||||
import { TooltipProvider } from "@radix-ui/react-tooltip";
|
||||
import type { Session } from "next-auth";
|
||||
import { SessionProvider } from "next-auth/react";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { SessionProvider, useSession } from "next-auth/react";
|
||||
import { EventCollectionProvider } from "next-collect/client";
|
||||
import type { SSRConfig } from "next-i18next";
|
||||
import { appWithTranslation } from "next-i18next";
|
||||
@@ -21,7 +20,7 @@ import { MetaProvider } from "@calcom/ui";
|
||||
import useIsBookingPage from "@lib/hooks/useIsBookingPage";
|
||||
import type { WithNonceProps } from "@lib/withNonce";
|
||||
|
||||
import { useViewerI18n } from "@components/I18nLanguageHandler";
|
||||
import { useClientViewerI18n } from "@components/I18nLanguageHandler";
|
||||
|
||||
const I18nextAdapter = appWithTranslation<
|
||||
NextJsAppProps<SSRConfig> & {
|
||||
@@ -69,11 +68,9 @@ type AppPropsWithoutNonce = Omit<AppPropsWithChildren, "pageProps"> & {
|
||||
const CustomI18nextProvider = (props: AppPropsWithoutNonce) => {
|
||||
/**
|
||||
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
|
||||
* We intend to not cache i18n query
|
||||
**/
|
||||
const { i18n, locale } = useViewerI18n().data ?? {
|
||||
locale: "en",
|
||||
};
|
||||
const clientViewerI18n = useClientViewerI18n(props.router.locales || []);
|
||||
const { i18n, locale } = clientViewerI18n.data || {};
|
||||
|
||||
const passedProps = {
|
||||
...props,
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
import parser from "accept-language-parser";
|
||||
import type { IncomingMessage } from "http";
|
||||
import type { GetServerSidePropsContext } from "next";
|
||||
|
||||
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
||||
import type { Maybe } from "@calcom/trpc/server";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
const { i18n } = require("@calcom/config/next-i18next.config");
|
||||
|
||||
export function getLocaleFromHeaders(req: IncomingMessage): string {
|
||||
let preferredLocale: string | null | undefined;
|
||||
if (req.headers["accept-language"]) {
|
||||
preferredLocale = parser.pick(i18n.locales, req.headers["accept-language"]) as Maybe<string>;
|
||||
}
|
||||
return preferredLocale ?? i18n.defaultLocale;
|
||||
}
|
||||
|
||||
export const getOrSetUserLocaleFromHeaders = async (
|
||||
req: GetServerSidePropsContext["req"],
|
||||
res: GetServerSidePropsContext["res"]
|
||||
): Promise<string> => {
|
||||
const { default: prisma } = await import("@calcom/prisma");
|
||||
|
||||
const session = await getServerSession({ req, res });
|
||||
const preferredLocale = getLocaleFromHeaders(req);
|
||||
|
||||
if (session?.user?.id) {
|
||||
const user = await prisma.user.findUnique({
|
||||
where: {
|
||||
id: session.user.id,
|
||||
},
|
||||
select: {
|
||||
locale: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (user?.locale) {
|
||||
return user.locale;
|
||||
}
|
||||
|
||||
await prisma.user.update({
|
||||
where: {
|
||||
id: session.user.id,
|
||||
},
|
||||
data: {
|
||||
locale: preferredLocale,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return preferredLocale;
|
||||
};
|
||||
@@ -3,6 +3,7 @@ const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||||
const os = require("os");
|
||||
const englishTranslation = require("./public/static/locales/en/common.json");
|
||||
const { withAxiom } = require("next-axiom");
|
||||
const { version } = require("./package.json");
|
||||
const { i18n } = require("./next-i18next.config");
|
||||
const {
|
||||
orgHostPath,
|
||||
@@ -14,6 +15,9 @@ const {
|
||||
if (!process.env.NEXTAUTH_SECRET) throw new Error("Please set NEXTAUTH_SECRET");
|
||||
if (!process.env.CALENDSO_ENCRYPTION_KEY) throw new Error("Please set CALENDSO_ENCRYPTION_KEY");
|
||||
|
||||
// To be able to use the version in the app without having to import package.json
|
||||
process.env.NEXT_PUBLIC_CALCOM_VERSION = version;
|
||||
|
||||
// So we can test deploy previews preview
|
||||
if (process.env.VERCEL_URL && !process.env.NEXT_PUBLIC_WEBAPP_URL) {
|
||||
process.env.NEXT_PUBLIC_WEBAPP_URL = "https://" + process.env.VERCEL_URL;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@calcom/web",
|
||||
"version": "3.1.9",
|
||||
"version": "3.2.3",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"analyze": "ANALYZE=true next build",
|
||||
@@ -68,6 +68,7 @@
|
||||
"@vercel/og": "^0.5.0",
|
||||
"accept-language-parser": "^1.5.0",
|
||||
"async": "^3.2.4",
|
||||
"bcp-47-match": "^2.0.3",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"classnames": "^2.3.1",
|
||||
"dotenv-cli": "^6.0.0",
|
||||
@@ -166,6 +167,7 @@
|
||||
"msw": "^0.42.3",
|
||||
"postcss": "^8.4.18",
|
||||
"tailwindcss": "^3.3.1",
|
||||
"tailwindcss-animate": "^1.0.6",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.9.4"
|
||||
},
|
||||
|
||||
@@ -36,6 +36,7 @@ import { ssrInit } from "@server/lib/ssr";
|
||||
|
||||
export function UserPage(props: InferGetServerSidePropsType<typeof getServerSideProps>) {
|
||||
const { users, profile, eventTypes, markdownStrippedBio, entity } = props;
|
||||
|
||||
const [user] = users; //To be used when we only have a single user, not dynamic group
|
||||
useTheme(profile.theme);
|
||||
const { t } = useLocale();
|
||||
@@ -82,6 +83,10 @@ export function UserPage(props: InferGetServerSidePropsType<typeof getServerSide
|
||||
profile: { name: `${profile.name}`, image: null },
|
||||
users: [{ username: `${user.username}`, name: `${user.name}` }],
|
||||
}}
|
||||
nextSeoProps={{
|
||||
noindex: !profile.allowSEOIndexing,
|
||||
nofollow: !profile.allowSEOIndexing,
|
||||
}}
|
||||
/>
|
||||
|
||||
<div className={classNames(shouldAlignCentrally ? "mx-auto" : "", isEmbed ? "max-w-3xl" : "")}>
|
||||
@@ -93,7 +98,7 @@ export function UserPage(props: InferGetServerSidePropsType<typeof getServerSide
|
||||
)}>
|
||||
<div className="mb-8 text-center">
|
||||
<Avatar imageSrc={profile.image} size="xl" alt={profile.name} />
|
||||
<h1 className="font-cal text-emphasis mb-1 text-3xl">
|
||||
<h1 className="font-cal text-emphasis mb-1 text-3xl" data-testid="name-title">
|
||||
{profile.name}
|
||||
{user.verified && (
|
||||
<Verified className=" mx-1 -mt-1 inline h-6 w-6 fill-blue-500 text-white dark:text-black" />
|
||||
@@ -214,6 +219,7 @@ export type UserPageProps = {
|
||||
theme: string | null;
|
||||
brandColor: string;
|
||||
darkBrandColor: string;
|
||||
allowSEOIndexing: boolean;
|
||||
};
|
||||
users: Pick<User, "away" | "name" | "username" | "bio" | "verified">[];
|
||||
themeBasis: string | null;
|
||||
@@ -276,6 +282,7 @@ export const getServerSideProps: GetServerSideProps<UserPageProps> = async (cont
|
||||
away: true,
|
||||
verified: true,
|
||||
allowDynamicBooking: true,
|
||||
allowSEOIndexing: true,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -315,6 +322,7 @@ export const getServerSideProps: GetServerSideProps<UserPageProps> = async (cont
|
||||
theme: user.theme,
|
||||
brandColor: user.brandColor,
|
||||
darkBrandColor: user.darkBrandColor,
|
||||
allowSEOIndexing: user.allowSEOIndexing ?? true,
|
||||
};
|
||||
|
||||
const eventTypesWithHidden = await getEventTypesWithHiddenFromDB(user.id);
|
||||
|
||||
@@ -30,6 +30,7 @@ export default function Type({
|
||||
booking,
|
||||
away,
|
||||
isBrandingHidden,
|
||||
isSEOIndexable,
|
||||
rescheduleUid,
|
||||
entity,
|
||||
duration,
|
||||
@@ -41,6 +42,7 @@ export default function Type({
|
||||
eventSlug={slug}
|
||||
rescheduleUid={rescheduleUid ?? undefined}
|
||||
hideBranding={isBrandingHidden}
|
||||
isSEOIndexable={isSEOIndexable ?? true}
|
||||
entity={entity}
|
||||
/>
|
||||
<Booker
|
||||
@@ -128,6 +130,7 @@ async function getDynamicGroupPageProps(context: GetServerSidePropsContext) {
|
||||
away: false,
|
||||
trpcState: ssr.dehydrate(),
|
||||
isBrandingHidden: false,
|
||||
isSEOIndexable: true,
|
||||
themeBasis: null,
|
||||
bookingUid: bookingUid ? `${bookingUid}` : null,
|
||||
rescheduleUid: rescheduleUid ? `${rescheduleUid}` : null,
|
||||
@@ -154,6 +157,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
|
||||
select: {
|
||||
away: true,
|
||||
hideBranding: true,
|
||||
allowSEOIndexing: true,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -199,6 +203,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
|
||||
entity: eventData.entity,
|
||||
trpcState: ssr.dehydrate(),
|
||||
isBrandingHidden: user?.hideBranding,
|
||||
isSEOIndexable: user?.allowSEOIndexing,
|
||||
themeBasis: username,
|
||||
bookingUid: bookingUid ? `${bookingUid}` : null,
|
||||
rescheduleUid: rescheduleUid ? `${rescheduleUid}` : null,
|
||||
|
||||
@@ -51,7 +51,7 @@ class MyDocument extends Document<Props> {
|
||||
<meta name="msapplication-TileColor" content="#ff0000" />
|
||||
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f9fafb" />
|
||||
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1C1C1C" />
|
||||
{(!IS_PRODUCTION || process.env.VERCEL_ENV === "preview") && (
|
||||
{!IS_PRODUCTION && process.env.VERCEL_ENV === "preview" && (
|
||||
// eslint-disable-next-line @next/next/no-sync-scripts
|
||||
<script
|
||||
data-project-id="KjpMrKTnXquJVKfeqmjdTffVPf1a6Unw2LZ58iE4"
|
||||
|
||||
@@ -8,7 +8,7 @@ import { sendEmailVerification } from "@calcom/features/auth/lib/verifyEmail";
|
||||
import { IS_CALCOM } from "@calcom/lib/constants";
|
||||
import slugify from "@calcom/lib/slugify";
|
||||
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
|
||||
import { validateUsernameInOrg } from "@calcom/lib/validateUsernameInOrg";
|
||||
import { validateUsernameInTeam, validateUsername } from "@calcom/lib/validateUsername";
|
||||
import prisma from "@calcom/prisma";
|
||||
import { IdentityProvider } from "@calcom/prisma/enums";
|
||||
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
|
||||
@@ -39,6 +39,19 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
const username = slugify(data.username);
|
||||
const userEmail = email.toLowerCase();
|
||||
|
||||
const validationResponse = (
|
||||
incomingEmail: string,
|
||||
validation: { isValid: boolean; email: string | undefined }
|
||||
) => {
|
||||
const { isValid, email } = validation;
|
||||
if (!isValid) {
|
||||
const message: string =
|
||||
email !== incomingEmail ? "Username already taken" : "Email address is already registered";
|
||||
|
||||
return res.status(409).json({ message });
|
||||
}
|
||||
};
|
||||
|
||||
if (!username) {
|
||||
res.status(422).json({ message: "Invalid username" });
|
||||
return;
|
||||
@@ -65,42 +78,12 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
return res.status(401).json({ message: "Token expired" });
|
||||
}
|
||||
if (foundToken?.teamId) {
|
||||
const isValidUsername = await validateUsernameInOrg(username, foundToken?.teamId);
|
||||
|
||||
if (!isValidUsername) {
|
||||
return res.status(409).json({ message: "Username already taken" });
|
||||
}
|
||||
const teamUserValidation = await validateUsernameInTeam(username, userEmail, foundToken?.teamId);
|
||||
return validationResponse(userEmail, teamUserValidation);
|
||||
}
|
||||
} else {
|
||||
// There is an existingUser if the username matches
|
||||
// OR if the email matches AND either the email is verified
|
||||
// or both username and password are set
|
||||
const existingUser = await prisma.user.findFirst({
|
||||
where: {
|
||||
OR: [
|
||||
{ username },
|
||||
{
|
||||
AND: [
|
||||
{ email: userEmail },
|
||||
{
|
||||
OR: [
|
||||
{ emailVerified: { not: null } },
|
||||
{
|
||||
AND: [{ password: { not: null } }, { username: { not: null } }],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
if (existingUser) {
|
||||
const message: string =
|
||||
existingUser.email !== userEmail ? "Username already taken" : "Email address is already registered";
|
||||
|
||||
return res.status(409).json({ message });
|
||||
}
|
||||
const userValidation = await validateUsername(username, userEmail);
|
||||
return validationResponse(userEmail, userValidation);
|
||||
}
|
||||
|
||||
const hashedPassword = await hashPassword(password);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { authenticator } from "otplib";
|
||||
|
||||
import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
|
||||
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
||||
import { verifyPassword } from "@calcom/features/auth/lib/verifyPassword";
|
||||
import { symmetricDecrypt } from "@calcom/lib/crypto";
|
||||
import { totpAuthenticatorCheck } from "@calcom/lib/totp";
|
||||
import prisma from "@calcom/prisma";
|
||||
import { IdentityProvider } from "@calcom/prisma/client";
|
||||
|
||||
@@ -69,7 +69,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
}
|
||||
|
||||
// If user has 2fa enabled, check if body.code is correct
|
||||
const isValidToken = authenticator.check(req.body.code, secret);
|
||||
const isValidToken = totpAuthenticatorCheck(req.body.code, secret);
|
||||
if (!isValidToken) {
|
||||
return res.status(400).json({ error: ErrorCode.IncorrectTwoFactorCode });
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
import { authenticator } from "otplib";
|
||||
|
||||
import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
|
||||
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
||||
import { symmetricDecrypt } from "@calcom/lib/crypto";
|
||||
import { totpAuthenticatorCheck } from "@calcom/lib/totp";
|
||||
import prisma from "@calcom/prisma";
|
||||
|
||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
@@ -48,7 +48,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
return res.status(500).json({ error: ErrorCode.InternalServerError });
|
||||
}
|
||||
|
||||
const isValidToken = authenticator.check(req.body.code, secret);
|
||||
const isValidToken = totpAuthenticatorCheck(req.body.code, secret);
|
||||
if (!isValidToken) {
|
||||
return res.status(400).json({ error: ErrorCode.IncorrectTwoFactorCode });
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
export { default, config } from "@calcom/features/ee/payments/api/paypal-webhook";
|
||||
@@ -0,0 +1,4 @@
|
||||
import appBasecamp3 from "@calcom/app-store/basecamp3/trpc-router";
|
||||
import { createNextApiHandler } from "@calcom/trpc/server/createNextApiHandler";
|
||||
|
||||
export default createNextApiHandler(appBasecamp3);
|
||||
@@ -40,9 +40,11 @@ export default function Apps({ apps }: InferGetStaticPropsType<typeof getStaticP
|
||||
}>
|
||||
<div className="mb-16">
|
||||
<div className="grid-col-1 grid grid-cols-1 gap-3 md:grid-cols-3">
|
||||
{apps.map((app) => {
|
||||
return <AppCard key={app.slug} app={app} />;
|
||||
})}
|
||||
{apps
|
||||
.sort((a, b) => (b.installCount || 0) - (a.installCount || 0))
|
||||
.map((app) => {
|
||||
return <AppCard key={app.slug} app={app} />;
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</Shell>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { debounce } from "lodash";
|
||||
import type { GetServerSidePropsContext } from "next";
|
||||
import { getCsrfToken } from "next-auth/react";
|
||||
|
||||
@@ -74,7 +74,7 @@ const DateOverride = ({ workingHours }: { workingHours: WorkingHours[] }) => {
|
||||
<DateOverrideInputDialog
|
||||
workingHours={workingHours}
|
||||
excludedDates={excludedDates}
|
||||
onChange={(ranges) => append({ ranges })}
|
||||
onChange={(ranges) => ranges.forEach((range) => append({ ranges: [range] }))}
|
||||
Trigger={
|
||||
<Button color="secondary" StartIcon={Plus} data-testid="add-override">
|
||||
{t("add_an_override")}
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import { useAutoAnimate } from "@formkit/auto-animate/react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useRouter, useSearchParams, usePathname } from "next/navigation";
|
||||
import { useCallback } from "react";
|
||||
|
||||
import { getLayout } from "@calcom/features/MainLayout";
|
||||
import { NewScheduleButton, ScheduleListItem } from "@calcom/features/schedules";
|
||||
import { ShellMain } from "@calcom/features/shell/Shell";
|
||||
import { AvailabilitySliderTable } from "@calcom/features/timezone-buddy/components/AvailabilitySliderTable";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { HttpError } from "@calcom/lib/http-error";
|
||||
import type { RouterOutputs } from "@calcom/trpc/react";
|
||||
import { trpc } from "@calcom/trpc/react";
|
||||
import { EmptyScreen, showToast } from "@calcom/ui";
|
||||
import { EmptyScreen, showToast, ToggleGroup } from "@calcom/ui";
|
||||
import { Clock } from "@calcom/ui/components/icon";
|
||||
|
||||
import { withQuery } from "@lib/QueryCell";
|
||||
@@ -129,14 +131,52 @@ const WithQuery = withQuery(trpc.viewer.availability.list as any);
|
||||
|
||||
export default function AvailabilityPage() {
|
||||
const { t } = useLocale();
|
||||
const searchParams = useSearchParams();
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
|
||||
// Get a new searchParams string by merging the current
|
||||
// searchParams with a provided key/value pair
|
||||
const createQueryString = useCallback(
|
||||
(name: string, value: string) => {
|
||||
const params = new URLSearchParams(searchParams ?? undefined);
|
||||
params.set(name, value);
|
||||
|
||||
return params.toString();
|
||||
},
|
||||
[searchParams]
|
||||
);
|
||||
return (
|
||||
<div>
|
||||
<ShellMain
|
||||
heading={t("availability")}
|
||||
hideHeadingOnMobile
|
||||
subtitle={t("configure_availability")}
|
||||
CTA={<NewScheduleButton />}>
|
||||
<WithQuery success={({ data }) => <AvailabilityList {...data} />} customLoader={<SkeletonLoader />} />
|
||||
CTA={
|
||||
<div className="flex gap-2">
|
||||
<ToggleGroup
|
||||
className="hidden md:block"
|
||||
defaultValue={searchParams?.get("type") ?? "mine"}
|
||||
onValueChange={(value) => {
|
||||
if (!value) return;
|
||||
router.push(`${pathname}?${createQueryString("type", value)}`);
|
||||
}}
|
||||
options={[
|
||||
{ value: "mine", label: t("my_availability") },
|
||||
{ value: "team", label: t("team_availability") },
|
||||
]}
|
||||
/>
|
||||
<NewScheduleButton />
|
||||
</div>
|
||||
}>
|
||||
{searchParams?.get("type") === "team" ? (
|
||||
<AvailabilitySliderTable />
|
||||
) : (
|
||||
<WithQuery
|
||||
success={({ data }) => <AvailabilityList {...data} />}
|
||||
customLoader={<SkeletonLoader />}
|
||||
/>
|
||||
)}
|
||||
</ShellMain>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -23,12 +23,9 @@ import {
|
||||
useIsEmbed,
|
||||
} from "@calcom/embed-core/embed-iframe";
|
||||
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
||||
import { SystemField } from "@calcom/features/bookings/lib/SystemField";
|
||||
import { SMS_REMINDER_NUMBER_FIELD, SystemField } from "@calcom/features/bookings/lib/SystemField";
|
||||
import { getBookingWithResponses } from "@calcom/features/bookings/lib/get-booking";
|
||||
import {
|
||||
getBookingFieldsWithSystemFields,
|
||||
SMS_REMINDER_NUMBER_FIELD,
|
||||
} from "@calcom/features/bookings/lib/getBookingFields";
|
||||
import { getBookingFieldsWithSystemFields } from "@calcom/features/bookings/lib/getBookingFields";
|
||||
import { parseRecurringEvent } from "@calcom/lib";
|
||||
import { APP_NAME } from "@calcom/lib/constants";
|
||||
import {
|
||||
@@ -96,7 +93,7 @@ const querySchema = z.object({
|
||||
});
|
||||
|
||||
export default function Success(props: SuccessProps) {
|
||||
const { t } = useLocale();
|
||||
const { t, i18n } = useLocale();
|
||||
const router = useRouter();
|
||||
const routerQuery = useRouterQuery();
|
||||
const pathname = usePathname();
|
||||
@@ -113,7 +110,8 @@ export default function Success(props: SuccessProps) {
|
||||
const attendeeTimeZone = props?.bookingInfo?.attendees.find(
|
||||
(attendee) => attendee.email === email
|
||||
)?.timeZone;
|
||||
const tz = isSuccessBookingPage && attendeeTimeZone ? attendeeTimeZone : props.tz ? props.tz : timeZone();
|
||||
|
||||
const tz = props.tz ? props.tz : isSuccessBookingPage && attendeeTimeZone ? attendeeTimeZone : timeZone();
|
||||
|
||||
const location = props.bookingInfo.location as ReturnType<typeof getEventLocationValue>;
|
||||
|
||||
@@ -314,7 +312,7 @@ export default function Success(props: SuccessProps) {
|
||||
<Link
|
||||
href={allRemainingBookings ? "/bookings/recurring" : "/bookings/upcoming"}
|
||||
className="hover:bg-subtle text-subtle hover:text-default mt-2 inline-flex px-1 py-2 text-sm dark:hover:bg-transparent">
|
||||
<ChevronLeft className="h-5 w-5" /> {t("back_to_bookings")}
|
||||
<ChevronLeft className="h-5 w-5 rtl:rotate-180" /> {t("back_to_bookings")}
|
||||
</Link>
|
||||
</div>
|
||||
)}
|
||||
@@ -394,7 +392,7 @@ export default function Success(props: SuccessProps) {
|
||||
</h4>
|
||||
)}
|
||||
|
||||
<div className="border-subtle text-default mt-8 grid grid-cols-3 border-t pt-8 text-left">
|
||||
<div className="border-subtle text-default mt-8 grid grid-cols-3 border-t pt-8 text-left rtl:text-right">
|
||||
{(isCancelled || reschedule) && cancellationReason && (
|
||||
<>
|
||||
<div className="font-medium">
|
||||
@@ -480,6 +478,21 @@ export default function Success(props: SuccessProps) {
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
{props.paymentStatus && (
|
||||
<>
|
||||
<div className="mt-3 font-medium">
|
||||
{props.paymentStatus.paymentOption === "HOLD"
|
||||
? t("complete_your_booking")
|
||||
: t("payment")}
|
||||
</div>
|
||||
<div className="col-span-2 mb-2 mt-3">
|
||||
{new Intl.NumberFormat(i18n.language, {
|
||||
style: "currency",
|
||||
currency: props.paymentStatus.currency,
|
||||
}).format(props.paymentStatus.amount / 100.0)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
{bookingInfo?.description && (
|
||||
<>
|
||||
<div className="mt-9 font-medium">{t("additional_notes")}</div>
|
||||
@@ -715,7 +728,7 @@ export default function Success(props: SuccessProps) {
|
||||
</div>
|
||||
{isGmail && (
|
||||
<Alert
|
||||
className="main -mb-20 mt-4 inline-block text-left sm:-mt-4 sm:mb-4 sm:w-full sm:max-w-xl sm:align-middle"
|
||||
className="main -mb-20 mt-4 inline-block ltr:text-left rtl:text-right sm:-mt-4 sm:mb-4 sm:w-full sm:max-w-xl sm:align-middle"
|
||||
severity="warning"
|
||||
message={
|
||||
<div>
|
||||
@@ -1117,6 +1130,9 @@ export async function getServerSideProps(context: GetServerSidePropsContext) {
|
||||
select: {
|
||||
success: true,
|
||||
refunded: true,
|
||||
currency: true,
|
||||
amount: true,
|
||||
paymentOption: true,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -132,6 +132,7 @@ export type FormValues = {
|
||||
bookingFields: z.infer<typeof eventTypeBookingFields>;
|
||||
availability?: AvailabilityOption;
|
||||
bookerLayouts: BookerLayoutSettings;
|
||||
multipleDurationEnabled: boolean;
|
||||
};
|
||||
|
||||
export type CustomInputParsed = typeof customInputSchema._output;
|
||||
@@ -278,6 +279,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
|
||||
.filter((slug) => slug !== eventType.slug) ?? [],
|
||||
},
|
||||
})),
|
||||
seatsPerTimeSlotEnabled: eventType.seatsPerTimeSlot,
|
||||
};
|
||||
}, [eventType, periodDates, metadata]);
|
||||
|
||||
@@ -375,7 +377,10 @@ const EventTypePage = (props: EventTypeSetupProps) => {
|
||||
seatsPerTimeSlotEnabled,
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
minimumBookingNoticeInDurationType,
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
bookerLayouts,
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
multipleDurationEnabled,
|
||||
...input
|
||||
} = values;
|
||||
|
||||
@@ -463,6 +468,8 @@ const EventTypePage = (props: EventTypeSetupProps) => {
|
||||
// We don't need to send send these values to the backend
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
seatsPerTimeSlotEnabled,
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
multipleDurationEnabled,
|
||||
...input
|
||||
} = values;
|
||||
|
||||
|
||||
@@ -737,7 +737,9 @@ const EventTypeListHeading = ({
|
||||
</span>
|
||||
)}
|
||||
{profile?.slug && (
|
||||
<Link href={`${CAL_URL}/${profile.slug}`} className="text-subtle block text-xs">
|
||||
<Link
|
||||
href={`${orgBranding ? orgBranding.fullDomain : CAL_URL}/${profile.slug}`}
|
||||
className="text-subtle block text-xs">
|
||||
{`${bookerUrl.replace("https://", "").replace("http://", "")}/${profile.slug}`}
|
||||
</Link>
|
||||
)}
|
||||
@@ -830,13 +832,13 @@ const SetupProfileBanner = ({ closeAction }: { closeAction: () => void }) => {
|
||||
|
||||
const Main = ({
|
||||
status,
|
||||
error,
|
||||
errorMessage,
|
||||
data,
|
||||
filters,
|
||||
}: {
|
||||
status: string;
|
||||
data: GetByViewerResponse;
|
||||
error: any;
|
||||
errorMessage?: string;
|
||||
filters: ReturnType<typeof getTeamsFiltersFromQuery>;
|
||||
}) => {
|
||||
const isMobile = useMediaQuery("(max-width: 768px)");
|
||||
@@ -848,7 +850,7 @@ const Main = ({
|
||||
}
|
||||
|
||||
if (status === "error") {
|
||||
return <Alert severity="error" title="Something went wrong" message={error.message} />;
|
||||
return <Alert severity="error" title="Something went wrong" message={errorMessage} />;
|
||||
}
|
||||
|
||||
const isFilteredByOnlyOneItem =
|
||||
@@ -945,7 +947,7 @@ const EventTypesPage = () => {
|
||||
title="Event Types"
|
||||
description="Create events to share for people to book on your calendar."
|
||||
/>
|
||||
<Main data={data} status={status} error={error} filters={filters} />
|
||||
<Main data={data} status={status} errorMessage={error?.message} filters={filters} />
|
||||
</ShellMain>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import UnverifiedOrgsPage from "@calcom/features/ee/organizations/pages/settings/admin/unverifiedOrgPage";
|
||||
import AdminOrgsPage from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgPage";
|
||||
|
||||
import type { CalPageWrapper } from "@components/PageWrapper";
|
||||
import PageWrapper from "@components/PageWrapper";
|
||||
|
||||
const Page = UnverifiedOrgsPage as CalPageWrapper;
|
||||
const Page = AdminOrgsPage as CalPageWrapper;
|
||||
Page.PageWrapper = PageWrapper;
|
||||
|
||||
export default Page;
|
||||
|
||||
@@ -57,7 +57,7 @@ const ApiKeysView = () => {
|
||||
<div>
|
||||
{isLoading ? null : data?.length ? (
|
||||
<>
|
||||
<div className="mb-8 mt-6 rounded-md border">
|
||||
<div className="border-subtle mb-8 mt-6 rounded-md border">
|
||||
{data.map((apiKey, index) => (
|
||||
<ApiKeyListItem
|
||||
key={apiKey.id}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useSession } from "next-auth/react";
|
||||
import { Controller, useForm } from "react-hook-form";
|
||||
|
||||
import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout";
|
||||
@@ -20,8 +21,6 @@ import {
|
||||
TimezoneSelect,
|
||||
} from "@calcom/ui";
|
||||
|
||||
import { withQuery } from "@lib/QueryCell";
|
||||
|
||||
import PageWrapper from "@components/PageWrapper";
|
||||
|
||||
const SkeletonLoader = ({ title, description }: { title: string; description: string }) => {
|
||||
@@ -45,11 +44,6 @@ interface GeneralViewProps {
|
||||
user: RouterOutputs["viewer"]["me"];
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const WithQuery = withQuery(trpc.viewer.public.i18n as any, undefined, {
|
||||
trpc: { context: { skipBatch: true } },
|
||||
});
|
||||
|
||||
const GeneralQueryView = () => {
|
||||
const { t } = useLocale();
|
||||
|
||||
@@ -58,30 +52,26 @@ const GeneralQueryView = () => {
|
||||
if (!user) {
|
||||
throw new Error(t("something_went_wrong"));
|
||||
}
|
||||
return (
|
||||
<WithQuery
|
||||
success={({ data }) => <GeneralView user={user} localeProp={data.locale} />}
|
||||
customLoader={<SkeletonLoader title={t("general")} description={t("general_description")} />}
|
||||
/>
|
||||
);
|
||||
return <GeneralView user={user} localeProp={user.locale} />;
|
||||
};
|
||||
|
||||
const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
|
||||
const utils = trpc.useContext();
|
||||
const { t } = useLocale();
|
||||
const { update } = useSession();
|
||||
|
||||
const mutation = trpc.viewer.updateProfile.useMutation({
|
||||
onSuccess: async () => {
|
||||
// Invalidate our previous i18n cache
|
||||
await utils.viewer.public.i18n.invalidate();
|
||||
onSuccess: async (res) => {
|
||||
await utils.viewer.me.invalidate();
|
||||
reset(getValues());
|
||||
showToast(t("settings_updated_successfully"), "success");
|
||||
update(res);
|
||||
},
|
||||
onError: () => {
|
||||
showToast(t("error_updating_settings"), "error");
|
||||
},
|
||||
onSettled: async () => {
|
||||
await utils.viewer.public.i18n.invalidate();
|
||||
await utils.viewer.me.invalidate();
|
||||
},
|
||||
});
|
||||
|
||||
@@ -116,6 +106,7 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
|
||||
label: nameOfDay(localeProp, user.weekStart === "Sunday" ? 0 : 1),
|
||||
},
|
||||
allowDynamicBooking: user.allowDynamicBooking ?? true,
|
||||
allowSEOIndexing: user.allowSEOIndexing ?? true,
|
||||
},
|
||||
});
|
||||
const {
|
||||
@@ -124,6 +115,7 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
|
||||
getValues,
|
||||
} = formMethods;
|
||||
const isDisabled = isSubmitting || !isDirty;
|
||||
|
||||
return (
|
||||
<Form
|
||||
form={formMethods}
|
||||
@@ -225,6 +217,24 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="mt-8">
|
||||
<Controller
|
||||
name="allowSEOIndexing"
|
||||
control={formMethods.control}
|
||||
render={() => (
|
||||
<SettingsToggle
|
||||
title={t("seo_indexing")}
|
||||
description={t("allow_seo_indexing")}
|
||||
checked={formMethods.getValues("allowSEOIndexing")}
|
||||
onCheckedChange={(checked) => {
|
||||
formMethods.setValue("allowSEOIndexing", checked, { shouldDirty: true });
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
loading={mutation.isLoading}
|
||||
disabled={isDisabled}
|
||||
|
||||
+31
-23
@@ -14,6 +14,7 @@ import { useFlagMap } from "@calcom/features/flags/context/provider";
|
||||
import { getFeatureFlagMap } from "@calcom/features/flags/server/utils";
|
||||
import { IS_SELF_HOSTED, WEBAPP_URL } from "@calcom/lib/constants";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import slugify from "@calcom/lib/slugify";
|
||||
import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
|
||||
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
|
||||
import type { inferSSRProps } from "@calcom/types/inferSSRProps";
|
||||
@@ -130,10 +131,11 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
|
||||
<TextField
|
||||
addOnLeading={
|
||||
orgSlug
|
||||
? getOrgFullDomain(orgSlug, { protocol: false })
|
||||
? getOrgFullDomain(orgSlug, { protocol: true })
|
||||
: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/`
|
||||
}
|
||||
{...register("username")}
|
||||
disabled={!!orgSlug}
|
||||
required
|
||||
/>
|
||||
<EmailField
|
||||
@@ -192,8 +194,6 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||
};
|
||||
|
||||
if (process.env.NEXT_PUBLIC_DISABLE_SIGNUP === "true" || flags["disable-signup"]) {
|
||||
console.log({ flag: flags["disable-signup"] });
|
||||
|
||||
return {
|
||||
notFound: true,
|
||||
};
|
||||
@@ -210,6 +210,20 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||
where: {
|
||||
token,
|
||||
},
|
||||
include: {
|
||||
team: {
|
||||
select: {
|
||||
metadata: true,
|
||||
parentId: true,
|
||||
parent: {
|
||||
select: {
|
||||
slug: true,
|
||||
},
|
||||
},
|
||||
slug: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!verificationToken || verificationToken.expires < new Date()) {
|
||||
@@ -249,41 +263,35 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
|
||||
|
||||
let username = guessUsernameFromEmail(verificationToken.identifier);
|
||||
|
||||
const orgInfo = await prisma.user.findFirst({
|
||||
where: {
|
||||
email: verificationToken?.identifier,
|
||||
},
|
||||
select: {
|
||||
organization: {
|
||||
select: {
|
||||
slug: true,
|
||||
metadata: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
const tokenTeam = {
|
||||
...verificationToken?.team,
|
||||
metadata: teamMetadataSchema.parse(verificationToken?.team?.metadata),
|
||||
};
|
||||
|
||||
const userOrgMetadata = teamMetadataSchema.parse(orgInfo?.organization?.metadata ?? {});
|
||||
// Detect if the team is an org by either the metadata flag or if it has a parent team
|
||||
const isOrganization = tokenTeam.metadata?.isOrganization || tokenTeam?.parentId !== null;
|
||||
// If we are dealing with an org, the slug may come from the team itself or its parent
|
||||
const orgSlug = isOrganization
|
||||
? tokenTeam.slug || tokenTeam.metadata?.requestedSlug || tokenTeam.parent?.slug
|
||||
: null;
|
||||
|
||||
if (!IS_SELF_HOSTED) {
|
||||
// Org context shouldn't check if a username is premium
|
||||
if (!IS_SELF_HOSTED && !isOrganization) {
|
||||
// Im not sure we actually hit this because of next redirects signup to website repo - but just in case this is pretty cool :)
|
||||
const { available, suggestion } = await checkPremiumUsername(username);
|
||||
|
||||
username = available ? username : suggestion || username;
|
||||
}
|
||||
|
||||
// Transform all + to - in username
|
||||
username = username.replace(/\+/g, "-");
|
||||
|
||||
return {
|
||||
props: {
|
||||
...props,
|
||||
token,
|
||||
prepopulateFormValues: {
|
||||
email: verificationToken.identifier,
|
||||
username,
|
||||
username: slugify(username),
|
||||
},
|
||||
orgSlug: (orgInfo?.organization?.slug || userOrgMetadata?.requestedSlug) ?? null,
|
||||
orgSlug,
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -182,7 +182,7 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio, isValidOrgDomain }
|
||||
size="lg"
|
||||
/>
|
||||
</div>
|
||||
<p className="font-cal text-emphasis mb-2 text-2xl tracking-wider">
|
||||
<p className="font-cal text-emphasis mb-2 text-2xl tracking-wider" data-testid="team-name">
|
||||
{team.parent && `${team.parent.name} `}
|
||||
{teamName}
|
||||
</p>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
import { installAppleCalendar } from "./lib/testUtils";
|
||||
|
||||
test.describe.configure({ mode: "parallel" });
|
||||
|
||||
@@ -10,10 +11,9 @@ test.describe("App Store - Authed", () => {
|
||||
test("Browse apple-calendar and try to install", async ({ page, users }) => {
|
||||
const pro = await users.create();
|
||||
await pro.apiLogin();
|
||||
await page.goto("/apps/categories/calendar");
|
||||
await page.click('[data-testid="app-store-app-card-apple-calendar"]');
|
||||
await page.waitForURL("/apps/apple-calendar");
|
||||
await page.click('[data-testid="install-app-button"]');
|
||||
|
||||
await installAppleCalendar(page);
|
||||
|
||||
await expect(page.locator(`text=Connect to Apple Server`)).toBeVisible();
|
||||
});
|
||||
|
||||
@@ -31,9 +31,8 @@ test.describe("App Store - Authed", () => {
|
||||
|
||||
test.describe("App Store - Unauthed", () => {
|
||||
test("Browse apple-calendar and try to install", async ({ page }) => {
|
||||
await page.goto("/apps/categories/calendar");
|
||||
await page.click('[data-testid="app-store-app-card-apple-calendar"]');
|
||||
await page.click('[data-testid="install-app-button"]');
|
||||
await installAppleCalendar(page);
|
||||
|
||||
await expect(page.locator(`[data-testid="login-form"]`)).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
import { installAppleCalendar } from "./lib/testUtils";
|
||||
|
||||
test.describe.configure({ mode: "parallel" });
|
||||
|
||||
test.afterEach(({ users }) => users.deleteAll());
|
||||
|
||||
const APPLE_CALENDAR_EMAIL = process.env.E2E_TEST_APPLE_CALENDAR_EMAIL!;
|
||||
const APPLE_CALENDAR_PASSWORD = process.env.E2E_TEST_APPLE_CALENDAR_PASSWORD!;
|
||||
|
||||
const SHOULD_SKIP_TESTS = !APPLE_CALENDAR_EMAIL || !APPLE_CALENDAR_PASSWORD;
|
||||
|
||||
test.describe("Apple Calendar", () => {
|
||||
// eslint-disable-next-line playwright/no-skipped-test
|
||||
test.skip(SHOULD_SKIP_TESTS, "Skipping due to missing the testing credentials");
|
||||
|
||||
test("Should be able to install and login on Apple Calendar", async ({ page, users }) => {
|
||||
const user = await users.create();
|
||||
await user.apiLogin();
|
||||
|
||||
await installAppleCalendar(page);
|
||||
|
||||
await expect(page.locator('[data-testid="apple-calendar-form"]')).toBeVisible();
|
||||
|
||||
await page.fill('[data-testid="apple-calendar-email"]', APPLE_CALENDAR_EMAIL);
|
||||
await page.fill('[data-testid="apple-calendar-password"]', APPLE_CALENDAR_PASSWORD);
|
||||
await page.click('[data-testid="apple-calendar-login-button"]');
|
||||
|
||||
await expect(page.getByText("Apple Calendar")).toBeVisible();
|
||||
await expect(page.getByText(APPLE_CALENDAR_EMAIL)).toBeVisible();
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,4 @@
|
||||
import { expect } from "@playwright/test";
|
||||
import type { Messages } from "mailhog";
|
||||
|
||||
import { randomString } from "@calcom/lib/random";
|
||||
|
||||
@@ -8,6 +7,7 @@ import {
|
||||
bookFirstEvent,
|
||||
bookOptinEvent,
|
||||
bookTimeSlot,
|
||||
expectEmailsToHaveSubject,
|
||||
selectFirstAvailableTimeSlotNextMonth,
|
||||
testEmail,
|
||||
testName,
|
||||
@@ -41,19 +41,13 @@ test.describe("free user", () => {
|
||||
// Make sure we're navigated to the success page
|
||||
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
|
||||
const { title: eventTitle } = await user.getFirstEventAsOwner();
|
||||
// TODO: follow DRY
|
||||
const emailsOrganiserReceived = await emails.search(user.email, "to");
|
||||
const emailsBookerReceived = await emails.search(bookerObj.email, "to");
|
||||
expect(emailsOrganiserReceived?.total).toBe(1);
|
||||
expect(emailsBookerReceived?.total).toBe(1);
|
||||
|
||||
const [organizerFirstEmail] = (emailsOrganiserReceived as Messages).items;
|
||||
const [bookerFirstEmail] = (emailsBookerReceived as Messages).items;
|
||||
const emailSubject = `${eventTitle} between ${user.name} and ${bookerObj.name}`;
|
||||
|
||||
expect(organizerFirstEmail.subject).toBe(emailSubject);
|
||||
expect(bookerFirstEmail.subject).toBe(emailSubject);
|
||||
|
||||
await expectEmailsToHaveSubject({
|
||||
emails,
|
||||
organizer: user,
|
||||
booker: bookerObj,
|
||||
eventTitle,
|
||||
});
|
||||
await page.goto(bookingUrl);
|
||||
|
||||
// book same time spot again
|
||||
|
||||
@@ -5,6 +5,7 @@ import { hashSync as hash } from "bcryptjs";
|
||||
import type { API } from "mailhog";
|
||||
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import stripe from "@calcom/features/ee/payments/server/stripe";
|
||||
import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability";
|
||||
import { prisma } from "@calcom/prisma";
|
||||
import { MembershipRole, SchedulingType } from "@calcom/prisma/enums";
|
||||
@@ -117,7 +118,7 @@ const createTeamAndAddUser = async (
|
||||
};
|
||||
|
||||
// creates a user fixture instance and stores the collection
|
||||
export const createUsersFixture = (page: Page, emails: API, workerInfo: WorkerInfo) => {
|
||||
export const createUsersFixture = (page: Page, emails: API | undefined, workerInfo: WorkerInfo) => {
|
||||
const store = { users: [], page } as { users: UserFixture[]; page: typeof page };
|
||||
return {
|
||||
create: async (
|
||||
@@ -331,19 +332,22 @@ export const createUsersFixture = (page: Page, emails: API, workerInfo: WorkerIn
|
||||
await page.goto("/auth/logout");
|
||||
},
|
||||
deleteAll: async () => {
|
||||
const emailMessageIds: string[] = [];
|
||||
const ids = store.users.map((u) => u.id);
|
||||
for (const user of store.users) {
|
||||
const emailMessages = await emails.search(user.email);
|
||||
if (emailMessages && emailMessages.count > 0) {
|
||||
emailMessages.items.forEach((item) => {
|
||||
emailMessageIds.push(item.ID);
|
||||
});
|
||||
if (emails) {
|
||||
const emailMessageIds: string[] = [];
|
||||
for (const user of store.users) {
|
||||
const emailMessages = await emails.search(user.email);
|
||||
if (emailMessages && emailMessages.count > 0) {
|
||||
emailMessages.items.forEach((item) => {
|
||||
emailMessageIds.push(item.ID);
|
||||
});
|
||||
}
|
||||
}
|
||||
for (const id of emailMessageIds) {
|
||||
await emails.deleteMessage(id);
|
||||
}
|
||||
}
|
||||
for (const id of emailMessageIds) {
|
||||
await emails.deleteMessage(id);
|
||||
}
|
||||
|
||||
await prisma.user.deleteMany({ where: { id: { in: ids } } });
|
||||
store.users = [];
|
||||
},
|
||||
@@ -416,8 +420,8 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
|
||||
getPaymentCredential: async () => getPaymentCredential(store.page),
|
||||
setupEventWithPrice: async (eventType: Pick<Prisma.EventType, "id">) =>
|
||||
setupEventWithPrice(eventType, store.page),
|
||||
bookAndPaidEvent: async (eventType: Pick<Prisma.EventType, "slug">) =>
|
||||
bookAndPaidEvent(user, eventType, store.page),
|
||||
bookAndPayEvent: async (eventType: Pick<Prisma.EventType, "slug">) =>
|
||||
bookAndPayEvent(user, eventType, store.page),
|
||||
makePaymentUsingStripe: async () => makePaymentUsingStripe(store.page),
|
||||
// ths is for developemnt only aimed to inject debugging messages in the metadata field of the user
|
||||
debug: async (message: string | Record<string, JSONValue>) => {
|
||||
@@ -427,6 +431,7 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
|
||||
});
|
||||
},
|
||||
delete: async () => await prisma.user.delete({ where: { id: store.user.id } }),
|
||||
confirmPendingPayment: async () => confirmPendingPayment(store.page),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -437,12 +442,18 @@ type CustomUserOptsKeys = "username" | "password" | "completedOnboarding" | "loc
|
||||
type CustomUserOpts = Partial<Pick<Prisma.User, CustomUserOptsKeys>> & {
|
||||
timeZone?: TimeZoneEnum;
|
||||
eventTypes?: SupportedTestEventTypes[];
|
||||
// ignores adding the worker-index after username
|
||||
useExactUsername?: boolean;
|
||||
};
|
||||
|
||||
// creates the actual user in the db.
|
||||
const createUser = (workerInfo: WorkerInfo, opts?: CustomUserOpts | null): PrismaType.UserCreateInput => {
|
||||
// build a unique name for our user
|
||||
const uname = `${opts?.username || "user"}-${workerInfo.workerIndex}-${Date.now()}`;
|
||||
const uname =
|
||||
opts?.useExactUsername && opts?.username
|
||||
? opts.username
|
||||
: `${opts?.username || "user"}-${workerInfo.workerIndex}-${Date.now()}`;
|
||||
|
||||
return {
|
||||
username: uname,
|
||||
name: opts?.name,
|
||||
@@ -468,6 +479,36 @@ const createUser = (workerInfo: WorkerInfo, opts?: CustomUserOpts | null): Prism
|
||||
};
|
||||
};
|
||||
|
||||
async function confirmPendingPayment(page: Page) {
|
||||
await page.waitForURL(new RegExp("/booking/*"));
|
||||
|
||||
const url = page.url();
|
||||
|
||||
const params = new URLSearchParams(url.split("?")[1]);
|
||||
|
||||
const id = params.get("payment_intent");
|
||||
|
||||
if (!id) throw new Error(`Payment intent not found in url ${url}`);
|
||||
|
||||
const payload = JSON.stringify(
|
||||
{ type: "payment_intent.succeeded", data: { object: { id } }, account: "e2e_test" },
|
||||
null,
|
||||
2
|
||||
);
|
||||
|
||||
const signature = stripe.webhooks.generateTestHeaderString({
|
||||
payload,
|
||||
secret: process.env.STRIPE_WEBHOOK_SECRET as string,
|
||||
});
|
||||
|
||||
const response = await page.request.post("/api/integrations/stripepayment/webhook", {
|
||||
data: payload,
|
||||
headers: { "stripe-signature": signature },
|
||||
});
|
||||
|
||||
if (response.status() !== 200) throw new Error(`Failed to confirm payment. Response: ${response.text()}`);
|
||||
}
|
||||
|
||||
// login using a replay of an E2E routine.
|
||||
export async function login(
|
||||
user: Pick<Prisma.User, "username"> & Partial<Pick<Prisma.User, "password" | "email">>,
|
||||
@@ -519,7 +560,7 @@ export async function setupEventWithPrice(eventType: Pick<Prisma.EventType, "id"
|
||||
await page.getByTestId("update-eventtype").click();
|
||||
}
|
||||
|
||||
export async function bookAndPaidEvent(
|
||||
export async function bookAndPayEvent(
|
||||
user: Pick<Prisma.User, "username">,
|
||||
eventType: Pick<Prisma.EventType, "slug">,
|
||||
page: Page
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { expect } from "@playwright/test";
|
||||
import type Prisma from "@prisma/client";
|
||||
|
||||
import type { Fixtures } from "./lib/fixtures";
|
||||
import { test } from "./lib/fixtures";
|
||||
import { todo, selectFirstAvailableTimeSlotNextMonth } from "./lib/testUtils";
|
||||
|
||||
@@ -41,7 +42,7 @@ test.describe("Stripe integration", () => {
|
||||
|
||||
await user.getPaymentCredential();
|
||||
await user.setupEventWithPrice(eventType);
|
||||
await user.bookAndPaidEvent(eventType);
|
||||
await user.bookAndPayEvent(eventType);
|
||||
// success
|
||||
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
|
||||
});
|
||||
@@ -78,7 +79,7 @@ test.describe("Stripe integration", () => {
|
||||
|
||||
await user.getPaymentCredential();
|
||||
await user.setupEventWithPrice(eventType);
|
||||
await user.bookAndPaidEvent(eventType);
|
||||
await user.bookAndPayEvent(eventType);
|
||||
|
||||
// Rescheduling the event
|
||||
await Promise.all([page.waitForURL("/booking/*"), page.click('[data-testid="reschedule-link"]')]);
|
||||
@@ -92,8 +93,57 @@ test.describe("Stripe integration", () => {
|
||||
|
||||
await user.makePaymentUsingStripe();
|
||||
});
|
||||
todo("Payment should confirm pending payment booking");
|
||||
todo("Payment should trigger a BOOKING_PAID webhook");
|
||||
todo("Paid booking should be able to be cancelled");
|
||||
todo("Cancelled paid booking should be refunded");
|
||||
|
||||
test("Paid booking should be able to be cancelled", async ({ page, users }) => {
|
||||
const user = await users.create();
|
||||
const eventType = user.eventTypes.find((e) => e.slug === "paid") as Prisma.EventType;
|
||||
await user.apiLogin();
|
||||
await page.goto("/apps/installed");
|
||||
|
||||
await user.getPaymentCredential();
|
||||
await user.setupEventWithPrice(eventType);
|
||||
await user.bookAndPayEvent(eventType);
|
||||
|
||||
await page.click('[data-testid="cancel"]');
|
||||
await page.click('[data-testid="confirm_cancel"]');
|
||||
|
||||
await expect(await page.locator('[data-testid="cancelled-headline"]').first()).toBeVisible();
|
||||
});
|
||||
|
||||
test.describe("When event is paid and confirmed", () => {
|
||||
let user: Awaited<ReturnType<Fixtures["users"]["create"]>>;
|
||||
let eventType: Prisma.EventType;
|
||||
|
||||
test.beforeEach(async ({ page, users }) => {
|
||||
user = await users.create();
|
||||
eventType = user.eventTypes.find((e) => e.slug === "paid") as Prisma.EventType;
|
||||
await user.apiLogin();
|
||||
await page.goto("/apps/installed");
|
||||
|
||||
await user.getPaymentCredential();
|
||||
await user.setupEventWithPrice(eventType);
|
||||
await user.bookAndPayEvent(eventType);
|
||||
await user.confirmPendingPayment();
|
||||
});
|
||||
|
||||
test("Cancelled paid booking should be refunded", async ({ page, users, request }) => {
|
||||
await page.click('[data-testid="cancel"]');
|
||||
await page.click('[data-testid="confirm_cancel"]');
|
||||
|
||||
await expect(await page.locator('[data-testid="cancelled-headline"]').first()).toBeVisible();
|
||||
await expect(page.getByText("This booking payment has been refunded")).toBeVisible();
|
||||
});
|
||||
|
||||
test("Payment should confirm pending payment booking", async ({ page, users }) => {
|
||||
await page.goto("/bookings/upcoming");
|
||||
|
||||
const paidBadge = page.locator('[data-testid="paid_badge"]').first();
|
||||
|
||||
await expect(paidBadge).toBeVisible();
|
||||
expect(await paidBadge.innerText()).toBe("Paid");
|
||||
});
|
||||
|
||||
todo("Payment should trigger a BOOKING_PAID webhook");
|
||||
todo("Paid and confirmed booking should be able to be rescheduled");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import { test as base } from "@playwright/test";
|
||||
import type { API } from "mailhog";
|
||||
import mailhog from "mailhog";
|
||||
|
||||
import { IS_MAILHOG_ENABLED } from "@calcom/lib/constants";
|
||||
import prisma from "@calcom/prisma";
|
||||
|
||||
import type { ExpectedUrlDetails } from "../../../../playwright.config";
|
||||
@@ -21,7 +22,7 @@ export interface Fixtures {
|
||||
getActionFiredDetails: ReturnType<typeof createGetActionFiredDetails>;
|
||||
servers: ReturnType<typeof createServersFixture>;
|
||||
prisma: typeof prisma;
|
||||
emails: API;
|
||||
emails?: API;
|
||||
}
|
||||
|
||||
declare global {
|
||||
@@ -71,7 +72,11 @@ export const test = base.extend<Fixtures>({
|
||||
await use(prisma);
|
||||
},
|
||||
emails: async ({}, use) => {
|
||||
const mailhogAPI = mailhog();
|
||||
await use(mailhogAPI);
|
||||
if (IS_MAILHOG_ENABLED) {
|
||||
const mailhogAPI = mailhog();
|
||||
await use(mailhogAPI);
|
||||
} else {
|
||||
await use(undefined);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -2,7 +2,9 @@ import type { Page } from "@playwright/test";
|
||||
import { expect } from "@playwright/test";
|
||||
import type { IncomingMessage, ServerResponse } from "http";
|
||||
import { createServer } from "http";
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { noop } from "lodash";
|
||||
import type { API, Messages } from "mailhog";
|
||||
|
||||
import { test } from "./fixtures";
|
||||
|
||||
@@ -183,3 +185,46 @@ export async function gotoRoutingLink({
|
||||
// HACK: There seems to be some issue with the inputs to the form getting reset if we don't wait.
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
}
|
||||
|
||||
export async function installAppleCalendar(page: Page) {
|
||||
await page.goto("/apps/categories/calendar");
|
||||
await page.click('[data-testid="app-store-app-card-apple-calendar"]');
|
||||
await page.waitForURL("/apps/apple-calendar");
|
||||
await page.click('[data-testid="install-app-button"]');
|
||||
}
|
||||
export async function getEmailsReceivedByUser({
|
||||
emails,
|
||||
userEmail,
|
||||
}: {
|
||||
emails?: API;
|
||||
userEmail: string;
|
||||
}): Promise<Messages | null> {
|
||||
if (!emails) return null;
|
||||
return emails.search(userEmail, "to");
|
||||
}
|
||||
|
||||
export async function expectEmailsToHaveSubject({
|
||||
emails,
|
||||
organizer,
|
||||
booker,
|
||||
eventTitle,
|
||||
}: {
|
||||
emails?: API;
|
||||
organizer: { name?: string | null; email: string };
|
||||
booker: { name: string; email: string };
|
||||
eventTitle: string;
|
||||
}) {
|
||||
if (!emails) return null;
|
||||
const emailsOrganizerReceived = await getEmailsReceivedByUser({ emails, userEmail: organizer.email });
|
||||
const emailsBookerReceived = await getEmailsReceivedByUser({ emails, userEmail: booker.email });
|
||||
|
||||
expect(emailsOrganizerReceived?.total).toBe(1);
|
||||
expect(emailsBookerReceived?.total).toBe(1);
|
||||
|
||||
const [organizerFirstEmail] = (emailsOrganizerReceived as Messages).items;
|
||||
const [bookerFirstEmail] = (emailsBookerReceived as Messages).items;
|
||||
const emailSubject = `${eventTitle} between ${organizer.name ?? "Nameless"} and ${booker.name}`;
|
||||
|
||||
expect(organizerFirstEmail.subject).toBe(emailSubject);
|
||||
expect(bookerFirstEmail.subject).toBe(emailSubject);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import { expect } from "@playwright/test";
|
||||
import { authenticator } from "otplib";
|
||||
|
||||
import { symmetricDecrypt } from "@calcom/lib/crypto";
|
||||
import { totpAuthenticatorCheck } from "@calcom/lib/totp";
|
||||
|
||||
import { test } from "./lib/fixtures";
|
||||
|
||||
@@ -141,7 +142,7 @@ test.describe("2FA Tests", async () => {
|
||||
|
||||
async function fillOtp({ page, secret, noRetry }: { page: Page; secret: string; noRetry?: boolean }) {
|
||||
let token = authenticator.generate(secret);
|
||||
if (!noRetry && !authenticator.check(token, secret)) {
|
||||
if (!noRetry && !totpAuthenticatorCheck(token, secret)) {
|
||||
console.log("Token expired, Renerating.");
|
||||
// Maybe token was just about to expire, try again just once more
|
||||
token = authenticator.generate(secret);
|
||||
|
||||
@@ -202,7 +202,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
await addQuestionAndSave({
|
||||
page,
|
||||
question: {
|
||||
name: "how_are_you",
|
||||
name: "how-are-you",
|
||||
type: "Address",
|
||||
label: "How are you?",
|
||||
placeholder: "I'm fine, thanks",
|
||||
@@ -214,7 +214,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
const allFieldsLocator = await expectSystemFieldsToBeThereOnBookingPage({ page });
|
||||
const userFieldLocator = allFieldsLocator.nth(5);
|
||||
|
||||
await expect(userFieldLocator.locator('[name="how_are_you"]')).toBeVisible();
|
||||
await expect(userFieldLocator.locator('[name="how-are-you"]')).toBeVisible();
|
||||
// There are 2 labels right now. Will be one in future. The second one is hidden
|
||||
expect(await getLabelText(userFieldLocator)).toBe("How are you?");
|
||||
await expect(userFieldLocator.locator("input")).toBeVisible();
|
||||
@@ -223,18 +223,18 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
|
||||
await test.step("Hide Question and see that it's not shown on Booking Page", async () => {
|
||||
await toggleQuestionAndSave({
|
||||
name: "how_are_you",
|
||||
name: "how-are-you",
|
||||
page,
|
||||
});
|
||||
await doOnFreshPreview(page, context, async (page) => {
|
||||
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how_are_you"]');
|
||||
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how-are-you"]');
|
||||
await expect(formBuilderFieldLocator).toBeHidden();
|
||||
});
|
||||
});
|
||||
|
||||
await test.step("Show Question Again", async () => {
|
||||
await toggleQuestionAndSave({
|
||||
name: "how_are_you",
|
||||
name: "how-are-you",
|
||||
page,
|
||||
});
|
||||
});
|
||||
@@ -242,7 +242,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
await test.step('Try to book without providing "How are you?" response', async () => {
|
||||
await doOnFreshPreview(page, context, async (page) => {
|
||||
await bookTimeSlot({ page, name: "Booker", email: "booker@example.com" });
|
||||
await expectErrorToBeThereFor({ page, name: "how_are_you" });
|
||||
await expectErrorToBeThereFor({ page, name: "how-are-you" });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -260,18 +260,18 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
page,
|
||||
context,
|
||||
async (page) => {
|
||||
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how_are_you"]');
|
||||
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how-are-you"]');
|
||||
await expect(formBuilderFieldLocator).toBeVisible();
|
||||
expect(
|
||||
await formBuilderFieldLocator.locator('[name="how_are_you"]').getAttribute("placeholder")
|
||||
await formBuilderFieldLocator.locator('[name="how-are-you"]').getAttribute("placeholder")
|
||||
).toBe("I'm fine, thanks");
|
||||
expect(await getLabelText(formBuilderFieldLocator)).toBe("How are you?");
|
||||
await formBuilderFieldLocator.locator('[name="how_are_you"]').fill("I am great!");
|
||||
await formBuilderFieldLocator.locator('[name="how-are-you"]').fill("I am great!");
|
||||
await bookTimeSlot({ page, name: "Booker", email: "booker@example.com" });
|
||||
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
|
||||
|
||||
expect(
|
||||
await page.locator('[data-testid="field-response"][data-fob-field="how_are_you"]').innerText()
|
||||
await page.locator('[data-testid="field-response"][data-fob-field="how-are-you"]').innerText()
|
||||
).toBe("I am great!");
|
||||
|
||||
await waitFor(() => {
|
||||
@@ -287,7 +287,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
label: "email_address",
|
||||
value: "booker@example.com",
|
||||
},
|
||||
how_are_you: {
|
||||
"how-are-you": {
|
||||
label: "How are you?",
|
||||
value: "I am great!",
|
||||
},
|
||||
@@ -303,7 +303,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
|
||||
});
|
||||
|
||||
expect(payload.userFieldsResponses).toMatchObject({
|
||||
how_are_you: {
|
||||
"how-are-you": {
|
||||
label: "How are you?",
|
||||
value: "I am great!",
|
||||
},
|
||||
|
||||
@@ -135,6 +135,48 @@ test.describe("Teams", () => {
|
||||
expect(teamMatesObj.some(({ name }) => name === chosenUser)).toBe(true);
|
||||
// TODO: Assert whether the user received an email
|
||||
});
|
||||
test("Can create team with same name as user", async ({ page, users }) => {
|
||||
// Name to be used for both user and team
|
||||
const uniqueName = "test-unique-name";
|
||||
const ownerObj = { username: uniqueName, name: uniqueName, useExactUsername: true };
|
||||
|
||||
const user = await users.create(ownerObj);
|
||||
await user.apiLogin();
|
||||
await page.goto("/teams");
|
||||
|
||||
await test.step("Can create team with same name", async () => {
|
||||
// Click text=Create Team
|
||||
await page.locator("text=Create Team").click();
|
||||
await page.waitForURL("/settings/teams/new");
|
||||
// Fill input[name="name"]
|
||||
await page.locator('input[name="name"]').fill(uniqueName);
|
||||
// Click text=Continue
|
||||
await page.locator("text=Continue").click();
|
||||
await page.waitForURL(/\/settings\/teams\/(\d+)\/onboard-members$/i);
|
||||
// Click text=Continue
|
||||
await page.locator("text=Publish team").click();
|
||||
await page.waitForURL(/\/settings\/teams\/(\d+)\/profile$/i);
|
||||
});
|
||||
|
||||
await test.step("Can access user and team with same slug", async () => {
|
||||
// Go to team page and confirm name
|
||||
const teamUrl = `/team/${uniqueName}`;
|
||||
await page.goto(teamUrl);
|
||||
await page.waitForURL(teamUrl);
|
||||
await expect(page.locator("[data-testid=team-name]")).toHaveText(uniqueName);
|
||||
|
||||
// Go to user page and confirm name
|
||||
const userUrl = `/${uniqueName}`;
|
||||
await page.goto(userUrl);
|
||||
await page.waitForURL(userUrl);
|
||||
await expect(page.locator("[data-testid=name-title]")).toHaveText(uniqueName);
|
||||
|
||||
// cleanup team
|
||||
const team = await prisma.team.findFirst({ where: { slug: uniqueName } });
|
||||
await prisma.team.delete({ where: { id: team?.id } });
|
||||
});
|
||||
});
|
||||
|
||||
todo("Create a Round Robin with different leastRecentlyBooked hosts");
|
||||
todo("Reschedule a Collective EventType booking");
|
||||
todo("Reschedule a Round Robin EventType booking");
|
||||
|
||||
@@ -184,6 +184,7 @@ test.describe("BOOKING_REJECTED", async () => {
|
||||
expect(webhookReceiver.requestList.length).toBe(1);
|
||||
});
|
||||
const [request] = webhookReceiver.requestList;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const body = request.body as any;
|
||||
|
||||
// remove dynamic properties that differs depending on where you run the tests
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
"reset_password_subject": "{{appName}}: إرشادات إعادة تعيين كلمة المرور",
|
||||
"verify_email_subject": "{{appName}}: تأكيد حسابك",
|
||||
"check_your_email": "تحقق من بريدك الإلكتروني",
|
||||
"verify_email_page_body": "أرسلنا رسالة إلكترونية إلى {{email}}. من المهم تأكيد عنوان بريدك الإلكتروني لضمان أفضل قابلية تسليم للبريد الإلكتروني والرزنامة من {{appName}}.",
|
||||
"verify_email_banner_body": "قم بتأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والرزنامة",
|
||||
"verify_email_page_body": "أرسلنا رسالة إلكترونية إلى {{email}}. من المهم تأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والتقويم من {{appName}}.",
|
||||
"verify_email_banner_body": "قم بتأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والتقويم",
|
||||
"verify_email_email_header": "تأكيد عنوان بريدك الإلكتروني",
|
||||
"verify_email_email_button": "تأكيد البريد الإلكتروني",
|
||||
"verify_email_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني بالنقر على الزر أدناه.",
|
||||
"verify_email_email_link_text": "إليك الرابط في حال لم تكن ترغب بالنقر على أي أزرار:",
|
||||
"verify_email_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني بالنقر فوق الزر أدناه.",
|
||||
"verify_email_email_link_text": "إليك الرابط في حال لم تكن ترغب بالنقر فوق أي أزرار:",
|
||||
"email_sent": "تم إرسال الرسالة الإلكترونية بنجاح",
|
||||
"event_declined_subject": "تم الرفض: {{title}} في {{date}}",
|
||||
"event_cancelled_subject": "تم إلغاء: {{title}} في {{date}}",
|
||||
"event_cancelled_subject": "تم الإلغاء: {{title}} في {{date}}",
|
||||
"event_request_declined": "تم رفض طلب الحدث الخاص بك",
|
||||
"event_request_declined_recurring": "تم رفض طلب الحدث المتكرر الخاص بك",
|
||||
"event_request_cancelled": "تم إلغاء حدثك المُجَدْوَل",
|
||||
@@ -89,7 +89,7 @@
|
||||
"event_has_been_rescheduled": "تم التحديث - تم إعادة جدولة الحدث الخاص بك",
|
||||
"request_reschedule_subtitle": "ألغى {{organizer}} الحجز وطلب منك اختيار حجز في وقت آخر.",
|
||||
"request_reschedule_title_organizer": "لقد طلبت من {{attendee}} إعادة جدولة موعد",
|
||||
"request_reschedule_subtitle_organizer": "لقد ألغيت الحجز، ويجب أن يختار {{attendee}} وقتًا جديداً للحجز معك.",
|
||||
"request_reschedule_subtitle_organizer": "لقد ألغيت الحجز، ويجب أن يختار {{attendee}} وقتًا جديدًا للحجز معك.",
|
||||
"rescheduled_event_type_subject": "تم إرسال طلب لإعادة الجدولة: {{eventType}} مع {{name}} في {{date}}",
|
||||
"requested_to_reschedule_subject_attendee": "الإجراء المطلوب إعادة الجدولة: يُرجى حجز وقت جديد لمدة {{eventType}} مع {{name}}",
|
||||
"hi_user_name": "مرحبا {{name}}",
|
||||
@@ -129,8 +129,8 @@
|
||||
"team_upgrade_banner_description": "شكراً لك على تجربة خطة الفريق الجديدة التي نقدمها. لقد لاحظنا أن فريقك \"{{teamName}}\" بحاجة إلى الترقية.",
|
||||
"upgrade_banner_action": "قم بالترقية هنا",
|
||||
"team_upgraded_successfully": "تمت ترقية فريقك بنجاح!",
|
||||
"org_upgrade_banner_description": "شكراً لك على تجربة الخطة الجديدة لمؤسستنا التي نقدمها. لقد لاحظنا أن مؤسستك \"{{teamName}}\" بحاجة إلى الترقية.",
|
||||
"org_upgraded_successfully": "تمت ترقية مؤسستك بنجاح!",
|
||||
"org_upgrade_banner_description": "شكرًا لك على تجربة خطة Organization الجديدة التي نقدمها. لقد لاحظنا أن منظمتك \"{{teamName}}\" بحاجة إلى الترقية.",
|
||||
"org_upgraded_successfully": "تمت ترقية منظمتك بنجاح!",
|
||||
"use_link_to_reset_password": "استخدم الرابط أدناه لإعادة تعيين كلمة المرور",
|
||||
"hey_there": "مرحبًا،",
|
||||
"forgot_your_password_calcom": "نسيت كلمة المرور الخاصة بك؟ - {{appName}}",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "إدارة الإعدادات للغة فريقك ومنطقته الزمنية",
|
||||
"few_sentences_about_yourself": "اكتب بضع جمل عن نفسك. سيظهر هذا على صفحة عنوان URL الشخصية لديك.",
|
||||
"nearly_there": "أوشكت على الانتهاء!",
|
||||
"nearly_there_instructions": "وفي نهاية المطاف: يساعدك كتابة وصف موجز عنك ووضع صورة في الحصول على عمليات حجز وأن يعرف الأشخاص مع من سيحجزون حقًا.",
|
||||
"nearly_there_instructions": "وأخيرًا، يساعدك الوصف الموجز عنك والصورة في الحصول على الحجوزات والسماح للأشخاص بمعرفة الشخص الذين يحجزون معه.",
|
||||
"set_availability_instructions": "حدد الفترات الزمنية التي تكون متاحًا فيها بشكل متكرر. يمكنك لاحقًا تحديد المزيد منها وربطها مع تقاويم مختلفة.",
|
||||
"set_availability": "تحديد الوقت الذي تكون فيه متاحًا",
|
||||
"continue_without_calendar": "المتابعة من دون تقويم",
|
||||
@@ -304,18 +304,18 @@
|
||||
"success": "تم بنجاح",
|
||||
"failed": "فشل",
|
||||
"password_has_been_reset_login": "تمت إعادة تعيين كلمة المرور الخاصة بك. يمكنك الآن تسجيل الدخول باستخدام كلمة المرور التي تم إنشاؤها حديثًا.",
|
||||
"layout": "تخطيط",
|
||||
"layout": "التخطيط",
|
||||
"bookerlayout_default_title": "العرض الافتراضي",
|
||||
"bookerlayout_description": "يمكنك اختيار خيارات متعددة، ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض.",
|
||||
"bookerlayout_user_settings_title": "تخطيط الحجز",
|
||||
"bookerlayout_user_settings_description": "يمكنك تحديد خيارات متعددة ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض. يمكن إبطال هذا بحسب وضع كل فعالية.",
|
||||
"bookerlayout_user_settings_description": "يمكنك تحديد خيارات متعددة ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض. يمكن تجاوز هذا على أساس كل حدث.",
|
||||
"bookerlayout_month_view": "شهر",
|
||||
"bookerlayout_week_view": "أسبوعياً",
|
||||
"bookerlayout_week_view": "أسبوعيًا",
|
||||
"bookerlayout_column_view": "عمود",
|
||||
"bookerlayout_error_min_one_enabled": "يجب تمكين تخطيط واحد على الأقل.",
|
||||
"bookerlayout_error_default_not_enabled": "التخطيط الذي حددته كطريقة عرض افتراضية ليس جزءاً من التخطيطات التي تم تمكينها.",
|
||||
"bookerlayout_error_unknown_layout": "التخطيط الذي اخترته ليس تخطيطاً صالحاً.",
|
||||
"bookerlayout_override_global_settings": "يمكنك إدارة هذا لجميع أنواع فعالياتك في <2>إعدادات/المظهر</2> أو <6>إبطال لهذا الحدث فقط</6>.",
|
||||
"bookerlayout_error_default_not_enabled": "التخطيط الذي حددته كطريقة عرض افتراضية ليس جزءًا من التخطيطات التي تم تمكينها.",
|
||||
"bookerlayout_error_unknown_layout": "التخطيط الذي اخترته ليس تخطيطًا صالحًا.",
|
||||
"bookerlayout_override_global_settings": "يمكنك إدارة هذا لجميع أنواع الأحداث لديك في <2>الإعدادات/المظهر</2> أو <6>التجاوز لهذا الحدث فقط</6>.",
|
||||
"unexpected_error_try_again": "حدث خطأ غير متوقع. حاول مجددًا.",
|
||||
"sunday_time_error": "وقت غير صالح يوم الأحد",
|
||||
"monday_time_error": "وقت غير صالح يوم الاثنين",
|
||||
@@ -337,9 +337,9 @@
|
||||
"cancelling_event_recurring": "إن هذا الحدث أحد الأمثلة على حدث متكرر.",
|
||||
"cancelling_all_recurring": "هذه هي كل الأمثلة المتبقية في الحدث المتكرر.",
|
||||
"error_with_status_code_occured": "حدث خطأ برمز الحالة {{status}}.",
|
||||
"error_event_type_url_duplicate": "يوجد بالفعل نوع فعالية مع هذا الرابط.",
|
||||
"error_event_type_unauthorized_create": "أنت غير قادر على إنشاء هذه الفعالية",
|
||||
"error_event_type_unauthorized_update": "أنت غير قادر على تعديل هذه الفعالية",
|
||||
"error_event_type_url_duplicate": "يوجد بالفعل نوع حدث بهذا الرابط.",
|
||||
"error_event_type_unauthorized_create": "أنت غير قادر على إنشاء هذا الحدث",
|
||||
"error_event_type_unauthorized_update": "أنت غير قادر على تعديل هذا الحدث",
|
||||
"error_workflow_unauthorized_create": "أنت غير قادر على إنشاء سير العمل هذا",
|
||||
"error_schedule_unauthorized_create": "أنت غير قادر على إنشاء هذا الجدول الزمني",
|
||||
"booking_already_cancelled": "تم إلغاء هذا الحجز بالفعل",
|
||||
@@ -352,7 +352,7 @@
|
||||
"no_status_bookings_yet_description": "ليست لديك عمليات حجز في حالة {{status}}. {{description}}",
|
||||
"event_between_users": "{{eventName}} بين {{host}} و{{attendeeName}}",
|
||||
"bookings": "عمليات الحجز",
|
||||
"booking_not_found": "الحجز غير موجود",
|
||||
"booking_not_found": "لم يتم العثور على الحجز",
|
||||
"bookings_description": "اطلع على الأحداث القادمة والسابقة المحجوزة لديك من خلال روابط أنواع الحدث.",
|
||||
"upcoming_bookings": "بمجرد أن يحجز شخص ما موعدًا معك، سيظهر هنا.",
|
||||
"recurring_bookings": "بمجرد أن يحجز شخص ما اجتماعًا متكررًا معك، سيظهر هنا.",
|
||||
@@ -413,8 +413,8 @@
|
||||
"team_webhooks": "فريق ويبهوكس",
|
||||
"create_new_webhook_to_account": "إنشاء ويب هوك جديد لحسابك",
|
||||
"new_webhook": "ويب هوك جديد",
|
||||
"receive_cal_meeting_data": "تلقَّ بيانات اجتماعات {{appName}} على عنوان URL محدد، وفي الوقت الفعلي، عندما تتم جدولة حدث ما أو يتم إلغاؤه.",
|
||||
"receive_cal_event_meeting_data": "تلقي بيانات اجتماعات {{appName}} على عنوان URL محدد، وفي الوقت الحقيقي، عندما تتم جدولة حدث ما أو إلغاؤه.",
|
||||
"receive_cal_meeting_data": "احصل على بيانات اجتماع {{appName}} على رابط محدد، في الوقت الفعلي، عند جدولة حدث أو إلغائه.",
|
||||
"receive_cal_event_meeting_data": "احصل على بيانات اجتماع {{appName}} على رابط محدد، في الوقت الفعلي، عند جدولة حدث أو إلغائه.",
|
||||
"responsive_fullscreen_iframe": "إطار iframe سريع الاستجابة بكامل الشاشة",
|
||||
"loading": "يجري التحميل...",
|
||||
"deleting": "جارٍ الحذف...",
|
||||
@@ -554,7 +554,7 @@
|
||||
"member": "العضو",
|
||||
"number_member_one": "{{count}} عضو",
|
||||
"number_member_other": "{{count}} من الأعضاء",
|
||||
"number_selected": "{{count}} تم اختيارها",
|
||||
"number_selected": "تم تحديد {{count}}",
|
||||
"owner": "المالك",
|
||||
"admin": "المشرف",
|
||||
"administrator_user": "المستخدم المسؤول",
|
||||
@@ -872,16 +872,16 @@
|
||||
"no_category_apps_description_automation": "إضافة تطبيق أتمتة لاستخدامه",
|
||||
"no_category_apps_description_other": "أضف أي نوع آخر من التطبيقات للقيام بأي شيء",
|
||||
"no_category_apps_description_web3": "إضافة تطبيق web3 لصفحات الحجز لديك",
|
||||
"no_category_apps_description_messaging": "إضافة تطبيق مراسلة لإعداد التنبيهات والمذكرات المخصصة",
|
||||
"no_category_apps_description_messaging": "إضافة تطبيق مراسلة لإعداد الإشعارات والتذكيرات المخصصة",
|
||||
"no_category_apps_description_crm": "إضافة تطبيق CRM لتتبع من قابلته",
|
||||
"installed_app_calendar_description": "قم بتعيين التقويمات للتحقق من وجود تعارضات لمنع الحجوزات المزدوجة.",
|
||||
"installed_app_payment_description": "قم بإعداد أي خدمات معالجة دفع تود استخدامها عند التحصيل من العملاء.",
|
||||
"installed_app_analytics_description": "تهيئة أي تطبيقات تستخدم لصفحات الحجز الخاصة بك",
|
||||
"installed_app_other_description": "جميع تطبيقاتك المثبتة من الفئات الأخرى.",
|
||||
"installed_app_conferencing_description": "تهيئة أي تطبيقات المؤتمرات لاستخدامها",
|
||||
"installed_app_conferencing_description": "تكوين تطبيقات المؤتمرات المراد استخدامها",
|
||||
"installed_app_automation_description": "تهيئة تطبيقات الأتمتة التي سيتم استخدامها",
|
||||
"installed_app_web3_description": "تهيئة تطبيقات web3 التي يمكن استخدامها لصفحات الحجز لديك",
|
||||
"installed_app_messaging_description": "تكوين أي تطبيقات الرسائل لاستخدامها لإعداد الإشعارات والمذكرات المخصصة",
|
||||
"installed_app_messaging_description": "تكوين تطبيقات المراسلة المراد استخدامها لإعداد الإشعارات والتذكيرات المخصصة",
|
||||
"installed_app_crm_description": "تهيئة تطبيقات CRM التي يمكن استخدامها لتتبع من قابلته",
|
||||
"analytics": "التحليلات",
|
||||
"empty_installed_apps_headline": "لم يتم تثبيت أي تطبيق",
|
||||
@@ -908,7 +908,7 @@
|
||||
"create_events_on": "إنشاء أحداث في",
|
||||
"enterprise_license": "هذه هي ميزة للمؤسسات",
|
||||
"enterprise_license_description": "لتمكين هذه الميزة، احصل على مفتاح نشر في وحدة التحكم {{consoleUrl}} وأضفه إلى وحدة التحكم الخاصة بك. nv باسم CALCOM_LICENSE_KEY. إذا كان لدى فريقك بالفعل ترخيص، يرجى الاتصال بـ {{supportMail}} للحصول على المساعدة.",
|
||||
"enterprise_license_development": "يمكنك اختبار هذه الميزة في وضع التطوير. لاستخدام الإنتاج يرجى جعل المسؤول يذهب إلى <2>/auth/setup</2> لإدخال مفتاح الترخيص.",
|
||||
"enterprise_license_development": "يمكنك اختبار هذه الميزة في وضع التطوير. لاستخدام الإنتاج، يرجى مطالبة المسؤول بالذهاب إلى <2>/auth/setup</2> لإدخال مفتاح الترخيص.",
|
||||
"missing_license": "الترخيص مفقود",
|
||||
"signup_requires": "يلزم ترخيص تجاري",
|
||||
"signup_requires_description": "لا تقدم شركة {{companyName}} حاليًا إصدارًا مجانيًا مفتوح المصدر لصفحة التسجيل. للحصول على حق الوصول الكامل إلى مكونات التسجيل، يجب أن تحصل على ترخيص تجاري. للاستخدام الشخصي، نوصي باستخدام منصة Prisma Data أو أي واجهة أخرى من واجهات Postgres لإنشاء الحسابات.",
|
||||
@@ -1001,9 +1001,9 @@
|
||||
"user_impersonation_heading": "انتحال شخصية مستخدم",
|
||||
"user_impersonation_description": "يسمح لفريق الدعم الخاص بنا بتسجيل الدخول مؤقتًا نيابة عنك لمساعدتنا على حل أي مشاكل تبلغ عنها بسرعة.",
|
||||
"team_impersonation_description": "يسمح لمالكي/مشرفي فريقك بتسجيل الدخول مؤقتًا نيابة عنك.",
|
||||
"make_team_private": "اجعل الفريق سري",
|
||||
"make_team_private_description": "لن يتمكن أعضاء فريقك من رؤية أعضاء الفريق الآخرين عند تشغيل هذا.",
|
||||
"you_cannot_see_team_members": "لا يمكنك رؤية جميع أعضاء فريق سري.",
|
||||
"make_team_private": "اجعل الفريق خاصًا",
|
||||
"make_team_private_description": "لن يتمكن أعضاء فريقك من رؤية أعضاء الفريق الآخرين عند تشغيل هذا الإعداد.",
|
||||
"you_cannot_see_team_members": "لا يمكنك رؤية جميع أعضاء الفريق السري.",
|
||||
"allow_booker_to_select_duration": "السماح لمن يقوم بالحجز بتحديد المدة",
|
||||
"impersonate_user_tip": "يتم مراجعة جميع استخدامات هذه الميزة.",
|
||||
"impersonating_user_warning": "انتحال اسم مستخدم \"{{user}}\".",
|
||||
@@ -1071,18 +1071,18 @@
|
||||
"event_location": "موقع الحدث",
|
||||
"reschedule_optional": "سبب إعادة الجدولة (اختياري)",
|
||||
"reschedule_placeholder": "أخبر الآخرين لماذا تحتاج إلى إعادة جدولة",
|
||||
"event_cancelled": "تم إلغاء هذه الفعالية",
|
||||
"event_cancelled": "تم إلغاء هذا الحدث",
|
||||
"emailed_information_about_cancelled_event": "لقد أرسلنا إليك وإلى الحاضرين الآخرين بريداً إلكترونياً لإعلامهم.",
|
||||
"this_input_will_shown_booking_this_event": "سيُعرَض هذا المُدخَل عند حجز هذا الحدث",
|
||||
"meeting_url_in_conformation_email": "عنوان رابط الاجتماع موجود في رسالة التأكيد الإلكترونية",
|
||||
"url_start_with_https": "يجب أن يبدأ العنوان بـ http:// أو https://",
|
||||
"number_provided": "سيتم توفير رقم الهاتف",
|
||||
"before_event_trigger": "قبل بدء الحدث",
|
||||
"event_cancelled_trigger": "متى تم إلغاء هذه الفعالية",
|
||||
"event_cancelled_trigger": "متى تم إلغاء هذا الحدث",
|
||||
"new_event_trigger": "متى تم حجز الحدث الجديد",
|
||||
"email_host_action": "إرسال رسالة إلكترونية إلى المضيف",
|
||||
"email_attendee_action": "إرسال رسالة إلكترونية إلى الحضور",
|
||||
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى واحد من الحضور",
|
||||
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى أحد الحضور",
|
||||
"sms_number_action": "إرسال رسالة نصية قصيرة إلى رقم محدد",
|
||||
"workflows": "سير العمل",
|
||||
"new_workflow_btn": "سير عمل جديد",
|
||||
@@ -1331,9 +1331,9 @@
|
||||
"event_one": "حدث",
|
||||
"event_other": "أحداث",
|
||||
"profile_team_description": "إدارة إعدادات الملف الشخصي لفريقك",
|
||||
"profile_org_description": "إدارة الإعدادات لملف مؤسستك",
|
||||
"profile_org_description": "إدارة الإعدادات لملف منظمتك",
|
||||
"members_team_description": "المستخدمين الموجودين في المجموعة",
|
||||
"organization_description": "إدارة المشرفين والأعضاء في مؤسستك",
|
||||
"organization_description": "إدارة المسؤولين والأعضاء في منظمتك",
|
||||
"team_url": "رابط الفريق",
|
||||
"team_members": "أعضاء الفريق",
|
||||
"more": "المزيد",
|
||||
@@ -1479,10 +1479,10 @@
|
||||
"yearly": "سنويًا",
|
||||
"checkout": "الدفع",
|
||||
"your_team_disbanded_successfully": "تم حل فريقك بنجاح",
|
||||
"your_org_disbanded_successfully": "تم حل مؤسستك بنجاح",
|
||||
"your_org_disbanded_successfully": "تم حل منظمتك بنجاح",
|
||||
"error_creating_team": "خطأ في إنشاء فريق",
|
||||
"you": "أنت",
|
||||
"resend_email": "إعادة إرسال رسالة إلكترونية",
|
||||
"resend_email": "إعادة إرسال رسالة البريد الإلكتروني",
|
||||
"member_already_invited": "تمت دعوة العضو بالفعل",
|
||||
"enter_email_or_username": "أدخل بريد إلكتروني أو اسم مستخدم",
|
||||
"team_name_taken": "هذا الاسم مأخوذ بالفعل",
|
||||
@@ -1548,7 +1548,7 @@
|
||||
"no_apps": "لا توجد تطبيقات مفعلة لهذا المثال من Cal",
|
||||
"no_apps_configured": "لم يتم تكوين أي تطبيق بعد",
|
||||
"enable_in_settings": "يمكنك تمكين التطبيقات في الإعدادات",
|
||||
"please_contact_admin": "الرجاء الاتصال بالمشرف",
|
||||
"please_contact_admin": "يرجى الاتصال بالمسؤول",
|
||||
"apps_settings": "إعدادات التطبيقات",
|
||||
"fill_this_field": "يرجى ملء هذا الحقل",
|
||||
"options": "خيارات",
|
||||
@@ -1652,10 +1652,10 @@
|
||||
"delete_sso_configuration_confirmation_description": "هل تريد بالتأكيد حذف تكوين {{connectionType}}؟ لن يتمكن أعضاء فريقك الذين يستخدمون معلومات تسجيل الدخول إلى {{connectionType}} من الوصول إلى Cal.com بعد الآن.",
|
||||
"organizer_timezone": "منظم المناطق الزمنية",
|
||||
"email_user_cta": "عرض الدعوة",
|
||||
"email_no_user_invite_heading": "تم دعوتك للانضمام إلى {{appName}} {{entity}}",
|
||||
"email_no_user_invite_heading": "تمت دعوتك للانضمام إلى {{appName}} {{entity}}",
|
||||
"email_no_user_invite_subheading": "دعاك {{invitedBy}} للانضمام إلى فريقه على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت وفريقك من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
|
||||
"email_user_invite_subheading": "دعاك {{invitedBy}} للانضمام إلى فريقه {{teamName}} لدى {{entity}} على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت و{{entity}} من جدولة الاجتماعات من دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
|
||||
"email_no_user_invite_steps_intro": "سنرشدك خلال بضع خطوات قصيرة وستستمتع بجدولة سريعة خالية من الإجهاد مع {{entity}}.",
|
||||
"email_user_invite_subheading": "لقد دعاك {{invitedBy}} للانضمام إلى {{entity}} `{{teamName}}` على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت و{{entity}} من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
|
||||
"email_no_user_invite_steps_intro": "سنرشدك خلال بضع خطوات قصيرة وستستمتع بجدول زمني خالٍ من التوتر مع {{entity}} في لمح البصر.",
|
||||
"email_no_user_step_one": "اختر اسم المستخدم الخاص بك",
|
||||
"email_no_user_step_two": "ربط حساب التقويم الخاص بك",
|
||||
"email_no_user_step_three": "تعيين أوقاتك المتاحة",
|
||||
@@ -1666,8 +1666,8 @@
|
||||
"scheduler": "{Scheduler}",
|
||||
"no_workflows": "لا يوجد أي سير عمل",
|
||||
"change_filter": "قم بتغيير عامل التصفية لمشاهدة سير العمل الشخصي وفريقك.",
|
||||
"change_filter_common": "تغيير عامل الفرز لرؤية النتائج.",
|
||||
"no_results_for_filter": "لا توجد نتائج لعامل الفرز",
|
||||
"change_filter_common": "تغيير عامل التصفية لرؤية النتائج.",
|
||||
"no_results_for_filter": "لا توجد نتائج لعامل التصفية",
|
||||
"recommended_next_steps": "الخطوات التالية الموصى بها",
|
||||
"create_a_managed_event": "إنشاء نوع من الأحداث المُدارة",
|
||||
"meetings_are_better_with_the_right": "الاجتماعات أفضل مع وجود أعضاء الفريق المناسبين. قم بدعوتهم الآن.",
|
||||
@@ -1678,7 +1678,7 @@
|
||||
"no_longer_attending": "لن تحضر هذا الحدث",
|
||||
"attendee_no_longer_attending_subject": "أحد الحضور لن يحضر {{title}} في {{date}}",
|
||||
"attendee_no_longer_attending": "أحد الحضور لن يحضر الحدث الخاص بك",
|
||||
"attendee_no_longer_attending_subtitle": "تم إلغاء الحدث {{name}}، وهو ما يعني توافر معقد شاغر في هذا التوقيت",
|
||||
"attendee_no_longer_attending_subtitle": "تم إلغاء {{name}}. هذا يعني أنه تم فتح مقعد لهذه الفترة الزمنية",
|
||||
"create_event_on": "إنشاء حدث في",
|
||||
"create_routing_form_on": "إنشاء نموذج توجيه على",
|
||||
"default_app_link_title": "تعيين رابط تطبيق افتراضي",
|
||||
@@ -1690,7 +1690,7 @@
|
||||
"booking_questions_title": "أسئلة حول الحجز",
|
||||
"booking_questions_description": "يمكنك تخصيص الأسئلة المطروحة في صفحة الحجز",
|
||||
"add_a_booking_question": "اطرح سؤالاً",
|
||||
"identifier": "مُعرِّف",
|
||||
"identifier": "المُعرِّف",
|
||||
"duplicate_email": "البريد الإلكتروني مكرر",
|
||||
"booking_with_payment_cancelled": "لم يعد الدفع لهذا الحدث ممكنًا",
|
||||
"booking_with_payment_cancelled_already_paid": "استرداد المبلغ المدفوع لهذا الحجز قيد التنفيذ.",
|
||||
@@ -1733,14 +1733,14 @@
|
||||
"no_responses_yet": "لا توجد ردود بعد",
|
||||
"no_routes_defined": "لا توجد مسارات محددة",
|
||||
"this_will_be_the_placeholder": "سيكون هذا هو العنصر النائب",
|
||||
"error_booking_event": "حدث خطأ عند حجز الفعالية، الرجاء تحديث الصفحة والمحاولة ثانيةً",
|
||||
"error_booking_event": "حدث خطأ عند حجز الحدث، يرجى تحديث الصفحة والمحاولة ثانيةً",
|
||||
"timeslot_missing_title": "لم يتم تحديد فترة زمنية",
|
||||
"timeslot_missing_description": "يرجى تحديد فترة زمنية لحجز الحدث.",
|
||||
"timeslot_missing_cta": "حدد فترة زمنية",
|
||||
"switch_monthly": "التبديل إلى العرض الشهري",
|
||||
"switch_weekly": "التبديل إلى العرض الأسبوعي",
|
||||
"switch_multiday": "التبديل إلى العرض اليومي",
|
||||
"switch_columnview": "التبديل إلى العرض العمود",
|
||||
"switch_columnview": "التبديل إلى عرض العمود",
|
||||
"num_locations": "{{num}} من خيارات الموقع",
|
||||
"select_on_next_step": "حدد في الخطوة التالية",
|
||||
"this_meeting_has_not_started_yet": "لم يبدأ هذا الاجتماع بعد",
|
||||
@@ -1795,7 +1795,7 @@
|
||||
"least_booked_members": "الأعضاء الأقل حجزًا",
|
||||
"events_created": "تم إنشاء الأحداث",
|
||||
"events_completed": "تم اكتمال الأحداث",
|
||||
"events_cancelled": "تم إلغاء الفعاليات",
|
||||
"events_cancelled": "تم إلغاء الأحداث",
|
||||
"events_rescheduled": "تمت إعادة جدولة الأحداث",
|
||||
"from_last_period": "من آخر فترة",
|
||||
"from_to_date_period": "من: {{startDate}} إلى: {{endDate}}",
|
||||
@@ -1834,13 +1834,13 @@
|
||||
"invite_link_copied": "تم نسخ رابط الدعوة",
|
||||
"invite_link_deleted": "تم حذف رابط الدعوة",
|
||||
"invite_link_updated": "تم حفظ إعدادات رابط الدعوة",
|
||||
"link_expires_after": "روابط تم تعيينها للانتهاء بعد...",
|
||||
"link_expires_after": "تم تعيين الروابط للانتهاء بعد...",
|
||||
"one_day": "1 يوم",
|
||||
"seven_days": "7 أيام",
|
||||
"thirty_days": "30 يوم",
|
||||
"thirty_days": "30 يومًا",
|
||||
"three_months": "3 أشهر",
|
||||
"one_year": "1 سنة",
|
||||
"team_invite_received": "تم دعوتك للانضمام إلى {{teamName}}",
|
||||
"team_invite_received": "تمت دعوتك للانضمام إلى {{teamName}}",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
"charge_card_dialog_body": "أنت على وشك تحصيل مبلغ {{amount, currency}} من أحد الحضور. هل أنت متأكد من أنك تريد المتابعة؟",
|
||||
"charge_attendee": "تحصيل مبلغ {{amount, currency}} من أحد الحضور",
|
||||
@@ -1849,7 +1849,7 @@
|
||||
"email_invite_team_bulk": "تم دعوة {{userCount}} من المستخدمين",
|
||||
"error_collecting_card": "خطأ في التحصيل من البطاقة",
|
||||
"image_size_limit_exceed": "يجب ألا يتجاوز حجم الصورة التي تم تحميلها 5 ميغابايت",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: أنت غير مخوّل لك بتمكين أو تعطيل سير العمل هذا",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: غير مصرح لك بتمكين سير العمل هذا أو تعطيله",
|
||||
"inline_embed": "التضمين",
|
||||
"load_inline_content": "تحميل نوع الحدث مع محتوى آخر من موقعكبشكل مباشر.",
|
||||
"floating_pop_up_button": "زر منبثق عائم",
|
||||
@@ -1871,66 +1871,66 @@
|
||||
"first_event_type_webhook_description": "قم بإنشاء أول شبكة ويب هوك لهذا النوع من الأحداث",
|
||||
"install_app_on": "تثبيت التطبيق على",
|
||||
"create_for": "إنشاء من أجل",
|
||||
"setup_organization": "إعداد مؤسسة",
|
||||
"organization_banner_description": "إنشاء بيئات حيث يمكن لفرقك إنشاء تطبيقات مشتركة، ومسارات عمل وأنواع فعاليات مع جدولة دورية وجماعية.",
|
||||
"organization_banner_title": "إدارة المنظمات مع فرق متعددة",
|
||||
"setup_organization": "إعداد منظمة",
|
||||
"organization_banner_description": "إنشاء بيئات حيث يمكن لفرقك إنشاء تطبيقات مشتركة ومهام سير العمل وأنواع الأحداث باستخدام الجدولة الدوارة والجماعية.",
|
||||
"organization_banner_title": "إدارة المنظمات ذات الفرق المتعددة",
|
||||
"set_up_your_organization": "إعداد منظمتك",
|
||||
"organizations_description": "المنظمات هي بيئات مشتركة حيث يمكن للفرق إنشاء أنواع الفعاليات المشتركة والتطبيقات ومسارات العمل والمزيد.",
|
||||
"organizations_description": "المنظمات هي بيئات مشتركة حيث يمكن للفرق إنشاء أنواع الأحداث المشتركة والتطبيقات ومهام سير العمل والمزيد.",
|
||||
"must_enter_organization_name": "يجب إدخال اسم المنظمة",
|
||||
"must_enter_organization_admin_email": "يجب إدخال عنوان البريد الإلكتروني لمؤسستك",
|
||||
"admin_email": "عنوان البريد الإلكتروني لمؤسستك",
|
||||
"must_enter_organization_admin_email": "يجب إدخال عنوان البريد الإلكتروني لمنظمتك",
|
||||
"admin_email": "عنوان البريد الإلكتروني لمنظمتك",
|
||||
"admin_username": "اسم المستخدم للمسؤول",
|
||||
"organization_name": "اسم المنظمة",
|
||||
"organization_url": "رابط المنظمة",
|
||||
"organization_verify_header": "تأكيد البريد الإلكتروني لمؤسستك",
|
||||
"organization_verify_email_body": "الرجاء استخدام الرمز أدناه لتأكيد عنوان بريدك الإلكتروني لمواصلة إعداد مؤسستك.",
|
||||
"additional_url_parameters": "مقاييس URL إضافية",
|
||||
"about_your_organization": "حول مؤسستك",
|
||||
"about_your_organization_description": "المنظمات هي بيئات مشتركة فيها يمكنك إنشاء فرق متعدد مع أعضاء مشتركين، وأنواع الفعاليات، والتطبيقات، ومسارات العمل والمزيد.",
|
||||
"organization_verify_header": "تأكيد البريد الإلكتروني لمنظمتك",
|
||||
"organization_verify_email_body": "الرجاء استخدام الرمز أدناه لتأكيد عنوان بريدك الإلكتروني لمواصلة إعداد منظمتك.",
|
||||
"additional_url_parameters": "معلمات الرابط الإضافية",
|
||||
"about_your_organization": "حول منظمتك",
|
||||
"about_your_organization_description": "المنظمات هي بيئات مشتركة حيث يمكنك إنشاء فرق متعددة مع أعضاء مشتركين وأنواع الأحداث والتطبيقات ومهام سير العمل والمزيد.",
|
||||
"create_your_teams": "إنشاء فرقك",
|
||||
"create_your_teams_description": "البدء في الجدولة معاً بإضافة أعضاء فريقك إلى مؤسستك",
|
||||
"invite_organization_admins": "قم بدعوة مشرفي مؤسستك",
|
||||
"invite_organization_admins_description": "سيتمكن هؤلاء المشرفون من الوصول إلى جميع الفرق في مؤسستك. يمكنك إضافة مشرفين وأعضاء في وقت لاحق.",
|
||||
"create_your_teams_description": "ابدأوا الجدولة معًا عن طريق إضافة أعضاء فريقك إلى منظمتك",
|
||||
"invite_organization_admins": "دعوة مشرفي منظمتك",
|
||||
"invite_organization_admins_description": "سيتمكن هؤلاء المسؤولون من الوصول إلى جميع الفرق في منظمتك. يمكنك إضافة مسؤولي الفريق والأعضاء لاحقًا.",
|
||||
"set_a_password": "تعيين كلمة مرور",
|
||||
"set_a_password_description": "سيؤدي هذا إلى إنشاء حساب مستخدم جديد مع البريد الإلكتروني لمؤسستك وكلمة المرور هذه.",
|
||||
"set_a_password_description": "سيؤدي هذا إلى إنشاء حساب مستخدم جديد بالبريد الإلكتروني لمنظمتك وكلمة المرور هذه.",
|
||||
"organization_logo": "شعار المنظمة",
|
||||
"organization_about_description": "بضع جمل عن منظمتك. ستظهر على الصفحة المتاحجة للعموم لمنظمتك.",
|
||||
"ill_do_this_later": "سأفعل هذا لاحقاً",
|
||||
"organization_about_description": "بضع جمل عن منطمتك. سيظهر هذا في صفحة الملف الشخصي العامة لمنظمتك.",
|
||||
"ill_do_this_later": "سأفعل هذا لاحقًا",
|
||||
"verify_your_email": "تأكيد بريدك الإلكتروني",
|
||||
"enter_digit_code": "أدخل الرمز المكون من 6 أرقام الذي أرسلناه إلى {{email}}",
|
||||
"verify_email_organization": "تأكيد بريدك الإلكتروني لإنشاء مؤسسة",
|
||||
"verify_email_organization": "أكد بريدك الإلكتروني لإنشاء منظمة",
|
||||
"code_provided_invalid": "الرمز المقدم غير صالح، حاول ثانيةً",
|
||||
"email_already_used": "البريد الإلكتروني مستخدم بالفعل",
|
||||
"organization_admin_invited_heading": "تم دعوتك للانضمام إلى {{orgName}}",
|
||||
"organization_admin_invited_body": "انضم إلى فريقك في {{orgName}} وابدأ بالتركيز على الاجتماع، وليس عقد الاجتماعات!",
|
||||
"duplicated_slugs_warning": "لا يمكن إنشاء الفرق التالية بسبب التكرار: {{slugs}}",
|
||||
"organization_admin_invited_heading": "تمت دعوتك للانضمام إلى {{orgName}}",
|
||||
"organization_admin_invited_body": "انضم إلى فريقك في {{orgName}} وابدأ الانشغال بالاجتماعاتك، وليس بكيفية الإعداد لها!",
|
||||
"duplicated_slugs_warning": "لا يمكن إنشاء الفرق التالية بسبب تكرار الكلمات اللطيفة (Slug): {{slugs}}",
|
||||
"team_names_empty": "لا يمكن أن تكون أسماء الفرق فارغة",
|
||||
"team_names_repeated": "لا يمكن تكرار أسماء الفرق",
|
||||
"user_belongs_organization": "المستخدم ينتمي إلى منظمة",
|
||||
"org_no_teams_yet": "هذه المنظمة ليس لديها فرق بعد",
|
||||
"org_no_teams_yet_description": "إذا كنت مسؤول، تأكد من إنشاء فرق لعرضها هنا.",
|
||||
"set_up": "إعداد",
|
||||
"set_up_your_profile": "إعداد ملفك التعريفي",
|
||||
"set_up": "الإعداد",
|
||||
"set_up_your_profile": "إعداد ملفك الشخصي",
|
||||
"set_up_your_profile_description": "دع الناس يعرفون من أنت داخل {{orgName}}، ومتى يتعاملون مع الرابط العام الخاص بك.",
|
||||
"my_profile": "ملفي التعريفي",
|
||||
"my_settings": "إعداداتي",
|
||||
"my_profile": "الملف الشخصي",
|
||||
"my_settings": "الإعدادات",
|
||||
"crm": "CRM",
|
||||
"messaging": "المراسلة",
|
||||
"sender_id_info": "الاسم أو الرقم المبين كمرسل لرسالة نصية قصيرة (بعض البلدان لا تسمح بأن تكون هويات المرسل أبجدية رقمية)",
|
||||
"org_admins_can_create_new_teams": "يمكن فقط لمشرف مؤسستك إنشاء فرق جديدة",
|
||||
"sender_id_info": "الاسم أو الرقم الظاهر على أنه مرسل الرسالة النصية القصيرة (بعض البلدان لا تسمح بمعرفات المرسل الأبجدية الرقمية)",
|
||||
"org_admins_can_create_new_teams": "يمكن فقط لمسؤول منظمتك إنشاء فرق جديدة",
|
||||
"google_new_spam_policy": "يمكن أن تمنعك سياسة Google الجديدة للرسائل غير المرغوب فيها من تلقي أي إشعارات بالبريد الإلكتروني والتقويم حول هذا الحجز.",
|
||||
"resolve": "حل",
|
||||
"no_organization_slug": "حدث خطأ أثناء إنشاء فرق لهذه المؤسسة. ربط الرابط مفقود.",
|
||||
"no_organization_slug": "حدث خطأ أثناء إنشاء فرق لهذه المنظمة. الكلمة اللطيفة للرابط مفقودة.",
|
||||
"org_name": "اسم المنظمة",
|
||||
"org_url": "رابط المنظمة",
|
||||
"copy_link_org": "نسخ الرابط إلى المنظمة",
|
||||
"404_the_org": "المنظمة",
|
||||
"404_the_team": "الفريق",
|
||||
"404_claim_entity_org": "المطالبة بنطاقك الفرعي لمؤسستك",
|
||||
"404_claim_entity_org": "المطالبة بنطاقك الفرعي لمنظمتك",
|
||||
"404_claim_entity_team": "المطالبة بهذا الفريق والبدء في إدارة الجداول الزمنية بشكل جماعي",
|
||||
"insights_all_org_filter": "الكل",
|
||||
"insights_team_filter": "الفريق: {{teamName}}",
|
||||
"insights_user_filter": "المستخدم: {{userName}}",
|
||||
"insights_subtitle": "عرض رؤى الحجز عبر فعالياتك",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف خيوطك الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
"insights_subtitle": "عرض Insights الحجز عبر أحداثك",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"verify_email_email_link_text": "Zde je odkaz pro případ, že nemáte rádi klikání na tlačítka:",
|
||||
"email_sent": "E-mail byl odeslán",
|
||||
"event_declined_subject": "Odmítnuto: {{title}} v {{date}}",
|
||||
"event_cancelled_subject": "Zrušeno: {{title}} ({{date}})",
|
||||
"event_cancelled_subject": "Zrušeno: {{title}} dne {{date}}",
|
||||
"event_request_declined": "Žádost o událost byla zamítnuta",
|
||||
"event_request_declined_recurring": "Žádost o opakovanou událost byla zamítnuta",
|
||||
"event_request_cancelled": "Vaše plánovaná událost byla zrušena",
|
||||
@@ -89,7 +89,7 @@
|
||||
"event_has_been_rescheduled": "Změna - Vaše událost byla přesunuta na jindy",
|
||||
"request_reschedule_subtitle": "{{organizer}} zrušil rezervaci a požádal vás, abyste si vybrali jiný termín.",
|
||||
"request_reschedule_title_organizer": "Požádali jste uživatele {{attendee}} o změnu časového plánu",
|
||||
"request_reschedule_subtitle_organizer": "Zrušili jste rezervaci a účastník {{attendee}} by si s vámi měl rezervovat nový čas.",
|
||||
"request_reschedule_subtitle_organizer": "Zrušili jste rezervaci a účastník {{attendee}} by si s vámi měl zarezervovat nový čas.",
|
||||
"rescheduled_event_type_subject": "Žádost o přesunutí schůzky: {{eventType}} s {{name}} dne {{date}}",
|
||||
"requested_to_reschedule_subject_attendee": "Akce vyžadovaná k přeplánování: zarezervujte si nový čas pro událost {{eventType}} s osobou {{name}}",
|
||||
"hi_user_name": "Hezký den, {{name}}",
|
||||
@@ -129,7 +129,7 @@
|
||||
"team_upgrade_banner_description": "Děkujeme vám za vyzkoušení našeho nového týmového plánu. Všimli jsme si, že váš tým „{{teamName}}“ je nutné upgradovat.",
|
||||
"upgrade_banner_action": "Upgradovat zde",
|
||||
"team_upgraded_successfully": "Váš tým byl úspěšně přešel na vyšší verzi!",
|
||||
"org_upgrade_banner_description": "Děkujeme, že jste vyzkoušeli tarif naší organizace. Všimli jsme si, že vaše organizace „{{teamName}}“ vyžaduje upgrade.",
|
||||
"org_upgrade_banner_description": "Děkujeme, že jste vyzkoušeli náš tarif Organizace. Všimli jsme si, že vaše organizace „{{teamName}}“ vyžaduje upgrade.",
|
||||
"org_upgraded_successfully": "Vaše organizace byla upgradována!",
|
||||
"use_link_to_reset_password": "Pro obnovení hesla použijte odkaz níž",
|
||||
"hey_there": "Zdravíme,",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "Správa nastavení jazyka a časového pásma vašeho týmu",
|
||||
"few_sentences_about_yourself": "Pár vět o vás. Budou se zobrazovat na URL vaší osobní stránky.",
|
||||
"nearly_there": "Téměř hotovo!",
|
||||
"nearly_there_instructions": "Poslední věc... stručný popis o vás a fotografie vám pomůžou získat rezervace a lidi aspoň budou vědět, koho si rezervují.",
|
||||
"nearly_there_instructions": "Poslední věc... pár slov o vás a fotografie vám pomůžou získat rezervace a lidi aspoň budou vědět, koho si rezervují.",
|
||||
"set_availability_instructions": "Určete si časové intervaly, kdy jste pravidelně dostupní. Později můžete vytvořit další a přiřadit je různým kalendářům.",
|
||||
"set_availability": "Nastavte, jak jste dostupní",
|
||||
"continue_without_calendar": "Pokračovat bez kalendáře",
|
||||
@@ -314,8 +314,8 @@
|
||||
"bookerlayout_column_view": "Sloupec",
|
||||
"bookerlayout_error_min_one_enabled": "Musí být povoleno alespoň jedno rozvržení.",
|
||||
"bookerlayout_error_default_not_enabled": "Rozvržení, které jste vybrali jako výchozí zobrazení, není součástí povolených rozvržení.",
|
||||
"bookerlayout_error_unknown_layout": "Vámi vybrané rozvržení není platné rozvržení.",
|
||||
"bookerlayout_override_global_settings": "Tohle lze nastavit pro všechny typy událostí v <2>nastavení / vzhledu</2> nebo <6>nadefinovat pouze pro tuto událost</6>.",
|
||||
"bookerlayout_error_unknown_layout": "Vámi vybrané rozvržení není platné.",
|
||||
"bookerlayout_override_global_settings": "Toto lze nastavit pro všechny typy událostí v <2>nastavení / vzhled</2> nebo <6>nadefinovat pouze pro tuto událost</6>.",
|
||||
"unexpected_error_try_again": "Došlo k neočekávané chybě. Zkuste to znovu.",
|
||||
"sunday_time_error": "Neplatný čas v neděli",
|
||||
"monday_time_error": "Neplatný čas v pondělí",
|
||||
@@ -341,7 +341,7 @@
|
||||
"error_event_type_unauthorized_create": "Tuto událost nelze vytvořit",
|
||||
"error_event_type_unauthorized_update": "Tuto událost nelze upravit",
|
||||
"error_workflow_unauthorized_create": "Tento pracovní postup nelze vytvořit",
|
||||
"error_schedule_unauthorized_create": "Nejste schopni vytvořit tento plán",
|
||||
"error_schedule_unauthorized_create": "Tento plán nelze vytvořit",
|
||||
"booking_already_cancelled": "Tato rezervace již byla zrušena",
|
||||
"booking_already_accepted_rejected": "Tato rezervace již byla přijata nebo zamítnuta",
|
||||
"go_back_home": "Přejít na úvod",
|
||||
@@ -352,7 +352,7 @@
|
||||
"no_status_bookings_yet_description": "Nemáte žádné {{status}} rezervace. {{description}}",
|
||||
"event_between_users": "{{eventName}} mezi {{host}} a {{attendeeName}}",
|
||||
"bookings": "Rezervace",
|
||||
"booking_not_found": "Rezervace nenalezena",
|
||||
"booking_not_found": "Rezervace nebyla nalezena",
|
||||
"bookings_description": "Zobrazte si nadcházející a proběhlé události rezervovaní prostřednictvím odkazu na typ události.",
|
||||
"upcoming_bookings": "Jakmile si někdo rezervuje váš čas, zobrazí se to zde.",
|
||||
"recurring_bookings": "Jakmile si někdo s vámi zarezervuje opakovanou schůzku, zobrazí se to zde.",
|
||||
@@ -398,12 +398,12 @@
|
||||
"browse_api_documentation": "Procházejte naši API dokumentaci",
|
||||
"leverage_our_api": "Pro plnou kontrolu a přizpůsobení využijte naše API.",
|
||||
"create_webhook": "Vytvořit webhook",
|
||||
"booking_cancelled": "Rezervace zrušena",
|
||||
"booking_cancelled": "Rezervace byla zrušena",
|
||||
"booking_rescheduled": "Rezervace přesunuta",
|
||||
"recording_ready": "Odkaz ke stažení záznamu je připraven",
|
||||
"booking_created": "Rezervace vytvořena",
|
||||
"booking_rejected": "Rezervace zamítnuta",
|
||||
"booking_requested": "Rezervace vyžádána",
|
||||
"booking_rejected": "Rezervace byla zamítnuta",
|
||||
"booking_requested": "Byla vyžádána rezervace",
|
||||
"meeting_ended": "Schůzka skončila",
|
||||
"form_submitted": "Formulář byl odeslán",
|
||||
"event_triggers": "Eventy na základě akce",
|
||||
@@ -867,7 +867,7 @@
|
||||
"no_category_apps": "Žádné aplikace v kategorii {{category}}",
|
||||
"all_apps": "Všechny aplikace",
|
||||
"no_category_apps_description_calendar": "Přidejte aplikaci kalendáře, ať máte přehled v zájmu prevence dvojích rezervací",
|
||||
"no_category_apps_description_conferencing": "Zkuste přidat aplikaci pro videokonference s klienty.",
|
||||
"no_category_apps_description_conferencing": "Zkuste přidat aplikaci pro videokonference s klienty",
|
||||
"no_category_apps_description_payment": "Přidejte platební aplikaci, která usnadní provádění transakcí mezi vámi a vašimi klienty",
|
||||
"no_category_apps_description_analytics": "Přidejte analytickou aplikaci pro vaše rezervační stránky",
|
||||
"no_category_apps_description_automation": "Přidejte aplikaci pro automatizaci",
|
||||
@@ -1002,8 +1002,8 @@
|
||||
"user_impersonation_heading": "Přizpůsobení uživatele",
|
||||
"user_impersonation_description": "Náš tým podpory se bude moci dočasně přihlásit místo vás, aby nám pomohl rychle vyřešit jakékoli problémy, které nám nahlásíte.",
|
||||
"team_impersonation_description": "Umožňuje vašim vlastníkům/správcům týmu dočasně se přihlásit jako vy.",
|
||||
"make_team_private": "Soukromý tým",
|
||||
"make_team_private_description": "Po zapnutí této funkce nebudou členové vašeho týmu vidět ostatní členy týmu.",
|
||||
"make_team_private": "Nastavit tým jako soukromý",
|
||||
"make_team_private_description": "Po zapnutí této funkce neuvidí členové vašeho týmu ostatní členy týmu.",
|
||||
"you_cannot_see_team_members": "V soukromém týmu nelze vidět všechny členy týmu.",
|
||||
"allow_booker_to_select_duration": "Umožnit rezervující osobě vybrat dobu trvání",
|
||||
"impersonate_user_tip": "Všechna použití této funkce jsou kontrolována.",
|
||||
@@ -1327,7 +1327,7 @@
|
||||
"download_responses_description": "Stáhněte si všechny odpovědi do formuláře ve formátu CSV.",
|
||||
"download": "Stáhnout",
|
||||
"download_recording": "Stáhnout nahrávku",
|
||||
"recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru v {{appName}} je připravena ke stažení.",
|
||||
"recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru v {{appName}} je připravena ke stažení",
|
||||
"create_your_first_form": "Vytvořte svůj první formulář",
|
||||
"create_your_first_form_description": "Pomocí adresných formulářů můžete klást kvalifikační otázky a adresovat je správné osobě nebo typu události.",
|
||||
"create_your_first_webhook": "Vytvořte svůj první webhook",
|
||||
@@ -1659,10 +1659,10 @@
|
||||
"delete_sso_configuration_confirmation_description": "Opravdu chcete odstranit konfiguraci {{connectionType}}? Členové vašeho týmu, kteří používají přihlášení {{connectionType}}, ztratí přístup k webu Cal.com.",
|
||||
"organizer_timezone": "Časové pásmo organizátora",
|
||||
"email_user_cta": "Zobrazit pozvánku",
|
||||
"email_no_user_invite_heading": "Byli jste pozváni, abyste se připojili k subjektu {{{entity}} v aplikaci {{appName}}",
|
||||
"email_no_user_invite_heading": "Byli jste pozváni, abyste se připojili k subjektu {{entity}} v aplikaci {{appName}}",
|
||||
"email_no_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez e-mailového ping-pongu.",
|
||||
"email_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} subjektu ({{entity}}) v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu subjektu ({{entity}}) umožňuje plánovat schůzky bez e-mailového pingpongu.",
|
||||
"email_no_user_invite_steps_intro": "Provedeme vás několika krátkými kroky a za malou chvíli si budete se svým subjektem ({{entity}}) užívat plánování bez stresu.",
|
||||
"email_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} subjektu {{entity}} v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu subjektu {{entity}} umožňuje plánovat schůzky bez e-mailového pingpongu.",
|
||||
"email_no_user_invite_steps_intro": "Provedeme vás několika krátkými kroky a za malou chvíli si budete se svým subjektem {{entity}} užívat plánování bez stresu.",
|
||||
"email_no_user_step_one": "Vyberte si uživatelské jméno",
|
||||
"email_no_user_step_two": "Připojte svůj účet kalendáře",
|
||||
"email_no_user_step_three": "Nastavte si dostupnost",
|
||||
@@ -1740,7 +1740,7 @@
|
||||
"no_responses_yet": "Zatím žádné odpovědi",
|
||||
"no_routes_defined": "Není definováno žádné směrování",
|
||||
"this_will_be_the_placeholder": "Toto bude zástupný znak",
|
||||
"error_booking_event": "Při rezervaci události došlo k chybě, obnovte prosím stránku a zkuste to znovu.",
|
||||
"error_booking_event": "Při rezervaci události došlo k chybě, obnovte prosím stránku a zkuste to znovu",
|
||||
"timeslot_missing_title": "Nebyl vybrán žádný časový slot",
|
||||
"timeslot_missing_description": "Vyberte časový slot, aby mohla být událost zaregistrována.",
|
||||
"timeslot_missing_cta": "Vybrat časový slot",
|
||||
@@ -1802,7 +1802,7 @@
|
||||
"least_booked_members": "Nejméně rezervovaných členů",
|
||||
"events_created": "Události vytvořeny",
|
||||
"events_completed": "Události dokončeny",
|
||||
"events_cancelled": "Události zrušeny",
|
||||
"events_cancelled": "Zrušené události",
|
||||
"events_rescheduled": "Události přesunuty",
|
||||
"from_last_period": "z posledního období",
|
||||
"from_to_date_period": "Od: {{startDate}} do: {{endDate}}",
|
||||
@@ -1838,9 +1838,9 @@
|
||||
"confirm_your_details": "Potvrďte své údaje",
|
||||
"copy_invite_link": "Zkopírovat odkaz pozvánky",
|
||||
"edit_invite_link": "Upravit nastavení odkazu",
|
||||
"invite_link_copied": "Odkaz pozvánky zkopírován",
|
||||
"invite_link_deleted": "Odkaz pozvánky odstraněn",
|
||||
"invite_link_updated": "Nastavení odkazu pozvánky uloženo",
|
||||
"invite_link_copied": "Odkaz pozvánky byl zkopírován",
|
||||
"invite_link_deleted": "Odkaz pozvánky byl odstraněn",
|
||||
"invite_link_updated": "Nastavení odkazu pozvánky bylo uloženo",
|
||||
"link_expires_after": "Platnost odkazů vyprší za...",
|
||||
"one_day": "1 den",
|
||||
"seven_days": "7 dní",
|
||||
@@ -1856,7 +1856,7 @@
|
||||
"email_invite_team_bulk": "Počet pozvaných uživatelů: {{userCount}}",
|
||||
"error_collecting_card": "Chyba při výběru karty",
|
||||
"image_size_limit_exceed": "Velikost nahraného obrázku by neměla překročit limit 5 MB",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: Nejste oprávněni zapnout nebo vypnout tento pracovní postup.",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: Nejste oprávněni zapnout nebo vypnout tento pracovní postup",
|
||||
"inline_embed": "Vložit na řádek",
|
||||
"load_inline_content": "Načte váš typ události přímo do řádků s ostatním obsahem webu.",
|
||||
"floating_pop_up_button": "Plovoucí překryvné tlačítko",
|
||||
@@ -1895,10 +1895,10 @@
|
||||
"about_your_organization": "Informace o vaší organizaci",
|
||||
"about_your_organization_description": "Organizace jsou sdílená prostředí, ve kterých můžete vytvořit několik týmů se sdílenými členy, typy událostí, aplikacemi, pracovními postupy a mnoha dalšími věcmi.",
|
||||
"create_your_teams": "Vytvoření týmů",
|
||||
"create_your_teams_description": "Přidejte do své organizace členy a pusťte se do společného plánování.",
|
||||
"create_your_teams_description": "Přidejte do své organizace členy a pusťte se do společného plánování",
|
||||
"invite_organization_admins": "Pozvěte správce své organizace",
|
||||
"invite_organization_admins_description": "Tito správci budou mít přístup ke všem týmům ve vaší organizaci. Správce a členy týmů můžete přidat později.",
|
||||
"set_a_password": "Nastavte heslo",
|
||||
"set_a_password": "Nastavte si heslo",
|
||||
"set_a_password_description": "Tím se vytvoří nový uživatelský účet s e-mailem vaší organizace a tímto heslem.",
|
||||
"organization_logo": "Logo organizace",
|
||||
"organization_about_description": "Několik vět o vaší organizaci. Objeví se na veřejné stránce profilu vaší organizace.",
|
||||
@@ -1923,7 +1923,7 @@
|
||||
"my_settings": "Moje nastavení",
|
||||
"crm": "CRM",
|
||||
"messaging": "Zasílání zpráv",
|
||||
"sender_id_info": "Jméno nebo číslo zobrazené jako odesílatel SMS (některé země nepovolují alfanumerické ID odesílatele).",
|
||||
"sender_id_info": "Jméno nebo číslo zobrazené jako odesílatel SMS (některé země nepovolují alfanumerické ID odesílatele)",
|
||||
"org_admins_can_create_new_teams": "Nové týmy může vytvářet pouze správce vaší organizace",
|
||||
"google_new_spam_policy": "Nové zásady společnosti Google týkající se nevyžádané pošty by mohly zabránit tomu, abyste dostávali e-mailová oznámení a oznámení kalendáře o této rezervaci.",
|
||||
"resolve": "Vyřešit",
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
"reset_password_subject": "{{appName}}: Anleitung zum Zurücksetzen des Passworts",
|
||||
"verify_email_subject": "{{appName}}: Bestätigen Sie Ihr Konto",
|
||||
"check_your_email": "Schauen Sie in Ihrem E-Mail-Postfach nach",
|
||||
"verify_email_page_body": "Wir haben eine E-Mail an {{email}} gesendet. Es ist wichtig, Ihre E-Mail-Adresse zu bestätigen, um die beste Zustellbarkeit für E-Mails und Kalender von {{appName}} zu gewährleisten.",
|
||||
"verify_email_banner_body": "Bestätigen Sie Ihre E-Mail-Adresse, um die beste Zustellbarkeit von E-Mails und Kalenderdaten zu gewährleisten",
|
||||
"verify_email_page_body": "Wir haben eine E-Mail an {{email}} gesendet. Es ist wichtig, Ihre E-Mail-Adresse zu bestätigen, um die Zustellbarkeit für E-Mails und Kalenderbenachrichtigungen von {{appName}} zu gewährleisten.",
|
||||
"verify_email_banner_body": "Bestätigen Sie Ihre E-Mail-Adresse, um die Zustellbarkeit von E-Mails und Kalenderbenachrichtigungen zu gewährleisten",
|
||||
"verify_email_email_header": "Bestätigen Sie Ihre E-Mail-Adresse",
|
||||
"verify_email_email_button": "E-Mail bestätigen",
|
||||
"copy_somewhere_safe": "Speichern Sie diesen API-Schlüssel an einem sicheren Ort. Sie können ihn nicht erneut ansehen.",
|
||||
@@ -137,11 +137,11 @@
|
||||
"upgrade_banner_action": "Hier aufrüsten",
|
||||
"team_upgraded_successfully": "Das Update für Ihr Team war erfolgreich!",
|
||||
"org_upgrade_banner_description": "Vielen Dank, dass Sie unseren neuen Organisationsplan getestet haben. Wir haben festgestellt, dass Ihre Organisation „{{teamName}}“ ein Upgrade benötigt.",
|
||||
"org_upgraded_successfully": "Das Update für Ihre Organisation war erfolgreich!",
|
||||
"org_upgraded_successfully": "Das Upgrade für Ihre Organization war erfolgreich!",
|
||||
"use_link_to_reset_password": "Benutzen Sie den Link, um Ihr Passwort zurückzusetzen",
|
||||
"hey_there": "Hallo,",
|
||||
"forgot_your_password_calcom": "Passwort vergessen? - {{appName}}",
|
||||
"delete_webhook_confirmation_message": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten? Sie werden keine {{appName}} Meetingdaten mehr unter einer bestimmten URL, in Echtzeit erhalten, wenn ein Ereignis geplant oder abgesagt wird.",
|
||||
"delete_webhook_confirmation_message": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten? Sie werden keine {{appName}}-Meetingdaten mehr unter einer bestimmten URL, in Echtzeit erhalten, wenn ein Ereignis geplant oder abgesagt wird.",
|
||||
"confirm_delete_webhook": "Ja, Webhook löschen",
|
||||
"edit_webhook": "Webhook bearbeiten",
|
||||
"delete_webhook": "Webhook löschen",
|
||||
@@ -260,7 +260,7 @@
|
||||
"organization_general_description": "Einstellungen für die Sprache und Zeitzone Ihres Teams verwalten",
|
||||
"few_sentences_about_yourself": "Schreiben Sie eine kurze Beschreibung, welche auf Ihrer persönlichen URL-Seite erscheinen wird.",
|
||||
"nearly_there": "Fast fertig",
|
||||
"nearly_there_instructions": "Zu guter Letzt: Ein Foto und eine Kurzbeschreibung zu Ihnen helfen, öfter gebucht zu werden, da Kunden dann besser wissen, wen sie buchen.",
|
||||
"nearly_there_instructions": "Zu guter Letzt: Ein Foto und eine Kurzbeschreibung zu Ihnen helfen, öfter gebucht zu werden, da Kunden dann genauer wissen, bei wem sie einen Termin buchen.",
|
||||
"set_availability_instructions": "Definieren Sie Zeiträume, wenn Sie wiederkehrend verfügbar sind. Sie können später weitere Zeiträume erstellen und verschiedenen Kalendern zuordnen.",
|
||||
"set_availability": "Verfügbarkeit festlegen",
|
||||
"continue_without_calendar": "Ohne Kalender fortfahren",
|
||||
@@ -318,11 +318,11 @@
|
||||
"password_has_been_reset_login": "Ihr Passwort wurde zurückgesetzt. Sie können sich jetzt mit Ihrem neu erstellten Passwort anmelden.",
|
||||
"layout": "Layout",
|
||||
"bookerlayout_default_title": "Standardansicht",
|
||||
"bookerlayout_description": "Sie können mehrere auswählen und Ihre Bucher können die Ansicht wechseln.",
|
||||
"bookerlayout_description": "Sie können mehrere auswählen und Ihre Bucher können anschließend die Ansicht wechseln.",
|
||||
"bookerlayout_user_settings_title": "Buchungslayout",
|
||||
"bookerlayout_user_settings_description": "Sie können mehrere auswählen und Bucher können die Ansicht wechseln. Dies kann pro Termin überschrieben werden.",
|
||||
"bookerlayout_user_settings_description": "Sie können mehrere auswählen und Bucher können anschließend die Ansicht wechseln. Dies kann pro Termin überschrieben werden.",
|
||||
"bookerlayout_month_view": "Monat",
|
||||
"bookerlayout_week_view": "Woche",
|
||||
"bookerlayout_week_view": "Wöchentlich",
|
||||
"bookerlayout_column_view": "Spalte",
|
||||
"bookerlayout_error_min_one_enabled": "Es muss mindestens ein Layout aktiviert sein.",
|
||||
"bookerlayout_error_default_not_enabled": "Das Layout, das Sie als Standardansicht ausgewählt haben, ist nicht Teil der aktivierten Layouts.",
|
||||
@@ -404,6 +404,8 @@
|
||||
"allow_dynamic_booking_tooltip": "Gruppenbuchungslinks, die dynamisch durch Hinzufügen mehrerer Benutzernamen mit einem '+' erstellt werden können. Beispiel: '{{appName}}/bailey+peer'",
|
||||
"allow_dynamic_booking": "Ermöglichen Sie es den Teilnehmenden, Sie über dynamische Gruppenbuchungen zu buchen",
|
||||
"dynamic_booking": "Dynamische Gruppenlinks",
|
||||
"allow_seo_indexing": "Suchmaschinen erlauben, auf Ihre öffentlichen Inhalte zuzugreifen",
|
||||
"seo_indexing": "Suchmaschinen-Indexierung erlauben",
|
||||
"email": "E-Mail",
|
||||
"email_placeholder": "max@example.com",
|
||||
"full_name": "Vollständiger Name",
|
||||
@@ -426,8 +428,8 @@
|
||||
"team_webhooks": "Team-Webhooks",
|
||||
"create_new_webhook_to_account": "Erstellen Sie einen neuen Webhook in Ihrem Account",
|
||||
"new_webhook": "Neuer Webhook",
|
||||
"receive_cal_meeting_data": "Erhalten Sie {{appName}} Termindaten unter einer bestimmten URL in Echtzeit, wenn ein Termin geplant oder abgesagt wird.",
|
||||
"receive_cal_event_meeting_data": "Erhalten Sie {{appName}} Termindaten unter einer bestimmten URL in Echtzeit, wenn dieser Termin geplant oder abgesagt wird.",
|
||||
"receive_cal_meeting_data": "Erhalten Sie in Echtzeit {{appName}}-Termindaten unter einer bestimmten URL, wenn ein Termin geplant oder abgesagt wird.",
|
||||
"receive_cal_event_meeting_data": "Erhalten Sie in Echtzeit {{appName}}-Termindaten unter einer bestimmten URL, wenn dieser Termin geplant oder abgesagt wird.",
|
||||
"responsive_fullscreen_iframe": "Responsives Vollbild-iFrame",
|
||||
"loading": "Wird geladen...",
|
||||
"deleting": "Lösche...",
|
||||
@@ -565,7 +567,7 @@
|
||||
"team_description": "Ein paar Sätze über Ihr Team auf der öffentlichen Teamseite.",
|
||||
"org_description": "Ein paar Sätze zu Ihrer Organisation. Dies wird auf der URL-Seite Ihrer Organisation erscheinen.",
|
||||
"members": "Mitglieder",
|
||||
"organization_members": "Organisationsmitglieder",
|
||||
"organization_members": "Mitglieder der Organization",
|
||||
"member": "Mitglied",
|
||||
"number_member_one": "{{count}} Mitglied",
|
||||
"number_member_other": "{{count}} Mitglieder",
|
||||
@@ -600,7 +602,7 @@
|
||||
"confirm_all": "Alle bestätigen",
|
||||
"disband_team": "Team auflösen",
|
||||
"disband_team_confirmation_message": "Bist du sicher, dass du dieses Team auflösen möchtest? Jeder der diesen Team-Link erhalten hat, kann Sie nicht mehr buchen.",
|
||||
"disband_org": "Organisation auflösen",
|
||||
"disband_org": "Organization auflösen",
|
||||
"disband_org_confirmation_message": "Sind Sie sicher, dass Sie diese Organisation auflösen möchten? Alle Teams und Mitglieder werden gelöscht.",
|
||||
"remove_member_confirmation_message": "Sind Sie sicher, dass Sie dieses Mitglied aus dem Team entfernen möchten?",
|
||||
"confirm_disband_team": "Ja, Team auflösen",
|
||||
@@ -713,7 +715,7 @@
|
||||
"create_team_to_get_started": "Erstellen Sie ein Team um loszulegen",
|
||||
"teams": "Teams",
|
||||
"team": "Team",
|
||||
"organization": "Organisation",
|
||||
"organization": "Organization",
|
||||
"team_billing": "Abrechnung der Teams",
|
||||
"team_billing_description": "Verwalte die Abrechungen deines Teams",
|
||||
"upgrade_to_flexible_pro_title": "Wir haben die Abrechnung für Teams geändert",
|
||||
@@ -924,7 +926,7 @@
|
||||
"create_events_on": "Erstelle Termine in:",
|
||||
"enterprise_license": "Das ist eine Enterprise-Funktion",
|
||||
"enterprise_license_description": "Um diese Funktion zu aktivieren, holen Sie sich einen Deployment-Schlüssel von der {{consoleUrl}}-Konsole und fügen Sie ihn als CALCOM_LICENSE_KEY zu Ihrer .env hinzu. Wenn Ihr Team bereits eine Lizenz hat, wenden Sie sich bitte an {{supportMail}} für Hilfe.",
|
||||
"enterprise_license_development": "Sie können diese Funktion im Entwicklungsmodus testen. Zur Nutzung im Produktionsmodus, besuchen Sie bitte <2>/auth/setup</2>, um einen Lizenzschlüssel einzugeben.",
|
||||
"enterprise_license_development": "Sie können diese Funktion im Entwicklungsmodus testen. Zur Nutzung im regulären Arbeitsumfeld, besuchen Sie bitte <2>/auth/setup</2>, um einen Lizenzschlüssel einzugeben.",
|
||||
"missing_license": "Lizenz fehlt",
|
||||
"signup_requires": "Kommerzielle Lizenz erforderlich",
|
||||
"signup_requires_description": "{{companyName}} bietet zur Zeit keine kostenlose Open-Source-Version der Anmeldeseite an. Um vollen Zugriff auf die Registrierungskomponenten zu erhalten, müssen Sie eine kommerzielle Lizenz erwerben. Für den persönlichen Gebrauch empfehlen wir die Prisma Data Platform oder jede andere Postgres-Schnittstelle zur Erstellung von Accounts.",
|
||||
@@ -1018,7 +1020,7 @@
|
||||
"user_impersonation_description": "Erlaubt es unserem Support-Team, sich vorübergehend mit Ihrem Konto anzumelden, um jegliche Probleme, die Sie gemeldet haben, schneller zu lösen.",
|
||||
"team_impersonation_description": "Ermöglicht den Team-Administratoren, sich vorübergehend als Sie einzuloggen.",
|
||||
"make_team_private": "Team privat stellen",
|
||||
"make_team_private_description": "Deine Teammitglieder können keine anderen Teammitglieder sehen, wenn dies aktiviert ist.",
|
||||
"make_team_private_description": "Wenn diese Einstellung aktiv ist, können deine Teammitglieder keine anderen Teammitglieder sehen.",
|
||||
"you_cannot_see_team_members": "Sie können nicht alle Teammitglieder eines privaten Teams sehen.",
|
||||
"allow_booker_to_select_duration": "Bucher erlauben, die Länge zu wählen",
|
||||
"impersonate_user_tip": "Alle Verwendungen dieser Funktion werden geprüft.",
|
||||
@@ -1351,9 +1353,9 @@
|
||||
"event_one": "Ereignis",
|
||||
"event_other": "Ereignisse",
|
||||
"profile_team_description": "Einstellungen für Ihr Teamprofil verwalten",
|
||||
"profile_org_description": "Einstellungen für Ihr Organisationsprofil verwalten",
|
||||
"profile_org_description": "Einstellungen für Ihr Organization-Profil verwalten",
|
||||
"members_team_description": "Benutzer in der Gruppe",
|
||||
"organization_description": "Administratoren und Mitglieder in Ihrer Organisation verwalten",
|
||||
"organization_description": "Administratoren und Mitglieder in Ihrer Organization verwalten",
|
||||
"team_url": "Team-URL",
|
||||
"team_members": "Teammitglieder",
|
||||
"more": "Mehr",
|
||||
@@ -1499,7 +1501,7 @@
|
||||
"yearly": "Jährlich",
|
||||
"checkout": "Kasse",
|
||||
"your_team_disbanded_successfully": "Ihr Team wurde erfolgreich aufgelöst",
|
||||
"your_org_disbanded_successfully": "Ihre Organisation wurde erfolgreich aufgelöst",
|
||||
"your_org_disbanded_successfully": "Ihre Organization wurde erfolgreich aufgelöst",
|
||||
"error_creating_team": "Fehler beim Erstellen des Teams",
|
||||
"you": "Sie",
|
||||
"resend_email": "E-Mail erneut senden",
|
||||
@@ -1511,7 +1513,7 @@
|
||||
"url_taken": "Diese URL ist bereits vergeben",
|
||||
"problem_registering_domain": "Es gab ein Problem bei der Registrierung der Subdomain, bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator",
|
||||
"team_publish": "Team veröffentlichen",
|
||||
"number_text_notifications": "Telefonnummer (Text-Benachrichtigungen)",
|
||||
"number_text_notifications": "Telefonnummer (Textbenachrichtigungen)",
|
||||
"attendee_email_variable": "Teilnehmer E-Mail",
|
||||
"attendee_email_info": "Die E-Mail-Adresse der buchenden Person",
|
||||
"kbar_search_placeholder": "Geben Sie einen Befehl ein oder suchen Sie ...",
|
||||
@@ -1534,8 +1536,8 @@
|
||||
"find_the_best_person": "Finden Sie die beste verfügbare Person und rotieren Sie durch Ihr Team.",
|
||||
"fixed_round_robin": "Festgelegter Round Robin",
|
||||
"add_one_fixed_attendee": "Fügen Sie einen festen Teilnehmer und einen Round Robin mit einer Reihe von Teilnehmern hinzu.",
|
||||
"calcom_is_better_with_team": "{{appName}} ist mit Teams besser",
|
||||
"the_calcom_team": "Das {{companyName}} Team",
|
||||
"calcom_is_better_with_team": "{{appName}} ist mit Teams noch besser",
|
||||
"the_calcom_team": "Das {{companyName}}-Team",
|
||||
"add_your_team_members": "Fügen Sie Ihre Teammitglieder zu Ihren Termintypen hinzu. Nutzen Sie kollektive Planung, um alle einzubinden oder finden Sie die geeignetste Person mit der Round Robin Planung.",
|
||||
"booking_limit_reached": "Das Buchungslimit für diesen Termintyp wurde erreicht",
|
||||
"duration_limit_reached": "Das Zeitlimit für diesen Termintyp wurde erreicht",
|
||||
@@ -1688,7 +1690,7 @@
|
||||
"scheduler": "{Scheduler}",
|
||||
"no_workflows": "Keine Workflows",
|
||||
"change_filter": "Ändern Sie den Filter, um Ihre eigenen und Ihre Team-Workflows anzuzeigen.",
|
||||
"change_filter_common": "Ändern Sie Ihre Filteroptionen um die Ergebnisse zu sehen.",
|
||||
"change_filter_common": "Passen Sie Ihre Filteroptionen an, um die Ergebnisse zu sehen.",
|
||||
"no_results_for_filter": "Keine Ergebnisse für diesen Filter",
|
||||
"recommended_next_steps": "Empfohlene nächste Schritte",
|
||||
"create_a_managed_event": "Einen verwalteten Ereignistyp erstellen",
|
||||
@@ -1700,7 +1702,7 @@
|
||||
"no_longer_attending": "Sie nehmen an diesem Termin nicht mehr teil",
|
||||
"attendee_no_longer_attending_subject": "Ein Teilnehmer nimmt nicht mehr an {{title}} am {{date}} teil",
|
||||
"attendee_no_longer_attending": "Ein Teilnehmer nimmt nicht mehr an Ihrem Termin teil",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}} hat abgesagt. Das bedeutet, dass ein Platz für dieses Zeitfenster geöffnet wurde",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}} hat abgesagt. Dies bedeutet, dass ein Platz in diesem Zeitfenster frei wurde",
|
||||
"create_event_on": "Erstelle Termin am",
|
||||
"create_routing_form_on": "Weiterleitungsformular erstellen am",
|
||||
"default_app_link_title": "Standard-App-Link festlegen",
|
||||
@@ -1753,7 +1755,7 @@
|
||||
"spot_popular_event_types": "Machen Sie beliebte Ereignistypen ausfindig",
|
||||
"spot_popular_event_types_description": "Sehen Sie, welche Ihrer Ereignistypen die meisten Klicks und Buchungen erhalten",
|
||||
"no_responses_yet": "Noch keine Antworten",
|
||||
"no_routes_defined": "Keine Routen definiert",
|
||||
"no_routes_defined": "Keine Weiterleitungsrouten definiert",
|
||||
"this_will_be_the_placeholder": "Dies wird der Platzhalter sein",
|
||||
"error_booking_event": "Bei der Buchung dieses Termins ist ein Fehler aufgetreten, bitte aktualisieren Sie die Seite und versuchen Sie es erneut",
|
||||
"timeslot_missing_title": "Kein Zeitfenster ausgewählt",
|
||||
@@ -1896,68 +1898,69 @@
|
||||
"first_event_type_webhook_description": "Erstellen Sie Ihren ersten Webhook für diesen Termintypen",
|
||||
"install_app_on": "App installieren auf",
|
||||
"create_for": "Erstellen für",
|
||||
"setup_organization": "Eine Organisation einrichten",
|
||||
"organization_banner_description": "Schaffen Sie eine Umgebung, in der Teams gemeinsame Apps, Workflows und Termintypen mit Round Robin und kollektiver Terminplanung erstellen können.",
|
||||
"organization_banner_title": "Verwalten Sie Organisationen mit mehreren Teams",
|
||||
"set_up_your_organization": "Ihre Organisation einrichten",
|
||||
"organizations_description": "Organisationen sind geteilte Umgebungen, in denen Teams gemeinsame Termintypen, Apps, Workflows und mehr erstellen können.",
|
||||
"must_enter_organization_name": "Es muss ein Organisationsname eingegeben werden",
|
||||
"must_enter_organization_admin_email": "Sie müssen Ihre Organisations-Mailadresse eingeben",
|
||||
"admin_email": "Ihre Organisations-E-Mail-Adresse",
|
||||
"currency": "Währung",
|
||||
"setup_organization": "Eine Organization einrichten",
|
||||
"organization_banner_description": "Schaffen Sie Umgebungen, in der Teams gemeinsame Apps, Workflows und Termintypen mit Round Robin und kollektiver Terminplanung erstellen können.",
|
||||
"organization_banner_title": "Verwalten Sie Organizations mit mehreren Teams",
|
||||
"set_up_your_organization": "Ihre Organization einrichten",
|
||||
"organizations_description": "Organizations sind geteilte Umgebungen, in denen Teams gemeinsame Termintypen, Apps, Workflows und mehr erstellen können.",
|
||||
"must_enter_organization_name": "Es muss ein Name für die Organization eingegeben werden",
|
||||
"must_enter_organization_admin_email": "Sie müssen Ihre Organization-Mailadresse eingeben\n",
|
||||
"admin_email": "Ihre Organization-E-Mail-Adresse",
|
||||
"admin_username": "Benutzername des Administrators",
|
||||
"organization_name": "Name der Organisation",
|
||||
"organization_url": "URL der Organisation",
|
||||
"organization_verify_header": "Bestätigen Sie Ihre Organisations-Mailadresse",
|
||||
"organization_verify_email_body": "Bitte verwenden Sie den folgenden Code, um Ihre E-Mail-Adresse zu bestätigen, um die Einrichtung Ihrer Organisation fortzusetzen.",
|
||||
"organization_name": "Name der Organization",
|
||||
"organization_url": "URL der Organization ",
|
||||
"organization_verify_header": "Bestätigen Sie Ihre Organization-Mailadresse",
|
||||
"organization_verify_email_body": "Bitte verwenden Sie den folgenden Code, um Ihre E-Mail-Adresse zu bestätigen, um die Einrichtung Ihrer Organization fortzusetzen.",
|
||||
"additional_url_parameters": "Zusätzliche URL-Parameter",
|
||||
"about_your_organization": "Über Ihre Organisation",
|
||||
"about_your_organization_description": "Organisationen sind geteilte Umgebungen, in denen Sie mehrere Teams mit gemeinsamen Mitgliedern, Termintypen, Apps, Workflows und mehr erstellen können.",
|
||||
"about_your_organization": "Über Ihre Organization",
|
||||
"about_your_organization_description": "Organizations sind geteilte Umgebungen, in denen Sie mehrere Teams mit gemeinsamen Mitgliedern, Termintypen, Apps, Workflows und mehr erstellen können.\n",
|
||||
"create_your_teams": "Erstellen Sie Ihre Teams",
|
||||
"create_your_teams_description": "Fangen Sie an, gemeinsam zu planen, indem Sie Ihre Teammitglieder zu Ihrer Organisation hinzufügen",
|
||||
"invite_organization_admins": "Laden Sie die Administratoren Ihrer Organisation ein",
|
||||
"invite_organization_admins_description": "Diese Administratoren haben Zugriff auf alle Teams in Ihrer Organisation. Sie können Team-Administratoren und -mitglieder später hinzufügen.",
|
||||
"create_your_teams_description": "Fangen Sie an, gemeinsam zu planen, indem Sie Ihre Teammitglieder zu Ihrer Organization hinzufügen",
|
||||
"invite_organization_admins": "Laden Sie die Administratoren Ihrer Organization ein",
|
||||
"invite_organization_admins_description": "Diese Administratoren haben Zugriff auf alle Teams in Ihrer Organization. Sie können Team-Administratoren und -mitglieder später hinzufügen.",
|
||||
"set_a_password": "Legen Sie ein Passwort fest",
|
||||
"set_a_password_description": "Dies wird ein neues Benutzerkonto mit Ihrer Organisations-Mailadresse und diesem Passwort erstellen.",
|
||||
"organization_logo": "Logo der Organisation",
|
||||
"organization_about_description": "Ein paar Sätze zu Ihrer Organisation. Dies wird auf der öffentlichen Profilseite Ihrer Organisation erscheinen.",
|
||||
"set_a_password_description": "Dies wird ein neues Benutzerkonto mit Ihrer Organization-Mailadresse und diesem Passwort erstellen.",
|
||||
"organization_logo": "Logo der Organization",
|
||||
"organization_about_description": "Ein paar Sätze zu Ihrer Organization. Dies wird auf der öffentlichen Profilseite Ihrer Organization erscheinen.",
|
||||
"ill_do_this_later": "Ich werde das später tun",
|
||||
"verify_your_email": "Bestätigen Sie Ihre E-Mail",
|
||||
"verify_your_email": "Bestätigen Sie Ihre E-Mail-Adresse",
|
||||
"enter_digit_code": "Geben Sie den 6-stelligen Code ein, den wir an {{email}} gesendet haben",
|
||||
"verify_email_organization": "Bestätigen Sie Ihre E-Mail, um eine Organisation zu erstellen",
|
||||
"verify_email_organization": "Bestätigen Sie Ihre E-Mail-Adresse, um eine Organization zu erstellen",
|
||||
"code_provided_invalid": "Der eingegebene Code ist ungültig, versuchen Sie es erneut",
|
||||
"email_already_used": "Die E-Mail-Adresse wird bereits verwendet",
|
||||
"organization_admin_invited_heading": "Sie wurden eingeladen, ein Mitglied von {{orgName}} zu werden",
|
||||
"organization_admin_invited_body": "Schließen Sie sich Ihrem Team bei {{orgName}} an und konzentrieren Sie sich auf Ihre Meetings, nicht auf das Planen von Meetings!",
|
||||
"duplicated_slugs_warning": "Die folgenden Teams konnten aufgrund von doppelten Slugs nicht erstellt werden: {{slugs}}",
|
||||
"team_names_empty": "Teamnamen dürfen nicht leer sein",
|
||||
"team_names_repeated": "Teamnamen dürfen nicht wiederholt vorkommen",
|
||||
"user_belongs_organization": "Der Benutzer gehört einer Organisation an",
|
||||
"org_no_teams_yet": "Diese Organisation hat noch keine Teams",
|
||||
"team_names_repeated": "Teamnamen dürfen nicht bereits verwendet werden",
|
||||
"user_belongs_organization": "Der Benutzer gehört einer Organization an",
|
||||
"org_no_teams_yet": "Diese Organization hat noch keine Teams",
|
||||
"org_no_teams_yet_description": "Falls Sie ein Administrator sind, sollten Sie unbedingt Teams erstellen, welche hier angezeigt werden können.",
|
||||
"set_up": "Einrichten",
|
||||
"set_up_your_profile": "Richten Sie Ihr Profil ein",
|
||||
"set_up_your_profile_description": "Lassen Sie Leute wissen, wer Sie innerhalb von {{orgName}} sind und wann sie mit Ihrem öffentlichen Link arbeiten.",
|
||||
"set_up_your_profile_description": "Lassen Sie Leute beim Klicken auf Ihren öffentlichen Link wissen, welche Funktion Sie innerhalb von {{orgName}} haben.",
|
||||
"my_profile": "Mein Profil",
|
||||
"my_settings": "Meine Einstellungen",
|
||||
"crm": "CRM",
|
||||
"messaging": "Nachrichten",
|
||||
"sender_id_info": "Name oder Nummer, welcher bzw. welche als Absender einer SMS angezeigt wird (einige Länder erlauben keine alphanumerischen Absender-IDs)",
|
||||
"org_admins_can_create_new_teams": "Nur der Administrator Ihrer Organisation kann neue Teams erstellen",
|
||||
"org_admins_can_create_new_teams": "Nur der Administrator Ihrer Organization kann neue Teams erstellen",
|
||||
"google_new_spam_policy": "Die neuen Spam-Richtlinien von Google könnten verhindern, dass Sie E-Mail- und Kalenderbenachrichtigungen zu dieser Buchung erhalten.",
|
||||
"resolve": "Beheben",
|
||||
"no_organization_slug": "Beim Erstellen von Teams für diese Organisation ist ein Fehler aufgetreten. URL Slug fehlt.",
|
||||
"org_name": "Name der Organisation",
|
||||
"org_url": "URL der Organisation",
|
||||
"copy_link_org": "Link zur Organisation kopieren",
|
||||
"404_the_org": "Die Organisation",
|
||||
"resolve": "Problem lösen",
|
||||
"no_organization_slug": "Beim Erstellen von Teams für diese Organization ist ein Fehler aufgetreten. URL-Slug fehlt.",
|
||||
"org_name": "Name der Organization",
|
||||
"org_url": "URL der Organization",
|
||||
"copy_link_org": "Link zur Organization kopieren",
|
||||
"404_the_org": "Die Organization",
|
||||
"404_the_team": "Das Team",
|
||||
"404_claim_entity_org": "Beanspruchen Sie Ihre Subdomain für Ihre Organisation",
|
||||
"404_claim_entity_org": "Beanspruchen Sie Ihre Subdomain für Ihre Organization",
|
||||
"404_claim_entity_team": "Dieses Team beanspruchen und gemeinsam mit der Verwaltung von Verfügbarkeitsplänen beginnen",
|
||||
"insights_all_org_filter": "Alle Apps",
|
||||
"insights_team_filter": "Team: {{teamName}}",
|
||||
"insights_user_filter": "Benutzer: {{userName}}",
|
||||
"insights_subtitle": "Sehen Sie sich Buchungs-Insights über Ihre Termine an",
|
||||
"custom_plan": "Benutzerdefinierter Plan",
|
||||
"insights_subtitle": "Sehen Sie sich Buchungs-Insights zu Ihren Termine an",
|
||||
"custom_plan": "Maßgeschneiderter Tarif",
|
||||
"email_embed": "E-Mail Einbettung",
|
||||
"add_times_to_your_email": "Zeiten zur E-Mail hinzufügen",
|
||||
"select_time": "Zeit auswählen",
|
||||
@@ -1971,10 +1974,13 @@
|
||||
"org_team_names_example_5": "z.B. Data Analytics Team",
|
||||
"org_max_team_warnings": "Weitere Teams können Sie zu einem späteren Zeitpunkt hinzufügen.",
|
||||
"what_is_this_meeting_about": "Worum geht es in diesem Termin?",
|
||||
"kyc_verification_information": "Aus Sicherheitsgründen müssen Sie Ihren {{teamOrAccount}} verifizieren, bevor Sie Textnachrichten an die Teilnehmer senden können. Bitte kontaktieren Sie uns unter <a>{{supportEmail}}</a> und geben Sie folgende Informationen an:",
|
||||
"org_admin_other_teams": "Weitere Teams",
|
||||
"no_other_teams_found": "Keine weiteren Teams gefunden",
|
||||
"no_other_teams_found_description": "Es gibt keine weiteren Teams in dieser Organisation.",
|
||||
"attendee_first_name_variable": "Vorname des Teilnehmers",
|
||||
"attendee_last_name_variable": "Nachname des Teilnehmers",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Zeichenketten über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
"my_availability": "Meine Verfügbarkeit",
|
||||
"team_availability": "Teamverfügbarkeit",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Code-Zeilen über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -407,6 +407,8 @@
|
||||
"allow_dynamic_booking_tooltip": "Group booking links that can be created dynamically by adding multiple usernames with a '+'. example: '{{appName}}/bailey+peer'",
|
||||
"allow_dynamic_booking": "Allow attendees to book you through dynamic group bookings",
|
||||
"dynamic_booking": "Dynamic group links",
|
||||
"allow_seo_indexing": "Allow search engines to access your public content",
|
||||
"seo_indexing": "Allow SEO Indexing",
|
||||
"email": "Email",
|
||||
"email_placeholder": "jdoe@example.com",
|
||||
"full_name": "Full name",
|
||||
@@ -560,6 +562,7 @@
|
||||
"leave": "Leave",
|
||||
"profile": "Profile",
|
||||
"my_team_url": "My team URL",
|
||||
"my_teams": "My teams",
|
||||
"team_name": "Team Name",
|
||||
"your_team_name": "Your team name",
|
||||
"team_updated_successfully": "Team updated successfully",
|
||||
@@ -806,7 +809,6 @@
|
||||
"add_new_event_type": "Add a new event type",
|
||||
"new_event_type_to_book_description": "Create a new event type for people to book times with.",
|
||||
"length": "Length",
|
||||
"people":"People",
|
||||
"minimum_booking_notice": "Minimum Notice",
|
||||
"offset_toggle": "Offset start times",
|
||||
"offset_toggle_description": "Offset timeslots shown to bookers by a specified number of minutes",
|
||||
@@ -870,6 +872,7 @@
|
||||
"account_managed_by_identity_provider_description": "To change your email, password, enable two-factor authentication and more, please visit your {{provider}} account settings.",
|
||||
"signin_with_google": "Sign in with Google",
|
||||
"signin_with_saml": "Sign in with SAML",
|
||||
"signin_with_saml_oidc": "Sign in with SAML/OIDC",
|
||||
"you_will_need_to_generate": "You will need to generate an access token from your old scheduling tool.",
|
||||
"import": "Import",
|
||||
"import_from": "Import from",
|
||||
@@ -927,7 +930,7 @@
|
||||
"verify_wallet": "Verify Wallet",
|
||||
"create_events_on": "Create events on",
|
||||
"enterprise_license": "This is an enterprise feature",
|
||||
"enterprise_license_description": "To enable this feature, have an administrator go to {{setupUrl}} to enter a license key. If a license key is already in place, please contact {{supportMail}} for help.",
|
||||
"enterprise_license_description": "To enable this feature, have an administrator go to <2>/auth/setup</2> to enter a license key. If a license key is already in place, please contact <5>{{SUPPORT_MAIL_ADDRESS}}</5> for help.",
|
||||
"enterprise_license_development": "You can test this feature on development mode. For production usage please have an administrator go to <2>/auth/setup</2> to enter a license key.",
|
||||
"missing_license": "Missing License",
|
||||
"signup_requires": "Commercial license required",
|
||||
@@ -1263,6 +1266,7 @@
|
||||
"error_updating_settings": "Error updating settings",
|
||||
"personal_cal_url": "My personal {{appName}} URL",
|
||||
"bio_hint": "A few sentences about yourself. this will appear on your personal url page.",
|
||||
"user_has_no_bio": "This user has not added a bio yet.",
|
||||
"delete_account_modal_title": "Delete Account",
|
||||
"confirm_delete_account_modal": "Are you sure you want to delete your {{appName}} account?",
|
||||
"delete_my_account": "Delete my account",
|
||||
@@ -1578,7 +1582,6 @@
|
||||
"apps_settings": "Apps settings",
|
||||
"fill_this_field": "Please fill in this field",
|
||||
"options": "Options",
|
||||
"no_options_available":"No options available",
|
||||
"enter_option": "Enter Option {{index}}",
|
||||
"add_an_option": "Add an option",
|
||||
"radio": "Radio",
|
||||
@@ -1720,7 +1723,7 @@
|
||||
"identifier": "Identifier",
|
||||
"duplicate_email": "Email is duplicate",
|
||||
"booking_with_payment_cancelled": "Paying for this event is no longer possible",
|
||||
"booking_with_payment_cancelled_already_paid": "A refund for this booking payment it's on the way.",
|
||||
"booking_with_payment_cancelled_already_paid": "A refund for this booking payment is on its way.",
|
||||
"booking_with_payment_cancelled_refunded": "This booking payment has been refunded.",
|
||||
"booking_confirmation_failed": "Booking confirmation failed",
|
||||
"not_enough_seats": "Not enough seats",
|
||||
@@ -1903,6 +1906,7 @@
|
||||
"first_event_type_webhook_description": "Create your first webhook for this event type",
|
||||
"install_app_on": "Install app on",
|
||||
"create_for": "Create for",
|
||||
"currency": "Currency",
|
||||
"setup_organization": "Setup an Organization",
|
||||
"organization_banner_description": "Create an environments where your teams can create shared apps, workflows and event types with round-robin and collective scheduling.",
|
||||
"organization_banner_title": "Manage organizations with multiple teams",
|
||||
@@ -1979,6 +1983,11 @@
|
||||
"org_team_names_example_5": "e.g. Data Analytics Team",
|
||||
"org_max_team_warnings": "You will be able to add more teams later on.",
|
||||
"what_is_this_meeting_about": "What is this meeting about?",
|
||||
"add_to_team":"Add to team",
|
||||
"remove_users_from_org": "Remove users from organization",
|
||||
"remove_users_from_org_confirm":"Are you sure you want to remove {{userCount}} users from this organization?",
|
||||
"user_has_no_schedules":"This user has not setup any schedules yet",
|
||||
"user_isnt_in_any_teams":"This user is not in any teams",
|
||||
"requires_booker_email_verification": "Requires booker email verification",
|
||||
"description_requires_booker_email_verification": "To ensure booker's email verification before scheduling events",
|
||||
"requires_confirmation_mandatory": "Text messages can only be sent to attendees when event type requires confirmation.",
|
||||
@@ -1989,13 +1998,33 @@
|
||||
"kyc_verification": "KYC Verification",
|
||||
"organizations": "Organizations",
|
||||
"org_admin_other_teams": "Other teams",
|
||||
"org_admin_other_teams_description": "Here you can see teams inside your organization but that you are not part of. You can add yourself to them if needed.",
|
||||
"org_admin_other_teams_description": "Here you can see teams inside your organization that you are not part of. You can add yourself to them if needed.",
|
||||
"no_other_teams_found": "No other teams found",
|
||||
"no_other_teams_found_description": "There are no other teams in this organization.",
|
||||
"attendee_first_name_variable": "Attendee first name",
|
||||
"attendee_last_name_variable": "Attendee last name",
|
||||
"attendee_first_name_info": "The person booking's first name",
|
||||
"attendee_last_name_info": "The person booking's last name",
|
||||
"me": "Me",
|
||||
"verify_team_tooltip": "Verify your team to enable sending messages to attendees",
|
||||
"member_removed": "Member removed",
|
||||
"my_availability": "My Availability",
|
||||
"team_availability": "Team Availability",
|
||||
"admin_org_notification_email_subject": "New organization created: pending action",
|
||||
"hi_admin": "Hi Administrator",
|
||||
"admin_org_notification_email_title": "An organization requires DNS setup",
|
||||
"admin_org_notification_email_body_part1": "An organization with slug \"{{orgSlug}}\" was created.<br /><br />Please be sure to configure your DNS registry to point the subdomain corresponding to the new organization to where the main app is running. Otherwise the organization will not work.<br /><br />Here are just the very basic options to configure a subdomain to point to their app so it loads the organization profile page.<br /><br />You can do it either with the A Record:",
|
||||
"admin_org_notification_email_body_part2": "Or the CNAME record:",
|
||||
"admin_org_notification_email_body_part3": "Once you configure the subdomain, please mark the DNS configuration as done in Organizations Admin Settings.",
|
||||
"admin_org_notification_email_cta": "Go to Organizations Admin Settings",
|
||||
"org_has_been_processed": "Org has been processed",
|
||||
"org_error_processing": "There has been an error processing this organization",
|
||||
"orgs_page_description": "A list of all organizations. Accepting an organization will allow all users with that email domain to sign up WITHOUT email verifciation.",
|
||||
"unverified": "Unverified",
|
||||
"dns_missing": "DNS Missing",
|
||||
"mark_dns_configured": "Mark as DNS configured",
|
||||
"value": "Value",
|
||||
"your_organization_updated_sucessfully": "Your organization updated successfully",
|
||||
"seat_options_doesnt_multiple_durations": "Seat option doesn't support multiple durations",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
"calcom_explained_new_user": "¡Termine de configurar su cuenta de {{appName}}! Solo le faltan unos pasos para resolver todos sus problemas de programación.",
|
||||
"have_any_questions": "¿Tienes preguntas? Estamos aquí para ayudar.",
|
||||
"reset_password_subject": "{{appName}}: Instrucciones para restablecer la contraseña",
|
||||
"verify_email_subject": "{{appName}}: verifique su cuenta",
|
||||
"verify_email_subject": "{{appName}}: Verifique su cuenta",
|
||||
"check_your_email": "Revise su correo electrónico",
|
||||
"verify_email_page_body": "Enviamos un correo electrónico a {{email}}. Es importante que verifique su dirección de correo electrónico para garantizar que {{appName}} le ofrezca el mejor servicio de entrega de correos y calendarios.",
|
||||
"verify_email_banner_body": "Verifique su dirección de correo electrónico para garantizar la mejor entrega de correo electrónico y calendario",
|
||||
"verify_email_email_header": "Verifique su dirección de correo electrónico",
|
||||
"verify_email_email_button": "Verificar correo electrónico",
|
||||
"verify_email_email_body": "Verifique su dirección de correo electrónico al hacer clic en el botón a continuación.",
|
||||
"verify_email_email_link_text": "Este es el enlace en caso de que no le guste hacer clic en los botones:",
|
||||
"verify_email_email_link_text": "Este es el enlace en caso de que no prefiera hacer clic en los botones:",
|
||||
"email_sent": "Correo electrónico enviado correctamente",
|
||||
"event_declined_subject": "Rechazado: {{title}} en {{date}}",
|
||||
"event_cancelled_subject": "Cancelado: {{title}} el {{date}}",
|
||||
@@ -130,7 +130,7 @@
|
||||
"upgrade_banner_action": "Actualizar aquí",
|
||||
"team_upgraded_successfully": "¡Tu equipo se actualizó con éxito!",
|
||||
"org_upgrade_banner_description": "Gracias por probar nuestro nuevo plan de equipo. Notamos que su equipo \"{{teamName}}\" necesita actualizarse.",
|
||||
"org_upgraded_successfully": "Su organización se actualizó con éxito.",
|
||||
"org_upgraded_successfully": "Su Organization se actualizó con éxito.",
|
||||
"use_link_to_reset_password": "Utilice el enlace de abajo para restablecer su contraseña",
|
||||
"hey_there": "Hola,",
|
||||
"forgot_your_password_calcom": "¿Olvidaste tu contraseña? - {{appName}}",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "Administre los ajustes para el idioma y la zona horaria de su equipo",
|
||||
"few_sentences_about_yourself": "Unas pocas frases sobre ti mismo. Esto aparecerá en tu página de url personal.",
|
||||
"nearly_there": "¡Ya casi está!",
|
||||
"nearly_there_instructions": "Lo último, una breve descripción sobre usted y una foto realmente lo ayudan a obtener reservas y a que las personas sepan con quién están reservando.",
|
||||
"nearly_there_instructions": "Lo último, una breve descripción sobre usted y una foto lo ayudan a obtener reservas y a que las personas sepan con quién están reservando.",
|
||||
"set_availability_instructions": "Defina los intervalos de tiempo cuando esté disponible de forma recurrente. Puede crear más tarde y asignarlos a diferentes calendarios.",
|
||||
"set_availability": "Establecer Disponibilidad",
|
||||
"continue_without_calendar": "Continuar sin calendario",
|
||||
@@ -306,9 +306,9 @@
|
||||
"password_has_been_reset_login": "Su contraseña ha sido restablecida. Ahora puede iniciar sesión con su nueva contraseña.",
|
||||
"layout": "Diseño",
|
||||
"bookerlayout_default_title": "Vista predeterminada",
|
||||
"bookerlayout_description": "Puede seleccionar varios y sus reservadores pueden cambiar de vista.",
|
||||
"bookerlayout_description": "Puede seleccionar varios y quienes le reserven pueden cambiar de vista.",
|
||||
"bookerlayout_user_settings_title": "Diseño de reserva",
|
||||
"bookerlayout_user_settings_description": "Puede seleccionar varios y los reservadores pueden cambiar de vista. Esto se puede anular por evento.",
|
||||
"bookerlayout_user_settings_description": "Puede seleccionar varios y quienes le reservan pueden cambiar de vista. Esto se puede anular por evento.",
|
||||
"bookerlayout_month_view": "Mes",
|
||||
"bookerlayout_week_view": "Semanal",
|
||||
"bookerlayout_column_view": "Columna",
|
||||
@@ -1327,7 +1327,7 @@
|
||||
"download_responses_description": "Descargue todas las respuestas de su formulario en formato CSV.",
|
||||
"download": "Descargar",
|
||||
"download_recording": "Descargar grabación",
|
||||
"recording_from_your_recent_call": "Una grabación de su llamada reciente en {{appName}} está lista para descargarla",
|
||||
"recording_from_your_recent_call": "Una grabación de su llamada reciente en {{appName}} está lista para descargar",
|
||||
"create_your_first_form": "Crea tu primer formulario",
|
||||
"create_your_first_form_description": "Con los formularios de orientación puedes hacer preguntas calificadoras y encaminarte hacia la persona o tipo de evento correctos.",
|
||||
"create_your_first_webhook": "Crea tu primer Webhook",
|
||||
@@ -1661,7 +1661,7 @@
|
||||
"email_user_cta": "Ver la invitación",
|
||||
"email_no_user_invite_heading": "Lo invitaron a unirse a {{appName}} {{entity}}",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} lo invitó a unirse a su equipo en {{appName}}. {{appName}} es el programador de eventos que les permite a usted y a su equipo programar reuniones sin necesidad de enviar correos electrónicos.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} lo ha invitado a unirse a su {{entity}} \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su {{entity}} programar reuniones sin correos electrónicos de ida y vuelta.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} lo ha invitado a unirse a su {{entity}} \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su {{entity}} programar reuniones sin necesidad de correos electrónicos.",
|
||||
"email_no_user_invite_steps_intro": "Lo guiaremos a través de unos pocos pasos y disfrutará de una programación sin estrés con su {{entity}} en muy poco tiempo.",
|
||||
"email_no_user_step_one": "Elija su nombre de usuario",
|
||||
"email_no_user_step_two": "Conecte su cuenta de calendario",
|
||||
@@ -1687,7 +1687,7 @@
|
||||
"attendee_no_longer_attending": "Un asistente ya no asistirá a su evento",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}} ha cancelado. Esto significa que está disponible una plaza para esta franja horaria",
|
||||
"create_event_on": "Crear evento en",
|
||||
"create_routing_form_on": "Crear formulario de enrutamiento el",
|
||||
"create_routing_form_on": "Crear formulario de enrutamiento en",
|
||||
"default_app_link_title": "Establecer un enlace de aplicación predeterminado",
|
||||
"default_app_link_description": "Establecer un enlace de aplicación predeterminado permite que todos los tipos de eventos recién creados utilicen el enlace de aplicación que establezca.",
|
||||
"organizer_default_conferencing_app": "Aplicación por defecto del organizador",
|
||||
@@ -1934,7 +1934,7 @@
|
||||
"404_the_org": "La organización",
|
||||
"404_the_team": "El equipo",
|
||||
"404_claim_entity_org": "Reclame su subdominio para su organización",
|
||||
"404_claim_entity_team": "Reclama este equipo y empiece a gestionar los horarios de forma colectiva",
|
||||
"404_claim_entity_team": "Reclame este equipo y empiece a gestionar los horarios de forma colectiva",
|
||||
"insights_all_org_filter": "Todas las aplicaciones",
|
||||
"insights_team_filter": "Equipo: {{teamName}}",
|
||||
"insights_user_filter": "Usuario: {{userName}}",
|
||||
|
||||
@@ -407,6 +407,8 @@
|
||||
"allow_dynamic_booking_tooltip": "Les liens de réservation de groupe peuvent être créés dynamiquement en ajoutant plusieurs noms d'utilisateur séparés par un « + ». Exemple : « {{appName}}/bailey+peer ».",
|
||||
"allow_dynamic_booking": "Autoriser les participants à prendre rendez-vous avec vous via des réservations de groupe dynamiques",
|
||||
"dynamic_booking": "Liens de groupe dynamiques",
|
||||
"allow_seo_indexing": "Autorisez les moteurs de recherche à accéder à votre contenu public.",
|
||||
"seo_indexing": "Autoriser l'indexation SEO",
|
||||
"email": "E-mail",
|
||||
"email_placeholder": "jdoe@exemple.com",
|
||||
"full_name": "Nom complet",
|
||||
@@ -560,6 +562,7 @@
|
||||
"leave": "Quitter",
|
||||
"profile": "Profil",
|
||||
"my_team_url": "Lien de mon équipe",
|
||||
"my_teams": "Mes équipes",
|
||||
"team_name": "Nom de l'équipe",
|
||||
"your_team_name": "Nom de votre équipe",
|
||||
"team_updated_successfully": "Équipe mise à jour avec succès",
|
||||
@@ -607,7 +610,7 @@
|
||||
"disband_org_confirmation_message": "Voulez-vous vraiment dissoudre cette organisation ? Toutes les équipes et tous les membres seront supprimés.",
|
||||
"remove_member_confirmation_message": "Voulez-vous vraiment supprimer ce membre de l'équipe ?",
|
||||
"confirm_disband_team": "Oui, dissoudre l'équipe",
|
||||
"confirm_remove_member": "Oui, retirer le membre",
|
||||
"confirm_remove_member": "Oui, supprimer le membre",
|
||||
"remove_member": "Supprimer le membre",
|
||||
"manage_your_team": "Gérez votre équipe",
|
||||
"no_teams": "Vous n'avez pas encore d'équipe.",
|
||||
@@ -869,6 +872,7 @@
|
||||
"account_managed_by_identity_provider_description": "Pour modifier votre adresse e-mail et/ou votre mot de passe, activez l'authentification à deux facteurs et plus, veuillez consulter les paramètres de votre compte {{provider}}.",
|
||||
"signin_with_google": "Se connecter avec Google",
|
||||
"signin_with_saml": "Se connecter avec SAML",
|
||||
"signin_with_saml_oidc": "Se connecter avec SAML/OIDC",
|
||||
"you_will_need_to_generate": "Vous devrez générer un token d'accès à partir de votre ancien outil de planification.",
|
||||
"import": "Importer",
|
||||
"import_from": "Importer depuis",
|
||||
@@ -926,7 +930,7 @@
|
||||
"verify_wallet": "Vérifier le portefeuille",
|
||||
"create_events_on": "Créer des événements dans :",
|
||||
"enterprise_license": "Il s'agit d'une fonctionnalité d'entreprise",
|
||||
"enterprise_license_description": "Pour activer cette fonctionnalité, demandez à un administrateur d'accéder à {{setupUrl}} pour saisir une clé de licence. Si une clé de licence est déjà en place, veuillez contacter {{supportMail}} pour obtenir de l'aide.",
|
||||
"enterprise_license_description": "Pour activer cette fonctionnalité, demandez à un administrateur d'accéder à <2>/auth/setup</2> pour saisir une clé de licence. Si une clé de licence est déjà en place, veuillez contacter <5>{{SUPPORT_MAIL_ADDRESS}}</5> pour obtenir de l'aide.",
|
||||
"enterprise_license_development": "Vous pouvez tester cette fonctionnalité en mode développement. Pour une utilisation en production, veuillez demander à un administrateur d'aller à <2>/auth/setup</2> pour entrer une clé de licence.",
|
||||
"missing_license": "Licence manquante",
|
||||
"signup_requires": "Licence commerciale requise",
|
||||
@@ -1262,6 +1266,7 @@
|
||||
"error_updating_settings": "Erreur lors de la mise à jour des paramètres",
|
||||
"personal_cal_url": "Mon lien {{appName}} personnel",
|
||||
"bio_hint": "Quelques mots à propos de vous. Ces informations apparaîtront sur votre page publique.",
|
||||
"user_has_no_bio": "Cet utilisateur n'a pas encore ajouté de description.",
|
||||
"delete_account_modal_title": "Supprimer le compte",
|
||||
"confirm_delete_account_modal": "Voulez-vous vraiment supprimer votre compte {{appName}} ?",
|
||||
"delete_my_account": "Supprimer mon compte",
|
||||
@@ -1901,6 +1906,7 @@
|
||||
"first_event_type_webhook_description": "Créez votre premier webhook pour ce type d'événement",
|
||||
"install_app_on": "Installer l’application sur",
|
||||
"create_for": "Créer pour",
|
||||
"currency": "Devise",
|
||||
"setup_organization": "Configurer une organisation",
|
||||
"organization_banner_description": "Créez un environnement où vos équipes peuvent créer des applications partagées, des workflows et des types d'événements avec une planification round-robin et collective.",
|
||||
"organization_banner_title": "Gérer les organisations avec plusieurs équipes",
|
||||
@@ -1977,6 +1983,11 @@
|
||||
"org_team_names_example_5": "p. ex. Équipe d'analyse de données",
|
||||
"org_max_team_warnings": "Vous pourrez ajouter plus d'équipes plus tard.",
|
||||
"what_is_this_meeting_about": "En quoi consiste ce rendez-vous ?",
|
||||
"add_to_team": "Ajouter à l'équipe",
|
||||
"remove_users_from_org": "Supprimer des utilisateurs de l'organisation",
|
||||
"remove_users_from_org_confirm": "Voulez-vous vraiment supprimer {{userCount}} utilisateurs de cette organisation ?",
|
||||
"user_has_no_schedules": "Cet utilisateur n'a pas encore configuré de planning",
|
||||
"user_isnt_in_any_teams": "Cet utilisateur n'est dans aucune équipe",
|
||||
"requires_confirmation_mandatory": "Les messages ne peuvent être envoyés aux participants que lorsque le type d'événement nécessite une confirmation.",
|
||||
"kyc_verification_information": "Pour garantir la sécurité, vous devez vérifier votre {{teamOrAccount}} avant d'envoyer des messages aux participants. Veuillez nous contacter à <a>{{supportEmail}}</a> et fournir les informations suivantes :",
|
||||
"kyc_verification_documents": "<ul><li>Votre {{teamOrUser}}</li><li>Pour les entreprises : Joignez votre document de vérification d'entreprise</li><li>Pour les particuliers : Joignez une pièce d'identité</li></ul>",
|
||||
@@ -1990,6 +2001,22 @@
|
||||
"no_other_teams_found_description": "Il n'y a pas d'autres équipes dans cette organisation.",
|
||||
"attendee_first_name_variable": "Prénom du participant",
|
||||
"attendee_last_name_variable": "Nom du participant",
|
||||
"me": "Moi",
|
||||
"verify_team_tooltip": "Vérifiez votre équipe pour activer l'envoi de messages aux participants",
|
||||
"member_removed": "Membre supprimé",
|
||||
"my_availability": "Mes disponibilités",
|
||||
"team_availability": "Disponibilités de l'équipe",
|
||||
"admin_org_notification_email_subject": "Nouvelle organisation créée : action en attente",
|
||||
"admin_org_notification_email_title": "Une organisation nécessite une configuration DNS",
|
||||
"admin_org_notification_email_body_part2": "Ou l'enregistrement CNAME :",
|
||||
"admin_org_notification_email_body_part3": "Une fois le sous-domaine configuré, veuillez marquer la configuration DNS comme terminée dans les paramètres d'administration des organisations.",
|
||||
"admin_org_notification_email_cta": "Accéder aux paramètres d'administration des organisations",
|
||||
"org_error_processing": "Une erreur s'est produite lors du traitement de cette organisation",
|
||||
"orgs_page_description": "Une liste de toutes les organisations. Accepter une organisation permettra à tous les utilisateurs avec ce domaine de messagerie de s'inscrire SANS vérification d'e-mail.",
|
||||
"unverified": "Non vérifié",
|
||||
"dns_missing": "DNS manquant",
|
||||
"mark_dns_configured": "Marquer comme DNS configuré",
|
||||
"value": "Valeur",
|
||||
"your_organization_updated_sucessfully": "Votre organisation a été mise à jour avec succès",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Ajoutez vos nouvelles chaînes ci-dessus ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
"calcom_explained_new_user": "סיים להגדיר את החשבון של {{appName}}! אתה רק מספר צעדים מפתרון כל בעיות התזמון שלך.",
|
||||
"have_any_questions": "יש לך שאלות? אנחנו כאן כדי לעזור.",
|
||||
"reset_password_subject": "{{appName}}: הנחיות לאיפוס סיסמה",
|
||||
"verify_email_subject": "{{appName}}: אמת את החשבון",
|
||||
"check_your_email": "בדוק את הדוא״ל שלך",
|
||||
"verify_email_page_body": "שלחנו מייל ל- {{email}}. חשוב שתאמת את כתובת הדוא״ל שלך כדי להבטיח את תעבורת הדוא״ל והיומן מ- {{appName}}.",
|
||||
"verify_email_banner_body": "יש לאמת את כתובת הדוא״ל כדי להבטיח תעבורת דוא\"ל ולוחות שנה מיטבית",
|
||||
"verify_email_email_header": "אמת את חשבון הדוא״ל שלך",
|
||||
"verify_email_email_button": "אמת דוא״ל",
|
||||
"verify_email_email_body": "אנא אמת את חשבון הדוא״ל שלך על ידי לחיצה על הכפתור מטה.",
|
||||
"verify_email_subject": "{{appName}}: יש לאמת את החשבון",
|
||||
"check_your_email": "בדוק/בדקי את הדוא״ל שלך",
|
||||
"verify_email_page_body": "שלחנו הודעת דוא״ל לכתובת {{email}}. חשוב שתאמת/י את כתובת הדוא״ל שלך כדי להבטיח שתוכל/י לקבל הודעות מ-{{appName}} לכתובת הדוא״ל וללוח השנה שלך.",
|
||||
"verify_email_banner_body": "יש לאמת את כתובת הדוא״ל כדי להבטיח שתוכל/י לקבל הודעות לכתובת הדוא״ל וללוח השנה בצורה הטובה ביותר",
|
||||
"verify_email_email_header": "יש לאמת את כתובת הדוא״ל שלך",
|
||||
"verify_email_email_button": "אימות כתובת דוא״ל",
|
||||
"verify_email_email_body": "נא לאמת את כתובת הדוא״ל שלך על ידי לחיצה על הכפתור להלן.",
|
||||
"verify_email_email_link_text": "הנה הקישור, למקרה שאינך אוהב/ת ללחוץ על כפתורים:",
|
||||
"email_sent": "מייל נשלח בהצלחה",
|
||||
"email_sent": "הודעת הדוא״ל נשלחה בהצלחה",
|
||||
"event_declined_subject": "נדחה: {{title}} ב- {{date}}",
|
||||
"event_cancelled_subject": "בוטל: {{title}} ב-{{date}}",
|
||||
"event_request_declined": "בקשת האירוע שלך נדחתה",
|
||||
@@ -129,8 +129,8 @@
|
||||
"team_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את החבילה החדשה שלנו לצוותים. שמנו לב שהצוות שלך, \"{{teamName}}\", זקוק לשדרוג.",
|
||||
"upgrade_banner_action": "כאן משדרגים",
|
||||
"team_upgraded_successfully": "הצוות שלך שודרג בהצלחה!",
|
||||
"org_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את החבילה החדשה שלנו לארגונים. שמנו לב שה-Organization שלך, \"{{teamName}}\", זקוק לשדרוג.",
|
||||
"org_upgraded_successfully": "השדרוג של הארגון שלך בוצע בהצלחה!",
|
||||
"org_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את חבילת Organization החדשה שלנו. שמנו לב שה-Organization שלך, ״{{teamName}}״, זקוק לשדרוג.",
|
||||
"org_upgraded_successfully": "ה-Organization שלך שודרג בהצלחה!",
|
||||
"use_link_to_reset_password": "נא להשתמש בקישור הבא כדי לאפס את הסיסמה",
|
||||
"hey_there": "שלום,",
|
||||
"forgot_your_password_calcom": "שכחתה את הסיסמה? - {{appName}}",
|
||||
@@ -205,7 +205,7 @@
|
||||
"page_doesnt_exist": "דף זה אינו קיים.",
|
||||
"check_spelling_mistakes_or_go_back": "ודא כי שאין שגיאות איות או חזור/י לדף הקודם.",
|
||||
"404_page_not_found": "404: לא ניתן למצוא את הדף הזה.",
|
||||
"booker_event_not_found": "לא מצאנו את הארוע שניסית להזמין.",
|
||||
"booker_event_not_found": "לא מצאנו את האירוע שניסית להזמין.",
|
||||
"getting_started": "תחילת העבודה",
|
||||
"15min_meeting": "פגישה של 15 דקות",
|
||||
"30min_meeting": "פגישה של 30 דקות",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "ניהול הגדרות השפה ואזור הזמן של הצוות",
|
||||
"few_sentences_about_yourself": "מספר משפטים אודותיך. המידע הזה יופיע בדף ה-URL האישי שלך.",
|
||||
"nearly_there": "כמעט סיימנו!",
|
||||
"nearly_there_instructions": "דבר אחרון: תיאור קצר אודותיך בתוספת תמונה ממש עוזרים להשיג הזמנות ומאפשרים לאנשים לדעת עם מי הם עומדים להיפגש.",
|
||||
"nearly_there_instructions": "דבר אחרון: תיאור קצר אודותיך/ייך בתוספת תמונה עוזרים מאוד להשיג הזמנות ומאפשרים לאנשים לדעת עם מי הם עומדים להיפגש.",
|
||||
"set_availability_instructions": "הגדר טווחי זמן שבהם אתה זמין באופן קבוע. ניתן יהיה ליצור טווחי זמן נוספים מאוחר יותר ולהקצות אותם ללוחות שנה אחרים.",
|
||||
"set_availability": "ציין את הזמינות שלך",
|
||||
"continue_without_calendar": "להמשיך בלי לוח שנה",
|
||||
@@ -306,11 +306,11 @@
|
||||
"password_has_been_reset_login": "הסיסמה שלך אופסה. עכשיו ניתן להיכנס עם הסיסמה החדשה.",
|
||||
"layout": "פריסה",
|
||||
"bookerlayout_default_title": "תצוגת ברירת מחדל",
|
||||
"bookerlayout_description": "אתה יכול לבחור כמה והמתזמנים שלך יכולים לשנות תצוגות.",
|
||||
"bookerlayout_user_settings_title": "פריסת תזמון",
|
||||
"bookerlayout_user_settings_description": "אפשר לבחור מזמינים מרובים והמזמינים יכולים לשנות תצוגות. ניתן לעקוף זאת על בסיס כל אירוע לחוד.",
|
||||
"bookerlayout_description": "אפשר לבחור מספר אפשרויות תצוגה והמזמינים שלך יוכלו להחליף ביניהן.",
|
||||
"bookerlayout_user_settings_title": "פריסת הזמנות",
|
||||
"bookerlayout_user_settings_description": "אפשר לבחור אפשרויות תצוגה מרובות והמזמינים יוכלו להחליף ביניהן. ניתן לעקוף זאת עבור כל אירוע נפרד.",
|
||||
"bookerlayout_month_view": "חודש",
|
||||
"bookerlayout_week_view": "אחת לשבוע",
|
||||
"bookerlayout_week_view": "שבועית",
|
||||
"bookerlayout_column_view": "עמודה",
|
||||
"bookerlayout_error_min_one_enabled": "יש להפעיל לפחות פריסה אחת.",
|
||||
"bookerlayout_error_default_not_enabled": "הפריסה שבחרת כתצוגת ברירת המחדל לא שייכת לפריסות המופעלות.",
|
||||
@@ -328,7 +328,7 @@
|
||||
"error_end_time_next_day": "שעת הסיום לא יכולה לחרוג מ-24 שעות",
|
||||
"back_to_bookings": "בחזרה להזמנות",
|
||||
"free_to_pick_another_event_type": "ניתן לבחור אירוע אחר בכל עת.",
|
||||
"cancelled": "בוטל",
|
||||
"cancelled": "בוטלה",
|
||||
"cancellation_successful": "פעולת הביטול בוצעה בהצלחה",
|
||||
"really_cancel_booking": "בטוח שברצונך לבטל את ההזמנה?",
|
||||
"cannot_cancel_booking": "לא ניתן לבטל את ההזמנה הזו",
|
||||
@@ -403,7 +403,7 @@
|
||||
"recording_ready": "הקישור להורדת ההקלטה מוכן",
|
||||
"booking_created": "ההזמנה נוצרה",
|
||||
"booking_rejected": "ההזמנה נדחתה",
|
||||
"booking_requested": "ההזמנה התבקשה",
|
||||
"booking_requested": "התקבלה בקשת הזמנה",
|
||||
"meeting_ended": "הפגישה הסתיימה",
|
||||
"form_submitted": "הטופס נשלח",
|
||||
"event_triggers": "גורמים מפעילים של אירועים",
|
||||
@@ -413,8 +413,8 @@
|
||||
"team_webhooks": "רכיבי Webhook של הצוות",
|
||||
"create_new_webhook_to_account": "יצירת Webhook חדש לחשבון",
|
||||
"new_webhook": "Webhook חדש",
|
||||
"receive_cal_meeting_data": "קבל/י נתוני פגישות מ-{{appName}} בכתובת URL שציינת ובזמן אמת, כאשר נקבע מועד לאירוע או כאשר אירוע מבוטל.",
|
||||
"receive_cal_event_meeting_data": "קבל/י נתוני פגישות מ-{{appName}} בכתובת URL שציינת ובזמן אמת, כאשר נקבע מועד לאירוע זה או כאשר הוא מבוטל.",
|
||||
"receive_cal_meeting_data": "קבל/י נתוני פגישות בזמן אמת מ-{{appName}} בכתובת URL שציינת, כאשר נקבע מועד לאירוע או כאשר אירוע מבוטל.",
|
||||
"receive_cal_event_meeting_data": "קבל/י נתוני פגישות בזמן אמת מ-{{appName}} בכתובת URL שציינת, כאשר נקבע מועד לאירוע הזה או כאשר הוא מבוטל.",
|
||||
"responsive_fullscreen_iframe": "iframe רספונסיבי על מסך מלא",
|
||||
"loading": "טוען...",
|
||||
"deleting": "מתבצעת מחיקה...",
|
||||
@@ -477,7 +477,7 @@
|
||||
"max_limit_allowed_hint": "חייב להיות באורך של עד {{limit}} תווים",
|
||||
"invalid_password_hint": "הסיסמה חייבת להיות באורך של {{passwordLength}} תווים לפחות ולכלול לפחות ספרה אחת ושילוב של אותיות רישיות וקטנות",
|
||||
"incorrect_password": "הסיסמה שגויה.",
|
||||
"incorrect_email_password": "כתובת הדוא\"ל או הסיסמה שגויות.",
|
||||
"incorrect_email_password": "כתובת הדוא״ל או הסיסמה שגויות.",
|
||||
"use_setting": "השתמש בהגדרה",
|
||||
"am_pm": "לפנה\"צ/אחה\"צ",
|
||||
"time_options": "אפשרויות זמן",
|
||||
@@ -586,8 +586,8 @@
|
||||
"confirm_all": "לאשר הכל",
|
||||
"disband_team": "פיזור הצוות",
|
||||
"disband_team_confirmation_message": "בטוח שברצונך לפזר את הצוות הזה? כל מי ששיתפת איתו את הקישור לצוות לא יוכל להזמין יותר באמצעותו.",
|
||||
"disband_org": "פיזור הארגון",
|
||||
"disband_org_confirmation_message": "בטוח שברצונך לפזר את הארגון הזה? כל הצוותים והחברים יימחקו.",
|
||||
"disband_org": "פירוק Organization",
|
||||
"disband_org_confirmation_message": "בטוח/ה שברצונך לפרק את הארגון הזה? כל הצוותים והחברים יימחקו.",
|
||||
"remove_member_confirmation_message": "בטוח שברצונך להסיר חבר/ה זה/ו מהצוות?",
|
||||
"confirm_disband_team": "כן, לפזר את הצוות",
|
||||
"confirm_remove_member": "כן, להסיר את החבר/ה",
|
||||
@@ -699,7 +699,7 @@
|
||||
"create_team_to_get_started": "צור צוות כדי להתחיל",
|
||||
"teams": "צוותים",
|
||||
"team": "צוות",
|
||||
"organization": "Organization",
|
||||
"organization": "ארגון",
|
||||
"team_billing": "חיוב צוותים",
|
||||
"team_billing_description": "ניהול החיוב עבור הצוות",
|
||||
"upgrade_to_flexible_pro_title": "שינינו את החיוב בעבור צוותים",
|
||||
@@ -867,23 +867,23 @@
|
||||
"no_category_apps": "אין אפליקציות בקטגוריה {{category}}",
|
||||
"all_apps": "כל האפליקציות",
|
||||
"no_category_apps_description_calendar": "הוסף/י אפליקציית לוח שנה כדי לבדוק אם יש התנגשויות על מנת למנוע כפל הזמנות",
|
||||
"no_category_apps_description_conferencing": "נסה/י להוסיף אפליקציית שיחות ועידה לצורך שיחות וידאו עם הלקוחות",
|
||||
"no_category_apps_description_conferencing": "נסה/י להוסיף אפליקציית שיחות ועידה לצורך ביצוע שיחות וידאו עם הלקוחות",
|
||||
"no_category_apps_description_payment": "הוסף/י אפליקציית תשלומים על מנת להפוך את ביצוע העסקאות בינך לבין הלקוחות לפשוט יותר",
|
||||
"no_category_apps_description_analytics": "להוסיף אפליקציה לניתוח נתונים עבור דפי ההזמנות שלך",
|
||||
"no_category_apps_description_automation": "להוסיף אפליקציית אוטומציה שברצונך להשתמש בה",
|
||||
"no_category_apps_description_other": "הוסף/הוסיפי אפליקציה מכל סוג אחר לביצוע פעולות שונות",
|
||||
"no_category_apps_description_web3": "הוסף אפליקצית web3 לעמודי תזמון הפגישות שלך",
|
||||
"no_category_apps_description_messaging": "הוסף/י אפליקציה להעברת הודעות כדי להגדיר עדכונים ותזכורות בהתאמה אישית",
|
||||
"no_category_apps_description_messaging": "הוסף/הוסיפי אפליקציית מסרים מידיים כדי להגדיר התראות ותזכורות בהתאמה אישית",
|
||||
"no_category_apps_description_crm": "הוסף/י אפליקציית CRM כדי לנהל מעקב אחר האנשים שנפגשת איתם",
|
||||
"installed_app_calendar_description": "הגדר/הגדירח את לוחות השנה כדי לבדוק אם יש התנגשויות על מנת למנוע כפל הזמנות.",
|
||||
"installed_app_payment_description": "הגדר/הגידירי את השירותים לעיבוד תשלומים שבהם יש להשתמש לחיוב הלקוחות.",
|
||||
"installed_app_analytics_description": "הגדרת האפליקציות לניתוח נתונים שבהן יש להשתמש עבור דפי ההזמנות שלך",
|
||||
"installed_app_other_description": "כל האפליקציות המותקנות שלך מקטגוריות אחרות.",
|
||||
"installed_app_conferencing_description": "הגדר/י את האפליקציות לשיחות ועידה שבהן ברצונך להשתמש",
|
||||
"installed_app_conferencing_description": "הגדר/הגדירי את האפליקציות לשיחות ועידה שבהן ברצונך להשתמש",
|
||||
"installed_app_automation_description": "הגדרת אפליקציות האוטומציה שבהן ברצונך להשתמש",
|
||||
"installed_app_web3_description": "הגדר באיזה אפליקציות web3 להשתמש בעמודי תזמון הפגישות שלך",
|
||||
"installed_app_messaging_description": "הגדר/י את האפליקציות להעברת הודעות שבהן ברצונך להשתמש להגדרת עדכונים ותזכורות",
|
||||
"installed_app_crm_description": "הגדר/י את אפליקציות ה-CRM שבהן ברצונך להשתמש לניהול מעקב אחר האנשים שנפגשת איתם",
|
||||
"installed_app_messaging_description": "הגדר/הגדירי את אפליקציות המסרים המידיים שבהן ברצונך להשתמש להגדרת עדכונים ותזכורות",
|
||||
"installed_app_crm_description": "הגדר/הגדירי את אפליקציות ה-CRM שבהן ברצונך להשתמש לניהול מעקב אחר האנשים שנפגשת איתם",
|
||||
"analytics": "ניתוח נתונים",
|
||||
"empty_installed_apps_headline": "אין אפליקציות מותקנות",
|
||||
"empty_installed_apps_description": "יישומים מאפשרים לך לשפר את תהליכי העבודה שלך ואת פשטות ניהול התזמונים שלך משמעותית.",
|
||||
@@ -909,7 +909,7 @@
|
||||
"create_events_on": "ליצור אירועים ב-",
|
||||
"enterprise_license": "תכונה זו זמינה רק במינוי Enterprise",
|
||||
"enterprise_license_description": "כדי להפעיל את יכולת זו, בקש ממנהל לגשת אל הקישור {{setupUrl}} והקלדת הרישיון. אם כבר יש רישיון מוגדר, צור קשר עם {{supportMail}} לעזרה.",
|
||||
"enterprise_license_development": "ניתן לבדוק את התכונה הזו בשלב פיתוח. לשימוש בשלב הייצור, מנהל/ת מערכת צריך/ה לעבור אל <2>/auth/setup</2> ולהזין מפתח רישיון.",
|
||||
"enterprise_license_development": "ניתן לבדוק את התכונה הזו במצב פיתוח. לשימוש מצב הייצור, מנהל/ת מערכת צריך/ה לעבור אל <2>/auth/setup</2> ולהזין מפתח רישיון.",
|
||||
"missing_license": "חסר רישיון",
|
||||
"signup_requires": "נדרש רישיון לשימוש מסחרי",
|
||||
"signup_requires_description": "בשלב זה, {{companyName}} אינה מציעה גרסת קוד פתוח חינמית של דף ההרשמה. לקבלת גישה מלאה לרכיבי ההרשמה, תצטרך לקנות רישיון לשימוש מסחרי. לצרכים אישיים אנו ממליצים על Prisma Data Platform או כל ממשק Postgres אחר ליצירת חשבונות.",
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"user_impersonation_description": "מצב זה מאפשר לצוות התמיכה שלנו להתחבר באופן זמני לחשבונך כדי שנוכל לפתור במהירות את הבעיות שתדווח/י לנו עליהם.",
|
||||
"team_impersonation_description": "מאפשר לבעלים של הצוות/מנהלים להיכנס זמנית בשמך.",
|
||||
"make_team_private": "להגדיר את הצוות כפרטי",
|
||||
"make_team_private_description": "כשההגדרה הזו מופעלת, חברי הצוות לא יוכלו לראות חברי צוות אחרים.",
|
||||
"make_team_private_description": "כשההגדרה הזו מופעלת, חברי הצוות שלך לא יוכלו לראות חברי צוות אחרים.",
|
||||
"you_cannot_see_team_members": "אין לך אפשרות לראות את כל חברי הצוות של צוות פרטי.",
|
||||
"allow_booker_to_select_duration": "אפשר למזמין לבחור את משך הזמן",
|
||||
"impersonate_user_tip": "כל השימושים בתכונה זו נבדקים.",
|
||||
@@ -1072,7 +1072,7 @@
|
||||
"event_location": "מיקום האירוע",
|
||||
"reschedule_optional": "הסיבה לשינוי המועד (לא חובה)",
|
||||
"reschedule_placeholder": "אפשר לאחרים לדעת מדוע עליך לשנות את המועד",
|
||||
"event_cancelled": "אירוע זה מבוטל",
|
||||
"event_cancelled": "האירוע בוטל",
|
||||
"emailed_information_about_cancelled_event": "שלחנו לך ולשאר המשתתפים הודעת דוא״ל כדי ליידע אותם על כך.",
|
||||
"this_input_will_shown_booking_this_event": "הקלט יוצג בעת הזמנת אירוע זה",
|
||||
"meeting_url_in_conformation_email": "כתובת ה-URL של הפגישה נמצאת בהודעת הדוא״ל שנשלחה לאישור הפגישה",
|
||||
@@ -1306,7 +1306,7 @@
|
||||
"connect_analytics_apps": "קישור אפליקציות ניתוח נתונים",
|
||||
"connect_other_apps": "חיבור אפליקציות אחרות",
|
||||
"connect_web3_apps": "חבר אפליקציות web3",
|
||||
"connect_messaging_apps": "קישור אפליקציות להעברת הודעות",
|
||||
"connect_messaging_apps": "קישור אפליקציות מסרים מידיים",
|
||||
"connect_crm_apps": "קישור אפליקציות CRM",
|
||||
"current_step_of_total": "שלב {{currentStep}} מתוך {{maxSteps}}",
|
||||
"add_variable": "להוסיף משתנה",
|
||||
@@ -1336,7 +1336,7 @@
|
||||
"event_one": "אירוע",
|
||||
"event_other": "אירועים",
|
||||
"profile_team_description": "ניהול ההגדרות של פרופיל הצוות",
|
||||
"profile_org_description": "ניהול הגדרות עבור הפרופיל שלך בארגון",
|
||||
"profile_org_description": "ניהול הגדרות עבור פרופיל הארגון שלך",
|
||||
"members_team_description": "משתמשים שמשתייכים לקבוצה",
|
||||
"organization_description": "ניהול מנהלי המערכת והחברים בארגון",
|
||||
"team_url": "כתובת ה-URL של הצוות",
|
||||
@@ -1484,17 +1484,17 @@
|
||||
"yearly": "אחת לשנה",
|
||||
"checkout": "תשלום",
|
||||
"your_team_disbanded_successfully": "פיזור הצוות שלך בוצע בהצלחה",
|
||||
"your_org_disbanded_successfully": "פיזור הארגון שלך בוצע בהצלחה",
|
||||
"your_org_disbanded_successfully": "פירוק הארגון שלך בוצע בהצלחה",
|
||||
"error_creating_team": "אירעה שגיאה במהלך יצירת הצוות",
|
||||
"you": "את/ה",
|
||||
"resend_email": "שליחה חוזרת של הדוא\"ל",
|
||||
"resend_email": "לשלוח שוב את הדוא״ל",
|
||||
"member_already_invited": "החבר כבר הוזמן",
|
||||
"enter_email_or_username": "יש להזין כתובת דוא\"ל או שם משתמש",
|
||||
"team_name_taken": "השם הזה כבר תפוס",
|
||||
"must_enter_team_name": "יש להזין שם צוות",
|
||||
"team_url_required": "יש להזין כתובת URL של הצוות",
|
||||
"url_taken": "כתובת ה-URL הזו כבר תפוסה",
|
||||
"problem_registering_domain": "היתה בעיה ברישום תת-הדומיין; אפשר לנסות שוב או לפנות למנהל/ת מערכת",
|
||||
"problem_registering_domain": "הייתה בעיה ברישום תת-הדומיין; אפשר לנסות שוב או לפנות למנהל/ת מערכת",
|
||||
"team_publish": "פרסום צוות",
|
||||
"number_text_notifications": "מספר טלפון (להודעות טקסט)",
|
||||
"attendee_email_variable": "כתובת הדוא\"ל של המשתתף",
|
||||
@@ -1519,7 +1519,7 @@
|
||||
"find_the_best_person": "למצוא את האדם הכי מתאים שגם זמין לפגישה, ולעבור בסבב דרך כל חברי הצוות.",
|
||||
"fixed_round_robin": "סבב קבוע",
|
||||
"add_one_fixed_attendee": "הוסף/י משתתף/ת קבוע/ה אחד/ת ועבור/י בסבב בין מספר משתתפים.",
|
||||
"calcom_is_better_with_team": "{{appName}} טוב יותר לשימוש עם צוותים",
|
||||
"calcom_is_better_with_team": "{{appName}} טובה יותר לשימוש עם צוותים",
|
||||
"the_calcom_team": "הצוות של {{companyName}}",
|
||||
"add_your_team_members": "הוסף/י את חברי הצוות לסוגי האירועים שלך. השתמש/י בתזמון שיתופי כדי לכלול את כולם או מצא/י את האדם הכי מתאים בעזרת תזמון בסבב.",
|
||||
"booking_limit_reached": "הגעת להגבלת ההזמנות עבור סוג אירוע זה",
|
||||
@@ -1539,7 +1539,7 @@
|
||||
"navigate_installed_apps": "מעבר לאפליקציות המותקנות",
|
||||
"disabled_calendar": "אם התקנת לוח שנה אחר, ההזמנות החדשות יתווספו אליו. אם לא, קשר/י לוח שנה חדש כדי לא להחמיץ הזמנות חדשות.",
|
||||
"enable_apps": "הפעלת אפליקציות",
|
||||
"enable_apps_description": "הפעל/י אפליקציות שמשתמשים יכולים לשלב עם {{appName}}",
|
||||
"enable_apps_description": "הפעל/הפעילי אפליקציות שמשתמשים יוכלו לשלב עם {{appName}}",
|
||||
"purchase_license": "רכוש רישיון",
|
||||
"already_have_key": "כבר יש לי מפתח:",
|
||||
"already_have_key_suggestion": "אנא העתק את משתנה הסביבה CALCOM_LICENSE_KEY הקיים שלך לכאן.",
|
||||
@@ -1554,8 +1554,8 @@
|
||||
"no_available_apps_description": "ודא/י שיש אפליקציות בפריסה שלך בנתיב 'packages/app-store'",
|
||||
"no_apps": "אף אפליקציה לא מופעלת במופע הזה של Cal",
|
||||
"no_apps_configured": "עוד לא הוגדרה אף אפליקציה",
|
||||
"enable_in_settings": "ניתן להפעיל אפליקציות ב'הגדרות'",
|
||||
"please_contact_admin": "יש לפנות אל מנהל/ת המערכת",
|
||||
"enable_in_settings": "ניתן להפעיל אפליקציות ב״הגדרות״",
|
||||
"please_contact_admin": "יש לפנות למנהל/ת המערכת שלך",
|
||||
"apps_settings": "הגדרות אפליקציות",
|
||||
"fill_this_field": "נא מלא שדה זה",
|
||||
"options": "אפשרויות",
|
||||
@@ -1661,8 +1661,8 @@
|
||||
"email_user_cta": "צפה בהזמנה",
|
||||
"email_no_user_invite_heading": "הוזמנת להצטרף ל{{entity}} של {{appName}}",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} הזמין אותך להצטרף לצוות שלו ב- {{appName}}. {{appName}} הינה מתזמן זימונים שמאפשר לך ולצוות שלך לזמן פגישות בלי כל הפינג פונג במיילים.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} הזמין/ה אותך להצטרף ל-{{entity}} שלו/ה בשם '{{teamName}}' באפליקציה {{appName}}. אפליקציית {{appName}} היא כלי לקביעת מועדים לאירועים שמאפשר לך ול-{{entity}} שלך לתזמן פגישות בלי כל הפינג פונג במיילים.",
|
||||
"email_no_user_invite_steps_intro": "נדריך אותך במספר קטן של צעדים ותוכל/י להתחיל ליהנות מקביעת מועדים עם ה-{{entity}} שלך בלי בעיות.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} הזמין/ה אותך להצטרף ל-{{entity}} שלו/ה בשם ״{{teamName}}״ באפליקציה {{appName}}. אפליקציית {{appName}} היא כלי לקביעת מועדים לאירועים שמאפשר לך ול-{{entity}} שלך לתזמן פגישות בלי הצורך לנהל התכתבויות ארוכות בדוא״ל.",
|
||||
"email_no_user_invite_steps_intro": "נדריך אותך במספר קטן של צעדים ותוכל/י להתחיל ליהנות מקביעת מועדים עם ה-{{entity}} שלך במהירות ובלי בעיות.",
|
||||
"email_no_user_step_one": "בחר שם משתמש",
|
||||
"email_no_user_step_two": "קשר את לוח השנה שלך",
|
||||
"email_no_user_step_three": "הגדר את הזמינות שלך",
|
||||
@@ -1738,9 +1738,9 @@
|
||||
"spot_popular_event_types": "זהה ארועים פופולרים",
|
||||
"spot_popular_event_types_description": "צפה איזה ארועים מקבלים הכי הרבה גישות ותזמונים",
|
||||
"no_responses_yet": "אין עדיין תגובות",
|
||||
"no_routes_defined": "לא הוגדר אף נתיב",
|
||||
"no_routes_defined": "לא הוגדרו נתיבים",
|
||||
"this_will_be_the_placeholder": "זה יהיה הממלא מקום",
|
||||
"error_booking_event": "אירעה שגיאה בעת הזמנת האירוע, רענן/י את הדף ונסה/י שוב",
|
||||
"error_booking_event": "אירעה שגיאה בעת הזמנת האירוע. רענן/י את הדף ונסה/י שוב",
|
||||
"timeslot_missing_title": "לא נבחר חלון זמן",
|
||||
"timeslot_missing_description": "כדי להזמין את האירוע, יש לבחור חלון זמן.",
|
||||
"timeslot_missing_cta": "בחר/י חלון זמן",
|
||||
@@ -1809,7 +1809,7 @@
|
||||
"redirect_url_warning": "הוספת כתובת URL להפניה אוטומטית תגרום להשבתת הדף \"הפעולה הצליחה\". חשוב להוסיף את ההודעה \"ההזמנה אושרה בהצלחה'\"בדף המותאם אישית לציון שהפעולה הצליחה.",
|
||||
"event_trends": "מגמות ארוע",
|
||||
"clear_filters": "ניקוי המסננים",
|
||||
"clear": "נקה",
|
||||
"clear": "ניקוי",
|
||||
"hold": "החזקה",
|
||||
"on_booking_option": "גביית תשלום בעת ההזמנה",
|
||||
"hold_option": "חיוב דמי אי-הגעה",
|
||||
@@ -1878,41 +1878,41 @@
|
||||
"first_event_type_webhook_description": "צור/צרי את ה-Webhook הראשון שלך עבור סוג האירוע הזה",
|
||||
"install_app_on": "התקנת האפליקציה ב-",
|
||||
"create_for": "צור/צרי עבור",
|
||||
"setup_organization": "הגדרת ארגון",
|
||||
"organization_banner_description": "צור/י סביבות שבהן הצוותים שלך יכולים ליצור אפליקציות, תהליכי עבודה וסוגי אירועים משותפים, עם תכונות כמו סבב וקביעת מועדים שיתופית.",
|
||||
"setup_organization": "הגדרת Organization",
|
||||
"organization_banner_description": "צור/צרי סביבות שבהן הצוותים שלך יוכלו ליצור אפליקציות, תהליכי עבודה וסוגי אירועים משותפים, עם תכונות כמו סבב וקביעת מועדים שיתופית.",
|
||||
"organization_banner_title": "ניהול ארגונים עם צוותים מרובים",
|
||||
"set_up_your_organization": "הגדרת הארגון",
|
||||
"set_up_your_organization": "הגדרת הארגון שלך",
|
||||
"organizations_description": "ארגונים הם סביבות משותפות שבהן צוותים יכולים ליצור משאבים משותפים, כמו סוגי אירועים, אפליקציות, תהליכי עבודה ועוד.",
|
||||
"must_enter_organization_name": "יש להזין את שם הארגון",
|
||||
"must_enter_organization_admin_email": "יש להזין את כתובת הדוא\"ל של הארגון",
|
||||
"admin_email": "כתובת הדוא\"ל של הארגון",
|
||||
"must_enter_organization_name": "יש להזין שם ארגון",
|
||||
"must_enter_organization_admin_email": "יש להזין את כתובת הדוא״ל של הארגון",
|
||||
"admin_email": "כתובת הדוא״ל של הארגון",
|
||||
"admin_username": "שם המשתמש/ת המוגדר/ת כמנהל/ת מערכת",
|
||||
"organization_name": "שם הארגון",
|
||||
"organization_url": "כתובת ה-URL של הארגון",
|
||||
"organization_verify_header": "אימות כתובת הדוא\"ל של הארגון",
|
||||
"organization_verify_email_body": "השתמש/י בקוד הבא כדי לאמת את כתובת הדוא\"ל שלך לצורך המשך הגדרת הארגון.",
|
||||
"organization_verify_header": "אימות כתובת הדוא״ל של הארגון",
|
||||
"organization_verify_email_body": "השתמש/י בקוד שלהלן כדי לאמת את כתובת הדוא״ל שלך לצורך המשך הגדרת הארגון.",
|
||||
"additional_url_parameters": "פרמטרי URL נוספים",
|
||||
"about_your_organization": "מידע על הארגון",
|
||||
"about_your_organization_description": "ארגונים הם סביבות משותפות שבהן ניתן ליצור צוותים מרובים עם משאבים משותפים, כמו חברים, סוגי אירועים, אפליקציות, תהליכי עבודה ועוד.",
|
||||
"create_your_teams": "יצירת הצוותים שלך",
|
||||
"create_your_teams_description": "מוסיפים את חברי הצוות לארגון ומתחילים לקבוע מועדים לפגישות ביחד",
|
||||
"invite_organization_admins": "הזמנת מנהלי המערכת בארגון",
|
||||
"invite_organization_admins_description": "למנהלי המערכת האלה תהיה גישה לכל הצוותים בארגון. ניתן להוסיף לצוותים מנהלי מערכת וחברים מאוחר יותר.",
|
||||
"create_your_teams_description": "מוסיפים את חברי הצוות לארגון ומתחילים לקבוע מועדים ביחד",
|
||||
"invite_organization_admins": "הזמנת מנהלי המערכת של הארגון שלך",
|
||||
"invite_organization_admins_description": "למנהלי המערכת האלה תהיה גישה לכל הצוותים בארגון. ניתן יהיה להוסיף לצוותים מנהלי מערכת וחברים מאוחר יותר.",
|
||||
"set_a_password": "הגדרת סיסמה",
|
||||
"set_a_password_description": "פעולה זו תיצור חשבון משתמש חדש עם כתובת הדוא\"ל של הארגון ועם הסיסמה הזו.",
|
||||
"organization_logo": "הסמל של הארגון",
|
||||
"set_a_password_description": "פעולה זו תיצור חשבון משתמש חדש עם כתובת הדוא״ל של הארגון ועם הסיסמה הזו.",
|
||||
"organization_logo": "הלוגו של הארגון",
|
||||
"organization_about_description": "מספר משפטים אודות הארגון. הם יופיעו בדף הפרופיל הציבורי של הארגון.",
|
||||
"ill_do_this_later": "אעשה זאת מאוחר יותר",
|
||||
"verify_your_email": "אימות כתובת הדוא״ל",
|
||||
"enter_digit_code": "הזן/י את הקוד בן 6 הספרות ששלחנו לכתובת {{email}}",
|
||||
"verify_email_organization": "אמת/י את כתובת הדוא\"ל שלך כדי ליצור ארגון",
|
||||
"enter_digit_code": "הזן/הזיני את הקוד בן 6 הספרות ששלחנו לכתובת {{email}}",
|
||||
"verify_email_organization": "אמת/י את כתובת הדוא״ל שלך כדי ליצור ארגון",
|
||||
"code_provided_invalid": "הקוד לא תקין, נסה/י שוב",
|
||||
"email_already_used": "כתובת הדוא\"ל הזו כבר בשימוש",
|
||||
"email_already_used": "כתובת הדוא״ל הזו כבר נמצאת בשימוש",
|
||||
"organization_admin_invited_heading": "הוזמנת להצטרף אל {{orgName}}",
|
||||
"organization_admin_invited_body": "מצטרפים לצוות ב-{{orgName}} ומתחילים להתמקד בפגישות, ולא בפרטים הטכניים שלהן!",
|
||||
"duplicated_slugs_warning": "לא ניתן היה ליצור את הצוותים הבאים עקב רכיבי slug כפולים: {{slugs}}",
|
||||
"team_names_empty": "שמות צוותים לא יכולים להיות ריקים",
|
||||
"team_names_repeated": "אי אפשר לעשות שימוש חוזר בשמות צוותים",
|
||||
"team_names_repeated": "שמות הצוותים צריכים להיות ייחודיים",
|
||||
"user_belongs_organization": "המשתמש/ת שייך/ת לארגון",
|
||||
"org_no_teams_yet": "בארגון הזה עדיין אין צוותים",
|
||||
"org_no_teams_yet_description": "אם את/ה מנהל/ת מערכת, צור/צרי צוותים שיוצגו כאן.",
|
||||
@@ -1925,20 +1925,20 @@
|
||||
"messaging": "העברת הודעות",
|
||||
"sender_id_info": "השם או המספר שמוצגים כשולח של הודעת SMS (חלק מהמדינות אינן מתירות שימוש במזהי שולח אלפאנומריים)",
|
||||
"org_admins_can_create_new_teams": "רק מנהל/ת המערכת בארגון יכול/ה ליצור צוותים חדשים",
|
||||
"google_new_spam_policy": "מדיניות הספאם החדשה של Google עלולה לגרום לך שלא תקבל/י עדכונים בדוא\"ל ובלוח השנה לגבי הפגישה הזו.",
|
||||
"google_new_spam_policy": "מדיניות הספאם החדשה של Google עלולה לגרום לכך שלא תקבל/י עדכונים בדוא״ל ובלוח השנה לגבי הפגישה הזו.",
|
||||
"resolve": "פתרון",
|
||||
"no_organization_slug": "היתה שגיאה במהלך ניסיון ליצור צוותים עבור הארגון הזה. חסר רכיב slug של URL.",
|
||||
"no_organization_slug": "אירעה שגיאה במהלך הניסיון ליצור צוותים עבור הארגון הזה. חסר רכיב slug של URL.",
|
||||
"org_name": "שם הארגון",
|
||||
"org_url": "כתובת ה-URL של הארגון",
|
||||
"copy_link_org": "העתקת הקישור לארגון",
|
||||
"404_the_org": "הארגון",
|
||||
"404_the_team": "הצוות",
|
||||
"404_claim_entity_org": "תבע/י את תת-הדומיין עבור הארגון שלך",
|
||||
"404_claim_entity_team": "תבע/י את הצוות הזה והתחל/י לנהל קביעת מועדים ביחד",
|
||||
"404_claim_entity_org": "קבל/י את תת-הדומיין עבור הארגון שלך",
|
||||
"404_claim_entity_team": "הצטרף/י לצוות הזה והתחל/התחילי לנהל קביעת מועדים ביחד",
|
||||
"insights_all_org_filter": "כל האפליקציות",
|
||||
"insights_team_filter": "צוות: {{teamName}}",
|
||||
"insights_user_filter": "משתמש: {{userName}}",
|
||||
"insights_subtitle": "הצגת insights לגבי הזמנות מתוך האירועים שלך",
|
||||
"insights_subtitle": "הצגת insights לגבי ההזמנות באירועים שלך",
|
||||
"custom_plan": "חבילה בהתאמה אישית",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
"reset_password_subject": "{{appName}}: istruzioni per reimpostare la password",
|
||||
"verify_email_subject": "{{appName}}: verifica il tuo account",
|
||||
"check_your_email": "Controlla la tua e-mail",
|
||||
"verify_email_page_body": "Abbiamo inviato un'e-mail a {{email}}. È importante verificare il tuo indirizzo e-mail per garantire un migliore funzionamento dell'e-mail e del calendario {{appName}}.",
|
||||
"verify_email_banner_body": "Verifica il tuo indirizzo e-mail per garantire un migliore funzionamento dell'e-mail e del calendario",
|
||||
"verify_email_page_body": "Abbiamo inviato un'e-mail a {{email}}. È importante verificare il tuo indirizzo e-mail per garantire la consegna delle e-mail e delle notifiche del calendario {{appName}}.",
|
||||
"verify_email_banner_body": "Verifica il tuo indirizzo e-mail per garantire la consegna delle e-mail e delle notifiche del calendario",
|
||||
"verify_email_email_header": "Verifica il tuo indirizzo e-mail",
|
||||
"verify_email_email_button": "Verifica l'e-mail",
|
||||
"verify_email_email_body": "Verifica il tuo indirizzo e-mail cliccando sul pulsante qui in basso.",
|
||||
"verify_email_email_link_text": "Ecco il link nel caso tu non voglia fare clic su pulsanti:",
|
||||
"email_sent": "Email inviata con successo",
|
||||
"verify_email_email_body": "Verifica il tuo indirizzo e-mail facendo clic sul pulsante qui sotto.",
|
||||
"verify_email_email_link_text": "Se non ti piacciono i pulsanti, puoi usare questo link:",
|
||||
"email_sent": "Email inviata",
|
||||
"event_declined_subject": "Rifiutato: {{title}} il {{date}}",
|
||||
"event_cancelled_subject": "Cancellato: {{title}} il {{date}}",
|
||||
"event_request_declined": "La tua richiesta per l'evento è stata rifiutata",
|
||||
@@ -197,7 +197,7 @@
|
||||
"blog": "Blog",
|
||||
"blog_description": "Leggi le nostre ultime notizie e articoli",
|
||||
"join_our_community": "Unisciti alla nostra community",
|
||||
"join_our_discord": "Unisciti al nostro Discord",
|
||||
"join_our_discord": "Partecipa al nostro Discord",
|
||||
"404_claim_entity_user": "Richiedi il tuo nome utente e pianifica eventi",
|
||||
"popular_pages": "Pagine popolari",
|
||||
"register_now": "Registrati ora",
|
||||
@@ -205,7 +205,7 @@
|
||||
"page_doesnt_exist": "Questa pagina non esiste.",
|
||||
"check_spelling_mistakes_or_go_back": "Controlla gli errori di ortografia o torna alla pagina precedente.",
|
||||
"404_page_not_found": "404: Questa pagina non è stata trovata.",
|
||||
"booker_event_not_found": "Non siamo riusciti a trovare l'evento che stai cercando di fissare.",
|
||||
"booker_event_not_found": "Non siamo riusciti a trovare l'evento che stai cercando di prenotare.",
|
||||
"getting_started": "Stiamo iniziando",
|
||||
"15min_meeting": "Meeting di 15 minuti",
|
||||
"30min_meeting": "Meeting di 30 minuti",
|
||||
@@ -245,10 +245,10 @@
|
||||
"available_apps": "Applicazioni disponibili",
|
||||
"check_email_reset_password": "Controlla la tua email. Ti abbiamo inviato un link per reimpostare la password.",
|
||||
"finish": "Fine",
|
||||
"organization_general_description": "Gestisci le impostazioni di lingua e fuso orario del tuo team",
|
||||
"organization_general_description": "Gestisci le impostazioni della lingua e del fuso orario per il tuo team",
|
||||
"few_sentences_about_yourself": "Alcune frasi su di te. Questo apparirà sulla tua pagina url personale.",
|
||||
"nearly_there": "Ci siamo quasi",
|
||||
"nearly_there_instructions": "Ultima cosa, un po' di informazioni su di te e una foto sono utili per ottenere prenotazioni e far sapere alle persone con chi stanno prenotando.",
|
||||
"nearly_there_instructions": "Infine: qualche informazione su di te e una foto sono utili per ottenere prenotazioni e per far capire alle persone con chi stanno prenotando.",
|
||||
"set_availability_instructions": "Definisci intervalli di tempo di quando sei disponibile su una base ricorrente. Puoi crearne di più in seguito e assegnarli a calendari diversi.",
|
||||
"set_availability": "Imposta la tua disponibilità",
|
||||
"continue_without_calendar": "Continua senza calendario",
|
||||
@@ -306,16 +306,16 @@
|
||||
"password_has_been_reset_login": "La tua password è stata reimpostata. Ora puoi accedere con la tua password appena creata.",
|
||||
"layout": "Layout",
|
||||
"bookerlayout_default_title": "Vista predefinita",
|
||||
"bookerlayout_description": "È possibile selezionarne vari e chi fissa gli appuntamenti può cambiare visualizzazione.",
|
||||
"bookerlayout_user_settings_title": "Layout di programmazione appuntamenti",
|
||||
"bookerlayout_user_settings_description": "È possibile selezionare più librerie e chi fissa gli appuntamenti può cambiare vista. Il tutto può poi essere cambiato in base agli eventi.",
|
||||
"bookerlayout_description": "Puoi selezionarne diverse e le persone che prenotano possono cambiare visualizzazione.",
|
||||
"bookerlayout_user_settings_title": "Layout prenotazioni",
|
||||
"bookerlayout_user_settings_description": "Puoi selezionarne diverse e le persone che prenotano possono cambiare visualizzazione. È possibile definire impostazioni specifiche per ciascun evento.",
|
||||
"bookerlayout_month_view": "Mese",
|
||||
"bookerlayout_week_view": "Settimanale",
|
||||
"bookerlayout_column_view": "Colonna",
|
||||
"bookerlayout_error_min_one_enabled": "Deve essere abilitato almeno un layout.",
|
||||
"bookerlayout_error_default_not_enabled": "Il layout selezionato come vista predefinita non fa parte dei layout abilitati.",
|
||||
"bookerlayout_error_default_not_enabled": "Il layout selezionato come vista predefinita non è tra quelli abilitati.",
|
||||
"bookerlayout_error_unknown_layout": "Il layout selezionato non è un layout valido.",
|
||||
"bookerlayout_override_global_settings": "Puoi gestirlo per tutti i tipi di eventi in <2>impostazioni / aspetto</2> o <6>sostituire solo per questo evento</6>.",
|
||||
"bookerlayout_override_global_settings": "Puoi definire questa impostazione per tutti i tipi di evento in <2>impostazioni / aspetto</2> oppure <6>solo per questo evento</6>.",
|
||||
"unexpected_error_try_again": "Si è verificato un errore imprevisto. Riprova.",
|
||||
"sunday_time_error": "Ora non valida la domenica",
|
||||
"monday_time_error": "Ora non valida il lunedì",
|
||||
@@ -357,7 +357,7 @@
|
||||
"upcoming_bookings": "Non appena qualcuno prenota una riunione con voi apparirà qui.",
|
||||
"recurring_bookings": "Quando qualcuno prenoterà una riunione ricorrente con te, la riunione apparirà qui.",
|
||||
"past_bookings": "Le tue prenotazioni passate appariranno qui.",
|
||||
"cancelled_bookings": "Le tue prenotazioni cancellate compariranno qui.",
|
||||
"cancelled_bookings": "Le prenotazioni cancellate appariranno qui.",
|
||||
"unconfirmed_bookings": "Le tue prenotazioni non confermate appariranno qui.",
|
||||
"unconfirmed_bookings_tooltip": "Prenotazioni non confermate",
|
||||
"on": "su",
|
||||
@@ -774,7 +774,7 @@
|
||||
"cal_provide_huddle01_meeting_url": "{{appName}} fornirà un URL di riunione Huddle01 web3 video.",
|
||||
"cal_provide_teams_meeting_url": "{{appName}} fornirà un URL per la riunione MS Teams. NOTA: È NECESSARIO POSSEDERE UN ACCOUNT LAVORATIVO O SCOLASTICO",
|
||||
"require_payment": "Richiedi Pagamento",
|
||||
"you_need_to_add_a_name": "Aggiungere un nome",
|
||||
"you_need_to_add_a_name": "Indica un nome",
|
||||
"commission_per_transaction": "commissione per transazione",
|
||||
"event_type_updated_successfully_description": "Il tuo team è stato aggiornato con successo.",
|
||||
"hide_event_type": "Nascondi tipo evento",
|
||||
@@ -867,23 +867,23 @@
|
||||
"no_category_apps": "Nessuna app {{category}}",
|
||||
"all_apps": "Tutte le app",
|
||||
"no_category_apps_description_calendar": "Aggiungi un'app di calendario per controllare i conflitti ed evitare doppie prenotazioni",
|
||||
"no_category_apps_description_conferencing": "Prova ad aggiungere un'app di conferenza per effettuare le videochiamate con i clienti",
|
||||
"no_category_apps_description_conferencing": "Prova ad aggiungere un'app di conferenza per effettuare videochiamate con i clienti",
|
||||
"no_category_apps_description_payment": "Aggiungi un'app di pagamento per facilitare le transazioni con i clienti",
|
||||
"no_category_apps_description_analytics": "Aggiungi un'app di analisi per le tue pagine di prenotazione",
|
||||
"no_category_apps_description_automation": "Aggiungi un'app di automazione da usare",
|
||||
"no_category_apps_description_other": "Aggiungi qualsiasi altra app per fare altre attività",
|
||||
"no_category_apps_description_web3": "Aggiungi un'app Web3 per le tue pagine di prenotazione",
|
||||
"no_category_apps_description_messaging": "Aggiungi un'app di messaggistica per impostare notifiche e promemoria personalizzati",
|
||||
"no_category_apps_description_crm": "Aggiungi un'app CRM per tenere traccia degli utenti che hai incontrato",
|
||||
"no_category_apps_description_crm": "Aggiungi un'app CRM per tenere traccia delle persone che hai incontrato",
|
||||
"installed_app_calendar_description": "Imposta uno o più calendari per controllare i conflitti ed evitare doppie prenotazioni.",
|
||||
"installed_app_payment_description": "Configura quale servizio di elaborazione dei pagamenti usare per addebitare i clienti.",
|
||||
"installed_app_analytics_description": "Imposta quali app di analisi usare per le tue pagine di prenotazione",
|
||||
"installed_app_other_description": "Tutte le app installate appartenenti ad altre categorie.",
|
||||
"installed_app_conferencing_description": "Configura quali app di conferenza utilizzare",
|
||||
"installed_app_conferencing_description": "Scegli quali app di conferenza utilizzare",
|
||||
"installed_app_automation_description": "Imposta quali app di automazione usare",
|
||||
"installed_app_web3_description": "Imposta quali app Web3 usare per le tue pagine di prenotazione",
|
||||
"installed_app_messaging_description": "Configura le app di messaggistica da usare per impostare notifiche e promemoria personalizzati",
|
||||
"installed_app_crm_description": "Configura le app CRM per tenere traccia degli utenti che hai incontrato",
|
||||
"installed_app_messaging_description": "Scegli le app di messaggistica da usare per impostare notifiche e promemoria personalizzati",
|
||||
"installed_app_crm_description": "Scegli quali app CRM utilizzare per tenere traccia delle persone che hai incontrato",
|
||||
"analytics": "Analisi",
|
||||
"empty_installed_apps_headline": "Nessuna app installata",
|
||||
"empty_installed_apps_description": "Le app consentono di ottimizzare il flusso di lavoro e di migliorare significativamente la pianificazione.",
|
||||
@@ -1327,7 +1327,7 @@
|
||||
"download_responses_description": "Scarica tutte le risposte al tuo modulo in formato CSV.",
|
||||
"download": "Scarica",
|
||||
"download_recording": "Scarica registrazione",
|
||||
"recording_from_your_recent_call": "Una registrazione della tua recente chiamata su {{appName}} è pronta per il download",
|
||||
"recording_from_your_recent_call": "La registrazione della tua recente chiamata su {{appName}} è pronta per il download",
|
||||
"create_your_first_form": "Crea il tuo primo modulo",
|
||||
"create_your_first_form_description": "I Moduli di instradamento consentono di porre domande qualificanti agli utenti per indirizzarli a persone o eventi pertinenti.",
|
||||
"create_your_first_webhook": "Crea il tuo primo Webhook",
|
||||
@@ -1659,10 +1659,10 @@
|
||||
"delete_sso_configuration_confirmation_description": "Eliminare la configurazione {{connectionType}}? I membri del tuo team che utilizzano l'accesso {{connectionType}} non saranno più in grado di accedere a Cal.com.",
|
||||
"organizer_timezone": "Fuso orario organizzatore",
|
||||
"email_user_cta": "Visualizza invito",
|
||||
"email_no_user_invite_heading": "Hai ricevuto un invito a unirti a {{entity}} di {{appName}}",
|
||||
"email_no_user_invite_heading": "Hai ricevuto un invito a partecipare a un/una {{entity}} di {{appName}}",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} ti ha invitato a unirti al suo team su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette al tuo team di pianificare le riunioni senza scambiare decine di e-mail.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} ti ha invitato a unirti a {{entity}} `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e al tuo {{entity}} di pianificare le riunioni senza scambiare decine di e-mail.",
|
||||
"email_no_user_invite_steps_intro": "Ti assisteremo nei passaggi iniziali in modo che tu possa pianificare eventi per il tuo {{entity}} senza stress e in pochissimo tempo.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} ti ha invitato a partecipare al/alla {{entity}} `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e al tuo/tua {{entity}} di pianificare le riunioni senza scambiarvi decine di e-mail.",
|
||||
"email_no_user_invite_steps_intro": "Ti assisteremo nei passaggi iniziali e potrai rapidamente pianificare eventi per il/la {{entity}} senza fatica.",
|
||||
"email_no_user_step_one": "Scegli il tuo nome utente",
|
||||
"email_no_user_step_two": "Collega il tuo account di calendario",
|
||||
"email_no_user_step_three": "Imposta la tua disponibilità",
|
||||
@@ -1879,42 +1879,42 @@
|
||||
"install_app_on": "Installa l'app su",
|
||||
"create_for": "Crea per",
|
||||
"setup_organization": "Imposta un'organizzazione",
|
||||
"organization_banner_description": "Crea un ambiente dove i tuoi team potranno creare applicazioni condivise, flussi di lavoro e tipi di eventi con pianificazioni di gruppo e round robin.",
|
||||
"organization_banner_description": "Crea ambienti dove i tuoi team potranno creare e condividere applicazioni, flussi di lavoro e tipi di eventi con pianificazioni di gruppo e round robin.",
|
||||
"organization_banner_title": "Gestisci organizzazioni con più team",
|
||||
"set_up_your_organization": "Imposta la tua organizzazione",
|
||||
"organizations_description": "Le organizzazioni sono ambienti condivisi dove i team possono creare tipi di eventi, applicazioni, flussi di lavoro condivisi e tanto altro.",
|
||||
"must_enter_organization_name": "È necessario inserire un nome di organizzazione",
|
||||
"organizations_description": "Le organizzazioni sono ambienti condivisi dove i team possono creare e condividere tipi di eventi, applicazioni, flussi di lavoro e altro ancora.",
|
||||
"must_enter_organization_name": "È necessario inserire il nome dell'organizzazione",
|
||||
"must_enter_organization_admin_email": "È necessario inserire l'indirizzo e-mail dell'organizzazione",
|
||||
"admin_email": "Indirizzo e-mail dell'organizzazione",
|
||||
"admin_email": "Il tuo indirizzo e-mail nell'organizzazione",
|
||||
"admin_username": "Nome utente dell'amministratore",
|
||||
"organization_name": "Nome dell'organizzazione",
|
||||
"organization_url": "URL dell'organizzazione",
|
||||
"organization_verify_header": "Verifica l'e-mail della tua organizzazione",
|
||||
"organization_verify_email_body": "Usa il codice sottostante per verificare il tuo indirizzo e-mail e continuare a impostare l'organizzazione.",
|
||||
"additional_url_parameters": "Parametri URL aggiuntivi",
|
||||
"organization_verify_email_body": "Usa il codice sottostante per verificare il tuo indirizzo e-mail e proseguire la configurazione dell'organizzazione.",
|
||||
"additional_url_parameters": "Parametri aggiuntivi dell'URL",
|
||||
"about_your_organization": "Informazioni sulla tua organizzazione",
|
||||
"about_your_organization_description": "Le organizzazioni sono ambienti condivisi dove è possibile creare più team con membri, tipi di eventi, applicazioni, flussi di lavoro condivisi e tanto altro.",
|
||||
"about_your_organization_description": "Le organizzazioni sono ambienti condivisi dove è possibile creare dei team con condivisione di membri, tipi di eventi, applicazioni, flussi di lavoro e altro ancora.",
|
||||
"create_your_teams": "Crea i tuoi team",
|
||||
"create_your_teams_description": "Inizia la pianificazione condivisa aggiungendo i membri del tuo team alla tua organizzazione",
|
||||
"invite_organization_admins": "Invita gli amministratori dell'organizzazione",
|
||||
"invite_organization_admins_description": "Gli amministratori avranno l'accesso a tutti i team della tua organizzazione. Puoi aggiungere amministratori e membri dei team in un secondo tempo.",
|
||||
"invite_organization_admins_description": "Gli amministratori avranno accesso a tutti i team della tua organizzazione. Puoi aggiungere amministratori e membri dei team in un secondo tempo.",
|
||||
"set_a_password": "Imposta una password",
|
||||
"set_a_password_description": "Verrà creato un nuovo account utente con l'indirizzo e-mail della tua organizzazione e questa password.",
|
||||
"organization_logo": "Logo dell'organizzazione",
|
||||
"organization_about_description": "Qualche informazione sulla tua organizzazione. Le informazioni appariranno nella pagina di profilo dell'organizzazione.",
|
||||
"organization_about_description": "Qualche informazione sulla tua organizzazione. Le informazioni appariranno nella pagina del profilo pubblico dell'organizzazione.",
|
||||
"ill_do_this_later": "Lo farò più tardi",
|
||||
"verify_your_email": "Verifica l'e-mail",
|
||||
"enter_digit_code": "Immetti il codice di 6 cifre che ti è stato inviato a {{email}}",
|
||||
"verify_email_organization": "Verifica il tuo indirizzo email per creare un'organizzazione",
|
||||
"enter_digit_code": "Immetti il codice di 6 cifre che è stato inviato a {{email}}",
|
||||
"verify_email_organization": "Verifica il tuo indirizzo e-mail per creare un'organizzazione",
|
||||
"code_provided_invalid": "Il codice immesso non è valido, riprova",
|
||||
"email_already_used": "Indirizzo email già in uso",
|
||||
"email_already_used": "Indirizzo e-mail già in uso",
|
||||
"organization_admin_invited_heading": "Hai ricevuto un invito a unirti a {{orgName}}",
|
||||
"organization_admin_invited_body": "Unisciti al tuo team su {{orgName}} per concentrarti sulle riunioni, non sulla loro pianificazione!",
|
||||
"organization_admin_invited_body": "Unisciti al tuo team su {{orgName}}, per concentrarti sulle riunioni e non sulla loro pianificazione!",
|
||||
"duplicated_slugs_warning": "Non è stato possibile creare i seguenti team a causa di slug duplicati: {{slugs}}",
|
||||
"team_names_empty": "I nomi di team non possono essere vuoti",
|
||||
"team_names_repeated": "I nomi di team devono essere unici",
|
||||
"user_belongs_organization": "L'utente appartiene a un'organizzazione",
|
||||
"org_no_teams_yet": "Questa organizzazione non ha ancora nessun team",
|
||||
"org_no_teams_yet": "Questa organizzazione non ha ancora alcun team",
|
||||
"org_no_teams_yet_description": "Se sei un amministratore, assicurati di creare dei team da mostrare qui.",
|
||||
"set_up": "Imposta",
|
||||
"set_up_your_profile": "Imposta il tuo profilo",
|
||||
@@ -1927,7 +1927,7 @@
|
||||
"org_admins_can_create_new_teams": "Solo l'amministratore della tua organizzazione può creare nuovi team",
|
||||
"google_new_spam_policy": "Le nuove norme sullo spam di Google potrebbero impedirti di ricevere email e notifiche di calendario in merito a questa prenotazione.",
|
||||
"resolve": "Risolvi",
|
||||
"no_organization_slug": "Si è verificato un errore durante la creazione di team per questa organizzazione. Slug di URL mancante.",
|
||||
"no_organization_slug": "Si è verificato un errore durante la creazione dei team per questa organizzazione. Slug URL mancante.",
|
||||
"org_name": "Nome dell'organizzazione",
|
||||
"org_url": "URL dell'organizzazione",
|
||||
"copy_link_org": "Copia link all'organizzazione",
|
||||
@@ -1938,7 +1938,7 @@
|
||||
"insights_all_org_filter": "Tutte le app",
|
||||
"insights_team_filter": "Team: {{teamName}}",
|
||||
"insights_user_filter": "Utente: {{userName}}",
|
||||
"insights_subtitle": "Visualizza le informazioni sulle prenotazioni per tutti i tuoi eventi",
|
||||
"insights_subtitle": "Visualizza insight sulle prenotazioni per tutti i tuoi eventi",
|
||||
"custom_plan": "Piano personalizzato",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi qui le tue nuove stringhe al di sopra di questa riga ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑"
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi le tue nuove stringhe qui sopra ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -11,23 +11,23 @@
|
||||
"calcom_explained_new_user": "{{appName}} アカウントのセットアップを完了してください。あと数ステップでスケジューリングの問題をすべて解決できます。",
|
||||
"have_any_questions": "ご不明な点があれば、お気軽にお問い合わせください。",
|
||||
"reset_password_subject": "{{appName}}: パスワードのリセット手順",
|
||||
"verify_email_subject": "{{appName}}:アカウントを確認",
|
||||
"check_your_email": "メールを確認してください",
|
||||
"verify_email_page_body": "{{email}} にメールを送信しました。{{appName}} からのメール配信とカレンダー通知が確実に連携するようにするには、メールアドレスの確認が重要です。",
|
||||
"verify_email_banner_body": "メール配信とカレンダー通知が確実に連携するようにするには、メールアドレスを確認してください。",
|
||||
"verify_email_email_header": "メールアドレスの確認",
|
||||
"verify_email_email_button": "メールを確認",
|
||||
"verify_email_email_body": "以下のボタンをクリックして、メールアドレスを確認してください。",
|
||||
"verify_email_email_link_text": "ボタンをクリックしたくない場合は、こちらにリンクがあります:",
|
||||
"verify_email_subject": "{{appName}}: アカウントをご確認ください",
|
||||
"check_your_email": "メールをご確認ください",
|
||||
"verify_email_page_body": "{{email}} にメールを送信しました。{{appName}} からのメール配信とカレンダー通知が確実に機能するようにするには、メールアドレスの確認が重要です。",
|
||||
"verify_email_banner_body": "メール配信とカレンダー通知が確実に機能するようにするには、メールアドレスをご確認ください。",
|
||||
"verify_email_email_header": "メールアドレスをご確認ください",
|
||||
"verify_email_email_button": "メールを確認する",
|
||||
"verify_email_email_body": "以下のボタンをクリックして、メールアドレスをご確認ください。",
|
||||
"verify_email_email_link_text": "ボタンをクリックしたくない場合には、こちらのリンクをご利用ください。",
|
||||
"email_sent": "メールが正常に送信されました",
|
||||
"event_declined_subject": "却下: {{title}} {{date}}",
|
||||
"event_cancelled_subject": "キャンセル済み:{{date}} の{{title}}",
|
||||
"event_cancelled_subject": "{{date}} に {{title}} がキャンセルされました",
|
||||
"event_request_declined": "イベントのリクエストが拒否されました",
|
||||
"event_request_declined_recurring": "繰り返しイベントのリクエストが拒否されました",
|
||||
"event_request_cancelled": "予定されたイベントがキャンセルされました",
|
||||
"event_request_cancelled": "スケジュール設定済みのイベントがキャンセルされました",
|
||||
"organizer": "主催者",
|
||||
"need_to_reschedule_or_cancel": "再スケジュールまたはキャンセルが必要ですか?",
|
||||
"no_options_available": "利用できるオプションがありません",
|
||||
"no_options_available": "利用可能なオプションがありません",
|
||||
"cancellation_reason": "キャンセルの理由 (オプション)",
|
||||
"cancellation_reason_placeholder": "キャンセルが必要な理由をお教えください",
|
||||
"rejection_reason": "拒否の理由",
|
||||
@@ -87,9 +87,9 @@
|
||||
"your_meeting_has_been_booked": "ミーティングが予約されました",
|
||||
"event_type_has_been_rescheduled_on_time_date": "あなたの {{title}} は {{date}} に再スケジュールされました。",
|
||||
"event_has_been_rescheduled": "更新 - イベントのスケジュールが変更されました",
|
||||
"request_reschedule_subtitle": "{{organizer}}が予約をキャンセルし、別の時間帯を選ぶようにあなたにリクエストしました。",
|
||||
"request_reschedule_subtitle": "{{organizer}} が予約をキャンセルし、別の時間帯を選ぶようにリクエストしています。",
|
||||
"request_reschedule_title_organizer": "{{attendee}} にスケジュールの変更をリクエストしました",
|
||||
"request_reschedule_subtitle_organizer": "あなたが予約をキャンセルしたので、{{attendee}}とあなたは新しい予約の時間帯を選ぶ必要があります。",
|
||||
"request_reschedule_subtitle_organizer": "予約をキャンセルしたので、{{attendee}} はあなたと共に新しい予約時間を選ぶ必要があります。",
|
||||
"rescheduled_event_type_subject": "スケジュール変更のリクエストを送信しました: {{date}} の {{name}} との {{eventType}}",
|
||||
"requested_to_reschedule_subject_attendee": "スケジュール変更のアクションが必要です: {{name}} との {{eventType}} に新しい時間を予約してください",
|
||||
"hi_user_name": "こんにちは、{{name}} さん",
|
||||
@@ -118,7 +118,7 @@
|
||||
"team_info": "チームの情報",
|
||||
"request_another_invitation_email": "{{toEmail}} を {{appName}} のメールアドレスとして使用しない場合、または {{appName}} アカウントをすでに持っている場合は、そのメールへの招待を別にリクエストしてください。",
|
||||
"you_have_been_invited": "チーム {{teamName}} への参加を招待されました。",
|
||||
"user_invited_you": "{{entity}}の{{team}}に参加するよう、{{user}}が {{appName}} であなたを招待しました",
|
||||
"user_invited_you": "{{entity}} の {{team}} に参加するよう、{{user}} が {{appName}} であなたを招待しました",
|
||||
"hidden_team_member_title": "あなたはこのチームで非表示にされています",
|
||||
"hidden_team_member_message": "座席料の支払いが完了していません。Pro へとアップグレードするか、チームのオーナーにあなたの座席料の支払いをご依頼ください。",
|
||||
"hidden_team_owner_message": "チームをご利用いただくためには、Pro アカウントが必要です。アップグレードするまでは非表示となります。",
|
||||
@@ -129,8 +129,8 @@
|
||||
"team_upgrade_banner_description": "新しいチームプランをお試しいただき、ありがとうございます。あなたのチーム「{{teamName}}」には、アップグレードが必要なようです。",
|
||||
"upgrade_banner_action": "アップグレードはこちら",
|
||||
"team_upgraded_successfully": "チームのアップグレードが正常に完了しました!",
|
||||
"org_upgrade_banner_description": "Organization プランをお試しいただきありがとうございます。Organization「{{teamName}}」はアップグレードが必要です。",
|
||||
"org_upgraded_successfully": "あなたのOrganizationは正常にアップグレードされました!",
|
||||
"org_upgrade_banner_description": "Organization プランをお試しいただきありがとうございます。ご利用の「{{teamName}}」の Organization プランには、アップグレードが必要です。",
|
||||
"org_upgraded_successfully": "あなたの Organization プランは正常にアップグレードされました!",
|
||||
"use_link_to_reset_password": "以下のリンクを使用してパスワードをリセットしてください",
|
||||
"hey_there": "こんにちは!",
|
||||
"forgot_your_password_calcom": "パスワードをお忘れですか? - {{appName}}",
|
||||
@@ -197,7 +197,7 @@
|
||||
"blog": "ブログ",
|
||||
"blog_description": "最新のニュースや記事を読む",
|
||||
"join_our_community": "コミュニティーに参加する",
|
||||
"join_our_discord": "私たちのDiscordに参加する",
|
||||
"join_our_discord": "私たちの Discord に参加する",
|
||||
"404_claim_entity_user": "ユーザー名を獲得してイベントをスケジュールする",
|
||||
"popular_pages": "人気のページ",
|
||||
"register_now": "今すぐ登録",
|
||||
@@ -205,7 +205,7 @@
|
||||
"page_doesnt_exist": "このページは存在しません。",
|
||||
"check_spelling_mistakes_or_go_back": "スペルミスを確認するか、前のページに戻ってください。",
|
||||
"404_page_not_found": "404: このページは見つかりませんでした。",
|
||||
"booker_event_not_found": "予約しようとしているイベントは見つかりませんでした。",
|
||||
"booker_event_not_found": "あなたが予約を試みているイベントは見つかりませんでした。",
|
||||
"getting_started": "はじめに",
|
||||
"15min_meeting": "15 分間のミーティング",
|
||||
"30min_meeting": "30 分間のミーティング",
|
||||
@@ -241,7 +241,7 @@
|
||||
"done": "完了",
|
||||
"all_done": "すべて完了!",
|
||||
"all": "すべて",
|
||||
"yours": "アカウント",
|
||||
"yours": "ご利用のアカウント",
|
||||
"available_apps": "利用可能なアプリ",
|
||||
"check_email_reset_password": "メールをご確認ください。パスワードをリセットするためのリンクを送信しました。",
|
||||
"finish": "完了",
|
||||
@@ -306,16 +306,16 @@
|
||||
"password_has_been_reset_login": "パスワードがリセットされました。新しく作成したパスワードでログインできるようになりました。",
|
||||
"layout": "レイアウト",
|
||||
"bookerlayout_default_title": "デフォルトの表示",
|
||||
"bookerlayout_description": "複数を選択することができ、予約者は表示を切り替えることができます。",
|
||||
"bookerlayout_description": "複数のものを選択することができ、予約者は表示を切り替えることができます。",
|
||||
"bookerlayout_user_settings_title": "予約のレイアウト",
|
||||
"bookerlayout_user_settings_description": "複数を選択することができ、予約者は表示を切り替えられます。これはイベントごとに上書きできます。",
|
||||
"bookerlayout_user_settings_description": "複数のものを選択することができ、予約者は表示を切り替えることができます。これはイベントごとに上書きが可能です。",
|
||||
"bookerlayout_month_view": "月",
|
||||
"bookerlayout_week_view": "週",
|
||||
"bookerlayout_column_view": "カラム",
|
||||
"bookerlayout_column_view": "列",
|
||||
"bookerlayout_error_min_one_enabled": "少なくとも 1 つのレイアウトを有効にする必要があります。",
|
||||
"bookerlayout_error_default_not_enabled": "デフォルト表示として選択したレイアウトは、有効なレイアウトに含まれていません。",
|
||||
"bookerlayout_error_unknown_layout": "選択したレイアウトは有効なレイアウトではありません。",
|
||||
"bookerlayout_override_global_settings": "<2>設定 / 外観</2>または<6>このイベントのみ上書き</6>ですべてのイベントの種類を管理できます。",
|
||||
"bookerlayout_error_default_not_enabled": "デフォルト表示として選択したレイアウトが、有効なレイアウトに含まれていません。",
|
||||
"bookerlayout_error_unknown_layout": "選択したレイアウトが有効なレイアウトではありません。",
|
||||
"bookerlayout_override_global_settings": "「<2>設定/外観</2>」または「<6>このイベントのみ上書き</6>」で、すべてのイベントの種類を管理できます。",
|
||||
"unexpected_error_try_again": "予期しないエラーが発生しました。もう一度お試しください。",
|
||||
"sunday_time_error": "日曜日の時間が無効です",
|
||||
"monday_time_error": "月曜日の時間が無効です",
|
||||
@@ -337,11 +337,11 @@
|
||||
"cancelling_event_recurring": "このイベントは、繰り返しイベントに含まれている 1 つのインスタンスです。",
|
||||
"cancelling_all_recurring": "これらはすべて、繰り返しイベントに含まれているインスタンスの残りです。",
|
||||
"error_with_status_code_occured": "ステータスコード {{status}} に関するエラーが発生しました。",
|
||||
"error_event_type_url_duplicate": "この URL のイベントの種類はすでに存在します。",
|
||||
"error_event_type_unauthorized_create": "このイベントを作成することができません",
|
||||
"error_event_type_unauthorized_update": "このイベントを編集することができません",
|
||||
"error_workflow_unauthorized_create": "このワークフローを作成することができません",
|
||||
"error_schedule_unauthorized_create": "このスケジュールを作成することができません",
|
||||
"error_event_type_url_duplicate": "この URL を持つイベントの種類はすでに存在します。",
|
||||
"error_event_type_unauthorized_create": "このイベントを作成することはできません",
|
||||
"error_event_type_unauthorized_update": "このイベントを編集することはできません",
|
||||
"error_workflow_unauthorized_create": "このワークフローを作成することはできません",
|
||||
"error_schedule_unauthorized_create": "このスケジュールを作成することはできません",
|
||||
"booking_already_cancelled": "この予約はすでにキャンセルされています",
|
||||
"booking_already_accepted_rejected": "この予約はすでに承認または拒否が行われています。",
|
||||
"go_back_home": "ホームに戻る",
|
||||
@@ -357,7 +357,7 @@
|
||||
"upcoming_bookings": "誰かがあなたとの時間を予約すると、すぐにここに表示されます。",
|
||||
"recurring_bookings": "別のユーザーがあなたとの繰り返しイベントを予約すると、ここに表示されます。",
|
||||
"past_bookings": "過去の予約はここに表示されます。",
|
||||
"cancelled_bookings": "キャンセルされた予約はここに表示されます",
|
||||
"cancelled_bookings": "キャンセルされた予約はこちらに表示されます。",
|
||||
"unconfirmed_bookings": "未確認の予約はここに表示されます。",
|
||||
"unconfirmed_bookings_tooltip": "未確認の予約",
|
||||
"on": "上",
|
||||
@@ -398,12 +398,12 @@
|
||||
"browse_api_documentation": "APIドキュメントを参照する",
|
||||
"leverage_our_api": "APIを活用して、完全な制御とカスタマイズが可能です。",
|
||||
"create_webhook": "Webhook を作成",
|
||||
"booking_cancelled": "キャンセルされた予約",
|
||||
"booking_cancelled": "予約がキャンセルされました",
|
||||
"booking_rescheduled": "予約の再スケジュール済",
|
||||
"recording_ready": "録音をダウンロードするためのリンクが準備できています",
|
||||
"booking_created": "予約を作成しました",
|
||||
"booking_rejected": "拒否された予約",
|
||||
"booking_requested": "リクエストされた予約",
|
||||
"booking_rejected": "予約が拒否されました",
|
||||
"booking_requested": "予約がリクエストされました",
|
||||
"meeting_ended": "ミーティングが終了しました",
|
||||
"form_submitted": "フォームが送信されました",
|
||||
"event_triggers": "イベントトリガー",
|
||||
@@ -413,8 +413,8 @@
|
||||
"team_webhooks": "チームのウェブフック",
|
||||
"create_new_webhook_to_account": "アカウントに新しいウェブフックを作成します",
|
||||
"new_webhook": "新しいウェブフック",
|
||||
"receive_cal_meeting_data": "イベントが予定またはキャンセルされた場合、特定の URL で開かれる {{appName}} ミーティングデータをリアルタイムに受信する。",
|
||||
"receive_cal_event_meeting_data": "このイベントが予定またはキャンセルされた場合、特定の URL で開かれる {{appName}} ミーティングデータをリアルタイムに受信する。",
|
||||
"receive_cal_meeting_data": "イベントのスケジュール設定またはキャンセルが行われた際に、特定の URL にある {{appName}} のミーティングデータをリアルタイムに受信します。",
|
||||
"receive_cal_event_meeting_data": "このイベントのスケジュール設定またはキャンセルが行われた際に、特定の URL にある {{appName}} のミーティングデータをリアルタイムに受信します。",
|
||||
"responsive_fullscreen_iframe": "レスポンシブフルスクリーン iframe",
|
||||
"loading": "読み込み中...",
|
||||
"deleting": "削除中...",
|
||||
@@ -477,7 +477,7 @@
|
||||
"max_limit_allowed_hint": "{{limit}} 文字以下で入力してください",
|
||||
"invalid_password_hint": "パスワードには少なくとも 1 文字以上数字を含め、アルファベットの大文字と小文字を両方使用した上で {{passwordLength}} 文字以上の長さに設定してください",
|
||||
"incorrect_password": "パスワードが正しくありません。",
|
||||
"incorrect_email_password": "ユーザー名またはパスワードが正しくありません。",
|
||||
"incorrect_email_password": "メールまたはパスワードが正しくありません。",
|
||||
"use_setting": "設定を使用",
|
||||
"am_pm": "午前/午後",
|
||||
"time_options": "時刻オプション",
|
||||
@@ -586,8 +586,8 @@
|
||||
"confirm_all": "すべて確認",
|
||||
"disband_team": "チームを解散する",
|
||||
"disband_team_confirmation_message": "このチームを解散しますか? あなたがこのチームのリンクを共有した人は、それを使って予約することができなくなります。",
|
||||
"disband_org": "Organization を解散する",
|
||||
"disband_org_confirmation_message": "この Organization を解散しますか?すべてのチームとメンバーが削除されます。",
|
||||
"disband_org": "組織を解散する",
|
||||
"disband_org_confirmation_message": "この組織を解散しますか?すべてのチームとメンバーが削除されます。",
|
||||
"remove_member_confirmation_message": "このメンバーをチームから削除してもよろしいですか?",
|
||||
"confirm_disband_team": "はい、チームを解散します。",
|
||||
"confirm_remove_member": "はい、メンバーを削除します",
|
||||
@@ -695,11 +695,11 @@
|
||||
"create_new_team": "新しいチームを作成",
|
||||
"open_invitations": "招待状を開く",
|
||||
"new_team": "新しいチーム",
|
||||
"create_first_team_and_invite_others": "最初のチームを作成し、一緒に仕事をするために他のユーザーを招待してください。",
|
||||
"create_first_team_and_invite_others": "最初のチームを作成し、一緒に仕事をする他のユーザーを招待してください。",
|
||||
"create_team_to_get_started": "始めるためにチームを作成",
|
||||
"teams": "チーム",
|
||||
"team": "チーム",
|
||||
"organization": "Organization",
|
||||
"organization": "組織",
|
||||
"team_billing": "チームの請求",
|
||||
"team_billing_description": "チームの請求情報を管理します",
|
||||
"upgrade_to_flexible_pro_title": "チームへの請求内容を変更しました",
|
||||
@@ -867,14 +867,14 @@
|
||||
"no_category_apps": "{{category}} アプリはありません",
|
||||
"all_apps": "すべてのアプリ",
|
||||
"no_category_apps_description_calendar": "ダブルブッキングを防ぐために、スケジュールの重複をチェックするカレンダーアプリを追加しましょう",
|
||||
"no_category_apps_description_conferencing": "顧客とのビデオ通話には会議アプリを追加します",
|
||||
"no_category_apps_description_conferencing": "顧客とのビデオ通話には会議アプリを追加しましょう",
|
||||
"no_category_apps_description_payment": "決済アプリを追加して、顧客との取引を容易にしましょう",
|
||||
"no_category_apps_description_analytics": "予約ページに分析アプリを追加する",
|
||||
"no_category_apps_description_automation": "使用する自動化アプリを追加する",
|
||||
"no_category_apps_description_other": "その他のアプリを追加して、様々なことを実現しましょう",
|
||||
"no_category_apps_description_web3": "予約ページに Web3 アプリを追加",
|
||||
"no_category_apps_description_messaging": "カスタム通知とリマインダーを設定するにはメッセージングアプリを追加します",
|
||||
"no_category_apps_description_crm": "会った人を記録するには CRM アプリを追加します",
|
||||
"no_category_apps_description_messaging": "カスタム通知とリマインダーを設定するには、メッセージングアプリを追加します",
|
||||
"no_category_apps_description_crm": "会った人を記録するには、CRM アプリを追加します",
|
||||
"installed_app_calendar_description": "ダブルブッキングを防ぐために、カレンダーの重複をチェックするように設定します。",
|
||||
"installed_app_payment_description": "顧客に請求をする際に使用する決済処理サービスを設定しましょう。",
|
||||
"installed_app_analytics_description": "予約ページでどの分析アプリを使用するかを構成する",
|
||||
@@ -883,7 +883,7 @@
|
||||
"installed_app_automation_description": "どの自動化アプリを使用するかを構成する",
|
||||
"installed_app_web3_description": "予約ページでどの Web3 アプリを使用するかを構成します",
|
||||
"installed_app_messaging_description": "カスタム通知とリマインダーの設定にどのメッセージングアプリを使用するかを設定します",
|
||||
"installed_app_crm_description": "会った人の記録にどの CRM アプリを使用するかを設定します",
|
||||
"installed_app_crm_description": "会った人を記録するのにどの CRM アプリを使用するかを設定します",
|
||||
"analytics": "分析",
|
||||
"empty_installed_apps_headline": "アプリがインストールされていません",
|
||||
"empty_installed_apps_description": "アプリを使えば、ワークフローの質を高め、スケジュールライフを大幅に改善することができます。",
|
||||
@@ -909,7 +909,7 @@
|
||||
"create_events_on": "以下にイベントを作成する:",
|
||||
"enterprise_license": "これは企業向けの機能です",
|
||||
"enterprise_license_description": "この機能を有効にするには、{{consoleUrl}} コンソールでデプロイメントキーを入手して .env に CALCOM_LICENSE_KEY として追加してください。既にチームがライセンスを持っている場合は {{supportMail}} にお問い合わせください。",
|
||||
"enterprise_license_development": "この機能は開発モードでテストできます。本番環境で使用するには管理者に<2>/権限/設定</2>に行ってライセンスキーを入力してもらってください。",
|
||||
"enterprise_license_development": "この機能は開発モードでテストできます。本番環境で使用するには、管理者に <2>/auth/setup</2> にアクセスするよう依頼し、ライセンスキーを入力してもらってください。",
|
||||
"missing_license": "ライセンスが見つかりません",
|
||||
"signup_requires": "商用ライセンスが必要です",
|
||||
"signup_requires_description": "{{companyName}} は、現時点ではサインアップページの無料のオープンソース版を提供しておりません。サインアップコンポーネントへのフルアクセスをご利用いただくためには、商用ライセンスを取得する必要があります。個人での利用につきましては、Prisma Data Platform またはその他の Postgres インターフェースを使用してアカウントの作成を行うことをお勧めしております。",
|
||||
@@ -979,7 +979,7 @@
|
||||
"confirm_delete_api_key": "この API キーを取り消す",
|
||||
"revoke_api_key": "API キーの取り消し",
|
||||
"api_key_copied": "API キーをコピーしました!",
|
||||
"api_key_expires_on": "APIキーの期限が切れるのは",
|
||||
"api_key_expires_on": "API キーの期限:",
|
||||
"delete_api_key_confirm_title": "この API キーをご利用のアカウントから完全に削除しますか?",
|
||||
"copy": "コピー",
|
||||
"expire_date": "有効期限",
|
||||
@@ -1004,7 +1004,7 @@
|
||||
"team_impersonation_description": "チームの所有者/管理者が一時的にあなたとしてサインインできるようにします。",
|
||||
"make_team_private": "チームを非公開にする",
|
||||
"make_team_private_description": "これをオンにすると、チームメンバーは他のチームメンバーを確認することができなくなります。",
|
||||
"you_cannot_see_team_members": "非公開チームではすべてのチームメンバーを確認できません。",
|
||||
"you_cannot_see_team_members": "非公開チームでは、チームメンバーを確認することができません。",
|
||||
"allow_booker_to_select_duration": "予約者が時間を選択できるようにする",
|
||||
"impersonate_user_tip": "この機能の使用はすべて監査されています。",
|
||||
"impersonating_user_warning": "ユーザー名 \"{{user}}\" になりすましています。",
|
||||
@@ -1079,11 +1079,11 @@
|
||||
"url_start_with_https": "URLは、http://またはhttps://で始まる必要があります",
|
||||
"number_provided": "電話番号が提供されます",
|
||||
"before_event_trigger": "イベント開始前に",
|
||||
"event_cancelled_trigger": "イベントキャンセル時に",
|
||||
"event_cancelled_trigger": "イベントキャンセル時",
|
||||
"new_event_trigger": "新しいイベント予約時に",
|
||||
"email_host_action": "ホストにメールを送信",
|
||||
"email_attendee_action": "出席者にメールを送る",
|
||||
"sms_attendee_action": "出席者に SMS を送信",
|
||||
"sms_attendee_action": "出席者に SMS を送信する",
|
||||
"sms_number_action": "特定の番号に SMS を送信",
|
||||
"whatsapp_number_action": "特定の番号に Whatsapp メッセージを送信",
|
||||
"whatsapp_attendee_action": "出席者に Whatsapp メッセージを送信",
|
||||
@@ -1150,8 +1150,8 @@
|
||||
"choose_template": "テンプレートを選択する",
|
||||
"custom": "カスタム",
|
||||
"reminder": "リマインダー",
|
||||
"rescheduled": "スケジュールを変更済み",
|
||||
"completed": "完了済み",
|
||||
"rescheduled": "スケジュール変更済み",
|
||||
"completed": "完了",
|
||||
"reminder_email": "リマインダー:{{date}} の {{name}} との {{eventType}}",
|
||||
"not_triggering_existing_bookings": "イベントの予約時に電話番号の入力を求められるため、すでにある予約はトリガーされません。",
|
||||
"minute_one": "{{count}} 分",
|
||||
@@ -1306,8 +1306,8 @@
|
||||
"connect_analytics_apps": "分析アプリを接続する",
|
||||
"connect_other_apps": "その他のアプリを接続",
|
||||
"connect_web3_apps": "Web3 アプリを接続",
|
||||
"connect_messaging_apps": "メッセージングアプリを接続",
|
||||
"connect_crm_apps": "CRM アプリを接続",
|
||||
"connect_messaging_apps": "メッセージングアプリを接続する",
|
||||
"connect_crm_apps": "CRM アプリを接続する",
|
||||
"current_step_of_total": "ステップ {{currentStep}}/{{maxSteps}}",
|
||||
"add_variable": "変数を追加",
|
||||
"custom_phone_number": "カスタム電話番号",
|
||||
@@ -1379,7 +1379,7 @@
|
||||
"routing_forms_send_email_owner": "所有者にメールを送信",
|
||||
"routing_forms_send_email_owner_description": "フォームの送信時に所有者にメールを送信します",
|
||||
"add_new_form": "新しいフォームを追加",
|
||||
"add_new_team_form": "新しいフォームをチームに追加",
|
||||
"add_new_team_form": "新しいフォームをチームに追加する",
|
||||
"create_your_first_route": "最初のルートを作成",
|
||||
"route_to_the_right_person": "フォームへの回答に基づいて適切なユーザーにルーティングする",
|
||||
"form_description": "予約者をルーティングするフォームを作成します",
|
||||
@@ -1487,16 +1487,16 @@
|
||||
"your_org_disbanded_successfully": "組織は正常に解散されました",
|
||||
"error_creating_team": "チームの作成中にエラーが発生しました",
|
||||
"you": "あなた",
|
||||
"resend_email": "メールを再送信",
|
||||
"resend_email": "メールを再送する",
|
||||
"member_already_invited": "メンバーは既に招待されています",
|
||||
"enter_email_or_username": "メールアドレスまたはユーザー名を入力してください",
|
||||
"team_name_taken": "この名前は既に使用されています",
|
||||
"must_enter_team_name": "チーム名の入力は必須です",
|
||||
"team_url_required": "チームの URL の入力は必須です",
|
||||
"url_taken": "この URL は既に使用されています",
|
||||
"problem_registering_domain": "サブドメインの登録に問題がありました。もう一度やり直すか、管理者にお問い合せください",
|
||||
"problem_registering_domain": "サブドメインの登録時に問題が発生しました。もう一度お試しいただくか、管理者までお問い合せください",
|
||||
"team_publish": "チームを公開",
|
||||
"number_text_notifications": "電話番号(テキスト通知)",
|
||||
"number_text_notifications": "電話番号 (テキスト通知)",
|
||||
"attendee_email_variable": "出席者のメールアドレス",
|
||||
"attendee_email_info": "予約者のメールアドレス",
|
||||
"kbar_search_placeholder": "コマンドを入力するか、検索してください...",
|
||||
@@ -1555,7 +1555,7 @@
|
||||
"no_apps": "Cal のこのインスタンスで有効化されているアプリはありません",
|
||||
"no_apps_configured": "まだアプリが設定されていません",
|
||||
"enable_in_settings": "設定でアプリを有効にできます",
|
||||
"please_contact_admin": "管理者に連絡してください",
|
||||
"please_contact_admin": "管理者までお問い合わせください",
|
||||
"apps_settings": "アプリ設定",
|
||||
"fill_this_field": "このフィールドに入力してください",
|
||||
"options": "オプション",
|
||||
@@ -1659,10 +1659,10 @@
|
||||
"delete_sso_configuration_confirmation_description": "{{connectionType}} の構成を削除してもよろしいですか?{{connectionType}} でのログインを使用しているチームメンバーは、Cal.com にアクセスできなくなります。",
|
||||
"organizer_timezone": "主催者のタイムゾーン",
|
||||
"email_user_cta": "招待を表示",
|
||||
"email_no_user_invite_heading": "{{appName}} の {{entity}} に参加するよう招待されました",
|
||||
"email_no_user_invite_heading": "{{appName}} の {{entity}} への参加に招待されました",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} は {{appName}} のチームに参加するようあなたを招待しました。{{appName}} は、イベント調整スケジューラーです。チームと延々とメールのやりとりをすることなくミーティングのスケジュール設定を行うことができます。",
|
||||
"email_user_invite_subheading": "{{invitedBy}}から {{entity}} の「{{teamName}}」に参加するよう招待されました。{{appName}} はイベント調整スケジューラーで、{{entity}} 内で延々とメールのやりとりをすることなく、ミーティングのスケジュールを設定できます。",
|
||||
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐに {{entity}} とのストレスフリーなスケジュール設定をお楽しみいただけます。",
|
||||
"email_user_invite_subheading": "{{invitedBy}} から {{appName}} の {{entity}} \"{{teamName}}\" に参加するよう招待されました。{{appName}} はイベント調整スケジューラーであり、{{entity}} 内で延々とメールのやりとりを続けることなくミーティングのスケジュールを設定できます。",
|
||||
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐに {{entity}} のストレスフリーなスケジュール設定をお楽しみいただけます。",
|
||||
"email_no_user_step_one": "ユーザー名を選択",
|
||||
"email_no_user_step_two": "カレンダーアカウントを接続",
|
||||
"email_no_user_step_three": "空き状況を設定する",
|
||||
@@ -1674,7 +1674,7 @@
|
||||
"no_workflows": "ワークフローがありません",
|
||||
"change_filter": "個人やチームのワークフローを表示するためのフィルターを変更します。",
|
||||
"change_filter_common": "結果を表示するフィルターを変更します。",
|
||||
"no_results_for_filter": "このフィルターの結果はありません",
|
||||
"no_results_for_filter": "このフィルターに該当する結果はありません",
|
||||
"recommended_next_steps": "推奨される次のステップ",
|
||||
"create_a_managed_event": "管理されたイベントの種類を作成",
|
||||
"meetings_are_better_with_the_right": "ミーティングは適切なチームメンバーの参加によってより良いものになります。今すぐ彼らを招待しましょう。",
|
||||
@@ -1687,7 +1687,7 @@
|
||||
"attendee_no_longer_attending": "出席者はあなたのイベントに出席しなくなりました",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}} がキャンセルしました。これにより、この時間帯の座席が 1 つ利用可能になりました",
|
||||
"create_event_on": "次のカレンダーにイベントを作成",
|
||||
"create_routing_form_on": "次のことについてルーティングフォームを作成",
|
||||
"create_routing_form_on": "以下についてルーティングフォームを作成する",
|
||||
"default_app_link_title": "デフォルトのアプリリンクを設定",
|
||||
"default_app_link_description": "デフォルトのアプリリンクを設定することで、新たに作成するすべてのイベントの種類が設定したアプリリンクを使用できるようになります。",
|
||||
"organizer_default_conferencing_app": "主催者のデフォルトのアプリ",
|
||||
@@ -1738,16 +1738,16 @@
|
||||
"spot_popular_event_types": "人気のあるイベントの種類を見つける",
|
||||
"spot_popular_event_types_description": "どのイベントの種類が最もクリックされ、予約されているのかを確認します",
|
||||
"no_responses_yet": "回答はまだありません",
|
||||
"no_routes_defined": "ルーティングが定義されていません",
|
||||
"no_routes_defined": "ルートが定義されていません",
|
||||
"this_will_be_the_placeholder": "これがプレースホルダーになります",
|
||||
"error_booking_event": "イベントを予約する際にエラーが発生しました。ページを再読み込みして、もう一度お試しください",
|
||||
"error_booking_event": "イベントを予約する際にエラーが発生しました。ページを更新してからもう一度お試しください",
|
||||
"timeslot_missing_title": "時間帯が選択されていません",
|
||||
"timeslot_missing_description": "イベントを予約するには時間帯を選択してください。",
|
||||
"timeslot_missing_cta": "時間帯を選択",
|
||||
"switch_monthly": "月単位の表示に切り替える",
|
||||
"switch_weekly": "週単位の表示に切り替える",
|
||||
"switch_multiday": "1 日単位の表示に切り替える",
|
||||
"switch_columnview": "カラム表示に切り替える",
|
||||
"switch_columnview": "列表示に切り替える",
|
||||
"num_locations": "{{num}} か所の場所のオプション",
|
||||
"select_on_next_step": "次のステップで選択",
|
||||
"this_meeting_has_not_started_yet": "このミーティングはまだ開始されていません",
|
||||
@@ -1786,7 +1786,7 @@
|
||||
"managed_event_dialog_title_one": "{{count}} 人のメンバーがすでに URL /{{slug}} を使用しています。置き換えますか?",
|
||||
"managed_event_dialog_title_other": "{{count}} 人のメンバーがすでに URL /{{slug}} を使用しています。置き換えますか?",
|
||||
"managed_event_dialog_information_one": "<strong>{{names}}</strong> がすでに URL <strong>/{{slug}}</strong> を使用しています。",
|
||||
"managed_event_dialog_information_other": "<strong>{{names}}</strong>はすでに<strong>/{{slug}}</strong>の URL を使用しています。",
|
||||
"managed_event_dialog_information_other": "<strong>{{names}}</strong> はすでに <strong>/{{slug}}</strong> の URL を使用しています。",
|
||||
"managed_event_dialog_clarification": "置き換えを選択すると、通知が送られます。上書きしたくない場合には、戻って削除してください。",
|
||||
"review_event_type": "イベントの種類を確認",
|
||||
"looking_for_more_analytics": "詳しい分析情報をお探しですか?",
|
||||
@@ -1837,7 +1837,7 @@
|
||||
"complete_your_booking_subject": "次の予約を完了する: {{date}} の {{title}}",
|
||||
"confirm_your_details": "詳細を確認",
|
||||
"copy_invite_link": "招待リンクをコピー",
|
||||
"edit_invite_link": "リンクの設定を編集",
|
||||
"edit_invite_link": "リンクの設定を編集する",
|
||||
"invite_link_copied": "招待リンクをコピーしました",
|
||||
"invite_link_deleted": "招待リンクを削除しました",
|
||||
"invite_link_updated": "招待リンクの設定を保存しました",
|
||||
@@ -1845,9 +1845,9 @@
|
||||
"one_day": "1 日",
|
||||
"seven_days": "7 日",
|
||||
"thirty_days": "30 日",
|
||||
"three_months": "3 ヶ月",
|
||||
"three_months": "3 か月",
|
||||
"one_year": "1 年",
|
||||
"team_invite_received": "{{teamName}} に参加するよう招待されました",
|
||||
"team_invite_received": "{{teamName}} への参加に招待されています",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
"charge_card_dialog_body": "出席者に {{amount, currency}} を請求しようとしています。続けてもよろしいですか?",
|
||||
"charge_attendee": "出席者に {{amount, currency}} を請求",
|
||||
@@ -1856,7 +1856,7 @@
|
||||
"email_invite_team_bulk": "{{userCount}} 人のユーザーが招待されました",
|
||||
"error_collecting_card": "カードの収集中にエラーが発生しました",
|
||||
"image_size_limit_exceed": "アップロードする画像のサイズは 5 MB 以下にする必要があります",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}:このワークフローを有効または無効にする権限がありません",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: このワークフローの有効/無効を切り替える権限がありません",
|
||||
"inline_embed": "インライン埋め込み",
|
||||
"load_inline_content": "イベントの種類を他のウェブサイト内コンテンツにインラインで直接読み込みます。",
|
||||
"floating_pop_up_button": "フローティングポップアップボタン",
|
||||
@@ -1876,69 +1876,69 @@
|
||||
"connect_google_workspace": "Google Workspace を接続",
|
||||
"google_workspace_admin_tooltip": "この機能を使うには Workspace の管理者になる必要があります",
|
||||
"first_event_type_webhook_description": "このイベントの種類の最初の Webhook を作成",
|
||||
"install_app_on": "次にアプリをインストール",
|
||||
"install_app_on": "次のアカウントにアプリをインストール",
|
||||
"create_for": "作成対象",
|
||||
"setup_organization": "Organization をセットアップ",
|
||||
"organization_banner_description": "チームがラウンドロビンスケジューリングや一括スケジューリングで、共有アプリ、ワークフロー、イベントの種類を作成できる環境を作成します。",
|
||||
"organization_banner_title": "複数のチームを持つ組織を管理",
|
||||
"set_up_your_organization": "組織をセットアップ",
|
||||
"organizations_description": "組織はチームが共有するイベントの種類、アプリ、ワークフローなどを作成できる共有環境です。",
|
||||
"must_enter_organization_name": "組織の名前の入力は必須です",
|
||||
"must_enter_organization_admin_email": "組織のメールアドレスの入力は必須です",
|
||||
"setup_organization": "組織をセットアップする",
|
||||
"organization_banner_description": "チームがラウンドロビンスケジューリングや一括スケジューリングを活用して、共有アプリ、ワークフロー、イベントの種類を作成できる環境を作成します。",
|
||||
"organization_banner_title": "複数のチームを持つ組織を管理する",
|
||||
"set_up_your_organization": "組織をセットアップする",
|
||||
"organizations_description": "組織は、チームが共有するイベントの種類、アプリ、ワークフローなどが作成可能な共有環境です。",
|
||||
"must_enter_organization_name": "組織名は必須項目です",
|
||||
"must_enter_organization_admin_email": "組織のメールアドレスは必須項目です",
|
||||
"admin_email": "組織のメールアドレス",
|
||||
"admin_username": "管理者のユーザー名",
|
||||
"organization_name": "組織の名前",
|
||||
"organization_url": "Organization の URL",
|
||||
"organization_verify_header": "組織のメールアドレスを確認してください",
|
||||
"organization_verify_email_body": "組織のセットアップを続行するには、以下のコードを使ってメールアドレスを確認してください。",
|
||||
"organization_name": "組織名",
|
||||
"organization_url": "組織の URL",
|
||||
"organization_verify_header": "組織のメールアドレスをご確認ください",
|
||||
"organization_verify_email_body": "組織のセットアップを続行するには、以下のコードを使用してメールアドレスを確認してください。",
|
||||
"additional_url_parameters": "追加の URL パラメータ",
|
||||
"about_your_organization": "あなたの組織について",
|
||||
"about_your_organization_description": "組織は共有するメンバー、イベントの種類、アプリ、ワークフローなどを含む複数のチームを作成できる共有環境です。",
|
||||
"create_your_teams": "チームを作成",
|
||||
"create_your_teams_description": "組織にチームメンバーを追加して、共同のスケジューリングを開始します",
|
||||
"invite_organization_admins": "組織の管理者を招待",
|
||||
"invite_organization_admins_description": "これらの管理者は組織のすべてのチームにアクセスできます。チームの管理者とメンバーは後で追加できます。",
|
||||
"set_a_password": "パスワードを設定",
|
||||
"set_a_password_description": "これにより、組織のメールアドレスとこのパスワードを使って、新規ユーザーアカウントが作成されます。",
|
||||
"organization_logo": "Organization のロゴ",
|
||||
"organization_about_description": "あなたの組織についての簡単な説明文です。あなたの組織の公開 プロフィールページに表示されます。",
|
||||
"ill_do_this_later": "これは後でする",
|
||||
"verify_your_email": "メールを確認",
|
||||
"enter_digit_code": "{{email}} に送信した6桁のコードを入力してください",
|
||||
"about_your_organization_description": "組織は、共有メンバー、イベントの種類、アプリ、ワークフローなどを含む複数のチームを作成可能な共有環境です。",
|
||||
"create_your_teams": "チームを作成する",
|
||||
"create_your_teams_description": "組織にチームメンバーを追加して、一緒にスケジュール設定を開始しましょう",
|
||||
"invite_organization_admins": "組織の管理者を招待する",
|
||||
"invite_organization_admins_description": "これらの管理者は組織内のすべてのチームにアクセスできます。チームの管理者とメンバーは、後から追加することが可能です。",
|
||||
"set_a_password": "パスワードを設定する",
|
||||
"set_a_password_description": "これにより、組織のメールアドレスとこのパスワードを用いて新しいユーザーアカウントが作成されます。",
|
||||
"organization_logo": "組織のロゴ",
|
||||
"organization_about_description": "あなたの組織についての簡単な説明文です。あなたの組織の公開プロフィールページに表示されます。",
|
||||
"ill_do_this_later": "後で行う",
|
||||
"verify_your_email": "メールを確認する",
|
||||
"enter_digit_code": "{{email}} に送信した 6 桁のコードを入力してください",
|
||||
"verify_email_organization": "組織を作成するには、メールを確認してください",
|
||||
"code_provided_invalid": "提供されたコードは有効ではありません。もう一度お試しください",
|
||||
"code_provided_invalid": "提供されたコードは無効です。もう一度お試しください",
|
||||
"email_already_used": "メールはすでに使用されています",
|
||||
"organization_admin_invited_heading": "{{orgName}} に参加するよう招待されました",
|
||||
"organization_admin_invited_body": "{{orgName}} のチームに参加して、これからはスケジューリングではなくミーティングに集中しましょう!",
|
||||
"duplicated_slugs_warning": "次のチームはスラッグが重複しているため作成できませんでした:{{slugs}}",
|
||||
"organization_admin_invited_heading": "{{orgName}} への参加に招待されました",
|
||||
"organization_admin_invited_body": "{{orgName}} のチームに参加し、ミーティングの手配ではなくミーティングそのものに集中しましょう!",
|
||||
"duplicated_slugs_warning": "以下のチームについては、スラッグ {{slugs}} が重複しているため作成できませんでした。",
|
||||
"team_names_empty": "チーム名は空欄にできません",
|
||||
"team_names_repeated": "チーム名を繰り返し使用することはできません",
|
||||
"user_belongs_organization": "ユーザーは組織の一員です",
|
||||
"user_belongs_organization": "ユーザーは組織に属しています",
|
||||
"org_no_teams_yet": "この組織にはまだチームがありません",
|
||||
"org_no_teams_yet_description": "管理者である場合は、必ずここに表示されるチームを作成してください。",
|
||||
"org_no_teams_yet_description": "管理者である場合には、ここに表示されるチームを必ず作成してください。",
|
||||
"set_up": "設定",
|
||||
"set_up_your_profile": "プロフィールを設定",
|
||||
"set_up_your_profile_description": "あなたのことを {{orgName}} 内、そして公開リンクを見る人に知ってもらいます。",
|
||||
"set_up_your_profile": "プロフィールを設定する",
|
||||
"set_up_your_profile_description": "{{orgName}} 内で、公開リンクを使用するユーザーにあなたのことを知ってもらいましょう。",
|
||||
"my_profile": "プロフィール",
|
||||
"my_settings": "設定",
|
||||
"crm": "CRM",
|
||||
"messaging": "メッセージング",
|
||||
"sender_id_info": "SMS の送信者として表示される名前または番号(国によっては英数字の送信者 ID を許可しない場合があります)",
|
||||
"org_admins_can_create_new_teams": "組織の管理者のみが新規チームを作成できます",
|
||||
"google_new_spam_policy": "Goggleのスパムに関する新しいポリシーにより、この予約についてのメールやカレンダー通知を受け取れなくなる可能性があります。",
|
||||
"sender_id_info": "SMS の送信者として表示される名前または番号 (国によっては英数字の送信者 ID が許可されない場合もあります)",
|
||||
"org_admins_can_create_new_teams": "組織の管理者のみが新しいチームを作成できます",
|
||||
"google_new_spam_policy": "Google の新しい迷惑メールポリシーにより、この予約に関するメールやカレンダー通知を受け取れなくなる可能性があります。",
|
||||
"resolve": "解決する",
|
||||
"no_organization_slug": "この組織のチームの作成中にエラーが発生しました。URL スラッグがありません。",
|
||||
"org_name": "組織の名前",
|
||||
"no_organization_slug": "この組織でチームを作成する際にエラーが発生しました。URL スラッグがありません。",
|
||||
"org_name": "組織名",
|
||||
"org_url": "組織の URL",
|
||||
"copy_link_org": "組織へのリンクをコピー",
|
||||
"copy_link_org": "組織へのリンクをコピーする",
|
||||
"404_the_org": "組織",
|
||||
"404_the_team": "チーム",
|
||||
"404_claim_entity_org": "組織のサブドメインを取得",
|
||||
"404_claim_entity_team": "このチームの一員になって、これからはスケジュールをまとめて管理しましょう",
|
||||
"404_claim_entity_org": "組織のサブドメインを取得する",
|
||||
"404_claim_entity_team": "このチームの一員になって、今後はスケジュールをまとめて管理しましょう",
|
||||
"insights_all_org_filter": "すべて",
|
||||
"insights_team_filter": "チーム:{{teamName}}",
|
||||
"insights_user_filter": "ユーザー:{{userName}}",
|
||||
"insights_subtitle": "イベント全体の予約 Insights を表示",
|
||||
"insights_team_filter": "チーム: {{teamName}}",
|
||||
"insights_user_filter": "ユーザー: {{userName}}",
|
||||
"insights_subtitle": "イベント全体での予約に関する分析情報を表示する",
|
||||
"custom_plan": "カスタムプラン",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ この上に新しい文字列を追加 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ この上に新しい文字列を追加してください ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -13,18 +13,18 @@
|
||||
"reset_password_subject": "{{appName}}: 비밀번호 재설정 방법",
|
||||
"verify_email_subject": "{{appName}}: 계정 인증",
|
||||
"check_your_email": "이메일 확인",
|
||||
"verify_email_page_body": "{{email}}에 이메일을 발송했습니다. {{appName}}에서 최상의 이메일 및 캘린더 전송 가능성을 보장하려면 이메일 주소를 인증하는 것이 중요합니다.",
|
||||
"verify_email_banner_body": "최상의 이메일 및 일정 전달 가능성을 보장하려면 이메일 주소를 인증하십시오.",
|
||||
"verify_email_page_body": "{{email}}에 이메일을 발송했습니다. {{appName}}에서 이메일과 캘린더를 가능한 한 차질 없이 보내드리려면 이메일 주소를 인증하는 것이 중요합니다.",
|
||||
"verify_email_banner_body": "이메일 및 일정을 가능한 한 차질 없이 보내드릴 수 있도록 이메일 주소를 인증하세요.",
|
||||
"verify_email_email_header": "이메일 주소 인증",
|
||||
"verify_email_email_button": "이메일 인증",
|
||||
"verify_email_email_body": "아래 버튼을 클릭하여 이메일 주소를 인증하십시오.",
|
||||
"verify_email_email_link_text": "버튼 클릭이 마음에 들지 않는 경우 링크는 다음과 같습니다.",
|
||||
"verify_email_email_body": "아래 버튼을 클릭하여 이메일 주소를 인증하세요.",
|
||||
"verify_email_email_link_text": "버튼 클릭이 마음에 들지 않는 경우 다음 링크를 사용하세요.",
|
||||
"email_sent": "이메일이 성공적으로 전송되었습니다",
|
||||
"event_declined_subject": "거절됨: {{date}} {{title}}",
|
||||
"event_cancelled_subject": "취소됨: {{title}} 날짜 {{date}}",
|
||||
"event_request_declined": "회의 요청이 거절되었습니다.",
|
||||
"event_request_declined_recurring": "되풀이 이벤트 요청이 거부되었습니다",
|
||||
"event_request_cancelled": "회의 일정이 취소되었습니다",
|
||||
"event_request_cancelled": "예약된 일정이 취소되었습니다",
|
||||
"organizer": "주최자",
|
||||
"need_to_reschedule_or_cancel": "다시 일정을 잡거나 취소하시겠습니까?",
|
||||
"no_options_available": "사용 가능한 옵션 없음",
|
||||
@@ -87,7 +87,7 @@
|
||||
"your_meeting_has_been_booked": "회의가 예약되었습니다.",
|
||||
"event_type_has_been_rescheduled_on_time_date": "귀하의 {{title}} 일정이 {{date}}로 변경되었습니다.",
|
||||
"event_has_been_rescheduled": "업데이트 - 이벤트 일정이 변경되었습니다.",
|
||||
"request_reschedule_subtitle": "{{organizer}}에서 예약을 취소했고 다른 시간을 선택할 것을 요청했습니다.",
|
||||
"request_reschedule_subtitle": "{{organizer}}에서 예약을 취소하고 다른 시간을 선택할 것을 요청했습니다.",
|
||||
"request_reschedule_title_organizer": "{{attendee}}에게 일정 변경을 요청하셨습니다",
|
||||
"request_reschedule_subtitle_organizer": "예약을 취소하셨기 때문에 {{attendee}} 님이 새 예약 시간을 선택해야 합니다.",
|
||||
"rescheduled_event_type_subject": "일정 변경 요청이 보내짐: {{date}}에 {{name}}(으)로 {{eventType}}",
|
||||
@@ -118,7 +118,7 @@
|
||||
"team_info": "팀 정보",
|
||||
"request_another_invitation_email": "{{toEmail}} 을 {{appName}} 계정에 사용하고 싶지 않거나 이미 {{appName}} 계정이 있는 경우, 그 메일로 초대를 요청하세요.",
|
||||
"you_have_been_invited": "{{teamName}} 팀에 초대되셨습니다.",
|
||||
"user_invited_you": "{{user}} 님께서 {{appName}}의 {{entity}} {{team}}에 초대하셨습니다.",
|
||||
"user_invited_you": "{{user}} 님께서 {{appName}}의 {{entity}} {{team}}에 귀하를 초대하셨습니다.",
|
||||
"hidden_team_member_title": "귀하는 이 팀에서 숨겨졌습니다",
|
||||
"hidden_team_member_message": "귀하의 시트 비용은 Pro로 업그레이드하거나 팀 소유자에게 그들이 귀하의 시트 비용을 지불할 수 있다고 알리는 어떤 경우에도 지불되지 않습니다.",
|
||||
"hidden_team_owner_message": "팀을 사용하려면 Pro 계정이 필요합니다. 귀하의 계정은 업그레이드할 때까지 숨겨졌습니다.",
|
||||
@@ -129,8 +129,8 @@
|
||||
"team_upgrade_banner_description": "당사의 새로운 팀 플랜을 사용해 주셔서 감사합니다. 귀하의 \"{{teamName}}\" 팀에 업그레이드가 필요한 것으로 확인되었습니다.",
|
||||
"upgrade_banner_action": "여기서 업그레이드",
|
||||
"team_upgraded_successfully": "팀이 성공적으로 업그레이드되었습니다!",
|
||||
"org_upgrade_banner_description": "당사의 조직 플랜을 사용해 주셔서 감사합니다. 귀하의 \"{{teamName}}\" 조직에 업그레이드가 필요한 것으로 확인되었습니다.",
|
||||
"org_upgraded_successfully": "조직이 성공적으로 업그레이드되었습니다!",
|
||||
"org_upgrade_banner_description": "당사의 Organization 플랜 체험을 선택해 주셔서 감사합니다. 귀하의 Organization \"{{teamName}}\"에 업그레이드가 필요한 것으로 확인되었습니다.",
|
||||
"org_upgraded_successfully": "Organization이 성공적으로 업그레이드되었습니다!",
|
||||
"use_link_to_reset_password": "비밀번호를 재설정하시려면 아래 링크를 사용하세요.",
|
||||
"hey_there": "안녕하세요.",
|
||||
"forgot_your_password_calcom": "비밀번호를 잊어버리셨나요? - {{appName}}",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "팀 언어 및 시간대 설정 관리",
|
||||
"few_sentences_about_yourself": "자신에 대해 몇 마디를 써보세요. 개인 URL 페이지에 보이는 내용입니다.",
|
||||
"nearly_there": "거의 다 되었습니다!",
|
||||
"nearly_there_instructions": "마지막으로, 당신에 대해 간단한 소개와 사진을 올려주세요. 소개와 사진은 예약에 도움을 줍니다.",
|
||||
"nearly_there_instructions": "마지막으로, 예약에 도움이 되고 사람들이 본인에 대해 알 수 있도록 본인에 대한 간단한 소개와 사진을 올려주세요.",
|
||||
"set_availability_instructions": "주기적으로 시간이 되는 때가 언제인지 알려주세요. 나중에 더 추가할 수 있습니다.",
|
||||
"set_availability": "언제 여유가 있는지 설정하세요.",
|
||||
"continue_without_calendar": "캘린더 없이 계속하기",
|
||||
@@ -306,16 +306,16 @@
|
||||
"password_has_been_reset_login": "비밀번호가 초기화되었습니다. 이제 새로 생성한 비밀번호로 로그인할 수 있습니다.",
|
||||
"layout": "레이아웃",
|
||||
"bookerlayout_default_title": "기본 보기",
|
||||
"bookerlayout_description": "여러 개를 선택할 수 있고 예약자는 보기를 전환할 수 있습니다.",
|
||||
"bookerlayout_description": "여러 개를 선택할 수 있고 예약자가 보기를 전환할 수 있습니다.",
|
||||
"bookerlayout_user_settings_title": "예약 레이아웃",
|
||||
"bookerlayout_user_settings_description": "여러 개를 선택할 수 있으고 예약자는 보기를 전환할 수 있습니다. 이벤트별로 재정의할 수 있습니다.",
|
||||
"bookerlayout_user_settings_description": "여러 개를 선택하고 예약자가 보기를 전환할 수 있습니다. 이벤트별로 재정의할 수 있습니다.",
|
||||
"bookerlayout_month_view": "월",
|
||||
"bookerlayout_week_view": "주별",
|
||||
"bookerlayout_column_view": "열",
|
||||
"bookerlayout_error_min_one_enabled": "하나 이상의 레이아웃을 활성화해야 합니다.",
|
||||
"bookerlayout_error_default_not_enabled": "기본 보기로 선택한 레이아웃은 활성화된 레이아웃의 일부가 아닙니다.",
|
||||
"bookerlayout_error_unknown_layout": "선택한 레이아웃은 유효한 레이아웃이 아닙니다.",
|
||||
"bookerlayout_override_global_settings": "<2>설정/표시</2> 또는 <6>이 이벤트에 대해서만 재정의</6>에서 모든 이벤트 유형에 대해 이를 관리할 수 있습니다.",
|
||||
"bookerlayout_override_global_settings": "<2>설정/모양</2> 또는 <6>이 이벤트에 대해서만 재정의</6>에서 모든 이벤트 유형에 대해 이를 관리할 수 있습니다.",
|
||||
"unexpected_error_try_again": "예기치 않은 오류가 발생했습니다. 다시 시도하십시오.",
|
||||
"sunday_time_error": "일요일 유효하지 않은 시간",
|
||||
"monday_time_error": "월요일 유효하지 않은 시간",
|
||||
@@ -339,7 +339,7 @@
|
||||
"error_with_status_code_occured": "상태 코드가 {{status}}인 오류가 발생했습니다.",
|
||||
"error_event_type_url_duplicate": "이 URL을 사용하는 이벤트 유형이 이미 존재합니다.",
|
||||
"error_event_type_unauthorized_create": "이 이벤트를 만들 수 없습니다.",
|
||||
"error_event_type_unauthorized_update": "이 일정을 편집할 수 없습니다.",
|
||||
"error_event_type_unauthorized_update": "이 이벤트를 편집할 수 없습니다.",
|
||||
"error_workflow_unauthorized_create": "이 워크플로를 만들 수 없습니다.",
|
||||
"error_schedule_unauthorized_create": "이 일정을 만들 수 없습니다.",
|
||||
"booking_already_cancelled": "이 예약은 이미 취소되었습니다",
|
||||
@@ -357,7 +357,7 @@
|
||||
"upcoming_bookings": "누군가 당신과 회의를 예약하는 즉시 여기에 표시됩니다.",
|
||||
"recurring_bookings": "누군가가 귀하와 되풀이 회의를 예약하는 즉시 여기에 표시됩니다.",
|
||||
"past_bookings": "과거 예약이 여기에 표시됩니다.",
|
||||
"cancelled_bookings": "취소된 예약은 여기에 표시됩니다.",
|
||||
"cancelled_bookings": "취소된 예약이 여기에 표시됩니다.",
|
||||
"unconfirmed_bookings": "확인되지 않은 예약은 여기에 표시됩니다.",
|
||||
"unconfirmed_bookings_tooltip": "미확인된 예약",
|
||||
"on": "-",
|
||||
@@ -413,8 +413,8 @@
|
||||
"team_webhooks": "팀 웹훅",
|
||||
"create_new_webhook_to_account": "내 계정에 새 웹훅 만들기",
|
||||
"new_webhook": "새 웹훅",
|
||||
"receive_cal_meeting_data": "일정이 잡히거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
|
||||
"receive_cal_event_meeting_data": "일정이 잡혔거나 취소되었을 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
|
||||
"receive_cal_meeting_data": "이벤트가 예약되거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
|
||||
"receive_cal_event_meeting_data": "이 이벤트가 예약되거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
|
||||
"responsive_fullscreen_iframe": "반응형 전체 화면 iframe",
|
||||
"loading": "로드 중",
|
||||
"deleting": "삭제 중...",
|
||||
@@ -551,11 +551,11 @@
|
||||
"team_description": "팀 URL 페이지에 나타날 팀 소개를 해주세요.",
|
||||
"org_description": "귀하의 조직에 대한 몇 자 남겨주세요. 이 내용은 귀하 조직의 URL 페이지에 표시됩니다.",
|
||||
"members": "회원",
|
||||
"organization_members": "조직 일원",
|
||||
"organization_members": "Organization 구성원",
|
||||
"member": "회원",
|
||||
"number_member_one": "회원 {{count}}명",
|
||||
"number_member_other": "회원 {{count}}명",
|
||||
"number_selected": "{{count}} 선택됨",
|
||||
"number_selected": "{{count}}개 선택됨",
|
||||
"owner": "소유자",
|
||||
"admin": "관리",
|
||||
"administrator_user": "관리자 사용자",
|
||||
@@ -867,13 +867,13 @@
|
||||
"no_category_apps": "{{category}} 앱 없음",
|
||||
"all_apps": "모든 앱",
|
||||
"no_category_apps_description_calendar": "중복 예약을 방지하기 위해 충돌을 확인하려는 캘린더 앱을 추가합니다",
|
||||
"no_category_apps_description_conferencing": "고객과 화상 통화를 통합하려면 회의 앱을 추가해 보세요",
|
||||
"no_category_apps_description_conferencing": "고객과 화상 통화하려면 회의 앱을 추가해 보세요",
|
||||
"no_category_apps_description_payment": "귀하와 귀하 고객 간의 거래를 용이하게 하는 결제 앱을 추가합니다",
|
||||
"no_category_apps_description_analytics": "예약 페이지에 대한 분석 앱 추가",
|
||||
"no_category_apps_description_automation": "사용할 자동화 앱 추가",
|
||||
"no_category_apps_description_other": "모든 종류의 작업을 수행하는 다른 유형의 앱을 추가합니다",
|
||||
"no_category_apps_description_web3": "예약 페이지에 web3 앱 추가",
|
||||
"no_category_apps_description_messaging": "맞춤 알림 및 미리 알림을 설정하려면 메시지 앱을 추가하세요",
|
||||
"no_category_apps_description_messaging": "사용자 정의 알림 및 미리 알림을 설정하려면 메시징 앱을 추가하세요",
|
||||
"no_category_apps_description_crm": "CRM 앱을 추가하여 만났던 사람을 추적하세요",
|
||||
"installed_app_calendar_description": "중복 예약을 방지하기 위해 충돌을 확인하도록 캘린더를 설정합니다.",
|
||||
"installed_app_payment_description": "고객에게 요금 청구 시 사용할 결제 처리 서비스를 구성합니다.",
|
||||
@@ -882,7 +882,7 @@
|
||||
"installed_app_conferencing_description": "사용할 회의 앱 구성",
|
||||
"installed_app_automation_description": "사용할 자동화 앱 구성",
|
||||
"installed_app_web3_description": "예약 페이지에 사용할 web3 앱 구성",
|
||||
"installed_app_messaging_description": "맞춤 알림 및 미리 알림 설정에 사용할 메시징 앱 구성",
|
||||
"installed_app_messaging_description": "사용자 정의 알림 및 미리 알림 설정에 사용할 메시징 앱 구성",
|
||||
"installed_app_crm_description": "만났던 사람을 추적하는 데 사용할 CRM 앱 구성",
|
||||
"analytics": "분석",
|
||||
"empty_installed_apps_headline": "설치된 앱 없음",
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"user_impersonation_description": "신고하신 문제를 신속하게 해결할 수 있도록 지원 팀이 귀하의 계정에 일시적으로 로그인할 수 있게 허용합니다.",
|
||||
"team_impersonation_description": "팀 소유자/관리자가 일시적으로 귀하의 자격으로 로그인할 수 있게 합니다.",
|
||||
"make_team_private": "팀을 비공개로 설정",
|
||||
"make_team_private_description": "이 기능이 켜져 있으면 팀원은 다른 팀원을 볼 수 없게 됩니다.",
|
||||
"make_team_private_description": "이 기능을 켜면 팀원이 다른 팀원을 볼 수 없게 됩니다.",
|
||||
"you_cannot_see_team_members": "비공개 팀의 모든 팀원을 볼 수 없습니다.",
|
||||
"allow_booker_to_select_duration": "예약자가 기간을 선택하도록 허용",
|
||||
"impersonate_user_tip": "이 기능의 사용은 모두 감사됩니다.",
|
||||
@@ -1338,7 +1338,7 @@
|
||||
"profile_team_description": "팀 프로필 설정 관리",
|
||||
"profile_org_description": "사용자 조직 프로필 설정 관리",
|
||||
"members_team_description": "그룹 내 사용자",
|
||||
"organization_description": "조직의 관리자 및 일원 관리",
|
||||
"organization_description": "조직의 관리자 및 구성원 관리",
|
||||
"team_url": "팀 URL",
|
||||
"team_members": "팀원",
|
||||
"more": "더 보기",
|
||||
@@ -1494,9 +1494,9 @@
|
||||
"must_enter_team_name": "팀 이름을 입력하세요",
|
||||
"team_url_required": "팀 URL을 입력하세요",
|
||||
"url_taken": "이미 사용 중인 URL입니다",
|
||||
"problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하십시오.",
|
||||
"problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하세요.",
|
||||
"team_publish": "팀 게시",
|
||||
"number_text_notifications": "전화번호 (문자 알림)",
|
||||
"number_text_notifications": "전화번호(문자 알림)",
|
||||
"attendee_email_variable": "참석자 이메일",
|
||||
"attendee_email_info": "예약자 이메일",
|
||||
"kbar_search_placeholder": "명령어를 입력하거나 검색하세요...",
|
||||
@@ -1555,7 +1555,7 @@
|
||||
"no_apps": "Cal의 이 인스턴스에서 활성화된 앱이 없습니다",
|
||||
"no_apps_configured": "아직 구성된 앱이 없습니다",
|
||||
"enable_in_settings": "설정에서 앱을 활성화할 수 있습니다",
|
||||
"please_contact_admin": "관리자에게 문의하십시오",
|
||||
"please_contact_admin": "관리자에게 문의하세요",
|
||||
"apps_settings": "앱 설정",
|
||||
"fill_this_field": "이 필드에 입력하세요",
|
||||
"options": "선택사항",
|
||||
@@ -1659,10 +1659,10 @@
|
||||
"delete_sso_configuration_confirmation_description": "{{connectionType}} 구성을 삭제하시겠습니까? {{connectionType}} 로그인을 사용하는 팀원은 더 이상 Cal.com에 액세스할 수 없습니다.",
|
||||
"organizer_timezone": "주최자 시간대",
|
||||
"email_user_cta": "초대 보기",
|
||||
"email_no_user_invite_heading": "{{appName}} {{entity}} 가입 초대를 받으셨습니다",
|
||||
"email_no_user_invite_heading": "{{appName}} {{entity}}에 참여 초대를 받으셨습니다",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} 님이 귀하를 {{appName}}에서 자신의 팀에 초대했습니다. {{appName}} 앱은 귀하와 귀하의 팀이 이메일을 주고 받지 않고 회의 일정을 잡을 수 있게 해주는 이벤트 정리 스케줄러입니다.",
|
||||
"email_user_invite_subheading": "{{invitedBy}}님이 {{appName}}에서 자신의 {{entity}} `{{teamName}}` 팀에 가입하도록 당신을 초대했습니다. {{appName}}은 유저와 {{entity}}에서 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 하는 이벤트 조율 스케줄러입니다.",
|
||||
"email_no_user_invite_steps_intro": "안내해 드릴 몇 가지 간단한 단계만 거치면 곧 {{entity}}에 대해 스트레스 없이 편리하게 일정을 관리할 수 있게 될 것입니다.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} 님이 {{appName}}에서 자신의 {{entity}} `{{teamName}}`에 귀하의 참여를 초대했습니다. {{appName}}은(는) 사용자와 {{entity}}이(가) 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 해주는 이벤트 조정 스케줄러입니다.",
|
||||
"email_no_user_invite_steps_intro": "안내해 드릴 몇 가지 간단한 단계만 거치면 곧 스트레스 없이 편리하게 {{entity}} 일정을 관리할 수 있게 될 것입니다.",
|
||||
"email_no_user_step_one": "사용자 이름 선택",
|
||||
"email_no_user_step_two": "캘린더 계정 연결",
|
||||
"email_no_user_step_three": "언제 여유가 있는지 설정하세요",
|
||||
@@ -1687,7 +1687,7 @@
|
||||
"attendee_no_longer_attending": "참석자가 더 이상 이벤트에 참석하고 있지 않습니다",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}}이(가) 취소되었습니다. 즉, 이 시간 슬롯에 좌석이 비어 있습니다",
|
||||
"create_event_on": "이벤트 생성일:",
|
||||
"create_routing_form_on": "회람 양식 만들기",
|
||||
"create_routing_form_on": "라우팅 양식을 만들 대상",
|
||||
"default_app_link_title": "기본 앱 링크 설정",
|
||||
"default_app_link_description": "기본 앱 링크를 설정하면 새로 생성된 모든 이벤트 유형에서 설정된 앱 링크를 사용할 수 있습니다.",
|
||||
"organizer_default_conferencing_app": "주최자의 기본 앱",
|
||||
@@ -1697,7 +1697,7 @@
|
||||
"booking_questions_title": "예약 질문",
|
||||
"booking_questions_description": "예약 페이지에서 묻는 질문을 사용자 정의합니다",
|
||||
"add_a_booking_question": "질문 추가",
|
||||
"identifier": "식별자",
|
||||
"identifier": "ID",
|
||||
"duplicate_email": "중복 이메일입니다",
|
||||
"booking_with_payment_cancelled": "이 이벤트는 더 이상 결제할 수 없습니다",
|
||||
"booking_with_payment_cancelled_already_paid": "이 예약 결제에 대한 환불 처리가 진행 중입니다.",
|
||||
@@ -1740,7 +1740,7 @@
|
||||
"no_responses_yet": "아직 응답 없음",
|
||||
"no_routes_defined": "정의된 경로 없음",
|
||||
"this_will_be_the_placeholder": "이것은 자리 표시자가 됩니다",
|
||||
"error_booking_event": "이벤트를 예약하는 도중 오류가 발생했습니다. 페이지를 새로고침한 후 다시 시도해주세요.",
|
||||
"error_booking_event": "이벤트를 예약하는 중 오류가 발생했습니다. 페이지를 새로 고치고 다시 시도하세요.",
|
||||
"timeslot_missing_title": "시간대가 선택되지 않았습니다",
|
||||
"timeslot_missing_description": "이벤트를 예약 할 시간대를 선택해주세요.",
|
||||
"timeslot_missing_cta": "시간대 선택",
|
||||
@@ -1841,11 +1841,11 @@
|
||||
"invite_link_copied": "초대 링크가 복사되었습니다",
|
||||
"invite_link_deleted": "초대 링크가 삭제되었습니다",
|
||||
"invite_link_updated": "초대 링크 설정이 저장되었습니다",
|
||||
"link_expires_after": "링크 만료 전까지 설정된 일 수...",
|
||||
"link_expires_after": "링크 만료 기한...",
|
||||
"one_day": "1일",
|
||||
"seven_days": "7일",
|
||||
"thirty_days": "30일",
|
||||
"three_months": "3개월ㄹ",
|
||||
"three_months": "3개월",
|
||||
"one_year": "1년",
|
||||
"team_invite_received": "{{teamName}}에 초대되셨습니다",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
@@ -1876,7 +1876,7 @@
|
||||
"connect_google_workspace": "Google Workspace 연결",
|
||||
"google_workspace_admin_tooltip": "이 기능을 사용하려면 Workspace 관리자여야 합니다",
|
||||
"first_event_type_webhook_description": "이 이벤트 유형에 대한 첫 번째 웹훅 만들기",
|
||||
"install_app_on": "앱 설치",
|
||||
"install_app_on": "앱 설치 대상",
|
||||
"create_for": "작성 대상",
|
||||
"setup_organization": "조직 설정",
|
||||
"organization_banner_description": "팀이 라운드 로빈 및 공동 예약을 통해 공유 앱, 워크플로 및 이벤트 유형을 생성할 수 있는 환경을 만듭니다.",
|
||||
@@ -1890,35 +1890,35 @@
|
||||
"organization_name": "조직 이름",
|
||||
"organization_url": "조직 URL",
|
||||
"organization_verify_header": "조직 이메일 인증",
|
||||
"organization_verify_email_body": "조직 설정을 계속하려면 아래 코드를 사용하여 이메일 주소를 인증하십시오.",
|
||||
"organization_verify_email_body": "조직 설정을 계속하려면 아래 코드를 사용하여 이메일 주소를 인증하세요.",
|
||||
"additional_url_parameters": "추가 URL 매개변수",
|
||||
"about_your_organization": "조직 소개",
|
||||
"about_your_organization_description": "조직은 일원, 이벤트 유형, 앱, 워크플로 등을 공유하여 여러 팀을 만들 수 있는 공유 환경입니다.",
|
||||
"about_your_organization_description": "Organization은 구성원, 이벤트 유형, 앱, 워크플로 등을 공유하여 여러 팀을 만들 수 있는 공유 환경입니다.",
|
||||
"create_your_teams": "팀 만들기",
|
||||
"create_your_teams_description": "팀원을 조직에 추가하여 함께 일정을 시작하세요",
|
||||
"create_your_teams_description": "조직에 팀원을 추가하여 함께 일정 관리를 시작하세요",
|
||||
"invite_organization_admins": "조직 관리자 초대",
|
||||
"invite_organization_admins_description": "이러한 관리자는 조직의 모든 팀에 액세스할 수 있습니다. 나중에 팀 관리자와 팀원을 추가할 수 있습니다.",
|
||||
"set_a_password": "비밀번호 설정",
|
||||
"set_a_password_description": "이것으로 조직 이메일과 이 비밀번호를 사용하여 새 사용자 계정이 생성됩니다.",
|
||||
"set_a_password_description": "이렇게 하면 조직 이메일과 이 비밀번호를 사용하여 새 사용자 계정이 생성됩니다.",
|
||||
"organization_logo": "조직 로고",
|
||||
"organization_about_description": "귀하의 조직에 대해 몇 자 남겨주세요. 이 내용은 귀하 조직의 공개 프로필 페이지에 표시됩니다.",
|
||||
"ill_do_this_later": "나중에",
|
||||
"verify_your_email": "이메일 인증",
|
||||
"enter_digit_code": "{{email}} 주소로 보내드린 6자리 코드를 입력하세요",
|
||||
"verify_email_organization": "조직을 만들려면 이메일을 인증하세요",
|
||||
"code_provided_invalid": "입력하신 코드가 유효하지 않습니다. 다시 입력하십시오.",
|
||||
"code_provided_invalid": "입력하신 코드가 유효하지 않습니다. 다시 입력하세요.",
|
||||
"email_already_used": "이미 사용 중인 이메일입니다",
|
||||
"organization_admin_invited_heading": "{{orgName}}에 초대되셨습니다",
|
||||
"organization_admin_invited_body": "{{orgName}}에서 팀에 합류하여 회의 준비보다 회의 자체에 집중하세요!",
|
||||
"duplicated_slugs_warning": "중복된 슬러그로 인해 다음 팀을 생성할 수 없습니다. {{slugs}}",
|
||||
"team_names_empty": "팀 이름은 비어 있을 수 없습니다",
|
||||
"duplicated_slugs_warning": "중복된 슬러그로 인해 다음 팀을 생성할 수 없습니다: {{slugs}}",
|
||||
"team_names_empty": "팀 이름은 비워둘 수 없습니다",
|
||||
"team_names_repeated": "팀 이름은 중복될 수 없습니다",
|
||||
"user_belongs_organization": "사용자는 조직 소속입니다",
|
||||
"org_no_teams_yet": "이 조직에 아직 팀이 없습니다",
|
||||
"org_no_teams_yet_description": "관리자인 경우 여기에 표시할 팀을 만들어야 합니다.",
|
||||
"set_up": "설정",
|
||||
"set_up_your_profile": "사용자 프로필 설정",
|
||||
"set_up_your_profile_description": "{{orgName}} 내에서 귀하가 누구인지, 그리고 귀하의 공개 링크에 언제 참여하는지 사람들에게 알리십시오.",
|
||||
"set_up_your_profile_description": "{{orgName}} 내에서 귀하가 누구인지, 그리고 귀하의 공개 링크에 언제 참여하는지 사람들에게 알려주세요.",
|
||||
"my_profile": "내 프로필",
|
||||
"my_settings": "내 설정",
|
||||
"crm": "CRM",
|
||||
@@ -1930,7 +1930,7 @@
|
||||
"no_organization_slug": "이 조직의 팀을 만드는 중 오류가 발생했습니다. URL 슬러그가 없습니다.",
|
||||
"org_name": "조직 이름",
|
||||
"org_url": "조직 URL",
|
||||
"copy_link_org": "조직에 링크 복사",
|
||||
"copy_link_org": "조직 링크 복사",
|
||||
"404_the_org": "조직",
|
||||
"404_the_team": "팀",
|
||||
"404_claim_entity_org": "조직에 대한 하위 도메인 요청",
|
||||
@@ -1940,5 +1940,5 @@
|
||||
"insights_user_filter": "사용자: {{userName}}",
|
||||
"insights_subtitle": "이벤트 전반에 걸친 예약 Insights 보기",
|
||||
"custom_plan": "사용자 정의 플랜",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하십시오 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
"calcom_explained_new_user": "Voltooi het instellen van uw {{appName}}-account! U bent slechts enkele stappen verwijderd van het oplossen van al uw planningsproblemen.",
|
||||
"have_any_questions": "Heeft u vragen? We zijn er om te helpen.",
|
||||
"reset_password_subject": "{{appName}}: Instructies voor het opnieuw instellen van uw wachtwoord",
|
||||
"verify_email_subject": "{{appName}}: Verifieer je account",
|
||||
"check_your_email": "Controleer je e-mail",
|
||||
"verify_email_subject": "{{appName}}: verifieer je account",
|
||||
"check_your_email": "Controleer uw e-mail",
|
||||
"verify_email_page_body": "We hebben een e-mail naar {{email}} gestuurd. Het is belangrijk om uw e-mailadres te verifiëren om de beste bezorgbaarheid van e-mails en agenda's van {{appName}} te garanderen.",
|
||||
"verify_email_banner_body": "Verifieer uw e-mailadres om de beste bezorgbaarheid van e-mails en agenda's te garanderen",
|
||||
"verify_email_email_header": "Verifieer uw e-mailadres",
|
||||
@@ -131,7 +131,7 @@
|
||||
"team_upgrade_banner_description": "Bedankt voor het testen van ons nieuwe teamabonnement. We hebben geconstateerd dat uw team \"{{teamName}}\" moet worden geüpgraded.",
|
||||
"upgrade_banner_action": "Hier upgraden",
|
||||
"team_upgraded_successfully": "Uw team is geüpgraded!",
|
||||
"org_upgrade_banner_description": "Bedankt voor het testen van ons organisatie-abonnement. We hebben geconstateerd dat uw organisatie \"{{teamName}}\" moet worden geüpgraded.",
|
||||
"org_upgrade_banner_description": "Bedankt voor het testen van ons organisatieabonnement. We hebben geconstateerd dat uw organisatie \"{{teamName}}\" moet worden geüpgraded.",
|
||||
"org_upgraded_successfully": "Uw organisatie is geüpgraded!",
|
||||
"use_link_to_reset_password": "Gebruik de onderstaande link om uw wachtwoord te resetten",
|
||||
"hey_there": "Hallo daar,",
|
||||
@@ -199,7 +199,7 @@
|
||||
"blog": "Blog",
|
||||
"blog_description": "Lees ons laatste nieuws en artikelen",
|
||||
"join_our_community": "Word lid van onze community",
|
||||
"join_our_discord": "Word lid van onze Discord",
|
||||
"join_our_discord": "Neem deel aan onze Discord",
|
||||
"404_claim_entity_user": "Claim uw gebruikersnaam en plan evenementen",
|
||||
"popular_pages": "Populaire pagina's",
|
||||
"register_now": "Registreer nu",
|
||||
@@ -248,10 +248,10 @@
|
||||
"available_apps_lower_case": "Beschikbare apps",
|
||||
"check_email_reset_password": "Controleer uw e-mail. We hebben u een link gestuurd om uw wachtwoord opnieuw in te stellen.",
|
||||
"finish": "Voltooien",
|
||||
"organization_general_description": "Beheer de instellingen voor uw teamtaal en -tijdzone",
|
||||
"organization_general_description": "Beheer de instellingen voor de taal en tijdzone van uw team",
|
||||
"few_sentences_about_yourself": "Een korte introductie over uzelf. Dit wordt weergegeven op uw persoonlijke pagina.",
|
||||
"nearly_there": "Bijna klaar!",
|
||||
"nearly_there_instructions": "Tot slot, een korte beschrijving van u en een foto helpt u echt boekingen te krijgen en laat iedereen weten bij wie ze zijn geboekt.",
|
||||
"nearly_there_instructions": "Tot slot, een korte beschrijving van u en een foto helpt u echt boekingen te krijgen en laat iedereen weten bij wie ze boeken.",
|
||||
"set_availability_instructions": "Bepaal tijdbereiken waarin u periodiek beschikbaar bent. U kunt op een later tijdstip terugkomen en hier meer van aanmaken en toewijzen aan verschillende kalenders.",
|
||||
"set_availability": "Beschikbaarheid bepalen",
|
||||
"continue_without_calendar": "Doorgaan zonder kalender",
|
||||
@@ -315,10 +315,10 @@
|
||||
"bookerlayout_month_view": "Maand",
|
||||
"bookerlayout_week_view": "Wekelijks",
|
||||
"bookerlayout_column_view": "Kolom",
|
||||
"bookerlayout_error_min_one_enabled": "Er moet minimaal één indeling ingeschakeld zijn.",
|
||||
"bookerlayout_error_default_not_enabled": "De indeling die u als standaardweergave heeft geselecteerd, maakt geen deel uit van de ingeschakelde indelingen.",
|
||||
"bookerlayout_error_min_one_enabled": "Minimaal één indeling moet ingeschakeld zijn.",
|
||||
"bookerlayout_error_default_not_enabled": "De indeling die u als standaardweergave heeft geselecteerd, behoort niet tot de ingeschakelde indelingen.",
|
||||
"bookerlayout_error_unknown_layout": "De door u geselecteerde indeling is geen geldige indeling.",
|
||||
"bookerlayout_override_global_settings": "U kunt dit voor al uw gebeurtenistypen beheren in <2>Instellingen/Weergave</2> of <6>overschrijven voor alleen deze gebeurtenis</6>.",
|
||||
"bookerlayout_override_global_settings": "U kunt dit voor al uw gebeurtenistypen beheren in <2>Instellingen > Weergave</2> of <6>overschrijven voor alleen deze gebeurtenis</6>.",
|
||||
"unexpected_error_try_again": "Er is een onverwachte fout opgetreden. Probeer het opnieuw.",
|
||||
"sunday_time_error": "Ongeldige tijd op zondag",
|
||||
"monday_time_error": "Ongeldige tijd op maandag",
|
||||
@@ -417,8 +417,8 @@
|
||||
"team_webhooks": "Teamwebhooks",
|
||||
"create_new_webhook_to_account": "Maak een nieuwe webhook aan voor uw account",
|
||||
"new_webhook": "Maak een Webhook",
|
||||
"receive_cal_meeting_data": "Ontvang {{appName}}-afspraakgegevens in realtime via een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
|
||||
"receive_cal_event_meeting_data": "Ontvang {{appName}}-afspraakgegevens in realtime via een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
|
||||
"receive_cal_meeting_data": "Ontvang afspraakgegevens van {{appName}} in realtime op een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
|
||||
"receive_cal_event_meeting_data": "Ontvang afspraakgegevens van {{appName}} in realtime op een opgegeven URL wanneer deze gebeurtenis wordt gepland of geannuleerd.",
|
||||
"responsive_fullscreen_iframe": "Responsieve iframe",
|
||||
"loading": "Laden...",
|
||||
"deleting": "Verwijderen...",
|
||||
@@ -913,7 +913,7 @@
|
||||
"create_events_on": "Maak gebeurtenissen aan in de",
|
||||
"enterprise_license": "Dit is een bedrijfsfunctie",
|
||||
"enterprise_license_description": "Om deze functie in te schakelen, krijgt u een implementatiesleutel op de {{consoleUrl}}-console en voegt u deze toe aan uw .env als CALCOM_LICENSE_KEY. Als uw team al een licentie heeft, neem dan contact op met {{supportMail}} voor hulp.",
|
||||
"enterprise_license_development": "U kunt deze functie in ontwikkelingsmodus testen. Voor productiegebruik moet een beheerder naar <2>/auth/setup</2> gaan om een licentiesleutel in te voeren.",
|
||||
"enterprise_license_development": "U kunt deze functie testen in de in ontwikkelingsmodus. Voor productiegebruik moet een beheerder naar <2>/auth/setup</2> gaan om een licentiecode in te voeren.",
|
||||
"missing_license": "Ontbrekende licentie",
|
||||
"signup_requires": "Commerciële licentie vereist",
|
||||
"signup_requires_description": "{{companyName}} biedt momenteel geen gratis opensourceversie van de registratiepagina aan. Om volledige toegang te krijgen tot de registratieonderdelen moet u een commerciële licentie verkrijgen. Voor persoonlijk gebruik raden we aan om accounts aan te maken op het Prisma Data Platform of een andere Postgres-interface.",
|
||||
@@ -1087,7 +1087,7 @@
|
||||
"new_event_trigger": "wanneer een nieuwe gebeurtenis is geboekt",
|
||||
"email_host_action": "e-mail naar organisator versturen",
|
||||
"email_attendee_action": "e-mail naar deelnemers versturen",
|
||||
"sms_attendee_action": "Sms naar deelnemer versturen",
|
||||
"sms_attendee_action": "Sms verzenden naar deelnemer",
|
||||
"sms_number_action": "sms naar een specifiek nummer sturen",
|
||||
"whatsapp_number_action": "WhatsApp-bericht naar een specifiek nummer versturen",
|
||||
"whatsapp_attendee_action": "WhatsApp-bericht naar deelnemer versturen",
|
||||
@@ -1491,16 +1491,16 @@
|
||||
"your_org_disbanded_successfully": "Uw organisatie is ontbonden",
|
||||
"error_creating_team": "Fout bij het aanmaken van team",
|
||||
"you": "U",
|
||||
"resend_email": "E-mail opnieuw versturen",
|
||||
"resend_email": "E-mail opnieuw verzenden",
|
||||
"member_already_invited": "Lid is al uitgenodigd",
|
||||
"enter_email_or_username": "Voer een e-mailadres of gebruikersnaam in",
|
||||
"team_name_taken": "Deze naam is al in gebruik",
|
||||
"must_enter_team_name": "Moet een teamnaam invoeren",
|
||||
"team_url_required": "Moet een team-URL invoeren",
|
||||
"url_taken": "Deze URL is al in gebruik",
|
||||
"problem_registering_domain": "Er is een probleem opgetreden bij het registreren van het subdomein, probeer het opnieuw of neem contact op met een beheerder",
|
||||
"problem_registering_domain": "Er is een probleem opgetreden bij het registreren van het subdomein. Probeer het opnieuw of neem contact op met een beheerder",
|
||||
"team_publish": "Team publiceren",
|
||||
"number_text_notifications": "Telefoonnummer (berichtmeldingen)",
|
||||
"number_text_notifications": "Telefoonnummer (sms-meldingen)",
|
||||
"attendee_email_variable": "E-mailadres deelnemer",
|
||||
"attendee_email_info": "Het e-mailadres van de persoon die boekt",
|
||||
"kbar_search_placeholder": "Typ een opdracht of zoek...",
|
||||
@@ -1524,7 +1524,7 @@
|
||||
"fixed_round_robin": "Vaste round-robin",
|
||||
"add_one_fixed_attendee": "Voeg één vaste deelnemer en round-robin toe via een aantal deelnemers.",
|
||||
"calcom_is_better_with_team": "{{appName}} is beter met teams",
|
||||
"the_calcom_team": "Het {{companyName}}-team",
|
||||
"the_calcom_team": "Het team van {{companyName}}",
|
||||
"add_your_team_members": "Voeg uw teamleden toe aan uw gebeurtenistypes. Gebruik collectieve planning om iedereen op te nemen of zoek de meest geschikte persoon met round robin-planning.",
|
||||
"booking_limit_reached": "Boekingslimiet voor dit gebeurtenistype is bereikt",
|
||||
"duration_limit_reached": "Duurlimiet voor dit gebeurtenistype is bereikt",
|
||||
@@ -1691,7 +1691,7 @@
|
||||
"attendee_no_longer_attending": "Een deelnemer neemt niet langer deel aan uw gebeurtenis",
|
||||
"attendee_no_longer_attending_subtitle": "{{name}} heeft geannuleerd. Dit betekent dat er een plaats is vrijgekomen voor dit tijdslot",
|
||||
"create_event_on": "Gebeurtenis aanmaken op",
|
||||
"create_routing_form_on": "Maak routeringsformulier op",
|
||||
"create_routing_form_on": "Routeringsformulier maken op",
|
||||
"default_app_link_title": "Stel een standaard app-link in",
|
||||
"default_app_link_description": "Door een standaard app-link in te stellen kunnen alle nieuw gemaakte gebeurtenistypes de door u ingestelde app-link gebruiken.",
|
||||
"organizer_default_conferencing_app": "Standaardapp organisator",
|
||||
@@ -1742,9 +1742,9 @@
|
||||
"spot_popular_event_types": "Spot populaire gebeurtenistypen",
|
||||
"spot_popular_event_types_description": "Bekijk welke van uw gebeurtenistypen de meeste kliks en boekingen ontvangen",
|
||||
"no_responses_yet": "Nog geen reacties",
|
||||
"no_routes_defined": "Geen routes bepaald",
|
||||
"no_routes_defined": "Geen routes gedefinieerd",
|
||||
"this_will_be_the_placeholder": "Dit wordt de plaatshouder",
|
||||
"error_booking_event": "Er is een fout opgetreden bij het boeken van de gebeurtenis, vernieuw de pagina en probeer het opnieuw",
|
||||
"error_booking_event": "Er is een fout opgetreden bij het boeken van de gebeurtenis. Vernieuw de pagina en probeer het opnieuw",
|
||||
"timeslot_missing_title": "Geen tijdslot geselecteerd",
|
||||
"timeslot_missing_description": "Selecteer een tijdslot om de gebeurtenis te boeken.",
|
||||
"timeslot_missing_cta": "Tijdslot selecteren",
|
||||
@@ -1806,7 +1806,7 @@
|
||||
"least_booked_members": "Minst geboekte leden",
|
||||
"events_created": "Gemaakte gebeurtenissen",
|
||||
"events_completed": "Voltooide gebeurtenissen",
|
||||
"events_cancelled": "Geannuleerde gebeurtenissen",
|
||||
"events_cancelled": "Gebeurtenissen geanuleerd",
|
||||
"events_rescheduled": "Verplaatste gebeurtenissen",
|
||||
"from_last_period": "van afgelopen periode",
|
||||
"from_to_date_period": "Van: {{startDate}} Tot: {{endDate}}",
|
||||
@@ -1883,9 +1883,9 @@
|
||||
"connect_google_workspace": "Google Workspace koppelen",
|
||||
"google_workspace_admin_tooltip": "U moet een Google Workspace-beheerder zijn om deze functie te gebruiken",
|
||||
"first_event_type_webhook_description": "Maak uw eerste webhook voor dit gebeurtenistype",
|
||||
"install_app_on": "Installeer app op",
|
||||
"install_app_on": "App installeren op",
|
||||
"create_for": "Maken voor",
|
||||
"setup_organization": "Stel een organisatie in",
|
||||
"setup_organization": "Een organisatie instellen",
|
||||
"organization_banner_description": "Maak een omgeving waarin uw teams gedeelde apps, werkstromen en gebeurtenistypen kunnen maken met round-robin en collectieve planning.",
|
||||
"organization_banner_title": "Beheer organisaties met meerdere teams",
|
||||
"set_up_your_organization": "Stel uw organisatie in",
|
||||
@@ -1916,7 +1916,7 @@
|
||||
"code_provided_invalid": "De opgegeven code is ongeldig, probeer het opnieuw",
|
||||
"email_already_used": "Het e-mailadres wordt al gebruikt",
|
||||
"organization_admin_invited_heading": "U bent uitgenodigd om lid te worden van {{orgName}}",
|
||||
"organization_admin_invited_body": "Word lid van uw team bij {{orgName}} en begin u met het richten op afspraken, niet op het maken van afspraken!",
|
||||
"organization_admin_invited_body": "Word lid van uw team bij {{orgName}} en begin met het richten op afspraken, niet op het maken van afspraken!",
|
||||
"duplicated_slugs_warning": "De volgende teams konden niet worden gemaakt vanwege dubbele slugs: {{slugs}}",
|
||||
"team_names_empty": "Teamnamen mogen niet leeg zijn",
|
||||
"team_names_repeated": "Teamnamen mogen niet herhaald worden",
|
||||
@@ -1937,7 +1937,7 @@
|
||||
"no_organization_slug": "Er is een fout opgetreden bij het maken van teams voor deze organisatie. Ontbrekende URL-slug.",
|
||||
"org_name": "Organisatienaam",
|
||||
"org_url": "Organisatie-URL",
|
||||
"copy_link_org": "Kopieer link naar organisatie",
|
||||
"copy_link_org": "Link kopiëren naar organisatie",
|
||||
"404_the_org": "De organisatie",
|
||||
"404_the_team": "Het team",
|
||||
"404_claim_entity_org": "Claim uw subdomein voor uw organisatie",
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
"have_any_questions": "Masz pytania? Jesteśmy tutaj, aby pomóc.",
|
||||
"reset_password_subject": "{{appName}}: Instrukcje resetowania hasła",
|
||||
"verify_email_subject": "{{appName}}: zweryfikuj swoje konto",
|
||||
"check_your_email": "Sprawdź adres e-mail",
|
||||
"verify_email_page_body": "Wysłaliśmy wiadomość e-mail na adres {{email}}. Weryfikacja adresu e-mail jest bardzo ważna, ponieważ umożliwia upewnienie się, czy kalendarz i wiadomości e-mail z aplikacji {{appName}} będą działać prawidłowo.",
|
||||
"verify_email_banner_body": "Potwierdź adres email, aby upewnić się, że wiadomości e-mail i powiadomienia z kalendarza będą do Ciebie docierać.",
|
||||
"verify_email_email_header": "Zweryfikuj adres e-mail",
|
||||
"verify_email_email_button": "Potwierdź adres e-mail",
|
||||
"verify_email_email_body": "Potwierdź adres e-mail poprzez kliknięcie poniższego przycisku.",
|
||||
"check_your_email": "Sprawdź swój adres e-mail",
|
||||
"verify_email_page_body": "Wysłaliśmy wiadomość e-mail na adres {{email}}. Weryfikacja adresu e-mail jest ważna, ponieważ umożliwia zagwarantowanie prawidłowego działania kalendarza i dostarczania wiadomości e-mail z aplikacji {{appName}}.",
|
||||
"verify_email_banner_body": "Potwierdź adres e-mail, aby upewnić się, że wiadomości e-mail i powiadomienia z kalendarza będą do Ciebie docierać.",
|
||||
"verify_email_email_header": "Zweryfikuj swój adres e-mail",
|
||||
"verify_email_email_button": "Zweryfikuj adres e-mail",
|
||||
"verify_email_email_body": "Zweryfikuj swój adres e-mail, klikając poniższy przycisk.",
|
||||
"verify_email_email_link_text": "Oto link, jeśli nie lubisz klikać przycisków:",
|
||||
"email_sent": "Wysłano wiadomość e-mail",
|
||||
"event_declined_subject": "Odrzucono: {{title}} w dniu {{date}}",
|
||||
@@ -89,7 +89,7 @@
|
||||
"event_has_been_rescheduled": "Zaktualizowano - Twoje wydarzenie zostało przełożone",
|
||||
"request_reschedule_subtitle": "Organizator ({{organizer}}) anulował rezerwację i prosi Cię o wybranie innego terminu.",
|
||||
"request_reschedule_title_organizer": "{{attendee}} poproszono o zmianę harmonogramu",
|
||||
"request_reschedule_subtitle_organizer": "Rezerwacja została przez Ciebie anulowana i uczestnik ({{attendee}}) musi wybrać z nowy termin rezerwacji u Ciebie.",
|
||||
"request_reschedule_subtitle_organizer": "Rezerwacja została przez Ciebie anulowana i uczestnik ({{attendee}}) powinien wybrać z nowy termin rezerwacji u Ciebie.",
|
||||
"rescheduled_event_type_subject": "Wysłano prośbę o zmianę terminu: {{eventType}} o nazwie {{name}}, z {{date}}",
|
||||
"requested_to_reschedule_subject_attendee": "Działanie wymagało zmiany harmonogramu: Zarezerwuj nową godzinę na wydarzenie {{eventType}} z {{name}}",
|
||||
"hi_user_name": "Cześć {{name}}",
|
||||
@@ -118,7 +118,7 @@
|
||||
"team_info": "Informacje o zespole",
|
||||
"request_another_invitation_email": "Jeśli wolisz nie używać {{toEmail}} jako adresu e-mail {{appName}} lub masz już konto {{appName}}, poproś o inne zaproszenie na ten e-mail.",
|
||||
"you_have_been_invited": "Zostałeś zaproszony do dołączenia do zespołu {{teamName}}",
|
||||
"user_invited_you": "Użytkownik {{user}} zaprosił Cię do dołączenia do zespołu {{team}} ({{entity}}) w aplikacji {{appName}}.",
|
||||
"user_invited_you": "Użytkownik {{user}} zaprosił Cię do dołączenia do: {{entity}} {{team}} w aplikacji {{appName}}",
|
||||
"hidden_team_member_title": "Jesteś ukryty w tym zespole",
|
||||
"hidden_team_member_message": "Twoje miejsce nie jest opłacone, przejdź na wersję Pro lub poinformuj właściciela zespołu o tym, że może zapłacić za Twoje miejsce.",
|
||||
"hidden_team_owner_message": "Potrzebujesz konta pro aby korzystać z zespołów, jesteś ukryty do czasu ulepszenia.",
|
||||
@@ -129,8 +129,8 @@
|
||||
"team_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego nowego planu zespołowego. Zauważyliśmy, że Twój zespół „{{teamName}}” trzeba ulepszyć.",
|
||||
"upgrade_banner_action": "Ulepsz tutaj",
|
||||
"team_upgraded_successfully": "Twój zespół został pomyślnie zaktualizowany!",
|
||||
"org_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego planu Organization. Zauważyliśmy, że Twój zespół „{{teamName}}” z planu Organization trzeba ulepszyć.",
|
||||
"org_upgraded_successfully": "Twój zespół z planu Organization został pomyślnie zaktualizowany!",
|
||||
"org_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego planu Organization. Zauważyliśmy, że Twój zespół „{{teamName}}” z planu Organization wymaga przejścia na wyższą wersję.",
|
||||
"org_upgraded_successfully": "Twój zespół z planu Organization przeszedł na wyższą wersję!",
|
||||
"use_link_to_reset_password": "Użyj poniższego linku, aby zresetować swoje hasło",
|
||||
"hey_there": "Cześć,",
|
||||
"forgot_your_password_calcom": "Nie pamiętasz swojego hasła? - {{appName}}",
|
||||
@@ -248,7 +248,7 @@
|
||||
"organization_general_description": "Zarządzaj ustawieniami języka i strefy czasowej Twojego zespołu.",
|
||||
"few_sentences_about_yourself": "Kilka zdań o Tobie. To pojawi się na Twojej osobistej stronie URL.",
|
||||
"nearly_there": "Prawie gotowe!",
|
||||
"nearly_there_instructions": "Ostatnia wskazówka – krótka informacja na Twój temat i zdjęcie naprawdę pomogą Ci zwiększyć liczbę rezerwacji i ułatwią rezerwującym upewnienie się, z kim umawiają spotkanie.",
|
||||
"nearly_there_instructions": "Ostatnia wskazówka — krótka informacja na Twój temat i zdjęcie naprawdę pomogą Ci zwiększyć liczbę rezerwacji i ułatwią rezerwującym upewnienie się, u kogo dokonują rezerwacji.",
|
||||
"set_availability_instructions": "Określ zakresy czasu, kiedy jesteś generalnie dostępny/a. Możesz utworzyć ich więcej później i przypisać je do różnych kalendarzy.",
|
||||
"set_availability": "Ustaw swoją dostępność",
|
||||
"continue_without_calendar": "Kontynuuj bez kalendarza",
|
||||
@@ -306,14 +306,14 @@
|
||||
"password_has_been_reset_login": "Twoje hasło zostało zresetowane. Możesz teraz zalogować się przy użyciu nowo utworzonego hasła.",
|
||||
"layout": "Układ",
|
||||
"bookerlayout_default_title": "Widok domyślny",
|
||||
"bookerlayout_description": "Możesz wybrać kilka układów, a osoby rezerwujące będą mogły zmieniać widoki.",
|
||||
"bookerlayout_description": "Możesz wybrać wiele układów, a osoby rezerwujące mogą zmieniać widoki.",
|
||||
"bookerlayout_user_settings_title": "Układ rezerwacji",
|
||||
"bookerlayout_user_settings_description": "Możesz wybrać kilka układów, a osoby rezerwujące będą mogły zmieniać widoki. To ustawienie można zmieniać w poszczególnych wydarzeniach.",
|
||||
"bookerlayout_user_settings_description": "Możesz wybrać wiele układów, a osoby rezerwujące mogą zmieniać widoki. To ustawienie można zastąpić w poszczególnych wydarzeniach.",
|
||||
"bookerlayout_month_view": "Miesięczny",
|
||||
"bookerlayout_week_view": "Tygodniowy",
|
||||
"bookerlayout_column_view": "Kolumna",
|
||||
"bookerlayout_error_min_one_enabled": "Trzeba włączyć co najmniej jeden układ.",
|
||||
"bookerlayout_error_default_not_enabled": "Układ wybrany jako widok domyślny nie jest częścią włączonych układów.",
|
||||
"bookerlayout_error_default_not_enabled": "Układ wybrany jako widok domyślny nie należy do włączonych układów.",
|
||||
"bookerlayout_error_unknown_layout": "Wybrany układ nie jest prawidłowym układem.",
|
||||
"bookerlayout_override_global_settings": "Możesz zarządzać tym ustawieniem w odniesieniu do wszystkich typów wydarzeń w sekcji <2>Ustawienia / Wygląd</2> lub <6>zastąpić je tylko w przypadku tego wydarzenia</6>.",
|
||||
"unexpected_error_try_again": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie.",
|
||||
@@ -337,12 +337,12 @@
|
||||
"cancelling_event_recurring": "Wydarzenie jest jednym z wystąpień wydarzenia cyklicznego.",
|
||||
"cancelling_all_recurring": "Są to wszystkie pozostałe wystąpienia wydarzenia cyklicznego.",
|
||||
"error_with_status_code_occured": "Wystąpił błąd z kodem statusu {{status}}.",
|
||||
"error_event_type_url_duplicate": "Typ wydarzenia o podanym adresie URL już istnieje.",
|
||||
"error_event_type_unauthorized_create": "Nie możesz utworzyć tego wydarzenia.",
|
||||
"error_event_type_unauthorized_update": "Nie możesz edytować tego wydarzenia.",
|
||||
"error_workflow_unauthorized_create": "Nie możesz utworzyć tego przepływu pracy.",
|
||||
"error_schedule_unauthorized_create": "Nie możesz utworzyć tego harmonogramu.",
|
||||
"booking_already_cancelled": "Ta rezerwacja została już anulowana.",
|
||||
"error_event_type_url_duplicate": "Typ wydarzenia o tym adresie URL już istnieje.",
|
||||
"error_event_type_unauthorized_create": "Nie możesz utworzyć tego wydarzenia",
|
||||
"error_event_type_unauthorized_update": "Nie możesz edytować tego wydarzenia",
|
||||
"error_workflow_unauthorized_create": "Nie możesz utworzyć tego przepływu pracy",
|
||||
"error_schedule_unauthorized_create": "Nie możesz utworzyć tego harmonogramu",
|
||||
"booking_already_cancelled": "Ta rezerwacja została już anulowana",
|
||||
"booking_already_accepted_rejected": "Ta rezerwacja została już zaakceptowana lub odrzucona",
|
||||
"go_back_home": "Wróć do strony głównej",
|
||||
"or_go_back_home": "Lub wróć do strony głównej",
|
||||
@@ -352,7 +352,7 @@
|
||||
"no_status_bookings_yet_description": "Nie masz {{status}} rezerwacji. {{description}}",
|
||||
"event_between_users": "{{eventName}} między {{host}} a {{attendeeName}}",
|
||||
"bookings": "Rezerwacje",
|
||||
"booking_not_found": "Rezerwacja nie została znaleziona.",
|
||||
"booking_not_found": "Nie znaleziono rezerwacji",
|
||||
"bookings_description": "Zobacz nadchodzące i przeszłe wydarzenia zarezerwowane za pomocą linków tego wydarzenia.",
|
||||
"upcoming_bookings": "Jak tylko ktoś zarezerwuje czas z Tobą, to pojawi się tutaj.",
|
||||
"recurring_bookings": "Jak tylko ktoś zarezerwuje cykliczne spotkanie z Tobą, to pojawi się ono tutaj.",
|
||||
@@ -413,7 +413,7 @@
|
||||
"team_webhooks": "Webhooki zespołu",
|
||||
"create_new_webhook_to_account": "Utwórz nowy webhook do swojego konta",
|
||||
"new_webhook": "Nowy Webhook",
|
||||
"receive_cal_meeting_data": "Możesz otrzymywać dane ze spotkania w aplikacji {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
|
||||
"receive_cal_meeting_data": "Otrzymuj dane ze spotkania {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
|
||||
"receive_cal_event_meeting_data": "Otrzymuj dane ze spotkania {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
|
||||
"responsive_fullscreen_iframe": "Responsywny pełnoekranowy iframe",
|
||||
"loading": "Wczytywanie...",
|
||||
@@ -505,7 +505,7 @@
|
||||
"additional_guests": "Dodaj gości",
|
||||
"your_name": "Twoje imię",
|
||||
"your_full_name": "Twoje imię i nazwisko",
|
||||
"no_name": "Brak nazwy",
|
||||
"no_name": "Bez nazwy",
|
||||
"email_address": "Adres e-mail",
|
||||
"enter_valid_email": "Wprowadź prawidłowy adres e-mail",
|
||||
"location": "Lokalizacja",
|
||||
@@ -551,11 +551,11 @@
|
||||
"team_description": "Kilka zdań na temat Twojego zespołu. Będą wyświetlane na stronie adresu URL Twojego zespołu.",
|
||||
"org_description": "Kilka zdań na temat Twojej organizacji. Pojawią się na stronie adresu URL Twojej organizacji.",
|
||||
"members": "Członkowie",
|
||||
"organization_members": "Członkowie organizacji",
|
||||
"organization_members": "Członkowie planu Organization",
|
||||
"member": "Członek",
|
||||
"number_member_one": "{{count}} członek",
|
||||
"number_member_other": "{{count}} członków",
|
||||
"number_selected": "Wybrano: {{count}}",
|
||||
"number_selected": "wybrano {{count}}",
|
||||
"owner": "Właściciel",
|
||||
"admin": "Administrator",
|
||||
"administrator_user": "Użytkownik-administrator",
|
||||
@@ -662,7 +662,7 @@
|
||||
"event_type_updated_successfully": "{{eventTypeTitle}} typ wydarzenia został pomyślnie zaktualizowany",
|
||||
"event_type_deleted_successfully": "Typ wydarzenia usunięty pomyślnie",
|
||||
"hours": "Godziny",
|
||||
"people": "Osoby",
|
||||
"people": "Ludzie",
|
||||
"your_email": "Twój e-mail",
|
||||
"change_avatar": "Zmień Awatar",
|
||||
"language": "Język",
|
||||
@@ -774,7 +774,7 @@
|
||||
"cal_provide_huddle01_meeting_url": "{{appName}} zapewni URL spotkania Huddle01 Web3.",
|
||||
"cal_provide_teams_meeting_url": "{{appName}} zapewni adres URL do spotkania na MS Teams. UWAGA: MOŻE POBIERAĆ RACHUNEK PRACY LUB SCHOOLU",
|
||||
"require_payment": "Wymagaj płatności",
|
||||
"you_need_to_add_a_name": "Musisz dodać nazwę.",
|
||||
"you_need_to_add_a_name": "Musisz dodać nazwę",
|
||||
"commission_per_transaction": "prowizja za transakcję",
|
||||
"event_type_updated_successfully_description": "Twój typ wydarzenia został pomyślnie zaktualizowany.",
|
||||
"hide_event_type": "Ukryj typ zdarzenia",
|
||||
@@ -867,23 +867,23 @@
|
||||
"no_category_apps": "Brak aplikacji z kategorii {{category}}",
|
||||
"all_apps": "Wszystkie aplikacje",
|
||||
"no_category_apps_description_calendar": "Dodaj aplikację kalendarza, aby wykrywać konflikty i unikać podwójnych rezerwacji",
|
||||
"no_category_apps_description_conferencing": "Spróbuj dodać aplikację konferencyjną, aby nawiązywać połączenia wideo z klientami.",
|
||||
"no_category_apps_description_conferencing": "Spróbuj dodać aplikację konferencyjną, aby nawiązywać połączenia wideo z klientami",
|
||||
"no_category_apps_description_payment": "Dodaj aplikację płatniczą, aby ułatwić transakcje z klientami.",
|
||||
"no_category_apps_description_analytics": "Dodaj aplikację analityczną do stron rezerwacji",
|
||||
"no_category_apps_description_automation": "Dodaj aplikację automatyzującą, która ma być używana",
|
||||
"no_category_apps_description_other": "Dodaj dowolny typ aplikacji, aby uzyskać dostęp do różnych innych funkcji",
|
||||
"no_category_apps_description_web3": "Dodaj aplikację web3 do stron rezerwacji",
|
||||
"no_category_apps_description_messaging": "Dodaj aplikację do wysyłania wiadomości, aby skonfigurować własne powiadomienia i przypomnienia.",
|
||||
"no_category_apps_description_crm": "Dodaj aplikację CRM, aby monitorować to, z kim się spotykasz.",
|
||||
"no_category_apps_description_messaging": "Dodaj aplikację do wysyłania wiadomości, aby skonfigurować własne powiadomienia i przypomnienia",
|
||||
"no_category_apps_description_crm": "Dodaj aplikację CRM, aby monitorować to, z kim się spotykasz",
|
||||
"installed_app_calendar_description": "Ustaw kalendarze, aby wykrywać konflikty i unikać podwójnych rezerwacji.",
|
||||
"installed_app_payment_description": "Skonfiguruj usługi przetwarzania płatności, których chcesz używać do pobierania opłat od klientów.",
|
||||
"installed_app_analytics_description": "Skonfiguruj, które aplikacje analityczne mają być używane na stronach rezerwacji",
|
||||
"installed_app_other_description": "Wszystkie zainstalowane aplikacje z innych kategorii.",
|
||||
"installed_app_conferencing_description": "Skonfiguruj, z których aplikacji konferencyjnych chcesz korzystać.",
|
||||
"installed_app_conferencing_description": "Skonfiguruj, z których aplikacji konferencyjnych chcesz korzystać",
|
||||
"installed_app_automation_description": "Skonfiguruj, które aplikacje automatyzujące mają być używane",
|
||||
"installed_app_web3_description": "Skonfiguruj aplikacje web3, które mają być używane na stronach rezerwacji",
|
||||
"installed_app_messaging_description": "Skonfiguruj aplikacje, które będą używane do ustawiania własnych powiadomień i przypomnień.",
|
||||
"installed_app_crm_description": "Skonfiguruj aplikacje CRM, za pomocą których chcesz monitorować to, z kim się spotykasz.",
|
||||
"installed_app_messaging_description": "Skonfiguruj aplikacje, które będą używane do ustawiania niestandardowych powiadomień i przypomnień",
|
||||
"installed_app_crm_description": "Skonfiguruj aplikacje CRM, za pomocą których chcesz monitorować to, z kim się spotykasz",
|
||||
"analytics": "Analityka",
|
||||
"empty_installed_apps_headline": "Brak zainstalowanych aplikacji",
|
||||
"empty_installed_apps_description": "Aplikacje umożliwiają znaczne usprawnienie przebiegu pracy i uproszczenie planowania.",
|
||||
@@ -909,7 +909,7 @@
|
||||
"create_events_on": "Utwórz wydarzenia w",
|
||||
"enterprise_license": "To funkcja dla przedsiębiorstw",
|
||||
"enterprise_license_description": "Aby włączyć tę funkcję, uzyskaj klucz wdrożenia na konsoli {{consoleUrl}} i dodaj go do swojego pliku .env jako CALCOM_LICENSE_KEY. Jeśli Twój zespół ma już licencję, napisz na adres {{supportMail}}, aby uzyskać pomoc.",
|
||||
"enterprise_license_development": "Możesz przetestować tę funkcję w trybie deweloperskim. Aby wykorzystać ją w celach produkcyjnych, poproś administratora o wprowadzenie klucza licencyjnego w poleceniu <2>/auth/setup</2>.",
|
||||
"enterprise_license_development": "Możesz przetestować tę funkcję w trybie deweloperskim. Aby wykorzystać ją w celach produkcyjnych, poproś administratora o wprowadzenie klucza licencyjnego w obszarze <2>/auth/setup</2>.",
|
||||
"missing_license": "Brakująca licencja",
|
||||
"signup_requires": "Wymagana licencja handlowa",
|
||||
"signup_requires_description": "{{companyName}} obecnie nie oferuje darmowej otwartej wersji strony rejestracji. Aby uzyskać pełny dostęp do komponentów rejestracji, musisz zdobyć licencję komercyjną. Do użytku osobistego zalecamy platformę danych Prisma lub jakikolwiek inny interfejs Postgres do tworzenia kont.",
|
||||
@@ -979,7 +979,7 @@
|
||||
"confirm_delete_api_key": "Unieważnij ten klucz API",
|
||||
"revoke_api_key": "Unieważnij klucz API",
|
||||
"api_key_copied": "Skopiowano klucz API!",
|
||||
"api_key_expires_on": "Klucz API wygaśnie w dniu",
|
||||
"api_key_expires_on": "Klucz interfejsu API wygaśnie w dniu",
|
||||
"delete_api_key_confirm_title": "Czy chcesz trwale usunąć ten klucz API ze swojego konta?",
|
||||
"copy": "Kopiuj",
|
||||
"expire_date": "Data wygaśnięcia",
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"user_impersonation_description": "Pozwala naszemu zespołowi pomocy na tymczasowe zalogowanie się jako użytkownik w celu szybkiego rozwiązania wszelkich zgłaszanych nam problemów.",
|
||||
"team_impersonation_description": "Umożliwia właścicielom/administratorom zespołu tymczasowe zalogowanie się jako Ty.",
|
||||
"make_team_private": "Ustaw zespół jako prywatny",
|
||||
"make_team_private_description": "Gdy to ustawienie jest włączone, członkowie zespołu nie będą mogli zobaczyć innych osób z zespołu.",
|
||||
"make_team_private_description": "Gdy to ustawienie jest włączone, członkowie zespołu nie będą mogli zobaczyć innych członków zespołu.",
|
||||
"you_cannot_see_team_members": "Nie możesz zobaczyć wszystkich członków zespołu prywatnego.",
|
||||
"allow_booker_to_select_duration": "Zezwól rezerwującemu na wybranie czasu trwania",
|
||||
"impersonate_user_tip": "Wszystkie przypadki użycia tej funkcji są kontrolowane.",
|
||||
@@ -1072,7 +1072,7 @@
|
||||
"event_location": "Lokalizacja wydarzenia",
|
||||
"reschedule_optional": "Powód przełożenia (opcjonalnie)",
|
||||
"reschedule_placeholder": "Poinformuj innych o powodach przełożenia wydarzenia",
|
||||
"event_cancelled": "To wydarzenie zostało anulowane.",
|
||||
"event_cancelled": "To wydarzenie zostało anulowane",
|
||||
"emailed_information_about_cancelled_event": "Wysłaliśmy wiadomość e-mail Tobie i innym uczestnikom, aby ich o tym poinformować.",
|
||||
"this_input_will_shown_booking_this_event": "To wejście zostanie wyświetlone podczas rezerwacji tego wydarzenia",
|
||||
"meeting_url_in_conformation_email": "Adres URL spotkania znajduje się w wiadomości e-mail z potwierdzeniem",
|
||||
@@ -1306,8 +1306,8 @@
|
||||
"connect_analytics_apps": "Połącz aplikacje analityczne",
|
||||
"connect_other_apps": "Połącz inne aplikacje",
|
||||
"connect_web3_apps": "Połącz aplikacje web3",
|
||||
"connect_messaging_apps": "Połącz aplikacje do wysyłania wiadomości",
|
||||
"connect_crm_apps": "Połącz aplikacje CRM",
|
||||
"connect_messaging_apps": "Podłącz aplikacje do wysyłania wiadomości",
|
||||
"connect_crm_apps": "Podłącz aplikacje CRM",
|
||||
"current_step_of_total": "Krok {{currentStep}} z {{maxSteps}}",
|
||||
"add_variable": "Dodaj zmienną",
|
||||
"custom_phone_number": "Niestandardowy numer telefonu",
|
||||
@@ -1487,14 +1487,14 @@
|
||||
"your_org_disbanded_successfully": "Twoja organizacja została rozwiązana.",
|
||||
"error_creating_team": "Podczas tworzenia zespołu wystąpił błąd",
|
||||
"you": "Ty",
|
||||
"resend_email": "Wyślij wiadomość e-mail ponownie",
|
||||
"resend_email": "Wyślij ponownie wiadomość e-mail",
|
||||
"member_already_invited": "Członek został już zaproszony",
|
||||
"enter_email_or_username": "Wprowadź adres e-mail lub nazwę użytkownika",
|
||||
"team_name_taken": "Ta nazwa jest już zajęta",
|
||||
"must_enter_team_name": "Musisz wprowadzić nazwę zespołu",
|
||||
"team_url_required": "Musisz wprowadzić adres URL zespołu",
|
||||
"url_taken": "Ten adres URL jest już zajęty",
|
||||
"problem_registering_domain": "Wystąpił problem z rejestracją subdomeny, spróbuj ponownie lub skontaktuj się z administratorem.",
|
||||
"problem_registering_domain": "Wystąpił problem z zarejestrowaniem subdomeny, spróbuj ponownie lub skontaktuj się z administratorem",
|
||||
"team_publish": "Opublikuj zespół",
|
||||
"number_text_notifications": "Numer telefonu (powiadomienia SMS)",
|
||||
"attendee_email_variable": "Adres e-mail uczestnika",
|
||||
@@ -1554,7 +1554,7 @@
|
||||
"no_available_apps_description": "Upewnij się, że w Twoim wdrożeniu w folderze „packages/app-store” znajdują są aplikacje.",
|
||||
"no_apps": "W tym wystąpieniu usługi Cal nie ma włączonych aplikacji",
|
||||
"no_apps_configured": "Nie skonfigurowano jeszcze żadnej aplikacji",
|
||||
"enable_in_settings": "Możesz włączyć aplikacje w ustawieniach.",
|
||||
"enable_in_settings": "Możesz włączyć aplikacje w ustawieniach",
|
||||
"please_contact_admin": "Skontaktuj się z administratorem",
|
||||
"apps_settings": "Ustawienia aplikacji",
|
||||
"fill_this_field": "Wypełnij to pole",
|
||||
@@ -1661,8 +1661,8 @@
|
||||
"email_user_cta": "Wyświetl zaproszenie",
|
||||
"email_no_user_invite_heading": "Zaproszono Cię do dołączenia do aplikacji {{appName}} ({{entity}})",
|
||||
"email_no_user_invite_subheading": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojemu zespołowi planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
|
||||
"email_user_invite_subheading": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu „{{teamName}}” ({{entity}}) w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi {{entity}} planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
|
||||
"email_no_user_invite_steps_intro": "Przeprowadzimy Cię przez kilka krótkich etapów i wkrótce w ramach {{entity}} zaczniesz z przyjemnością korzystać z bezstresowego narzędzia planowania.",
|
||||
"email_user_invite_subheading": "{{invitedBy}} zaprasza Cię do dołączenia do: {{entity}} „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi {{entity}} planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
|
||||
"email_no_user_invite_steps_intro": "Przeprowadzimy Cię przez kilka krótkich kroków i wkrótce w ramach {{entity}} zaczniesz z przyjemnością korzystać z bezstresowego planowania.",
|
||||
"email_no_user_step_one": "Wybierz nazwę użytkownika",
|
||||
"email_no_user_step_two": "Połącz swoje konto kalendarza",
|
||||
"email_no_user_step_three": "Ustaw swoją dostępność",
|
||||
@@ -1674,7 +1674,7 @@
|
||||
"no_workflows": "Brak przepływów pracy",
|
||||
"change_filter": "Zmień filtr, aby zobaczyć osobiste i zespołowe przepływy pracy.",
|
||||
"change_filter_common": "Zmień filtr, aby zobaczyć wyniki.",
|
||||
"no_results_for_filter": "Brak wyników dla filtra",
|
||||
"no_results_for_filter": "Brak wyników dla filtru",
|
||||
"recommended_next_steps": "Zalecane następne kroki",
|
||||
"create_a_managed_event": "Utwórz typ zarządzanego wydarzenia",
|
||||
"meetings_are_better_with_the_right": "Spotkania idą lepiej, gdy uczestniczą w nich właściwi członkowie zespołu. Zaproś ich teraz.",
|
||||
@@ -1685,7 +1685,7 @@
|
||||
"no_longer_attending": "Nie bierzesz już udziału w tym wydarzeniu",
|
||||
"attendee_no_longer_attending_subject": "Uczestnik nie bierze już udziału w wydarzeniu {{title}} odbywającym się {{date}}",
|
||||
"attendee_no_longer_attending": "Uczestnik nie bierze już udziału w Twoim wydarzeniu.",
|
||||
"attendee_no_longer_attending_subtitle": "Użytkownik {{name}} anulował rezerwację. To znaczy, że zwolniło się miejsce w tym terminie",
|
||||
"attendee_no_longer_attending_subtitle": "Użytkownik {{name}} anulował rezerwację. To znaczy, że zwolniło się miejsce w tym przedziale czasowym",
|
||||
"create_event_on": "Utwórz wydarzenie w kalendarzu",
|
||||
"create_routing_form_on": "Utwórz formularz przekierowania na",
|
||||
"default_app_link_title": "Ustaw domyślny link do aplikacji",
|
||||
@@ -1740,14 +1740,14 @@
|
||||
"no_responses_yet": "Nie ma jeszcze odpowiedzi",
|
||||
"no_routes_defined": "Brak zdefiniowanych przekierowań",
|
||||
"this_will_be_the_placeholder": "To będzie symbol zastępczy",
|
||||
"error_booking_event": "Podczas rezerwacji wydarzenia wystąpił błąd, odśwież stronę i spróbuj ponownie.",
|
||||
"error_booking_event": "Podczas rezerwacji wydarzenia wystąpił błąd, odśwież stronę i spróbuj ponownie",
|
||||
"timeslot_missing_title": "Nie wybrano przedziału czasowego",
|
||||
"timeslot_missing_description": "Wybierz przedział czasowy, aby zarezerwować wydarzenie.",
|
||||
"timeslot_missing_cta": "Wybierz przedział czasowy",
|
||||
"switch_monthly": "Przełącz na widok miesiąca",
|
||||
"switch_weekly": "Przełącz na widok tygodnia",
|
||||
"switch_multiday": "Przełącz na widok dnia",
|
||||
"switch_columnview": "Przełącz na widok kolumny",
|
||||
"switch_columnview": "Przełącz na widok kolumnowy",
|
||||
"num_locations": "Lokalizacje do wyboru: {{num}}",
|
||||
"select_on_next_step": "Wybierz następny krok",
|
||||
"this_meeting_has_not_started_yet": "To spotkanie jeszcze się nie rozpoczęło",
|
||||
@@ -1841,13 +1841,13 @@
|
||||
"invite_link_copied": "Skopiowano link zaproszenia",
|
||||
"invite_link_deleted": "Usunięto link zaproszenia",
|
||||
"invite_link_updated": "Zapisano ustawienia linku zaproszenia",
|
||||
"link_expires_after": "Linki wygasną po upływie...",
|
||||
"one_day": "1 dnia",
|
||||
"link_expires_after": "Linki wygasną po...",
|
||||
"one_day": "1 dzień",
|
||||
"seven_days": "7 dni",
|
||||
"thirty_days": "30 dni",
|
||||
"three_months": "3 miesięcy",
|
||||
"one_year": "roku",
|
||||
"team_invite_received": "Zaproszono Cię do zespołu {{teamName}}",
|
||||
"three_months": "3 miesiące",
|
||||
"one_year": "1 rok",
|
||||
"team_invite_received": "Zaproszono Cię do dołączenia do zespołu {{teamName}}",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
"charge_card_dialog_body": "Zamierzasz obciążyć uczestnika kwotą {{amount, currency}}. Czy na pewno chcesz kontynuować?",
|
||||
"charge_attendee": "Obciąż uczestnika kwotą {{amount, currency}}",
|
||||
@@ -1856,7 +1856,7 @@
|
||||
"email_invite_team_bulk": "Zaproszono {{userCount}} użytkowników",
|
||||
"error_collecting_card": "Błąd podczas pobierania należności z karty",
|
||||
"image_size_limit_exceed": "Rozmiar przesyłanego obrazu nie powinien przekraczać limitu 5 MB",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: nie masz uprawnień do włączenia lub wyłączenia tego przepływu pracy.",
|
||||
"unauthorized_workflow_error_message": "{{errorCode}}: nie masz uprawnień do włączenia lub wyłączenia tego przepływu pracy",
|
||||
"inline_embed": "Osadź w stronie",
|
||||
"load_inline_content": "Wczytuje typ wydarzenia bezpośrednio w treści Twojej strony internetowej.",
|
||||
"floating_pop_up_button": "Pływający przycisk wyskakujący",
|
||||
@@ -1876,57 +1876,57 @@
|
||||
"connect_google_workspace": "Podłącz usługę Google Workspace",
|
||||
"google_workspace_admin_tooltip": "Aby skorzystać z tej funkcji, musisz być administratorem usługi Workspace.",
|
||||
"first_event_type_webhook_description": "Utwórz swój pierwszy element webhook dla tego typu wydarzenia",
|
||||
"install_app_on": "Zainstaluj aplikację na:",
|
||||
"install_app_on": "Zainstaluj aplikację na koncie",
|
||||
"create_for": "Utwórz dla",
|
||||
"setup_organization": "Skonfiguruj organizację",
|
||||
"organization_banner_description": "Utwórz środowisko, w którym zespoły będą mogły dzielić się aplikacjami, przepływami pracy i typami wydarzeń przy użyciu algorytmu karuzelowego lub zbiorowego ustalania harmonogramu.",
|
||||
"organization_banner_description": "Utwórz środowisko, w którym zespoły będą mogły tworzyć wspólne aplikacje, przepływy pracy i typy wydarzeń przy użyciu algorytmu karuzelowego lub zbiorowego ustalania harmonogramu.",
|
||||
"organization_banner_title": "Zarządzaj organizacjami z wieloma zespołami",
|
||||
"set_up_your_organization": "Skonfiguruj organizację",
|
||||
"organizations_description": "Organizacje to współdzielone środowiska, w których zespoły mogą tworzyć wspólne typy wydarzeń, aplikacje, przepływy pracy i nie tylko.",
|
||||
"must_enter_organization_name": "Nazwa organizacji jest wymagana.",
|
||||
"must_enter_organization_admin_email": "Adres e-mail organizacji jest wymagany.",
|
||||
"admin_email": "Adres e-mail organizacji",
|
||||
"set_up_your_organization": "Skonfiguruj swoją organizację",
|
||||
"organizations_description": "Organizacje to współdzielone środowiska, w których zespoły mogą tworzyć wspólne typy wydarzeń, aplikacje, przepływy pracy itd.",
|
||||
"must_enter_organization_name": "Należy wprowadzić nazwę organizacji",
|
||||
"must_enter_organization_admin_email": "Należy wprowadzić adres e-mail swojej organizacji",
|
||||
"admin_email": "Twój adres e-mail w organizacji",
|
||||
"admin_username": "Nazwa użytkownika administratora",
|
||||
"organization_name": "Nazwa organizacji",
|
||||
"organization_url": "Adres URL organizacji",
|
||||
"organization_verify_header": "Zweryfikuj adres e-mail organizacji",
|
||||
"organization_verify_email_body": "Użyj poniższego kodu, aby zweryfikować adres e-mail i kontynuować konfigurację organizacji.",
|
||||
"organization_verify_header": "Zweryfikuj adres e-mail swojej organizacji",
|
||||
"organization_verify_email_body": "Użyj poniższego kodu, aby zweryfikować adres e-mail i kontynuować konfigurację swojej organizacji.",
|
||||
"additional_url_parameters": "Dodatkowe parametry adresu URL",
|
||||
"about_your_organization": "Informacje o Twojej organizacji",
|
||||
"about_your_organization_description": "Organizacje to współdzielone środowiska, w których możesz utworzyć wiele zespołów ze wspólnymi członkami, typami wydarzeń, aplikacjami, przepływami pracy i nie tylko.",
|
||||
"about_your_organization_description": "Organizacje to współdzielone środowiska, w których możesz utworzyć wiele zespołów ze wspólnymi członkami, typami wydarzeń, aplikacjami, przepływami pracy itd.",
|
||||
"create_your_teams": "Utwórz zespoły",
|
||||
"create_your_teams_description": "Zacznij wspólne planowanie poprzez dodanie członków zespołu do Twojej organizacji",
|
||||
"invite_organization_admins": "Zaproś administratorów organizacji",
|
||||
"invite_organization_admins": "Zaproś administratorów Twojej organizacji",
|
||||
"invite_organization_admins_description": "Administratorzy będą mieli dostęp do wszystkich zespołów w Twojej organizacji. Administratorów i członków zespołu możesz dodać później.",
|
||||
"set_a_password": "Ustaw hasło",
|
||||
"set_a_password_description": "Spowoduje to utworzenie nowego konta użytkownika z adresem e-mail Twojej organizacji i wybranym hasłem.",
|
||||
"organization_logo": "Logo organizacji",
|
||||
"organization_about_description": "Kilka zdań na temat Twojej organizacji. Pojawią się na publicznej stronie profilowej Twojej organizacji.",
|
||||
"set_a_password_description": "Spowoduje to utworzenie nowego konta użytkownika z adresem e-mail w Twojej organizacji i wybranym hasłem.",
|
||||
"organization_logo": "Logotyp organizacji",
|
||||
"organization_about_description": "Kilka zdań na temat Twojej organizacji. Będą wyświetlane na publicznej stronie profilowej Twojej organizacji.",
|
||||
"ill_do_this_later": "Zrobię to później",
|
||||
"verify_your_email": "Potwierdź adres e-mail",
|
||||
"verify_your_email": "Zweryfikuj swój adres e-mail",
|
||||
"enter_digit_code": "Wprowadź 6-cyfrowy kod, który wysłaliśmy na adres {{email}}",
|
||||
"verify_email_organization": "Potwierdź adres e-mail, aby utworzyć organizację",
|
||||
"code_provided_invalid": "Podany kod jest nieprawidłowy, spróbuj ponownie.",
|
||||
"email_already_used": "Adres e-mail jest już używany.",
|
||||
"organization_admin_invited_heading": "Zaproszono Cię do organizacji {{orgName}}",
|
||||
"organization_admin_invited_body": "Dołącz do Twojego zespołu w organizacji {{orgName}} i zacznij skupiać się na spotkaniu, a nie jego umawianiu!",
|
||||
"duplicated_slugs_warning": "Następujące zespoły nie mogły zostać utworzone z powodu zduplikowanych slugów: {{slugs}}",
|
||||
"team_names_empty": "Nazwy zespołów nie mogą być puste.",
|
||||
"team_names_repeated": "Nazwy zespołów nie mogą się powtarzać.",
|
||||
"user_belongs_organization": "Użytkownik należy do organizacji.",
|
||||
"org_no_teams_yet": "W tej organizacji nie ma jeszcze żadnych zespołów.",
|
||||
"verify_email_organization": "Zweryfikuj swój adres e-mail, aby utworzyć organizację",
|
||||
"code_provided_invalid": "Podany kod jest nieprawidłowy, spróbuj ponownie",
|
||||
"email_already_used": "Adres e-mail jest już używany",
|
||||
"organization_admin_invited_heading": "Zaproszono Cię do dołączenia do organizacji {{orgName}}",
|
||||
"organization_admin_invited_body": "Dołącz do Twojego zespołu w organizacji {{orgName}} i zacznij skupiać się na spotkaniu, zamiast na tworzeniu spotkań!",
|
||||
"duplicated_slugs_warning": "Następujących zespołów nie można było utworzyć z powodu zduplikowanych slugów: {{slugs}}",
|
||||
"team_names_empty": "Nazwy zespołów nie mogą być puste",
|
||||
"team_names_repeated": "Nazwy zespołów nie mogą się powtarzać",
|
||||
"user_belongs_organization": "Użytkownik należy do organizacji",
|
||||
"org_no_teams_yet": "W tej organizacji nie ma jeszcze żadnych zespołów",
|
||||
"org_no_teams_yet_description": "Jeśli jesteś administratorem, pamiętaj o utworzeniu zespołów, które będą wyświetlane tutaj.",
|
||||
"set_up": "Skonfiguruj",
|
||||
"set_up_your_profile": "Skonfiguruj profil",
|
||||
"set_up_your_profile_description": "Określ, jakie informacje o Twojej roli w organizacji {{orgName}} zobaczą osoby, które klikną Twój link publiczny.",
|
||||
"set_up_your_profile_description": "Określ informacje o Twojej roli w organizacji {{orgName}} wyświetlane osobom, które klikną Twój link publiczny.",
|
||||
"my_profile": "Mój profil",
|
||||
"my_settings": "Moje ustawienia",
|
||||
"crm": "CRM",
|
||||
"messaging": "Wiadomości",
|
||||
"messaging": "Obsługa wiadomości",
|
||||
"sender_id_info": "Nazwa lub numer wyświetlany jako nadawca wiadomości SMS (niektóre kraje nie zezwalają na alfanumeryczne identyfikatory nadawcy)",
|
||||
"org_admins_can_create_new_teams": "Tylko administrator Twojej organizacji może tworzyć nowe zespoły.",
|
||||
"google_new_spam_policy": "Nowa polityka firmy Google dotycząca spamu może uniemożliwić Ci otrzymywanie powiadomień e-mail i kalendarza na temat tej rezerwacji.",
|
||||
"resolve": "Rozwiąż",
|
||||
"org_admins_can_create_new_teams": "Tylko administrator Twojej organizacji może tworzyć nowe zespoły",
|
||||
"google_new_spam_policy": "Nowa polityka firmy Google dotycząca spamu może uniemożliwić Ci otrzymywanie powiadomień na temat tej rezerwacji w wiadomościach e-mail i z kalendarza.",
|
||||
"resolve": "Rozwiąż problem",
|
||||
"no_organization_slug": "Podczas tworzenia zespołów tej organizacji wystąpił błąd. Brakujący slug adresu URL.",
|
||||
"org_name": "Nazwa organizacji",
|
||||
"org_url": "Adres URL organizacji",
|
||||
@@ -1934,11 +1934,11 @@
|
||||
"404_the_org": "Organizacja",
|
||||
"404_the_team": "Zespół",
|
||||
"404_claim_entity_org": "Zajmij subdomenę dla Twojej organizacji",
|
||||
"404_claim_entity_team": "Zajmij ten zespół i zacznij wspólnie zarządzać harmonogramami",
|
||||
"404_claim_entity_team": "Dołącz do tego zespołu i zacznij wspólnie zarządzać harmonogramami",
|
||||
"insights_all_org_filter": "Wszystkie",
|
||||
"insights_team_filter": "Zespół: {{teamName}}",
|
||||
"insights_user_filter": "Użytkownik: {{userName}}",
|
||||
"insights_subtitle": "Wyświetl wskaźniki rezerwacji z różnych wydarzeń",
|
||||
"insights_subtitle": "Wyświetl wskaźniki Insights rezerwacji z różnych wydarzeń",
|
||||
"custom_plan": "Plan niestandardowy",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodaj nowe ciągi powyżej ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -17,9 +17,15 @@
|
||||
"verify_email_banner_body": "Verifique seu endereço de e-mail para garantir o fornecimento do melhor e-mail e calendário",
|
||||
"verify_email_email_header": "Verifique seu endereço de e-mail",
|
||||
"verify_email_email_button": "Verificar e-mail",
|
||||
"copy_somewhere_safe": "Salve esta chave de API em um lugar seguro. Você não será capaz de vê-la novamente.",
|
||||
"verify_email_email_body": "Por favor, verifique seu endereço de e-mail clicando no botão abaixo.",
|
||||
"verify_email_by_code_email_body": "Por favor, verifique seu endereço de e-mail usando o código abaixo.",
|
||||
"verify_email_email_link_text": "Aqui está o link caso você não goste de usar botões:",
|
||||
"email_verification_code": "Insira o código de verificação",
|
||||
"email_verification_code_placeholder": "Insira o código de verificação enviado para seu e-mail",
|
||||
"incorrect_email_verification_code": "O código de verificação está incorreto.",
|
||||
"email_sent": "E-mail enviado com sucesso",
|
||||
"email_not_sent": "Ocorreu um erro ao enviar o e-mail",
|
||||
"event_declined_subject": "Recusado: {{title}} em {{date}}",
|
||||
"event_cancelled_subject": "Cancelado: {{title}} em {{date}}",
|
||||
"event_request_declined": "Sua solicitação de reunião foi recusada",
|
||||
@@ -78,6 +84,7 @@
|
||||
"event_awaiting_approval_recurring": "Um evento recorrente aguarda a sua aprovação",
|
||||
"someone_requested_an_event": "Alguém solicitou o agendamento de um evento em sua agenda.",
|
||||
"someone_requested_password_reset": "Alguém solicitou um link para alterar sua senha.",
|
||||
"password_reset_email_sent": "Se estee-mail existir em nosso sistema, você receberá um e-mail de redefinição.",
|
||||
"password_reset_instructions": "Se você não fez essa solicitação, você pode ignorar este e-mail e sua senha não será alterada.",
|
||||
"event_awaiting_approval_subject": "Aguardando aprovação: {{title}} em {{date}}",
|
||||
"event_still_awaiting_approval": "Um evento está aguardando a sua aprovação",
|
||||
@@ -217,6 +224,9 @@
|
||||
"already_have_an_account": "Já tem uma conta?",
|
||||
"create_account": "Criar Conta",
|
||||
"confirm_password": "Confirmar senha",
|
||||
"confirm_auth_change": "Isso alterará a forma como você faz login",
|
||||
"reset_your_password": "Defina sua nova senha com as instruções enviadas para seu endereço de e-mail.",
|
||||
"email_change": "Volte a entrar com seu novo endereço de e-mail e senha.",
|
||||
"create_your_account": "Criar sua conta",
|
||||
"sign_up": "Cadastro",
|
||||
"youve_been_logged_out": "A sessão foi encerrada",
|
||||
@@ -243,6 +253,9 @@
|
||||
"all": "Todos os apps",
|
||||
"yours": "Sua conta",
|
||||
"available_apps": "Aplicativos disponíveis",
|
||||
"available_apps_lower_case": "Aplicativos disponíveis",
|
||||
"available_apps_desc": "Você não tem nenhum aplicativo instalado. Veja apps populares abaixo e explore mais em nossa <1>App Store</1>",
|
||||
"fixed_host_helper": "Adicione qualquer pessoa que precise participar do evento. <1>Saiba mais</1>",
|
||||
"check_email_reset_password": "Verifique o seu email. Enviamos um link para redefinir a sua senha.",
|
||||
"finish": "Finalizar",
|
||||
"organization_general_description": "Gerencie as configurações para o idioma e o fuso horário da sua equipe",
|
||||
@@ -337,7 +350,7 @@
|
||||
"cancelling_event_recurring": "O evento é uma instância de um evento recorrente.",
|
||||
"cancelling_all_recurring": "Estas são todas as instâncias restantes no evento recorrente.",
|
||||
"error_with_status_code_occured": "Ocorreu um erro com o status code {{status}}.",
|
||||
"error_event_type_url_duplicate": "Já existe um tipo de evento para esta URL.",
|
||||
"error_event_type_url_duplicate": "Já existe um tipo de evento para este URL.",
|
||||
"error_event_type_unauthorized_create": "Não é possível criar este evento",
|
||||
"error_event_type_unauthorized_update": "Não é possível editar este evento",
|
||||
"error_workflow_unauthorized_create": "Não é possível criar este fluxo de trabalho",
|
||||
@@ -406,6 +419,7 @@
|
||||
"booking_requested": "Reserva solicitada",
|
||||
"meeting_ended": "Reunião encerrada",
|
||||
"form_submitted": "Formulário enviado",
|
||||
"booking_paid": "Reserva paga",
|
||||
"event_triggers": "Gatilhos de eventos",
|
||||
"subscriber_url": "URL do assinante",
|
||||
"create_new_webhook": "Criar um novo webhook",
|
||||
@@ -506,6 +520,7 @@
|
||||
"your_name": "Seu nome",
|
||||
"your_full_name": "Seu nome completo",
|
||||
"no_name": "Sem nome",
|
||||
"enter_number_between_range": "Por favor, insira um número entre 1 e {{maxOccurences}}",
|
||||
"email_address": "Endereço de e-mail",
|
||||
"enter_valid_email": "Insira um e-mail válido",
|
||||
"location": "Local",
|
||||
@@ -842,6 +857,7 @@
|
||||
"team_view_user_availability_disabled": "O usuário precisa aceitar o convite para ver a disponibilidade",
|
||||
"set_as_away": "Definir-se como indisponível",
|
||||
"set_as_free": "Desativar status indisponível",
|
||||
"toggle_away_error": "Erro ao atualizar status de ausência",
|
||||
"user_away": "Este usuário está indisponível no momento.",
|
||||
"user_away_description": "A pessoa que você está tentando realizar uma reserva está indisponível no momento e, portanto, não está aceitando novas reservas.",
|
||||
"meet_people_with_the_same_tokens": "Conheça pessoas com os mesmos tokens",
|
||||
@@ -1865,6 +1881,9 @@
|
||||
"open_dialog_with_element_click": "Abra uma caixa de diálogo quando alguém clicar em um elemento.",
|
||||
"need_help_embedding": "Precisa de ajuda? Confira nosso guia para incorporar o Cal no Wix, Squarespace ou WordPress. Consulte as perguntas frequentes ou explore opções de incorporação avançadas.",
|
||||
"book_my_cal": "Reservar meu Cal",
|
||||
"first_name": "Primeiro nome",
|
||||
"last_name": "Sobrenome",
|
||||
"first_last_name": "Primeiro nome, Sobrenome",
|
||||
"invite_as": "Convidar como",
|
||||
"form_updated_successfully": "Formulário atualizado com êxito.",
|
||||
"disable_attendees_confirmation_emails": "Desative os e-mails de confirmação padrão para participantes",
|
||||
@@ -1878,6 +1897,7 @@
|
||||
"first_event_type_webhook_description": "Crie seu primeiro webhook para este tipo de evento",
|
||||
"install_app_on": "Instalar aplicativo em",
|
||||
"create_for": "Criar para",
|
||||
"currency": "Moeda",
|
||||
"setup_organization": "Definir uma Organização",
|
||||
"organization_banner_description": "Crie um ambiente onde suas equipes podem criar tipos de evento, fluxos de trabalho e aplicativos compartilhados com agendamento coletivo e round robin.",
|
||||
"organization_banner_title": "Gerenciar organizações com múltiplas equipes",
|
||||
@@ -1901,7 +1921,7 @@
|
||||
"set_a_password": "Definir senha",
|
||||
"set_a_password_description": "Será criada uma nova conta de usuário com o e-mail da sua organização e esta senha.",
|
||||
"organization_logo": "Logotipo da organização",
|
||||
"organization_about_description": "Uma breve descrição sobre sua organização. Isso aparecerá na página do perfli público da sua organização.",
|
||||
"organization_about_description": "Uma breve descrição sobre sua organização. Isso aparecerá na página do perfil público da sua organização.",
|
||||
"ill_do_this_later": "Farei isso mais tarde",
|
||||
"verify_your_email": "Verifique seu e-mail",
|
||||
"enter_digit_code": "Insira o código de seis dígitos enviado para {{email}}",
|
||||
@@ -1927,7 +1947,7 @@
|
||||
"org_admins_can_create_new_teams": "Apenas o administrador da sua organização pode criar equipes novas",
|
||||
"google_new_spam_policy": "A nova política de spams do Google pode impedir o recebimento de notificações do calendário e e-mail sobre esta reserva.",
|
||||
"resolve": "Resolver",
|
||||
"no_organization_slug": "Houve um erro ao criar equipes para esta organizazção. Falta o campo de dados dinâmico da URL.",
|
||||
"no_organization_slug": "Houve um erro ao criar equipes para esta organizazção. Falta o campo de dados dinâmico do URL.",
|
||||
"org_name": "Nome da organização",
|
||||
"org_url": "URL da organização",
|
||||
"copy_link_org": "Copiar link para a organização",
|
||||
@@ -1940,5 +1960,18 @@
|
||||
"insights_user_filter": "Usuário: {{userName}}",
|
||||
"insights_subtitle": "Veja insights de reserva em seus eventos",
|
||||
"custom_plan": "Plano personalizado",
|
||||
"select_time": "Selecione o horário",
|
||||
"select_date": "Selecione a data",
|
||||
"see_all_available_times": "Veja todos os horários disponíveis",
|
||||
"org_team_names_example": "ex.: Time de Marketing",
|
||||
"org_team_names_example_1": "ex.: Time de Marketing",
|
||||
"org_team_names_example_2": "ex: Time de Vendas",
|
||||
"org_team_names_example_3": "ex: Time de Design",
|
||||
"org_team_names_example_4": "ex: Time de Engenharia",
|
||||
"org_team_names_example_5": "ex: Time de Análise de Dados",
|
||||
"what_is_this_meeting_about": "De que se trata esta reunião?",
|
||||
"requires_booker_email_verification": "Requer verificação de e-mail do reservante",
|
||||
"verify_team_or_account": "Verificar {{teamOrAccount}}",
|
||||
"verify_account": "Verificar Conta",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adicione suas novas strings aqui em cima ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
"calcom_explained_new_user": "Conclua a configuração da sua conta {{appName}}! Está apenas a alguns passos de resolver todos os seus problemas com agendamentos.",
|
||||
"have_any_questions": "Tem perguntas? Estamos disponíveis para ajudar.",
|
||||
"reset_password_subject": "{{appName}}: Instruções de redefinição da senha",
|
||||
"verify_email_subject": "{{appName}}: Verificar sua conta",
|
||||
"verify_email_subject": "{{appName}}: Verifique a sua conta",
|
||||
"check_your_email": "Confirme o seu e-mail",
|
||||
"verify_email_page_body": "Nós enviamos um e-mail para {{email}}. É importante verificar seu endereço de e-mail para garantir que você receberá as comunicações de {{appName}}.",
|
||||
"verify_email_banner_body": "Confirme o seu endereço de e-mail para garantir a melhor entrega possível de correio eletrónico e de agenda",
|
||||
"verify_email_page_body": "Enviámos um e-mail para {{email}}. É importante verificar o seu endereço de e-mail para garantir que receberá as comunicações de {{appName}}.",
|
||||
"verify_email_banner_body": "Confirme o seu endereço de e-mail para garantir a melhor entrega possível de e-mail e de agenda",
|
||||
"verify_email_email_header": "Confirme o seu endereço de e-mail",
|
||||
"verify_email_email_button": "Confirmar o seu e-mail",
|
||||
"verify_email_email_body": "Confirme o seu endereço de e-mail clicando no botão abaixo.",
|
||||
@@ -87,9 +87,9 @@
|
||||
"your_meeting_has_been_booked": "A sua reunião foi reservada",
|
||||
"event_type_has_been_rescheduled_on_time_date": "Seu {{title}} foi remarcado para {{date}}.",
|
||||
"event_has_been_rescheduled": "O seu evento foi reagendado.",
|
||||
"request_reschedule_subtitle": "{{organizer}} cancelou a reserva e pediu para que escolhesse outro horário.",
|
||||
"request_reschedule_subtitle": "{{organizer}} cancelou a reserva e pediu que escolhesse outro horário.",
|
||||
"request_reschedule_title_organizer": "Solicitou um reagendamento a {{attendee}}",
|
||||
"request_reschedule_subtitle_organizer": "Você cancelou a reserva e {{attendee}} deve escolher um novo horário para a reserva consigo.",
|
||||
"request_reschedule_subtitle_organizer": "Cancelou a reserva e {{attendee}} deve escolher um novo horário para a reserva consigo.",
|
||||
"rescheduled_event_type_subject": "Pedido de reagendamento enviado: {{eventType}} com {{name}} em {{date}}",
|
||||
"requested_to_reschedule_subject_attendee": "Acção necessária para reagendamento: Por favor reserve uma nova hora para {{eventType}} com {{name}}",
|
||||
"hi_user_name": "Olá {{name}}",
|
||||
@@ -129,7 +129,7 @@
|
||||
"team_upgrade_banner_description": "Obrigado por experimentar o nosso novo plano de equipa. Verificámos que a sua equipa \"{{teamName}}\" necessita de ser atualizada.",
|
||||
"upgrade_banner_action": "Atualize aqui",
|
||||
"team_upgraded_successfully": "A sua equipa foi actualizada com sucesso!",
|
||||
"org_upgrade_banner_description": "Obrigado por experimentar o nosso plano Organization. Verificámos que a sua Organização \"{{teamName}}\" necessita de ser atualizada.",
|
||||
"org_upgrade_banner_description": "Obrigado por experimentar o nosso plano Organization. Verificámos que a sua Organização \"{{teamName}}\" precisa de ser atualizada.",
|
||||
"org_upgraded_successfully": "A sua Organização foi atualizada com sucesso!",
|
||||
"use_link_to_reset_password": "Use a ligação abaixo para redefinir a sua senha",
|
||||
"hey_there": "Olá,",
|
||||
@@ -313,9 +313,9 @@
|
||||
"bookerlayout_week_view": "Semana",
|
||||
"bookerlayout_column_view": "Coluna",
|
||||
"bookerlayout_error_min_one_enabled": "Tem de estar ativa pelo menos uma disposição.",
|
||||
"bookerlayout_error_default_not_enabled": "A disposição selecionada como a vista predefinida não faz parte das disposições ativas.",
|
||||
"bookerlayout_error_default_not_enabled": "A disposição selecionada como vista predefinida não faz parte das disposições ativas.",
|
||||
"bookerlayout_error_unknown_layout": "A disposição que selecionou não é uma disposição válida.",
|
||||
"bookerlayout_override_global_settings": "Pode gerir isto para todos os seus tipos de eventos em <2>definições/ aparência</2> ou <6>sobrepor apenas para este evento</6>.",
|
||||
"bookerlayout_override_global_settings": "Pode gerir isto para todos os seus tipos de eventos em <2>definições / aparência</2> ou <6>sobrepor apenas para este evento</6>.",
|
||||
"unexpected_error_try_again": "Ocorreu um erro inesperado. Tente de novo.",
|
||||
"sunday_time_error": "Hora inválida no domingo",
|
||||
"monday_time_error": "Hora inválida na segunda-feira",
|
||||
@@ -337,11 +337,11 @@
|
||||
"cancelling_event_recurring": "O evento é uma instância de um evento recorrente.",
|
||||
"cancelling_all_recurring": "Estas são todas as restantes instâncias do evento recorrente.",
|
||||
"error_with_status_code_occured": "Ocorreu um erro com o código de estado {{status}}",
|
||||
"error_event_type_url_duplicate": "Um tipo de evento com essa URL já existe.",
|
||||
"error_event_type_unauthorized_create": "Você não tem autorização para criar esse evento",
|
||||
"error_event_type_unauthorized_update": "Você não tem autorização para editar esse evento",
|
||||
"error_workflow_unauthorized_create": "Você não tem autorização para criar esse evento",
|
||||
"error_schedule_unauthorized_create": "Você não tem autorização para criar essa agenda",
|
||||
"error_event_type_url_duplicate": "Já existe um tipo de evento com este URL.",
|
||||
"error_event_type_unauthorized_create": "Não tem autorização para criar este evento",
|
||||
"error_event_type_unauthorized_update": "Não tem autorização para editar este evento",
|
||||
"error_workflow_unauthorized_create": "Não tem autorização para criar este evento",
|
||||
"error_schedule_unauthorized_create": "Não tem autorização para criar esta agenda",
|
||||
"booking_already_cancelled": "Esta reserva já foi cancelada",
|
||||
"booking_already_accepted_rejected": "Esta reserva já foi aceite ou rejeitada",
|
||||
"go_back_home": "Voltar à Página Inicial",
|
||||
@@ -357,7 +357,7 @@
|
||||
"upcoming_bookings": "Assim que alguém reservar uma hora, ela aparecerá aqui.",
|
||||
"recurring_bookings": "Assim que alguém reservar uma reunião recorrente, será mostrada aqui.",
|
||||
"past_bookings": "As suas reservas anteriores aparecerão aqui.",
|
||||
"cancelled_bookings": "Suas reservas canceladas aparecerão aqui.",
|
||||
"cancelled_bookings": "As suas reservas canceladas vão aparecer aqui.",
|
||||
"unconfirmed_bookings": "As suas marcações não confirmadas irão aparecer aqui.",
|
||||
"unconfirmed_bookings_tooltip": "Reservas não confirmadas",
|
||||
"on": "em",
|
||||
@@ -398,12 +398,12 @@
|
||||
"browse_api_documentation": "Consulte a nossa documentação da API",
|
||||
"leverage_our_api": "Tire partido da nossa API para controlo e personalização total.",
|
||||
"create_webhook": "Criar Webhook",
|
||||
"booking_cancelled": "Reserva Cancelada",
|
||||
"booking_cancelled": "Reserva cancelada",
|
||||
"booking_rescheduled": "Reserva Reagendada",
|
||||
"recording_ready": "Ligação de transferência da gravação pronta",
|
||||
"booking_created": "Reserva Criada",
|
||||
"booking_rejected": "Reserva Rejeitada",
|
||||
"booking_requested": "Reserva Rejeitada",
|
||||
"booking_rejected": "Reserva rejeitada",
|
||||
"booking_requested": "Reserva solicitada",
|
||||
"meeting_ended": "A reunião terminou",
|
||||
"form_submitted": "Formulário enviado",
|
||||
"event_triggers": "Causadores de eventos",
|
||||
@@ -587,7 +587,7 @@
|
||||
"disband_team": "Dissolver Equipa",
|
||||
"disband_team_confirmation_message": "De certeza que quer desmantelar esta equipa? Qualquer pessoa com quem tenha partilhado esta ligação de equipa deixará de poder fazer reservas através da respectiva ligação.",
|
||||
"disband_org": "Dissolver Organização",
|
||||
"disband_org_confirmation_message": "Tem a certeza que deseja dissolver esta Organização? Todas as equipas e membros serão eliminados.",
|
||||
"disband_org_confirmation_message": "Tem a certeza que quer dissolver esta organização? Todas as equipas e membros serão eliminados.",
|
||||
"remove_member_confirmation_message": "Tem a certeza de que deseja remover este membro da equipa?",
|
||||
"confirm_disband_team": "Sim, dissolver equipa",
|
||||
"confirm_remove_member": "Sim, remover membro",
|
||||
@@ -874,16 +874,16 @@
|
||||
"no_category_apps_description_other": "Adicione qualquer outro tipo de aplicações para fazer todos os tipos de coisas",
|
||||
"no_category_apps_description_web3": "Adicione uma aplicação web3 às suas páginas de reservas",
|
||||
"no_category_apps_description_messaging": "Adicione uma aplicação de mensagens para configurar notificações e lembretes personalizados",
|
||||
"no_category_apps_description_crm": "Adicione um aplicativo CRM para manter o controle de com quem você encontrou",
|
||||
"no_category_apps_description_crm": "Adicione uma aplicação de CRM para manter um registo das pessoas com quem se reuniu",
|
||||
"installed_app_calendar_description": "Defina o(s) calendário(s) para verificar se existem conflitos e assim evitar marcações sobrepostas.",
|
||||
"installed_app_payment_description": "Configure os serviços de processamento de pagamentos que serão utilizados nas cobranças aos seus clientes.",
|
||||
"installed_app_analytics_description": "Configurar as aplicações de análise a utilizar nas suas páginas de reservas",
|
||||
"installed_app_other_description": "Todas as aplicações instaladas de outras categorias.",
|
||||
"installed_app_conferencing_description": "Configure que aplicativos de conferência utilizar",
|
||||
"installed_app_conferencing_description": "Configurar as aplicações de conferência a utilizar",
|
||||
"installed_app_automation_description": "Configurar as aplicações de automatização a utilizar",
|
||||
"installed_app_web3_description": "Configure as aplicações web3 a utilizar nas suas páginas de reservas",
|
||||
"installed_app_messaging_description": "Configure que aplicativos de mensagens utilizar para configurar notificações e lembretes personalizados",
|
||||
"installed_app_crm_description": "Configure que aplicativos de CRM utilizar para manter o controle de com quem você encontrou",
|
||||
"installed_app_messaging_description": "Configurar as aplicações de mensagens a utilizar para definir notificações e lembretes personalizados",
|
||||
"installed_app_crm_description": "Configurar as aplicações de CRM a utilizar para manter um registo das pessoas com quem se reuniu",
|
||||
"analytics": "Estatísticas",
|
||||
"empty_installed_apps_headline": "Nenhuma aplicação instalada",
|
||||
"empty_installed_apps_description": "As aplicações permitem-lhe melhorar o seu fluxo de trabalho e os seus agendamentos, significativamente.",
|
||||
@@ -909,7 +909,7 @@
|
||||
"create_events_on": "Criar eventos em:",
|
||||
"enterprise_license": "Esta é uma funcionalidade empresarial",
|
||||
"enterprise_license_description": "Para ativar esta funcionalidade, obtenha uma chave de instalação na consola {{consoleUrl}} e adicione-a ao seu .env como CALCOM_LICENSE_KEY. Se a sua equipa já tem uma licença, entre em contacto com {{supportMail}} para obter ajuda.",
|
||||
"enterprise_license_development": "Pode testar este recurso no modo de desenvolvimento. Para utilização em produção, um administrador deverá aceder a <2>/auth/setup</2> para inserir a chave da licença.",
|
||||
"enterprise_license_development": "Pode testar esta funcionalidade no modo de desenvolvimento. Para utilização em produção, um administrador deverá aceder a <2>/auth/setup</2> para inserir a chave da licença.",
|
||||
"missing_license": "Licença em falta",
|
||||
"signup_requires": "Necessita de licença comercial",
|
||||
"signup_requires_description": "De momento a {{companyName}} não oferece uma versão gratuita de código aberto da página de registo. Para aceder completamente aos componentes de registo tem de adquirir uma licença comercial. Para uso pessoal, recomendamos a Prisma Data Platform ou qualquer outra interface Postgres para criar contas.",
|
||||
@@ -1072,7 +1072,7 @@
|
||||
"event_location": "Localização do evento",
|
||||
"reschedule_optional": "Razão do reagendamento (opcional)",
|
||||
"reschedule_placeholder": "Informe os restantes para que saibam porque precisa de reagendar",
|
||||
"event_cancelled": "Esse evento foi cancelado",
|
||||
"event_cancelled": "Este evento foi cancelado",
|
||||
"emailed_information_about_cancelled_event": "Enviámos um email com o aviso para si e para os restantes participantes.",
|
||||
"this_input_will_shown_booking_this_event": "Este campo será mostrado na reserva deste evento",
|
||||
"meeting_url_in_conformation_email": "O URL da reunião está no email de confirmação",
|
||||
@@ -1292,7 +1292,7 @@
|
||||
"conferencing_description": "Adicione as suas aplicações de videoconferência para reuniões",
|
||||
"add_conferencing_app": "Adicionar aplicação de conferência",
|
||||
"password_description": "Faça a gestão das definições para as palavras-passe da sua conta",
|
||||
"set_up_two_factor_authentication": "Configure sua autenticação em duas etapas",
|
||||
"set_up_two_factor_authentication": "Configurar a autenticação de dois fatores",
|
||||
"we_just_need_basic_info": "Precisamos apenas de algumas informações básicas para configurar o seu perfil.",
|
||||
"skip": "Ignorar",
|
||||
"do_this_later": "Fazer isto mais tarde",
|
||||
@@ -1306,8 +1306,8 @@
|
||||
"connect_analytics_apps": "Associar aplicações de estatística",
|
||||
"connect_other_apps": "Associe outras aplicações",
|
||||
"connect_web3_apps": "Associe aplicações web3",
|
||||
"connect_messaging_apps": "Conecte aplicações de mensagens",
|
||||
"connect_crm_apps": "Conecte aplicações de CRM",
|
||||
"connect_messaging_apps": "Ligar aplicações de mensagens",
|
||||
"connect_crm_apps": "Ligar aplicações CRM",
|
||||
"current_step_of_total": "Passo {{currentStep}} de {{maxSteps}}",
|
||||
"add_variable": "Adicionar variável",
|
||||
"custom_phone_number": "Número do telefone personalizado",
|
||||
@@ -1320,14 +1320,14 @@
|
||||
"location_info": "O local do evento",
|
||||
"additional_notes_info": "As notas adicionais da reserva",
|
||||
"attendee_name_info": "O nome do responsável pela reserva",
|
||||
"organizer_name_info": "Nome do(a) organizador(a)",
|
||||
"organizer_name_info": "Nome do organizador",
|
||||
"to": "Para",
|
||||
"workflow_turned_on_successfully": "Fluxo de trabalho {{workflowName}} {{offOn}} com sucesso",
|
||||
"download_responses": "Descarregar respostas",
|
||||
"download_responses_description": "Descarregue todas as respostas ao seu formulário em formato CSV.",
|
||||
"download": "Descarregar",
|
||||
"download_recording": "Transferir gravação",
|
||||
"recording_from_your_recent_call": "A gravação da sua chamada recente em {{appName}} está pronta para download",
|
||||
"recording_from_your_recent_call": "A gravação da sua chamada recente em {{appName}} está pronta para descarregar",
|
||||
"create_your_first_form": "Crie o seu primeiro formulário",
|
||||
"create_your_first_form_description": "Com os Formulários de encaminhamento, pode fazer questões qualitativas e encaminhar para a pessoa ou o tipo de evento correto.",
|
||||
"create_your_first_webhook": "Crie o seu primeiro Webhook",
|
||||
@@ -1336,9 +1336,9 @@
|
||||
"event_one": "evento",
|
||||
"event_other": "eventos",
|
||||
"profile_team_description": "Faça a gestão das definições do seu perfil de equipa",
|
||||
"profile_org_description": "Gerencie as configurações do perfil da sua organização",
|
||||
"profile_org_description": "Gerir definições para o perfil da sua organização",
|
||||
"members_team_description": "Utilizadores que estão no grupo",
|
||||
"organization_description": "Gerencie os membros e administradores da sua organização",
|
||||
"organization_description": "Gerir os administradores e membros da sua organização",
|
||||
"team_url": "Endereço da equipa",
|
||||
"team_members": "Membros da equipa",
|
||||
"more": "Mais",
|
||||
@@ -1519,8 +1519,8 @@
|
||||
"find_the_best_person": "Encontre a melhor pessoa disponível e faça um ciclo pela sua equipa.",
|
||||
"fixed_round_robin": "Distribuição equilibrada fixa",
|
||||
"add_one_fixed_attendee": "Adicione um participante fixo e distribua de forma equilibrada a partir de um número de participantes.",
|
||||
"calcom_is_better_with_team": "{{appName}} é melhor com times",
|
||||
"the_calcom_team": "A equipe {{companyName}}",
|
||||
"calcom_is_better_with_team": "{{appName}} é melhor com equipas",
|
||||
"the_calcom_team": "A equipa {{companyName}}",
|
||||
"add_your_team_members": "Adicione os membros da sua equipa aos seus tipos de eventos. Utilize o agendamento coletivo para incluir todos os membros ou encontre a pessoa mais adequada com o agendamento baseado numa distribuição equilibrada.",
|
||||
"booking_limit_reached": "O limite de reservas para este tipo de evento foi atingido",
|
||||
"duration_limit_reached": "O limite de duração para este tipo de evento foi atingido",
|
||||
@@ -1539,7 +1539,7 @@
|
||||
"navigate_installed_apps": "Ir para as aplicações instaladas",
|
||||
"disabled_calendar": "Se tiver outro calendário instalado, as novas reservas serão adicionadas ao mesmo. Se não for o caso, deve associar um novo calendário para garantir que não perde novas reservas.",
|
||||
"enable_apps": "Ativar aplicações",
|
||||
"enable_apps_description": "Ative aplicativos que usuários podem integrar com {{appName}}",
|
||||
"enable_apps_description": "Ativar aplicações que os utilizadores podem integrar com {{appName}}",
|
||||
"purchase_license": "Adquira uma Licença",
|
||||
"already_have_key": "Eu já tenho uma chave:",
|
||||
"already_have_key_suggestion": "Por favor, copie a sua variável de ambiente CALCOM_LICENSE_KEY existente aqui.",
|
||||
@@ -1553,9 +1553,9 @@
|
||||
"no_available_apps": "Não existem aplicações disponíveis",
|
||||
"no_available_apps_description": "Garanta que existem aplicações na sua instalação em 'packages/app-store'",
|
||||
"no_apps": "Não existem aplicações ativas nesta instância do Cal",
|
||||
"no_apps_configured": "Nenhuma aplicação foi configurada ainda",
|
||||
"enable_in_settings": "Você pode habilitar os aplicatovs nas configurações",
|
||||
"please_contact_admin": "Por favor, contate seu administrador",
|
||||
"no_apps_configured": "Ainda não foi configurada nenhuma aplicação",
|
||||
"enable_in_settings": "Pode ativar as aplicações nas definições",
|
||||
"please_contact_admin": "Contacte o seu administrador",
|
||||
"apps_settings": "Definições de aplicações",
|
||||
"fill_this_field": "Por favor, preencha este campo",
|
||||
"options": "Opções",
|
||||
@@ -1674,7 +1674,7 @@
|
||||
"no_workflows": "Sem fluxos de trabalho",
|
||||
"change_filter": "Altere o filtro para ver os seus fluxos de trabalho pessoais e da equipa.",
|
||||
"change_filter_common": "Alterar o filtro para ver os resultados.",
|
||||
"no_results_for_filter": "Sem resultados para o filtro",
|
||||
"no_results_for_filter": "Nenhum resultado para o filtro",
|
||||
"recommended_next_steps": "Próximos passos recomendados",
|
||||
"create_a_managed_event": "Criar um tipo de evento gerido",
|
||||
"meetings_are_better_with_the_right": "Os eventos são melhores com os elementos certos da equipa. Convide-os agora.",
|
||||
@@ -1802,7 +1802,7 @@
|
||||
"least_booked_members": "Membros com menos reservas",
|
||||
"events_created": "Eventos criados",
|
||||
"events_completed": "Eventos concluídos",
|
||||
"events_cancelled": "Eventos Cancelados",
|
||||
"events_cancelled": "Eventos cancelados",
|
||||
"events_rescheduled": "Eventos reagendados",
|
||||
"from_last_period": "do último período",
|
||||
"from_to_date_period": "De: {{startDate}} A: {{endDate}}",
|
||||
@@ -1836,9 +1836,9 @@
|
||||
"complete_your_booking": "Concluir a sua reserva",
|
||||
"complete_your_booking_subject": "Concluir a sua reserva: {{title}} a {{date}}",
|
||||
"confirm_your_details": "Confirme os seus dados",
|
||||
"copy_invite_link": "Copiar link do convite",
|
||||
"edit_invite_link": "Editar configurações do link",
|
||||
"invite_link_copied": "Link do convite copiado",
|
||||
"copy_invite_link": "Copiar a ligação do convite",
|
||||
"edit_invite_link": "Editar definições da ligação",
|
||||
"invite_link_copied": "Ligação de convite copiada",
|
||||
"invite_link_deleted": "Ligação do convite copiada",
|
||||
"invite_link_updated": "Definições da ligação de convite guardadas",
|
||||
"link_expires_after": "Ligações definidas para expirar depois...",
|
||||
@@ -1901,26 +1901,26 @@
|
||||
"set_a_password": "Definir uma palavra-passe",
|
||||
"set_a_password_description": "Isto irá criar uma conta de utilizador com o e-mail da sua organização e esta palavra-passe.",
|
||||
"organization_logo": "Logo da Organização",
|
||||
"organization_about_description": "Breve descrição sobre sua organização. Isso vai aparecer na página de perfil pública da sua organização.",
|
||||
"ill_do_this_later": "Farei isso depois",
|
||||
"verify_your_email": "Verifique seu e-mail",
|
||||
"enter_digit_code": "Entre o código de 6 dígitos enviado para {{email}}",
|
||||
"verify_email_organization": "Verifique seu e-mail para criar uma organização",
|
||||
"code_provided_invalid": "O código fornecido inválido, tente novamente",
|
||||
"email_already_used": "E-mail já está sendo usado",
|
||||
"organization_about_description": "Algumas frases sobre a sua organização. Isto aparecerá na página de perfil público da sua organização.",
|
||||
"ill_do_this_later": "Faço mais tarde",
|
||||
"verify_your_email": "Verifique o seu e-mail",
|
||||
"enter_digit_code": "Introduza o código de 6 dígitos que enviámos para {{email}}",
|
||||
"verify_email_organization": "Verifique o seu e-mail para criar uma organização",
|
||||
"code_provided_invalid": "O código fornecido não é válido, tente novamente",
|
||||
"email_already_used": "O e-mail já está a ser utilizado",
|
||||
"organization_admin_invited_heading": "Recebeu um convite para se juntar a {{orgName}}",
|
||||
"organization_admin_invited_body": "Junte-se à sua equipa em {{orgName}} e comece a concentrar-se em reunir e não em fazer reuniões!",
|
||||
"duplicated_slugs_warning": "Os seguintes times não puderam ser criados devido a slugs duplicados: {{slugs}}",
|
||||
"team_names_empty": "Nomes de equipes não podem estar vazios",
|
||||
"team_names_repeated": "Nomes de equipes não podem se repetir",
|
||||
"user_belongs_organization": "Usuário pertence a uma organização",
|
||||
"org_no_teams_yet": "Essaorganização ainda não tem times",
|
||||
"organization_admin_invited_body": "Junte-se à sua equipa em {{orgName}} e comece a concentrar-se nas reuniões, não em fazer reuniões!",
|
||||
"duplicated_slugs_warning": "As seguintes equipas não puderam ser criadas devido à duplicação de slugs: {{slugs}}",
|
||||
"team_names_empty": "Os nomes das equipas não podem ficar vazios",
|
||||
"team_names_repeated": "Os nomes das equipas não podem ser repetidos",
|
||||
"user_belongs_organization": "O utilizador pertence a uma organização",
|
||||
"org_no_teams_yet": "Esta organização ainda não tem equipas",
|
||||
"org_no_teams_yet_description": "Se é um administrador, deve criar equipas para serem apresentadas aqui.",
|
||||
"set_up": "Configurar",
|
||||
"set_up_your_profile": "Configurar o seu perfil",
|
||||
"set_up_your_profile_description": "Deixe as pessoas saber quem você é dentro de {{orgName}} e quando interagem com a sua ligação pública.",
|
||||
"my_profile": "Meu perfil",
|
||||
"my_settings": "Minhas configurações",
|
||||
"set_up_your_profile_description": "Permita que as pessoas saibam quem você é em {{orgName}} e quando se envolvem com o seu link público.",
|
||||
"my_profile": "O meu perfil",
|
||||
"my_settings": "As minhas definições",
|
||||
"crm": "CRM",
|
||||
"messaging": "Mensagens",
|
||||
"sender_id_info": "Nome ou número mostrado como remetente de um SMS (alguns países não permitem identificadores alfanuméricos de remetentes)",
|
||||
@@ -1930,15 +1930,15 @@
|
||||
"no_organization_slug": "Ocorreu um erro ao criar equipas para esta organização. Falta o slug do URL.",
|
||||
"org_name": "Nome da organização",
|
||||
"org_url": "URL da Organização",
|
||||
"copy_link_org": "Copie o link para organização",
|
||||
"copy_link_org": "Copiar a ligação para a organização",
|
||||
"404_the_org": "A organização",
|
||||
"404_the_team": "O time",
|
||||
"404_the_team": "A equipa",
|
||||
"404_claim_entity_org": "Reivindicar o seu subdomínio para a sua organização",
|
||||
"404_claim_entity_team": "Reivindicar esta equipa e começar a gerir os horários em grupo",
|
||||
"insights_all_org_filter": "Todos as aplicações",
|
||||
"insights_team_filter": "Time: {{teamName}}",
|
||||
"insights_user_filter": "Usuário {{userName}}",
|
||||
"insights_subtitle": "Veja as informações de reservas sobre os seus eventos",
|
||||
"custom_plan": "Plano Personalizado",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adicione as suas novas strings acima aqui ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
"insights_team_filter": "Equipa: {{teamName}}",
|
||||
"insights_user_filter": "Utilizador: {{userName}}",
|
||||
"insights_subtitle": "Ver informações sobre reservas nos seus eventos",
|
||||
"custom_plan": "Plano personalizado",
|
||||
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user