Compare commits

..
136 Commits
Author SHA1 Message Date
Omar López 37f01db0da v3.3.2
release.yml / release (push) Canceled after 0s
2023-09-19 14:03:20 -07:00
Omar López 560ec244e8 feat: Setups prisma accelerate (#11324) 2023-09-19 21:02:57 +00:00
Crowdin Bot 21a0b67b5a New Crowdin translations by Github Action 2023-09-19 20:49:32 +00:00
824145b0e2 feat: Sync app credentials between Cal.com & self-hosted platforms (#11059)
* Add credential sync .env variables

* Add webhook to send app credentials

* Upsert credentials when webhook called

* Refresh oauth token from a specific endpoint

* Pass appSlug

* Add credential encryption

* Move oauth helps into a folder

* Create parse token response wrapper

* Add OAuth helpers to apps

* Clean up

* Refactor `appDirName` to `appSlug`

* Address feedback

* Change to safe parse

* Remove console.log

---------

Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
2023-09-19 20:46:50 +00:00
Leo Giovanetti bc89fe00ea fix: unpublished org/team avatar and i18n (#11429)
* fix: unpublished org/team avatar and i18n

* Fixing e2e
2023-09-20 01:45:39 +05:30
Crowdin Bot 64850b54f0 New Crowdin translations by Github Action 2023-09-19 20:04:11 +00:00
405a4cc850 fix: Time Buttons Should be Scroll not the Whole Right Side (#11412)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
2023-09-19 22:01:26 +02:00
Crowdin Bot eccab37607 New Crowdin translations by Github Action 2023-09-19 14:24:18 +00:00
786c1c2ba3 feat: monthly email digest (#10621)
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peer@cal.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-19 16:19:36 +02:00
Udit TakkarandLeo Giovanetti 50970dc249 fix: org invite (#11356)
Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-09-19 15:46:33 +05:30
Crowdin Bot 45cded6b48 New Crowdin translations by Github Action 2023-09-19 10:02:00 +00:00
Crowdin Bot b139ec8994 New Crowdin translations by Github Action 2023-09-19 09:58:12 +00:00
Peer Richelsen d058d322bc chore: slow caldav hint in description (#11438) 2023-09-19 11:54:51 +02:00
Leo Giovanetti 72907e5e1b feat: resend invitation (#11428) 2023-09-19 00:24:43 +00:00
Kevin Crimi d9c3c184c4 fix: Return all responses in booking api (#11284) 2023-09-18 16:39:25 -07:00
Crowdin Bot b1fff71c91 New Crowdin translations by Github Action 2023-09-18 23:38:32 +00:00
alannnc 56b1243e59 fix: re-render on insights with orgs (#11395) 2023-09-18 16:36:07 -07:00
Crowdin Bot a3413216f6 New Crowdin translations by Github Action 2023-09-18 19:19:24 +00:00
Shivam KalraandSyed Ali Shahbaz fd507f1d12 test: e2e oidc (#11129)
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
2023-09-18 21:16:32 +02:00
Peer RichelsenandLeo Giovanetti c820a3937a chore: send comment about merge conflict (#11345)
Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-09-18 21:16:22 +02:00
aar2dee2andPeer Richelsen 5c24ed2ef7 chore: app contribution guidelines (#11416)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-18 21:16:02 +02:00
GitStart-Cal.comandgitstart-calcom 8d9d7bbb25 fix: Required "Add guests" button isn't required on attendee's end (#11381)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-09-18 21:15:40 +02:00
Crowdin Bot 837bf5d604 New Crowdin translations by Github Action 2023-09-18 16:01:33 +00:00
Hariom Balhara c9c634cceb Support firstName and lastName query params (#11420) 2023-09-18 21:28:07 +05:30
Hariom BalharaandJoe Au-Yeung 8ba09ce04d Fix messaging apps listing in installed (#11167)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-09-18 21:26:49 +05:30
Crowdin Bot 65d4a4f40e New Crowdin translations by Github Action 2023-09-18 07:55:08 +00:00
Crowdin Bot 581d8ff4ae New Crowdin translations by Github Action 2023-09-18 07:51:56 +00:00
Pradip Chaudhary c562f45904 fix: "scrollbar-gutter: stable" on html to prevent layout shift (#11413) 2023-09-18 09:49:01 +02:00
zomars b413f0a609 fix: add missing await 2023-09-15 17:22:50 -07:00
Crowdin Bot ffcf9b770d New Crowdin translations by Github Action 2023-09-15 19:27:35 +00:00
Hariom Balhara ab77531167 fix: Email Embed slots not showing up (#11379) 2023-09-15 12:24:20 -07:00
Crowdin Bot f59f4ca26c New Crowdin translations by Github Action 2023-09-15 16:22:47 +00:00
Crowdin Bot ca13eec4c9 New Crowdin translations by Github Action 2023-09-15 16:18:56 +00:00
Crowdin Bot bf1ff9bd71 New Crowdin translations by Github Action 2023-09-15 16:14:12 +00:00
Crowdin Bot caefa93e14 New Crowdin translations by Github Action 2023-09-15 16:10:36 +00:00
Leo Giovanetti 7154349e9e fix: org username check for dynamic and signup (#11390) 2023-09-15 13:06:56 -03:00
Crowdin Bot 7beb9568ba New Crowdin translations by Github Action 2023-09-15 15:56:09 +00:00
Crowdin Bot 2251d5a4be New Crowdin translations by Github Action 2023-09-15 15:53:15 +00:00
Crowdin Bot f1bdff9679 New Crowdin translations by Github Action 2023-09-15 15:50:25 +00:00
Crowdin Bot c433e0c74c New Crowdin translations by Github Action 2023-09-15 15:46:48 +00:00
Crowdin Bot fb940a1023 New Crowdin translations by Github Action 2023-09-15 15:43:05 +00:00
Crowdin Bot 73366e4152 New Crowdin translations by Github Action 2023-09-15 15:39:48 +00:00
Crowdin Bot 9d7da10744 New Crowdin translations by Github Action 2023-09-15 15:36:02 +00:00
Crowdin Bot c4f091debf New Crowdin translations by Github Action 2023-09-15 15:32:25 +00:00
Alex van Andel 29923fe304 v3.3.1
release.yml / release (push) Canceled after 0s
2023-09-15 16:28:09 +01:00
Richard PoelderlandAlex van Andel e8998414fc feat(i18n): changed Japanese translations on booking page (#11388)
* regen yarn.lock?

* chore: enable i18n-unused GH action in `website`

* Generated yarn.lock with submodules

* Added yarn.lock auth

* add datocms webhook secret

* update crowdin to latest version

* cherry-picked https://github.com/calcom/cal.com/pull/10416/files

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-09-15 16:25:49 +01:00
Richard PoelderlandAlex van Andel 2e58e73e95 chore: Update GH action from crowdin to latest version (#11387)
* regen yarn.lock?

* chore: enable i18n-unused GH action in `website`

* Generated yarn.lock with submodules

* Added yarn.lock auth

* add datocms webhook secret

* update crowdin to latest version

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-09-15 14:43:49 +00:00
Crowdin Bot b7168948ca New Crowdin translations by Github Action 2023-09-15 14:01:21 +00:00
sean-brydon c188a91d64 fix: Safari overflowing issues (#11385) 2023-09-15 15:57:49 +02:00
Crowdin Bot 4724b1312c New Crowdin translations by Github Action 2023-09-15 13:57:43 +00:00
Hariom Balhara d349f6536a fix: Embed - app.cal.com instead of cal.com (#11384)
* Fix yarn.lock

* Force app.cal.com because Safari and rewrites using referrer

* Add comment
2023-09-15 14:54:25 +01:00
Crowdin Bot f35f506ddf New Crowdin translations by Github Action 2023-09-15 13:43:44 +00:00
Crowdin Bot 46d0b67f81 New Crowdin translations by Github Action 2023-09-15 13:40:27 +00:00
Crowdin Bot 7000cf7581 New Crowdin translations by Github Action 2023-09-15 13:36:53 +00:00
Crowdin Bot 1c0faf4eb6 New Crowdin translations by Github Action 2023-09-15 13:33:26 +00:00
Alex van Andel 6d0f0d6bdd fix: Include returns all credential fields, select excludes (#11383) 2023-09-15 13:29:44 +00:00
Crowdin Bot cb4a3dd2a6 New Crowdin translations by Github Action 2023-09-15 13:25:56 +00:00
Crowdin Bot fc623fc511 New Crowdin translations by Github Action 2023-09-15 13:22:33 +00:00
Crowdin Bot 9db0834b50 New Crowdin translations by Github Action 2023-09-15 13:18:41 +00:00
Crowdin Bot 7a3cc7d263 New Crowdin translations by Github Action 2023-09-15 13:14:24 +00:00
Crowdin Bot f1381d8a82 New Crowdin translations by Github Action 2023-09-15 13:11:06 +00:00
Crowdin Bot 5c136df1bb New Crowdin translations by Github Action 2023-09-15 13:07:33 +00:00
Crowdin Bot e18f08249b New Crowdin translations by Github Action 2023-09-15 13:04:29 +00:00
Crowdin Bot 5b8b165a3b New Crowdin translations by Github Action 2023-09-15 13:01:21 +00:00
Somay ChauhanandShivam Kalra ab39c8f581 fix: a new email can signin with any password once it's invited to a team (#11359)
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
2023-09-15 12:57:41 +00:00
Crowdin Bot abc077bfb6 New Crowdin translations by Github Action 2023-09-15 12:55:16 +00:00
Crowdin Bot bb167e7763 New Crowdin translations by Github Action 2023-09-15 12:52:03 +00:00
Crowdin Bot 3b92ff607a New Crowdin translations by Github Action 2023-09-15 12:47:56 +00:00
Crowdin Bot 129d00a69d New Crowdin translations by Github Action 2023-09-15 12:44:42 +00:00
Crowdin Bot c86e766aee New Crowdin translations by Github Action 2023-09-15 12:41:46 +00:00
Leo Giovanetti a2873c740b fix: team page data (#11382) 2023-09-15 13:38:55 +01:00
Crowdin Bot 6e3a1369f8 New Crowdin translations by Github Action 2023-09-15 11:55:51 +00:00
Chiranjeev Vishnoi e44e24ca42 fix: 2FA password visibility toggle show/hide state (#11361) 2023-09-15 17:22:58 +05:30
Somay Chauhan 768a3132fb fix: settings/organization/members table filtering issue (#11313) 2023-09-15 17:20:40 +05:30
Crowdin Bot 41812bb280 New Crowdin translations by Github Action 2023-09-15 10:19:46 +00:00
alannnc cb1d3487af chore: edit and update paypal setup instructions (#11325) 2023-09-15 15:46:28 +05:30
Omar López c95917cceb feat: Calendar Cache (#11185) 2023-09-14 15:19:39 -07:00
Omar López 9bc40a3eb6 v3.3.0
release.yml / release (push) Canceled after 0s
2023-09-14 12:50:43 -07:00
Keith Williamsandzomars bd21b2dfe1 fix: Import prisma (#11369)
Co-authored-by: zomars <zomars@me.com>
2023-09-14 19:47:25 +00:00
Crowdin Bot d60fb081c9 New Crowdin translations by Github Action 2023-09-14 16:56:47 +00:00
197b435b6f fix: Duplicate calendar events (#11327)
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Alan <alannnc@gmail.com>
2023-09-14 09:53:58 -07:00
dihedral add297b09a fix: use selected duration when checking for conflicts for new bookings (#10713) 2023-09-14 10:40:49 -04:00
Ujwal Kumar d65f0ee0e8 fix: Allow attendee first and last name from attendee name when name … (#11287) 2023-09-14 10:24:58 -04:00
Hariom Balhara 59c0a71db7 fix: Routing Forms - Forward Query Params and show the error message in case of validation error in headless router (#11338) 2023-09-14 10:05:22 -04:00
Hariom Balhara d50151fe08 Fix yarn.lock (#11364) 2023-09-14 13:41:56 +00:00
Kiran K d2b0dd8eab fix: SAML SSO - Stop relying on invitedTo column and use membership table instead (#11331) 2023-09-14 14:57:45 +02:00
Joe Au-Yeung bb0574dff8 chore: Outlook processBusyTimes iterate busy times once (#11350) 2023-09-14 14:56:31 +02:00
sean-brydon 49364eee9a Import prisma (#11358) 2023-09-14 09:18:19 -03:00
Peer Richelsen adb0530d69 feat: getalby.com app (#11347) 2023-09-14 08:35:13 -03:00
+18 a2d1dbebba feat: editmode availbility slider (#11197)
* Add loading data and banner

* [WIP] hasEditPerms middleware

* fix: type error in booker (#11011)

* New Crowdin translations by Github Action

* refactor: removed redundant test (#10785)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>

* feat: 2fa backup codes (#10600)

Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* Delete add-PRs-to-project-reviewing-PRs.yml (#11008)

Co-authored-by: alannnc <alannnc@gmail.com>

* New Crowdin translations by Github Action

* fix: multiple duration when booking (#11032)

* fix: other reported issues (#11015)

* fix: weird margin top in avatar

* fix: pending users are shown on booking page

* fix: avatar and naming issues

* fix: toast alignment and removing unneeded titles

* missing changes from toast improvements

* feat: empty state for teams without event types

* Removing console.log

* feat: cal ai (#10992)

Co-authored-by: nicktrn <55853254+nicktrn@users.noreply.github.com>
Co-authored-by: tedspare <ted.spare@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>

* New Crowdin translations by Github Action

* fix: meeting ended trigger for webhooks and zapier sometimes not working (#10946)

Co-authored-by: mohammed gehad <mohammed.gehad.1998@gmail.com>
Co-authored-by: Monto <138862352+monto7926@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>

* feat: team admin: see connected apps of team members (#11036)

* added feature:team admin can see connected apps of members

* fixed the type error

* Update packages/lib/server/queries/teams/index.ts

* Minor fixes

---------

Co-authored-by: alannnc <alannnc@gmail.com>

* fix: lower case slugs in teams (#11026)

* fix: lower case slugs in teams

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: use slugify

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* refactor: improvements on german translation (#10898)

* fix: fix-tablet-menu-not-centered-sidebar (#11020)

Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>

* chore: add Popover in storybook (#11021)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: Set mobile availability (#11027)

* chore: add ColorPicker in storybook (CALCOM-10760) (#10866)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* feat: adds next cold start profiler (#11014)

* Handle disabling of ORGANIZATIONS_ENABLED flag (#11041)

* New Crowdin translations by Github Action

* styles:dark mode color fix (#11004)

* chore: sheet darkmode and improve responsive (#11047)

* fix: handle collective multiple host on destinationCalendar (#10967)

* fix: include app data and credentials from DB (#11048)

* include app data and credentials from DB

* Improve performance

* fix: Error when running storybook (#11037)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* fix: broken company profile link on team booking page (#10978)

* chore: add ErrorBoundary in storybook (CALCOM-10760) (#10872)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* feat: sorting for workflow and routing forms (#10780)

Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* resolve zod versions across child packages (#11052)

* fix: List storybook file is empty (fix-list) (#10965)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* fix: admin org list without members (#11051)

Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* chore: add ToggleGroup in storybook (#10802)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>

* fix: add metadata to stripe payment intent (#11053)

* fix: Logo storybook file with invalid icons (fix-logo) (#11018)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* fix: Add controls for Select Field storybook file (#10936)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* fix: Fix tooltip control on ButtonPlayground storybook file (fix-ButtonTooltip) (#10937)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>

* fix: email embed – remove collapsible and permanently show times (#10996)

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Mehul <mehulzr@gmail.com>

* chore: add Timezone Select in storybook (CALCOM-10760) (#10966)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* chore: add Switch in storybook (CALCOM-10760) (#10804)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>

* Sync packages

* fix: zod utils due to upgrade

* easy fix (#11054)

* fix sub quantity update stripe (#11057)

* v3.2.7

* Revert "feat: adds next cold start profiler (#11014)" (#11072)

This reverts commit 05631d093f.

* fix: Fixes username invite issue (#10998)

* Fixes username invite issue

* Ensure we only suggest email invites in org members

---------

Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>

* Fix sheet layout

* WIP permissions when userschedule doesnt match

* WIP get handler weird behaviour

* Update toast

* add disabled - handle membership overlap

* Handle permissions + perf improvments

* use input uid

* Remove Console.log

* Clean up

* Revert changes accidental

* Fix merge artifacts

* Remove dead code

* Remove code after return

* Update read permission check

* Revert avatar changes as fixed elsewhere

* Handle if user has not completed onboarding

* Disable button

* Update packages/lib/hasEditPermissionForUser.ts

* Correct Error throwing

* Update packages/features/timezone-buddy/components/AvailabilityEditSheet.tsx

* Fix type erro

* Add i18n

* Improve Spacing

* Update yarn.lock

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: GitStart-Cal.com <121884634+gitstart-calcom@users.noreply.github.com>
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
Co-authored-by: nicktrn <55853254+nicktrn@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Leo Giovanetti <hello@leog.me>
Co-authored-by: DexterStorey <36115192+DexterStorey@users.noreply.github.com>
Co-authored-by: tedspare <ted.spare@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Monto <138862352+montocoder@users.noreply.github.com>
Co-authored-by: mohammed gehad <mohammed.gehad.1998@gmail.com>
Co-authored-by: Monto <138862352+monto7926@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Abhijeet Singh <asingh9829@gmail.com>
Co-authored-by: Kamil B. Demirci <kamil.demirci@indyaner.ch>
Co-authored-by: Denzil Samuel <71846487+samueldenzil@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Sahil Padvi <71093044+Sahil25061999@users.noreply.github.com>
Co-authored-by: Patel Divyesh <pateldivyesh1323@gmail.com>
Co-authored-by: neo773 <62795688+neo773@users.noreply.github.com>
Co-authored-by: Mehul <mehulzr@gmail.com>
2023-09-14 09:45:13 +01:00
alannnc 605e744a58 fix: remove avatar form user select when loading insights (#11353) 2023-09-14 09:37:41 +02:00
alannnc aab0d6b18a fix: paypal save event type and payment (#11181)
* fix-paypal-save

* change type to use appId instead

* Remove duplicated code
2023-09-14 00:29:03 -07:00
WesleyandHariom Balhara dfde17111c test: verify embed helpers (#11318)
* test: add test cases to `window.getEmbedNamespace`

* test: add test cases when window.name doesn't have cal-embed=

* test: add test case to `getembedTheme` returning the theme from embedStore

* test: add test to `getEmbedTheme` returning the theme from query params

* Small refactor to reduce the time taken by tests and fix missing typings for embed functions on window

* Fix weird test failure

* Fix type import error caught by api.test.test

---------

Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-09-14 07:14:54 +00:00
Hariom Balhara 2591ad12df chore: Enable prettier on vitest files without causing test failures (#11190) 2023-09-14 08:58:08 +02:00
Kevin Crimiandalannnc 3a05ae6f74 feat: Add more metadata to Stripe transaction (#11221)
* Add booker info, event type title, and organizer info into Stripe metadata

* Add back bookingTitle in addition to eventTitle

* Remove .tool-versions

* Fix typo

---------

Co-authored-by: alannnc <alannnc@gmail.com>
2023-09-14 04:10:42 +00:00
efcfd7bb9b fix: when creating new user, set email handle as username (#11238)
* When creating new user, set email handle as username

* Accounting for external invited users

---------

Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-09-13 20:46:41 -03:00
Leo Giovanetti bce62829b7 fix: org shell and org user settings avatars + org owner username (#11342) 2023-09-13 18:04:36 +00:00
Carina WollendorferandCarinaWolli f320e486a2 fix issue with duplicate children event types (#11337)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-09-13 17:04:14 +00:00
MeenuyD 8c96e04b51 fix: insights upgrade screen has no title and subtitle for upgrade screen (#11328) 2023-09-13 15:41:53 +02:00
9eb3698ea5 fix: multiple organizer address bug (#11299)
* fix: multiple organizer address bug

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: add inPerson condition

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* fix: change options

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>

* Send _type along with the response to be able to determine what input was it. We can use that later

* Revert "Send _type along with the response to be able to determine what input was it. We can use that later"

This reverts commit c75ba57ad14b07d629b218d6e3eaede93b99ebaa.

* Update multiple organizer address test to verify the test fix

* Add a test to ensure that sending label would correctly add that label as location

---------

Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-09-13 04:19:01 +00:00
sean-brydonandPeer Richelsen 8ff07807f9 Fix overflow (#11320)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-12 21:46:18 +00:00
Crowdin Bot 9c7f655329 New Crowdin translations by Github Action 2023-09-12 21:29:30 +00:00
Alex van Andel 5c72fca816 Revert "fix: improve UX of team invite by copy link (#11009)"
This reverts commit 0150041496.
2023-09-12 22:26:22 +01:00
Alex van Andel aeafa3ef0a v3.2.10 2023-09-12 18:17:53 +01:00
Joe Au-YeungandAlex van Andel 3d4a3c7a93 fix: Connect selected calendar to credential (#11283)
release.yml / release (push) Canceled after 0s
* Reduce the unhandled promise

* Connect selected calendar to credential

* Write credential to selected calendar

* Type fix

* Handle catching promises in separate threads

* Only call to list calendars if there are no credentialIds

* Changed type of IntegrationCalendar from undef to null

* Adding missing property to getting started

* Also add calendars.tsx

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-09-12 18:09:05 +01:00
alannnc 1c1625d3fc fix: org admin delete other teams (#11247)
* fix org-admin delete other teams

* Fix delete from teams to delete from orgs endpoint
2023-09-12 16:19:17 +00:00
alannnc 75f9f045b8 fix: payments on round-robin events (#11248)
* Fix condition when no users are found for event type

* fix for types
2023-09-12 08:59:32 -07:00
Leo Giovanetti 86af383f6c feat: autolink org on provider signup (#11267)
* feat: autolink org on provider signup

* Adding env var in example

* slugifying inferred org username

* Updated org README

* Optional env var for autolinking added to readme

* Typo

* md syntax correction

* Verifying user when autolinked

* Also verifying users invited to org

* Applying feedback

* Scoping to Google for now

* Updating comment

* Updating readme with Google scoping
2023-09-12 15:17:34 +00:00
Keith WilliamsandAlex van Andel 84408025ed perf: pre-load booking data for all users (#11243)
* perf: pre-load booking data for all users

* Fixing property issues

* Fixes

* Removed unwanted console.log

* Made comment for intention of refactor more clear

* fix: types

* _count is optional

* Assign to const bookings

* Added mock for prisma booking

* Fixed unit tests

* Added lint ignore for prisma field

* Update bookingScenario.ts

* Fix linting

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-09-12 14:12:25 +01:00
Hariom Balhara 9fba8c548b fix: Prefill not working if firstAndLastName variant enabled in name field and name doesn't have any space (#11289) 2023-09-12 13:00:14 +02:00
sean-brydon 56f3647ec2 Fix max w (#11294) 2023-09-12 09:59:40 +00:00
GitStart-Cal.comandgitstart-calcom a5cb3ce573 feat: Create VerifyCodeDialog storybook file (#11286)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-09-12 00:09:13 +02:00
Udit Takkar 7581f4d641 fix: add inline color in og image (#11280) 2023-09-12 00:08:27 +02:00
Crowdin Bot a1d67b256e New Crowdin translations by Github Action 2023-09-11 18:41:56 +00:00
Joe Au-Yeung 75f9dad16e fix: Selected calendar unhandled promise when removing calendars (#11281) 2023-09-11 14:39:27 -04:00
sean-brydonandLeo Giovanetti 0a0d212373 fix: Handle removing user from org (#11227)
* Handle removing user from org

* Address no password or username being set

---------

Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-09-11 14:46:38 +00:00
b8794ba807 fix: Fixed team image not showing on event-types page (#11231)
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-11 11:37:42 +00:00
Ahsan AhmadandPeer Richelsen 9b8e4ed385 fix: README typo uppercase ID (#11254)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-11 13:19:13 +02:00
Somay Chauhan 997b5d5290 fix: "no teams" text not visibl in organization's public url (#11257) 2023-09-11 13:10:36 +02:00
Yash d7080b41cb fix: text-emphasis removed (#11228) 2023-09-11 13:05:03 +02:00
Ujwal Kumar 32754bd120 fix: add hardcoded strings to locales so they can be translated (#11266) 2023-09-11 13:00:38 +02:00
Meet Mota 13fd02d174 fix: smaller date overwrite when no date is selected (#11250) 2023-09-11 12:49:27 +02:00
Crowdin Bot d6cbac54e0 New Crowdin translations by Github Action 2023-09-11 10:36:13 +00:00
Udit Takkar 489ffdf49a fix: hide book a team member (#11271) 2023-09-11 10:33:30 +00:00
Hariom BalharaandJoe Au-Yeung 37b22977ee fix: Booking and Cancellation related text changes (#10744)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-09-10 17:00:51 +00:00
Crowdin Bot 848a040162 New Crowdin translations by Github Action 2023-09-08 21:31:37 +00:00
Leo Giovanetti 350d84a047 fix: showing profile settings of other teams (#11245)
* fix: showing profile settings of other teams

* Updating URL
2023-09-08 18:29:06 -03:00
Shubham SinghandPeer Richelsen 9c3cbee363 feat: preference to show/hide available seats count in events (#11109)
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-09-08 11:37:26 -04:00
Peer RichelsenandUdit Takkar 7e2ad3cea9 fix: inverted location logo (#11233)
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-09-08 15:59:05 +01:00
Alex van Andel 4ef52aa2c6 perf: Move query to get just the user email to the main get query (#11230) 2023-09-08 08:39:29 -03:00
Alex van Andel 3132c64205 perf: Improve getAggregatedAvailability by reducing reliance on Day.js (#11224) 2023-09-08 07:19:27 -03:00
Crowdin Bot f25f8e0909 New Crowdin translations by Github Action 2023-09-08 08:05:45 +00:00
Leo Giovanetti d8961f8eb9 fix: subteam invitation without teamId associated (#11222) 2023-09-08 09:02:12 +01:00
Crowdin Bot 9ff7cf650b New Crowdin translations by Github Action 2023-09-08 00:23:57 +00:00
ba4e717b59 chore: unify org data access (#11158)
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
2023-09-07 21:21:04 -03:00
Udit Takkar f326a9a620 fix: eventName variables (#10924) 2023-09-07 16:52:07 -04:00
303 changed files with 6722 additions and 1451 deletions
+32
View File
@@ -213,6 +213,10 @@ NEXT_PUBLIC_MINUTES_TO_BOOK=5 # Minutes
# use organizations
ORGANIZATIONS_ENABLED=
# This variable should only be set to 1 or true if you want to autolink external provider sing-ups with
# existing organizations based on email domain address
ORGANIZATIONS_AUTOLINK=
# Vercel Config to create subdomains for organizations
# Get it from https://vercel.com/<TEAM_OR_USER_NAME>/<PROJECT_SLUG>/settings
PROJECT_ID_VERCEL=
@@ -225,3 +229,31 @@ AUTH_BEARER_TOKEN_VERCEL=
# Used for E2E tests on Apple Calendar
E2E_TEST_APPLE_CALENDAR_EMAIL=""
E2E_TEST_APPLE_CALENDAR_PASSWORD=""
# - APP CREDENTIAL SYNC ***********************************************************************************
# Used for self-hosters that are implementing Cal.com into their applications that already have certain integrations
# Under settings/admin/apps ensure that all app secrets are set the same as the parent application
# You can use: `openssl rand -base64 32` to generate one
CALCOM_WEBHOOK_SECRET=""
# This is the header name that will be used to verify the webhook secret. Should be in lowercase
CALCOM_WEBHOOK_HEADER_NAME="calcom-webhook-secret"
CALCOM_CREDENTIAL_SYNC_ENDPOINT=""
# Key should match on Cal.com and your application
# must be 32 bytes for AES256 encryption algorithm
# You can use: `openssl rand -base64 24` to generate one
CALCOM_APP_CREDENTIAL_ENCRYPTION_KEY=""
# - OIDC E2E TEST *******************************************************************************************
# Ensure this ADMIN EMAIL is present in the SAML_ADMINS list
E2E_TEST_SAML_ADMIN_EMAIL=
E2E_TEST_SAML_ADMIN_PASSWORD=
E2E_TEST_OIDC_CLIENT_ID=
E2E_TEST_OIDC_CLIENT_SECRET=
E2E_TEST_OIDC_PROVIDER_DOMAIN=
E2E_TEST_OIDC_USER_EMAIL=
E2E_TEST_OIDC_USER_PASSWORD=
# ***********************************************************************************************************
@@ -0,0 +1,33 @@
name: Cron - monthlyDigestEmail
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 on the 28th, 29th, 30th and 31st of every month (see https://crontab.guru)
- cron: "59 23 28-31 * *"
jobs:
cron-monthlyDigestEmail:
env:
APP_URL: ${{ secrets.APP_URL }}
CRON_API_KEY: ${{ secrets.CRON_API_KEY }}
runs-on: ubuntu-latest
steps:
- name: Check if today is the last day of the month
id: check-last-day
run: |
LAST_DAY=$(date -d tomorrow +%d)
if [ "$LAST_DAY" == "01" ]; then
echo "::set-output name=is_last_day::true"
else
echo "::set-output name=is_last_day::false"
fi
- name: cURL request
if: ${{ env.APP_URL && env.CRON_API_KEY && steps.check-last-day.outputs.is_last_day == 'true' }}
run: |
curl ${{ secrets.APP_URL }}/api/cron/monthlyDigestEmail \
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
token: ${{ secrets.GH_ACCESS_TOKEN }}
- name: crowdin action
uses: crowdin/github-action@1.5.1
uses: crowdin/github-action@v1.13.0
with:
upload_sources: true
upload_translations: true
+18
View File
@@ -0,0 +1,18 @@
name: Auto Comment Merge Conflicts
on: push
permissions:
pull-requests: write
jobs:
auto-comment-merge-conflicts:
runs-on: ubuntu-latest
steps:
- uses: codytseng/auto-comment-merge-conflicts@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
comment-body: "Hey there, there is a merge conflict, can you take a look?"
wait-ms: 3000
max-retries: 5
label-name: "🚨 merge conflict"
ignore-authors: dependabot,otherAuthor
-1
View File
@@ -7,7 +7,6 @@ public
*.lock
*.log
*.test.ts
.gitignore
.npmignore
+1
View File
@@ -135,3 +135,4 @@ If you get errors, be sure to fix them before committing.
- Be sure to [check the "Allow edits from maintainers" option](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork) while creating your PR.
- If your PR refers to or fixes an issue, be sure to add `refs #XXX` or `fixes #XXX` to the PR description. Replacing `XXX` with the respective issue number. See more about [Linking a pull request to an issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue).
- Be sure to fill the PR Template accordingly.
- Review [App Contribution Guidelines](./packages/app-store/CONTRIBUTING.md) when building integrations
+1 -1
View File
@@ -526,7 +526,7 @@ For example, `Cal.com (support@cal.com)`.
3. Copy Account SID to your `.env` file into the `TWILIO_SID` field
4. Copy Auth Token to your `.env` file into the `TWILIO_TOKEN` field
5. Copy your Twilio phone number to your `.env` file into the `TWILIO_PHONE_NUMBER` field
6. Add your own sender id to the `.env` file into the `NEXT_PUBLIC_SENDER_ID` field (fallback is Cal.com)
6. Add your own sender ID to the `.env` file into the `NEXT_PUBLIC_SENDER_ID` field (fallback is Cal.com)
7. Create a messaging service (Develop -> Messaging -> Services)
8. Choose any name for the messaging service
9. Click 'Add Senders'
+3 -3
View File
@@ -1,7 +1,7 @@
import { PrismaClient } from "@prisma/client";
import type { NextMiddleware } from "next-api-middleware";
import { CONSOLE_URL } from "@calcom/lib/constants";
import { customPrisma } from "@calcom/prisma";
const LOCAL_CONSOLE_URL = process.env.NEXT_PUBLIC_CONSOLE_URL || CONSOLE_URL;
@@ -12,7 +12,7 @@ export const customPrismaClient: NextMiddleware = async (req, res, next) => {
} = req;
// If no custom api Id is provided, attach to request the regular cal.com prisma client.
if (!key) {
req.prisma = new PrismaClient();
req.prisma = customPrisma();
await next();
return;
}
@@ -26,7 +26,7 @@ export const customPrismaClient: NextMiddleware = async (req, res, next) => {
res.status(400).json({ error: "no databaseUrl set up at your instance yet" });
return;
}
req.prisma = new PrismaClient({ datasources: { db: { url: databaseUrl } } });
req.prisma = customPrisma({ datasources: { db: { url: databaseUrl } } });
/* @note:
In order to skip verifyApiKey for customPrisma requests,
we pass isAdmin true, and userId 0, if we detect them later,
+1
View File
@@ -58,6 +58,7 @@ export const schemaBookingReadPublic = Booking.extend({
})
)
.optional(),
responses: z.record(z.any()),
}).pick({
id: true,
userId: true,
+3
View File
@@ -70,6 +70,7 @@ const schemaEventTypeCreateParams = z
recurringEvent: recurringEventInputSchema.optional(),
seatsPerTimeSlot: z.number().optional(),
seatsShowAttendees: z.boolean().optional(),
seatsShowAvailabilityCount: z.boolean().optional(),
bookingFields: eventTypeBookingFields.optional(),
scheduleId: z.number().optional(),
})
@@ -89,6 +90,7 @@ const schemaEventTypeEditParams = z
length: z.number().int().optional(),
seatsPerTimeSlot: z.number().optional(),
seatsShowAttendees: z.boolean().optional(),
seatsShowAvailabilityCount: z.boolean().optional(),
bookingFields: eventTypeBookingFields.optional(),
scheduleId: z.number().optional(),
})
@@ -129,6 +131,7 @@ export const schemaEventTypeReadPublic = EventType.pick({
metadata: true,
seatsPerTimeSlot: true,
seatsShowAttendees: true,
seatsShowAvailabilityCount: true,
bookingFields: true,
bookingLimits: true,
durationLimits: true,
+1 -1
View File
@@ -1,7 +1,7 @@
import type { Session } from "next-auth";
import type { NextApiRequest as BaseNextApiRequest } from "next/types";
import type { PrismaClient } from "@calcom/prisma/client";
import type { PrismaClient } from "@calcom/prisma";
export type * from "next/types";
+3
View File
@@ -94,6 +94,9 @@ import { defaultResponder } from "@calcom/lib/server";
* seatsShowAttendees:
* type: boolean
* description: 'Share Attendee information in seats'
* seatsShowAvailabilityCount:
* type: boolean
* description: 'Show the number of available seats'
* smsReminderNumber:
* type: number
* description: 'SMS reminder number'
@@ -146,6 +146,9 @@ import checkTeamEventEditPermission from "../_utils/checkTeamEventEditPermission
* seatsShowAttendees:
* type: boolean
* description: 'Share Attendee information in seats'
* seatsShowAvailabilityCount:
* type: boolean
* description: 'Show the number of available seats'
* locations:
* type: array
* description: A list of all available locations for the event type
+1 -1
View File
@@ -2,7 +2,7 @@ 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 type { PrismaClient } from "@calcom/prisma";
import { schemaEventTypeReadPublic } from "~/lib/validations/event-type";
import { schemaQuerySingleOrMultipleUserIds } from "~/lib/validations/shared/queryUserId";
+1 -2
View File
@@ -1,2 +1 @@
public/embed
*.test.ts
public/embed
@@ -116,6 +116,7 @@ function ConnectedCalendarsList(props: Props) {
type={item.integration.type}
isChecked={cal.isSelected}
destination={cal.externalId === props.destinationCalendarId}
credentialId={cal.credentialId}
/>
))}
</ul>
@@ -377,6 +377,14 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
defaultChecked={!!eventType.seatsShowAttendees}
/>
</div>
<div className="mt-2">
<CheckboxField
description={t("show_available_seats_count")}
disabled={seatsLocked.disabled}
onChange={(e) => formMethods.setValue("seatsShowAvailabilityCount", e.target.checked)}
defaultChecked={!!eventType.seatsShowAvailabilityCount}
/>
</div>
</div>
)}
/>
@@ -53,6 +53,7 @@ const ConnectedCalendarItem = (prop: IConnectedCalendarItem) => {
<ul className="p-4">
{calendars?.map((calendar, i) => (
<CalendarSwitch
credentialId={calendar.credentialId}
key={calendar.externalId}
externalId={calendar.externalId}
title={calendar.name || "Nameless Calendar"}
@@ -173,7 +173,6 @@ const EnableTwoFactorModal = ({ onEnable, onCancel, open, onOpenChange }: Enable
<div className="mb-4">
<PasswordField
label={t("password")}
type="password"
name="password"
id="password"
required
+1 -1
View File
@@ -9,7 +9,7 @@ import { Avatar } from "@calcom/ui";
type TeamType = Omit<NonNullable<TeamWithMembers>, "inviteToken">;
type MembersType = TeamType["members"];
type MemberType = MembersType[number] & { safeBio: string | null };
type MemberType = Pick<MembersType[number], "id" | "name" | "bio" | "username"> & { safeBio: string | null };
type TeamTypeWithSafeHtml = Omit<TeamType, "members" | "inviteToken"> & { members: MemberType[] };
const Member = ({ member, teamName }: { member: MemberType; teamName: string | null }) => {
+1 -14
View File
@@ -14,7 +14,6 @@ import DynamicHelpscoutProvider from "@calcom/features/ee/support/lib/helpscout/
import DynamicIntercomProvider from "@calcom/features/ee/support/lib/intercom/providerDynamic";
import { FeatureProvider } from "@calcom/features/flags/context/provider";
import { useFlags } from "@calcom/features/flags/hooks";
import { trpc } from "@calcom/trpc/react";
import { MetaProvider } from "@calcom/ui";
import useIsBookingPage from "@lib/hooks/useIsBookingPage";
@@ -222,19 +221,7 @@ function FeatureFlagsProvider({ children }: { children: React.ReactNode }) {
function useOrgBrandingValues() {
const session = useSession();
const res = trpc.viewer.organizations.getBrand.useQuery(undefined, {
// Only fetch if we have a session to avoid flooding logs with errors
enabled: session.status === "authenticated",
});
if (res.status === "loading") {
return undefined;
}
if (res.status === "error") return null;
return res.data;
return session?.data?.user.org;
}
function OrgBrandProvider({ children }: { children: React.ReactNode }) {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@calcom/web",
"version": "3.2.9",
"version": "3.3.2",
"private": true,
"scripts": {
"analyze": "ANALYZE=true next build",
+1 -1
View File
@@ -154,7 +154,7 @@ export function UserPage(props: InferGetServerSidePropsType<typeof getServerSide
<div className="flex flex-wrap items-center">
<h2 className=" text-default pr-2 text-sm font-semibold">{type.title}</h2>
</div>
<EventTypeDescription eventType={type} isPublic={true} />
<EventTypeDescription eventType={type} isPublic={true} shortenDescription />
</Link>
</div>
</div>
+23 -21
View File
@@ -10,6 +10,7 @@ import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { validateUsernameInTeam, validateUsername } from "@calcom/lib/validateUsername";
import prisma from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
import { MembershipRole } from "@calcom/prisma/enums";
import { signupSchema } from "@calcom/prisma/zod-utils";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -89,6 +90,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
}
}
// Identify the org id in an org context signup, either the invited team is an org
// or has a parentId, otherwise parentId will be null, making orgId null
const orgId = teamMetadata?.isOrganization ? team.id : team.parentId;
const user = await prisma.user.upsert({
where: { email: userEmail },
update: {
@@ -96,49 +101,46 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
password: hashedPassword,
emailVerified: new Date(Date.now()),
identityProvider: IdentityProvider.CAL,
organizationId: orgId,
},
create: {
username,
email: userEmail,
password: hashedPassword,
identityProvider: IdentityProvider.CAL,
organizationId: orgId,
},
});
if (teamMetadata?.isOrganization) {
await prisma.user.update({
where: {
id: user.id,
},
data: {
organizationId: team.id,
},
});
}
const membership = await prisma.membership.update({
const membership = await prisma.membership.upsert({
where: {
userId_teamId: { userId: user.id, teamId: team.id },
},
data: {
update: {
accepted: true,
},
create: {
userId: user.id,
teamId: team.id,
accepted: true,
role: MembershipRole.MEMBER,
},
});
closeComUpsertTeamUser(team, user, membership.role);
// Accept any child team invites for orgs.
// Accept any child team invites for orgs and create a membership for the org itself
if (team.parentId) {
// Join ORG
await prisma.user.update({
where: {
id: user.id,
},
// Create a membership for the organization itself
await prisma.membership.create({
data: {
organizationId: team.parentId,
userId: user.id,
teamId: team.parentId,
accepted: true,
role: MembershipRole.MEMBER,
},
});
/** We do a membership update twice so we can join the ORG invite if the user is invited to a team witin a ORG. */
// We do a membership update twice so we can join the ORG invite if the user is invited to a team witin a ORG
await prisma.membership.updateMany({
where: {
userId: user.id,
+7 -2
View File
@@ -5,10 +5,12 @@ import { getCalendarCredentials, getConnectedCalendars } from "@calcom/core/Cale
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import notEmpty from "@calcom/lib/notEmpty";
import prisma from "@calcom/prisma";
import { credentialForCalendarServiceSelect } from "@calcom/prisma/selects/credential";
const selectedCalendarSelectSchema = z.object({
integration: z.string(),
externalId: z.string(),
credentialId: z.number().optional(),
});
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
@@ -24,7 +26,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
id: session.user.id,
},
select: {
credentials: true,
credentials: {
select: credentialForCalendarServiceSelect,
},
timeZone: true,
id: true,
selectedCalendars: true,
@@ -37,7 +41,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
const { credentials, ...user } = userWithCredentials;
if (req.method === "POST") {
const { integration, externalId } = selectedCalendarSelectSchema.parse(req.body);
const { integration, externalId, credentialId } = selectedCalendarSelectSchema.parse(req.body);
await prisma.selectedCalendar.upsert({
where: {
userId_integration_externalId: {
@@ -50,6 +54,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
userId: user.id,
integration,
externalId,
credentialId,
},
// already exists
update: {},
@@ -0,0 +1,16 @@
import type { NextApiRequest, NextApiResponse } from "next";
import prisma from "@calcom/prisma";
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const deleted = await prisma.calendarCache.deleteMany({
where: {
// Delete all cache entries that expired before now
expiresAt: {
lte: new Date(Date.now()),
},
},
});
res.json({ ok: true, count: deleted.count });
}
@@ -0,0 +1,340 @@
import type { Prisma } from "@prisma/client";
import type { NextApiRequest, NextApiResponse } from "next";
import { z } from "zod";
import dayjs from "@calcom/dayjs";
import { sendMonthlyDigestEmails } from "@calcom/emails/email-manager";
import { EventsInsights } from "@calcom/features/insights/server/events";
import { getTranslation } from "@calcom/lib/server";
import prisma from "@calcom/prisma";
const querySchema = z.object({
page: z.coerce.number().min(0).optional().default(0),
});
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const apiKey = req.headers.authorization || req.query.apiKey;
if (process.env.CRON_API_KEY !== apiKey) {
res.status(401).json({ message: "Not authenticated" });
return;
}
if (req.method !== "POST") {
res.status(405).json({ message: "Invalid method" });
return;
}
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
const pageSize = 90; // Adjust this value based on the total number of teams and the available processing time
let { page: pageNumber } = querySchema.parse(req.query);
const firstDateOfMonth = new Date();
firstDateOfMonth.setDate(1);
while (true) {
const teams = await prisma.team.findMany({
where: {
slug: {
not: null,
},
createdAt: {
// created before or on the first day of this month
lte: firstDateOfMonth,
},
},
select: {
id: true,
createdAt: true,
members: true,
name: true,
},
skip: pageNumber * pageSize,
take: pageSize,
});
if (teams.length === 0) {
break;
}
for (const team of teams) {
const EventData: {
Created: number;
Completed: number;
Rescheduled: number;
Cancelled: number;
mostBookedEvents: {
eventTypeId?: number | null;
eventTypeName?: string | null;
count?: number | null;
}[];
membersWithMostBookings: {
userId: number | null;
user: {
id: number;
name: string | null;
email: string;
avatar: string | null;
username: string | null;
};
count: number;
}[];
admin: { email: string; name: string };
team: {
name: string;
id: number;
};
} = {
Created: 0,
Completed: 0,
Rescheduled: 0,
Cancelled: 0,
mostBookedEvents: [],
membersWithMostBookings: [],
admin: { email: "", name: "" },
team: { name: team.name, id: team.id },
};
const userIdsFromTeams = team.members.map((u) => u.userId);
// Booking Events
const whereConditional: Prisma.BookingTimeStatusWhereInput = {
OR: [
{
teamId: team.id,
},
{
userId: {
in: userIdsFromTeams,
},
teamId: null,
},
],
};
const promisesResult = await Promise.all([
EventsInsights.getCreatedEventsInTimeRange(
{
start: dayjs(firstDateOfMonth),
end: dayjs(new Date()),
},
whereConditional
),
EventsInsights.getCompletedEventsInTimeRange(
{
start: dayjs(firstDateOfMonth),
end: dayjs(new Date()),
},
whereConditional
),
EventsInsights.getRescheduledEventsInTimeRange(
{
start: dayjs(firstDateOfMonth),
end: dayjs(new Date()),
},
whereConditional
),
EventsInsights.getCancelledEventsInTimeRange(
{
start: dayjs(firstDateOfMonth),
end: dayjs(new Date()),
},
whereConditional
),
]);
EventData["Created"] = promisesResult[0];
EventData["Completed"] = promisesResult[1];
EventData["Rescheduled"] = promisesResult[2];
EventData["Cancelled"] = promisesResult[3];
// Most Booked Event Type
const bookingWhere: Prisma.BookingTimeStatusWhereInput = {
createdAt: {
gte: dayjs(firstDateOfMonth).startOf("day").toDate(),
lte: dayjs(new Date()).endOf("day").toDate(),
},
OR: [
{
teamId: team.id,
},
{
userId: {
in: userIdsFromTeams,
},
teamId: null,
},
],
};
const bookingsFromSelected = await prisma.bookingTimeStatus.groupBy({
by: ["eventTypeId"],
where: bookingWhere,
_count: {
id: true,
},
orderBy: {
_count: {
id: "desc",
},
},
take: 10,
});
const eventTypeIds = bookingsFromSelected
.filter((booking) => typeof booking.eventTypeId === "number")
.map((booking) => booking.eventTypeId);
const eventTypeWhereConditional: Prisma.EventTypeWhereInput = {
id: {
in: eventTypeIds as number[],
},
};
const eventTypesFrom = await prisma.eventType.findMany({
select: {
id: true,
title: true,
teamId: true,
userId: true,
slug: true,
users: {
select: {
username: true,
},
},
team: {
select: {
slug: true,
},
},
},
where: eventTypeWhereConditional,
});
const eventTypeHashMap: Map<
number,
Prisma.EventTypeGetPayload<{
select: {
id: true;
title: true;
teamId: true;
userId: true;
slug: true;
users: {
select: {
username: true;
};
};
team: {
select: {
slug: true;
};
};
};
}>
> = new Map();
eventTypesFrom.forEach((eventType) => {
eventTypeHashMap.set(eventType.id, eventType);
});
EventData["mostBookedEvents"] = bookingsFromSelected.map((booking) => {
const eventTypeSelected = eventTypeHashMap.get(booking.eventTypeId ?? 0);
if (!eventTypeSelected) {
return {};
}
let eventSlug = "";
if (eventTypeSelected.userId) {
eventSlug = `${eventTypeSelected?.users[0]?.username}/${eventTypeSelected?.slug}`;
}
if (eventTypeSelected?.team && eventTypeSelected?.team?.slug) {
eventSlug = `${eventTypeSelected.team.slug}/${eventTypeSelected.slug}`;
}
return {
eventTypeId: booking.eventTypeId,
eventTypeName: eventSlug,
count: booking._count.id,
};
});
// Most booked members
const bookingsFromTeam = await prisma.bookingTimeStatus.groupBy({
by: ["userId"],
where: bookingWhere,
_count: {
id: true,
},
orderBy: {
_count: {
id: "desc",
},
},
take: 10,
});
const userIds = bookingsFromTeam
.filter((booking) => typeof booking.userId === "number")
.map((booking) => booking.userId);
if (userIds.length === 0) {
EventData["membersWithMostBookings"] = [];
} else {
const teamUsers = await prisma.user.findMany({
where: {
id: {
in: userIds as number[],
},
},
select: { id: true, name: true, email: true, avatar: true, username: true },
});
const userHashMap = new Map();
teamUsers.forEach((user) => {
userHashMap.set(user.id, user);
});
EventData["membersWithMostBookings"] = bookingsFromTeam.map((booking) => {
return {
userId: booking.userId,
user: userHashMap.get(booking.userId),
count: booking._count.id,
};
});
}
// Send mail to all Owners and Admins
const mailReceivers = team?.members?.filter(
(member) => member.role === "OWNER" || member.role === "ADMIN"
);
const mailsToSend = mailReceivers.map(async (receiver) => {
const owner = await prisma.user.findUnique({
where: {
id: receiver?.userId,
},
});
if (owner) {
const t = await getTranslation(owner?.locale ?? "en", "common");
// Only send email if user has allowed to receive monthly digest emails
if (owner.receiveMonthlyDigestEmail) {
await sendMonthlyDigestEmails({
...EventData,
admin: { email: owner?.email ?? "", name: owner?.name ?? "" },
language: t,
});
}
}
});
await Promise.all(mailsToSend);
await delay(100); // Adjust the delay as needed to avoid rate limiting
}
pageNumber++;
}
res.json({ ok: true });
}
+43 -7
View File
@@ -13,14 +13,50 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
res.setHeader("Content-Type", "text/html");
res.setHeader("Cache-Control", "no-cache, no-store, private, must-revalidate");
res.write(
renderEmail("VerifyAccountEmail", {
renderEmail("MonthlyDigestEmail", {
language: t,
user: {
name: "Pro Example",
email: "pro@example.com",
},
verificationEmailLink:
"http://localhost:3000/api/auth/verify-email?token=b91af0eee5a9a24a8d83a3d3d6a58c1606496e94ced589441649273c66100f5b",
Created: 12,
Completed: 13,
Rescheduled: 14,
Cancelled: 16,
mostBookedEvents: [
{
eventTypeId: 3,
eventTypeName: "Test1",
count: 3,
},
{
eventTypeId: 4,
eventTypeName: "Test2",
count: 5,
},
],
membersWithMostBookings: [
{
userId: 4,
user: {
id: 4,
name: "User1 name",
email: "email.com",
avatar: "none",
username: "User1",
},
count: 4,
},
{
userId: 6,
user: {
id: 6,
name: "User2 name",
email: "email2.com",
avatar: "none",
username: "User2",
},
count: 8,
},
],
admin: { email: "admin.com", name: "admin" },
team: { name: "Team1", id: 4 },
})
);
res.end();
@@ -0,0 +1,93 @@
import type { NextApiRequest, NextApiResponse } from "next";
import z from "zod";
import { appStoreMetadata } from "@calcom/app-store/appStoreMetaData";
import { APP_CREDENTIAL_SHARING_ENABLED } from "@calcom/lib/constants";
import { symmetricDecrypt } from "@calcom/lib/crypto";
import prisma from "@calcom/prisma";
const appCredentialWebhookRequestBodySchema = z.object({
// UserId of the cal.com user
userId: z.number().int(),
appSlug: z.string(),
// Keys should be AES256 encrypted with the CALCOM_APP_CREDENTIAL_ENCRYPTION_KEY
keys: z.string(),
});
/** */
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
// Check that credential sharing is enabled
if (!APP_CREDENTIAL_SHARING_ENABLED) {
return res.status(403).json({ message: "Credential sharing is not enabled" });
}
// Check that the webhook secret matches
if (
req.headers[process.env.CALCOM_WEBHOOK_HEADER_NAME || "calcom-webhook-secret"] !==
process.env.CALCOM_WEBHOOK_SECRET
) {
return res.status(403).json({ message: "Invalid webhook secret" });
}
const reqBody = appCredentialWebhookRequestBodySchema.parse(req.body);
// Check that the user exists
const user = await prisma.user.findUnique({ where: { id: reqBody.userId } });
if (!user) {
return res.status(404).json({ message: "User not found" });
}
const app = await prisma.app.findUnique({
where: { slug: reqBody.appSlug },
select: { slug: true },
});
if (!app) {
return res.status(404).json({ message: "App not found" });
}
// Search for the app's slug and type
const appMetadata = appStoreMetadata[app.slug as keyof typeof appStoreMetadata];
if (!appMetadata) {
return res.status(404).json({ message: "App not found. Ensure that you have the correct app slug" });
}
// Decrypt the keys
const keys = JSON.parse(
symmetricDecrypt(reqBody.keys, process.env.CALCOM_APP_CREDENTIAL_ENCRYPTION_KEY || "")
);
// Can't use prisma upsert as we don't know the id of the credential
const appCredential = await prisma.credential.findFirst({
where: {
userId: reqBody.userId,
appId: appMetadata.slug,
},
select: {
id: true,
},
});
if (appCredential) {
await prisma.credential.update({
where: {
id: appCredential.id,
},
data: {
key: keys,
},
});
return res.status(200).json({ message: `Credentials updated for userId: ${reqBody.userId}` });
} else {
await prisma.credential.create({
data: {
key: keys,
userId: reqBody.userId,
appId: appMetadata.slug,
type: appMetadata.type,
},
});
return res.status(200).json({ message: `Credentials created for userId: ${reqBody.userId}` });
}
}
+1 -8
View File
@@ -52,8 +52,6 @@ export default function Login({
totpEmail,
}: inferSSRProps<typeof _getServerSideProps> & WithNonceProps) {
const searchParams = useSearchParams();
const isTeamInvite = searchParams.get("teamInvite");
const { t } = useLocale();
const router = useRouter();
const formSchema = z
@@ -97,9 +95,7 @@ export default function Login({
callbackUrl = safeCallbackUrl || "";
const LoginFooter = (
<a
href={callbackUrl !== "" ? `${WEBSITE_URL}/signup?callbackUrl=${callbackUrl}` : `${WEBSITE_URL}/signup`}
className="text-brand-500 font-medium">
<a href={`${WEBSITE_URL}/signup`} className="text-brand-500 font-medium">
{t("dont_have_an_account")}
</a>
);
@@ -188,9 +184,6 @@ export default function Login({
? LoginFooter
: null
}>
{isTeamInvite && (
<Alert severity="info" message={t("signin_or_signup_to_accept_invite")} className="mb-4 mt-4" />
)}
<FormProvider {...methods}>
<form onSubmit={methods.handleSubmit(onSubmit)} noValidate data-testid="login-form">
<div>
+3 -8
View File
@@ -7,13 +7,8 @@ import { getPremiumMonthlyPlanPriceId } from "@calcom/app-store/stripepayment/li
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { orgDomainConfig } from "@calcom/features/ee/organizations/lib/orgDomains";
import stripe from "@calcom/features/ee/payments/server/stripe";
import {
hostedCal,
isSAMLLoginEnabled,
samlProductID,
samlTenantID,
samlTenantProduct,
} from "@calcom/features/ee/sso/lib/saml";
import { hostedCal, isSAMLLoginEnabled, samlProductID, samlTenantID } from "@calcom/features/ee/sso/lib/saml";
import { ssoTenantProduct } from "@calcom/features/ee/sso/lib/sso";
import { checkUsername } from "@calcom/lib/server/checkUsername";
import prisma from "@calcom/prisma";
@@ -111,7 +106,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
error = "Email not provided";
} else {
try {
const ret = await samlTenantProduct(prisma, emailParam);
const ret = await ssoTenantProduct(prisma, emailParam);
tenant = ret.tenant;
product = ret.product;
} catch (e) {
+3 -1
View File
@@ -461,7 +461,7 @@ export default function Success(props: SuccessProps) {
{locationToDisplay && !isCancelled && (
<>
<div className="mt-3 font-medium">{t("where")}</div>
<div className="col-span-2 mt-3">
<div className="col-span-2 mt-3" data-testid="where">
{locationToDisplay.startsWith("http") ? (
<a
href={locationToDisplay}
@@ -917,6 +917,7 @@ const getEventTypesFromDB = async (id: number) => {
metadata: true,
seatsPerTimeSlot: true,
seatsShowAttendees: true,
seatsShowAvailabilityCount: true,
periodStartDate: true,
periodEndDate: true,
},
@@ -940,6 +941,7 @@ const handleSeatsEventTypeOnBooking = async (
eventType: {
seatsPerTimeSlot?: number | null;
seatsShowAttendees: boolean | null;
seatsShowAvailabilityCount: boolean | null;
[x: string | number | symbol]: unknown;
},
bookingInfo: Partial<
@@ -113,6 +113,7 @@ export type FormValues = {
periodDates: { startDate: Date; endDate: Date };
seatsPerTimeSlot: number | null;
seatsShowAttendees: boolean | null;
seatsShowAvailabilityCount: boolean | null;
seatsPerTimeSlotEnabled: boolean;
minimumBookingNotice: number;
minimumBookingNoticeInDurationType: number;
@@ -360,6 +361,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
afterBufferTime,
seatsPerTimeSlot,
seatsShowAttendees,
seatsShowAvailabilityCount,
bookingLimits,
durationLimits,
recurringEvent,
@@ -426,6 +428,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
durationLimits,
seatsPerTimeSlot,
seatsShowAttendees,
seatsShowAvailabilityCount,
metadata,
customInputs,
children,
@@ -460,6 +463,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
afterBufferTime,
seatsPerTimeSlot,
seatsShowAttendees,
seatsShowAvailabilityCount,
bookingLimits,
durationLimits,
recurringEvent,
@@ -516,6 +520,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
durationLimits,
seatsPerTimeSlot,
seatsShowAttendees,
seatsShowAvailabilityCount,
metadata,
customInputs,
});
+4 -2
View File
@@ -715,14 +715,16 @@ const EventTypeListHeading = ({
},
});
const bookerUrl = useBookerUrl();
return (
<div className="mb-4 flex items-center space-x-2">
<Avatar
alt={profile?.name || ""}
href={teamId ? `/settings/teams/${teamId}/profile` : "/settings/my-account/profile"}
imageSrc={
`${orgBranding?.fullDomain ?? WEBAPP_URL}${teamId ? "/team" : ""}/${profile.slug}/avatar.png` ||
undefined
orgBranding?.fullDomain
? `${orgBranding.fullDomain}${teamId ? "/team" : ""}/${profile.slug}/avatar.png`
: profile.image
}
size="md"
className="mt-1 inline-flex justify-center"
+1 -18
View File
@@ -20,19 +20,6 @@ import { RefreshCcw, UserPlus, Users } from "@calcom/ui/components/icon";
import PageWrapper from "@components/PageWrapper";
const Heading = () => {
const { t } = useLocale();
return (
<div className="min-w-52 hidden md:block">
<h3 className="font-cal max-w-28 sm:max-w-72 md:max-w-80 text-emphasis truncate text-xl font-semibold tracking-wide xl:max-w-full">
{t("insights")}
</h3>
<p className="text-default mt-2 hidden text-sm md:block">{t("insights_subtitle")}</p>
</div>
);
};
export default function InsightsPage() {
const { t } = useLocale();
const { data: user } = trpc.viewer.me.useQuery();
@@ -57,7 +44,7 @@ export default function InsightsPage() {
return (
<div>
<ShellMain hideHeadingOnMobile>
<ShellMain heading="Insights" subtitle={t("insights_subtitle")}>
<UpgradeTip
title={t("make_informed_decisions")}
description={t("make_informed_decisions_description")}
@@ -79,10 +66,6 @@ export default function InsightsPage() {
<></>
) : (
<FiltersProvider>
<div className="ml-auto mt-0">
<Heading />
</div>
<Filters />
<div className="mb-4 space-y-6">
@@ -182,6 +182,7 @@ const CalendarsView = () => {
{item.calendars.map((cal) => (
<CalendarSwitch
key={cal.externalId}
credentialId={cal.credentialId}
externalId={cal.externalId}
title={cal.name || "Nameless calendar"}
name={cal.name || "Nameless calendar"}
@@ -107,6 +107,7 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
},
allowDynamicBooking: user.allowDynamicBooking ?? true,
allowSEOIndexing: user.allowSEOIndexing ?? true,
receiveMonthlyDigestEmail: user.receiveMonthlyDigestEmail ?? true,
},
});
const {
@@ -235,6 +236,23 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
/>
</div>
<div className="mt-8">
<Controller
name="receiveMonthlyDigestEmail"
control={formMethods.control}
render={() => (
<SettingsToggle
title={t("monthly_digest_email")}
description={t("monthly_digest_email_for_teams")}
checked={formMethods.getValues("receiveMonthlyDigestEmail")}
onCheckedChange={(checked) => {
formMethods.setValue("receiveMonthlyDigestEmail", checked, { shouldDirty: true });
}}
/>
)}
/>
</div>
<Button
loading={mutation.isLoading}
disabled={isDisabled}
+64 -32
View File
@@ -13,7 +13,6 @@ import { isSAMLLoginEnabled } from "@calcom/features/ee/sso/lib/saml";
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 { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import slugify from "@calcom/lib/slugify";
import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
@@ -35,24 +34,25 @@ type FormValues = z.infer<typeof signupSchema>;
type SignupProps = inferSSRProps<typeof getServerSideProps>;
const getSafeCallbackUrl = (url: string | null) => {
if (!url) return null;
const checkValidEmail = (email: string) => z.string().email().safeParse(email).success;
let callbackUrl = url;
const getOrgUsernameFromEmail = (email: string, autoAcceptEmailDomain: string) => {
const [emailUser, emailDomain] = email.split("@");
const username =
emailDomain === autoAcceptEmailDomain
? slugify(emailUser)
: slugify(`${emailUser}-${emailDomain.split(".")[0]}`);
if (/"\//.test(callbackUrl)) callbackUrl = callbackUrl.substring(1);
// If not absolute URL, make it absolute
if (!/^https?:\/\//.test(callbackUrl)) {
callbackUrl = `${WEBAPP_URL}/${callbackUrl}`;
}
const safeCallbackUrl = getSafeRedirectUrl(callbackUrl);
return safeCallbackUrl;
return username;
};
export default function Signup({ prepopulateFormValues, token, orgSlug }: SignupProps) {
function addOrUpdateQueryParam(url: string, key: string, value: string) {
const separator = url.includes("?") ? "&" : "?";
const param = `${key}=${encodeURIComponent(value)}`;
return `${url}${separator}${param}`;
}
export default function Signup({ prepopulateFormValues, token, orgSlug, orgAutoAcceptEmail }: SignupProps) {
const searchParams = useSearchParams();
const telemetry = useTelemetry();
const { t, i18n } = useLocale();
@@ -73,7 +73,8 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
throw new Error(err.message);
}
};
const callbackUrl = getSafeCallbackUrl(searchParams.get("callbackUrl"));
const isOrgInviteByLink = orgSlug && !prepopulateFormValues?.username;
const signUp: SubmitHandler<FormValues> = async (data) => {
await fetch("/api/auth/signup", {
@@ -91,10 +92,17 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
.then(async () => {
telemetry.event(telemetryEventTypes.signup, collectPageParameters());
const verifyOrGettingStarted = flags["email-verification"] ? "auth/verify-email" : "getting-started";
const callBackUrl = `${
searchParams?.get("callbackUrl")
? isOrgInviteByLink
? `${WEBAPP_URL}/${searchParams.get("callbackUrl")}`
: addOrUpdateQueryParam(`${WEBAPP_URL}/${searchParams.get("callbackUrl")}`, "from", "signup")
: `${WEBAPP_URL}/${verifyOrGettingStarted}?from=signup`
}`;
await signIn<"credentials">("credentials", {
...data,
callbackUrl: `${callbackUrl ? callbackUrl : `${WEBAPP_URL}/${verifyOrGettingStarted}`}?from=signup`,
callbackUrl: callBackUrl,
});
})
.catch((err) => {
@@ -134,21 +142,31 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
if (methods.formState?.errors?.apiError) {
methods.clearErrors("apiError");
}
if (methods.getValues().username === undefined && isOrgInviteByLink && orgAutoAcceptEmail) {
methods.setValue(
"username",
getOrgUsernameFromEmail(methods.getValues().email, orgAutoAcceptEmail)
);
}
methods.handleSubmit(signUp)(event);
}}
className="bg-default space-y-6">
{errors.apiError && <Alert severity="error" message={errors.apiError?.message} />}
{}
<div className="space-y-4">
<TextField
addOnLeading={
orgSlug
? `${getOrgFullDomain(orgSlug, { protocol: true })}/`
: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/`
}
{...register("username")}
disabled={!!orgSlug}
required
/>
{!isOrgInviteByLink && (
<TextField
addOnLeading={
orgSlug
? `${getOrgFullDomain(orgSlug, { protocol: true })}/`
: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/`
}
{...register("username")}
disabled={!!orgSlug}
required
/>
)}
<EmailField
{...register("email")}
disabled={prepopulateFormValues?.email}
@@ -173,7 +191,9 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
className="w-full justify-center"
onClick={() =>
signIn("Cal.com", {
callbackUrl: callbackUrl ? callbackUrl : `${WEBAPP_URL}/getting-started`,
callbackUrl: searchParams?.get("callbackUrl")
? `${WEBAPP_URL}/${searchParams.get("callbackUrl")}`
: `${WEBAPP_URL}/getting-started`,
})
}>
{t("login_instead")}
@@ -227,6 +247,7 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
parent: {
select: {
slug: true,
metadata: true,
},
},
slug: true,
@@ -292,15 +313,26 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
username = available ? username : suggestion || username;
}
const isValidEmail = checkValidEmail(verificationToken.identifier);
const isOrgInviteByLink = isOrganization && !isValidEmail;
const parentMetaDataForSubteam = tokenTeam?.parent?.metadata
? teamMetadataSchema.parse(tokenTeam.parent.metadata)
: null;
return {
props: {
...props,
token,
prepopulateFormValues: {
email: verificationToken.identifier,
username: slugify(username),
},
prepopulateFormValues: !isOrgInviteByLink
? {
email: verificationToken.identifier,
username: slugify(username),
}
: null,
orgSlug,
orgAutoAcceptEmail: isOrgInviteByLink
? tokenTeam?.metadata?.orgAutoAcceptEmail ?? parentMetaDataForSubteam?.orgAutoAcceptEmail ?? null
: null,
},
};
};
+11 -7
View File
@@ -153,11 +153,9 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio, isValidOrgDomain }
) : (
<div className="space-y-6" data-testid="event-types">
<div className="overflow-hidden rounded-sm border dark:border-gray-900">
<div className="text-muted dark:text-inverted p-8 text-center">
<h2 className="font-cal dark:text-inverted text-emphasis600 mb-2 text-3xl">
{" " + t("org_no_teams_yet")}
</h2>
<p className="mx-auto max-w-md">{t("org_no_teams_yet_description")}</p>
<div className="text-muted p-8 text-center">
<h2 className="font-cal text-emphasis mb-2 text-3xl">{" " + t("org_no_teams_yet")}</h2>
<p className="text-emphasis mx-auto max-w-md">{t("org_no_teams_yet_description")}</p>
</div>
</div>
</div>
@@ -212,7 +210,7 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio, isValidOrgDomain }
<EventTypes />
{/* Hide "Book a team member button when team is private or hideBookATeamMember is true" */}
{(!team.hideBookATeamMember || team.isPrivate) && (
{!team.hideBookATeamMember && !team.isPrivate && (
<div>
<div className="relative mt-12">
<div className="absolute inset-0 flex items-center" aria-hidden="true">
@@ -314,7 +312,13 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
const safeBio = markdownToSafeHTML(team.bio) || "";
const members = team.members.map((member) => {
return { ...member, safeBio: markdownToSafeHTML(member.bio || "") };
return {
name: member.name,
id: member.id,
bio: member.bio,
username: member.username,
safeBio: markdownToSafeHTML(member.bio || ""),
};
});
const markdownStrippedBio = stripMarkdown(team?.bio || "");
+3 -5
View File
@@ -5,7 +5,6 @@ import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { TeamsListing } from "@calcom/features/ee/teams/components";
import { ShellMain } from "@calcom/features/shell/Shell";
import { WEBAPP_URL } from "@calcom/lib/constants";
import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
import { Button } from "@calcom/ui";
@@ -44,15 +43,14 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
const ssr = await ssrInit(context);
await ssr.viewer.me.prefetch();
const session = await getServerSession({ req: context.req, res: context.res });
const token = context.query?.token;
const resolvedUrl = context.resolvedUrl;
const token = Array.isArray(context.query?.token) ? context.query.token[0] : context.query?.token;
const callbackUrl = token ? getSafeRedirectUrl(`${WEBAPP_URL}${resolvedUrl}`) : null;
const callbackUrl = token ? `/teams?token=${encodeURIComponent(token)}` : null;
if (!session) {
return {
redirect: {
destination: callbackUrl ? `/auth/login?callbackUrl=${callbackUrl}&teamInvite=true` : "/auth/login",
destination: callbackUrl ? `/auth/login?callbackUrl=${callbackUrl}` : "/auth/login",
permanent: false,
},
props: {},
+15 -7
View File
@@ -142,17 +142,25 @@ test.describe("Event Types tests", () => {
.first()
.getAttribute("href");
/**
* Verify first organizer address
*/
await page.goto(previewLink ?? "");
await selectFirstAvailableTimeSlotNextMonth(page);
for (const location of locationData) {
await page.locator(`span:has-text("${location}")`).click();
}
await page.locator(`span:has-text("${locationData[0]}")`).click();
await bookTimeSlot(page);
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
await expect(page.locator(`[data-testid="where"]`)).toHaveText(locationData[0]);
/**
* Verify second organizer address
*/
await page.goto(previewLink ?? "");
await selectFirstAvailableTimeSlotNextMonth(page);
await page.locator(`span:has-text("${locationData[1]}")`).click();
await bookTimeSlot(page);
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
await expect(page.locator(`[data-testid="where"]`)).toHaveText(locationData[1]);
});
test.describe("Different Locations Tests", () => {
+2 -2
View File
@@ -438,7 +438,7 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
type SupportedTestEventTypes = PrismaType.EventTypeCreateInput & {
_bookings?: PrismaType.BookingCreateInput[];
};
type CustomUserOptsKeys = "username" | "password" | "completedOnboarding" | "locale" | "name";
type CustomUserOptsKeys = "username" | "password" | "completedOnboarding" | "locale" | "name" | "email";
type CustomUserOpts = Partial<Pick<Prisma.User, CustomUserOptsKeys>> & {
timeZone?: TimeZoneEnum;
eventTypes?: SupportedTestEventTypes[];
@@ -457,7 +457,7 @@ const createUser = (workerInfo: WorkerInfo, opts?: CustomUserOpts | null): Prism
return {
username: uname,
name: opts?.name,
email: `${uname}@example.com`,
email: opts?.email ?? `${uname}@example.com`,
password: hashPassword(uname),
emailVerified: new Date(),
completedOnboarding: opts?.completedOnboarding ?? true,
+3 -2
View File
@@ -4,6 +4,7 @@ import { authenticator } from "otplib";
import { symmetricDecrypt } from "@calcom/lib/crypto";
import { totpAuthenticatorCheck } from "@calcom/lib/totp";
import { prisma } from "@calcom/prisma";
import { test } from "./lib/fixtures";
@@ -61,7 +62,7 @@ test.describe("2FA Tests", async () => {
await test.step("Login with 2FA enabled", async () => {
await user.login();
const userWith2FaSecret = await prisma?.user.findFirst({
const userWith2FaSecret = await prisma.user.findFirst({
where: {
id: user.id,
},
@@ -138,7 +139,7 @@ test.describe("2FA Tests", async () => {
await page.click(`[data-testid=two-factor-switch][data-state="checked"]`);
await page.fill('input[name="password"]', userPassword);
const userWith2FaSecret = await prisma?.user.findFirst({
const userWith2FaSecret = await prisma.user.findFirst({
where: {
id: user.id,
},
@@ -135,6 +135,43 @@ test.describe("Manage Booking Questions", () => {
});
});
});
await test.step("Verify that we can prefill name field with no lastname", async () => {
const searchParams = new URLSearchParams();
searchParams.append("name", "FirstName");
await doOnFreshPreviewWithSearchParams(searchParams, page, context, async (page) => {
await selectFirstAvailableTimeSlotNextMonth(page);
await expectSystemFieldsToBeThereOnBookingPage({
page,
isFirstAndLastNameVariant: true,
values: {
name: {
firstName: "FirstName",
lastName: "",
},
},
});
});
});
await test.step("Verify that we can prefill name field with firstName,lastName query params", async () => {
const searchParams = new URLSearchParams();
searchParams.append("firstName", "John");
searchParams.append("lastName", "Doe");
await doOnFreshPreviewWithSearchParams(searchParams, page, context, async (page) => {
await selectFirstAvailableTimeSlotNextMonth(page);
await expectSystemFieldsToBeThereOnBookingPage({
page,
isFirstAndLastNameVariant: true,
values: {
name: {
firstName: "John",
lastName: "Doe",
},
},
});
});
});
});
});
@@ -506,6 +543,27 @@ async function doOnFreshPreview(
return previewTabPage;
}
async function doOnFreshPreviewWithSearchParams(
searchParams: URLSearchParams,
page: Page,
context: PlaywrightTestArgs["context"],
callback: (page: Page) => Promise<void>,
persistTab = false
) {
const previewUrl = (await page.locator('[data-testid="preview-button"]').getAttribute("href")) || "";
const previewUrlObj = new URL(previewUrl);
searchParams.forEach((value, key) => {
previewUrlObj.searchParams.append(key, value);
});
const previewTabPage = await context.newPage();
await previewTabPage.goto(previewUrlObj.toString());
await callback(previewTabPage);
if (!persistTab) {
await previewTabPage.close();
}
return previewTabPage;
}
async function toggleQuestionAndSave({ name, page }: { name: string; page: Page }) {
await page.locator(`[data-testid="field-${name}"]`).locator('[data-testid="toggle-field"]').click();
await saveEventType(page);
+71
View File
@@ -0,0 +1,71 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { test } from "./lib/fixtures";
const SAML_DATABASE_URL = process.env.SAML_DATABASE_URL!;
const SAML_ADMINS = process.env.SAML_ADMINS!;
const SAML_ADMIN_EMAIL = process.env.E2E_TEST_SAML_ADMIN_EMAIL!;
const SAML_ADMIN_PASSWORD = process.env.E2E_TEST_SAML_ADMIN_PASSWORD!;
const OIDC_CLIENT_ID = process.env.E2E_TEST_OIDC_CLIENT_ID!;
const OIDC_CLIENT_SECRET = process.env.E2E_TEST_OIDC_CLIENT_SECRET!;
const OIDC_PROVIDER_DOMAIN = process.env.E2E_TEST_OIDC_PROVIDER_DOMAIN!;
const OIDC_USER_EMAIL = process.env.E2E_TEST_OIDC_USER_EMAIL!;
const OIDC_USER_PASSWORD = process.env.E2E_TEST_OIDC_USER_PASSWORD!;
const SHOULD_SKIP_TESTS =
!SAML_DATABASE_URL ||
!SAML_ADMINS ||
!SAML_ADMIN_EMAIL ||
!SAML_ADMIN_PASSWORD ||
!OIDC_CLIENT_ID ||
!OIDC_CLIENT_SECRET ||
!OIDC_PROVIDER_DOMAIN ||
!OIDC_USER_EMAIL ||
!OIDC_USER_PASSWORD;
test.afterEach(({ users }) => users.deleteAll());
// TODO: Cleanup the OIDC connection after the tests with fixtures
test.describe("OIDC", () => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(SHOULD_SKIP_TESTS, "Skipping due to missing the testing variables");
test("Setup with SAML admin and login", async ({ page, users }) => {
// Add the admin user provided in the environment variables to the db
const samlAdminUser = await users.create({ email: SAML_ADMIN_EMAIL, password: SAML_ADMIN_PASSWORD });
await samlAdminUser.apiLogin();
await test.step("Connect with OIDC Provider", async () => {
await page.goto("/settings/security/sso");
await page.click('[data-testid="sso-oidc-configure"]');
await page.fill('[data-testid="sso-oidc-client-id"]', OIDC_CLIENT_ID);
await page.fill('[data-testid="sso-oidc-client-secret"]', OIDC_CLIENT_SECRET);
await page.fill(
'[data-testid="sso-oidc-well-known-url"]',
`https://${OIDC_PROVIDER_DOMAIN}/.well-known/openid-configuration`
);
await page.click('[data-testid="sso-oidc-save"]');
await page.waitForSelector('[data-testid="toast-success"]');
});
// Logout the SAML Admin
await samlAdminUser.logout();
await test.step("Login using the OIDC provider", async () => {
// Login a user using the OIDC provider.
// The credentials are handled by the provider, so we don't need to create a user in the db.
await page.goto("/auth/login");
await page.click('[data-testid="saml"]');
// Redirected outide of the app, the user would be redirected to the OIDC provider.
await page.waitForURL(/https:\/\/[^/]+\/oauth2\/v1\/authorize\?.*/);
await page.getByRole("textbox", { name: "Username" }).fill(OIDC_USER_EMAIL);
await page.getByRole("textbox", { name: "Password" }).fill(OIDC_USER_PASSWORD);
await page.getByRole("button", { name: "Sign in" }).click();
// The user is redirected back to the app.
await page.waitForURL("getting-started", { waitUntil: "load" });
});
// Logout the user.
await page.goto("/auth/logout");
await test.step("Disconnect OIDC Provider", async () => {
samlAdminUser.apiLogin();
await page.goto("/settings/security/sso", { waitUntil: "load" });
await page.getByTestId("delete-oidc-sso-connection").click();
await page.getByRole("button", { name: "Yes, delete OIDC configuration" }).click();
await page.waitForSelector('[data-testid="toast-success"]');
});
});
});
+6 -6
View File
@@ -9,7 +9,7 @@ test.describe.configure({ mode: "parallel" });
const title = (name: string) => `${name} is unpublished`;
const description = (entity: string) =>
`This ${entity} link is currently not available. Please contact the ${entity} owner or ask them to publish it.`;
const avatar = (slug: string) => `/team/${slug}/avatar.png`;
const avatar = (slug: string, entity = "team") => `/${entity}/${slug}/avatar.png`;
test.afterAll(async ({ users }) => {
await users.deleteAll();
@@ -52,7 +52,7 @@ test.describe("Unpublished", () => {
expect(await page.locator('[data-testid="empty-screen"]').count()).toBe(1);
expect(await page.locator(`h2:has-text("${title(org.name)}")`).count()).toBe(1);
expect(await page.locator(`div:text("${description("organization")}")`).count()).toBe(1);
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug));
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug, "org"));
});
test("Organization sub-team", async ({ users, page }) => {
@@ -70,7 +70,7 @@ test.describe("Unpublished", () => {
expect(await page.locator('[data-testid="empty-screen"]').count()).toBe(1);
expect(await page.locator(`h2:has-text("${title(org.name)}")`).count()).toBe(1);
expect(await page.locator(`div:text("${description("organization")}")`).count()).toBe(1);
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug));
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug, "org"));
});
test("Organization sub-team event-type", async ({ users, page }) => {
@@ -90,7 +90,7 @@ test.describe("Unpublished", () => {
expect(await page.locator('[data-testid="empty-screen"]').count()).toBe(1);
expect(await page.locator(`h2:has-text("${title(org.name)}")`).count()).toBe(1);
expect(await page.locator(`div:text("${description("organization")}")`).count()).toBe(1);
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug));
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug, "org"));
});
test("Organization user", async ({ users, page }) => {
@@ -102,7 +102,7 @@ test.describe("Unpublished", () => {
expect(await page.locator('[data-testid="empty-screen"]').count()).toBe(1);
expect(await page.locator(`h2:has-text("${title(org.name)}")`).count()).toBe(1);
expect(await page.locator(`div:text("${description("organization")}")`).count()).toBe(1);
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug));
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug, "org"));
});
test("Organization user event-type", async ({ users, page }) => {
@@ -115,6 +115,6 @@ test.describe("Unpublished", () => {
expect(await page.locator('[data-testid="empty-screen"]').count()).toBe(1);
expect(await page.locator(`h2:has-text("${title(org.name)}")`).count()).toBe(1);
expect(await page.locator(`div:text("${description("organization")}")`).count()).toBe(1);
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug));
await expect(page.locator(`img`)).toHaveAttribute("src", avatar(requestedSlug, "org"));
});
});
@@ -17,9 +17,15 @@
"verify_email_banner_body": "قم بتأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والتقويم",
"verify_email_email_header": "تأكيد عنوان بريدك الإلكتروني",
"verify_email_email_button": "تأكيد البريد الإلكتروني",
"copy_somewhere_safe": "احتفظ بمفتاح API هذا في مكانٍ آمن، لأنك لن تتمكن من الاطلاع عليه هنا ثانيةً.",
"verify_email_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني بالنقر فوق الزر أدناه.",
"verify_email_by_code_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني عبر استخدام الرمز أدناه.",
"verify_email_email_link_text": "إليك الرابط في حال لم تكن ترغب بالنقر فوق أي أزرار:",
"email_verification_code": "الرجاء إدخال رمز التأكيد",
"email_verification_code_placeholder": "الرجاء إدخال رمز التأكيد الذي أُرسل إلى بريدك الإلكتروني",
"incorrect_email_verification_code": "رمز التأكيد غير صحيح.",
"email_sent": "تم إرسال الرسالة الإلكترونية بنجاح",
"email_not_sent": "حدث خطأ أثناء إرسال الرسالة الإلكترونية",
"event_declined_subject": "تم الرفض: {{title}} في {{date}}",
"event_cancelled_subject": "تم الإلغاء: {{title}} في {{date}}",
"event_request_declined": "تم رفض طلب الحدث الخاص بك",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "الحدث المتكرر في انتظار موافقتك",
"someone_requested_an_event": "طلب شخص ما جدولة حدث في تقويمك.",
"someone_requested_password_reset": "طلب شخص ما رابطا لتغيير كلمة المرور الخاصة بك.",
"password_reset_email_sent": "يجب أن تتلقى رسالة إلكترونية حول إعادة التعيين على هذا البريد الإلكتروني إذا كان موجوداً في نظامنا.",
"password_reset_instructions": "إذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني بأمان ولن يتم تغيير كلمة المرور الخاصة بك.",
"event_awaiting_approval_subject": "في انتظار الموافقة: {{title}} في {{date}}",
"event_still_awaiting_approval": "الحدث لا يزال في انتظار موافقتك",
@@ -217,6 +224,10 @@
"already_have_an_account": "هل لديك حساب بالفعل؟",
"create_account": "إنشاء حساب",
"confirm_password": "تأكيد كلمة المرور",
"confirm_auth_change": "سيتسبب هذا في تغيير طريقة تسجيلك للدخول",
"confirm_auth_email_change": "سيتسبب تغيير عنوان بريدك الإلكتروني في إنهاء طريقة المصادقة الحالية لتسجيل الدخول إلى Cal.com. وسنطلب منك تأكيد عنوان بريدك الإلكتروني الجديد، ثم سيتم تسجيل الخروج وسيتوجب عليك استخدام عنوان البريد الإلكتروني الجديد لتسجيل الدخول بدلاً من طريقة المصادقة الحالية بعد إعادة ضبط كلمة المرور لديك باتباع التعليمات التي ستُرسل إلى بريدك الإلكتروني.",
"reset_your_password": "عيّن كلمة المرور الجديدة متبعاً الإرشادات المرسلة إلى عنوان بريدك الإلكتروني.",
"email_change": "سجّل الدخول ثانيةً باستخدام عنوان بريدك الإلكتروني الجديد وكلمة مرور.",
"create_your_account": "إنشاء حسابك",
"sign_up": "تسجيل الاشتراك",
"youve_been_logged_out": "لقد قمت بتسجيل الخروج",
@@ -243,6 +254,10 @@
"all": "الكل",
"yours": "حسابك",
"available_apps": "التطبيقات المتوفرة",
"available_apps_lower_case": "التطبيقات المتوفرة",
"available_apps_desc": "ليس لديك تطبيقات مثبّتة. تصفّح التطبيقات ذات الشعبية أدناه واستكشف المزيد في <1>متجر التطبيقات</1>",
"fixed_host_helper": "أضف أي شخص بحاجة إلى ارتياد الفعالية. <1>اعرف المزيد</1>",
"round_robin_helper": "سيتناوب الأشخاص ضمن المجموعة على الحضور بحيث سيحضر شخص واحد الفعالية في كل مرة.",
"check_email_reset_password": "تحقق من البريد الإلكتروني. لقد أرسلنا رابطًا لإعادة تعيين كلمة المرور.",
"finish": "إنهاء",
"organization_general_description": "إدارة الإعدادات للغة فريقك ومنطقته الزمنية",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "وأخيرًا، يساعدك الوصف الموجز عنك والصورة في الحصول على الحجوزات والسماح للأشخاص بمعرفة الشخص الذين يحجزون معه.",
"set_availability_instructions": "حدد الفترات الزمنية التي تكون متاحًا فيها بشكل متكرر. يمكنك لاحقًا تحديد المزيد منها وربطها مع تقاويم مختلفة.",
"set_availability": "تحديد الوقت الذي تكون فيه متاحًا",
"availability_settings": "إعدادات التوافرية",
"continue_without_calendar": "المتابعة من دون تقويم",
"connect_your_calendar": "ربط التقويم لديك",
"connect_your_video_app": "اربط تطبيقات الفيديو لديك",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "روابط الحجز الجماعية التي يمكن إنشاؤها ديناميكيًا عن طريق إضافة أسماء مستخدمين متعددة باستخدام \"+\". مثال: \"{{appName}}/bailey+peer\"",
"allow_dynamic_booking": "السماح للحضور بالحجز لك عن طريق حجز المجموعات الديناميكي",
"dynamic_booking": "روابط المجموعة الديناميكية",
"allow_seo_indexing": "السماح لمحركات البحث بالوصول إلى المحتوى العام لديك",
"seo_indexing": "السماح بالفهرسة وفق SEO",
"email": "البريد الإلكتروني",
"email_placeholder": "name@example.com",
"full_name": "الاسم بالكامل",
@@ -406,6 +424,7 @@
"booking_requested": "تم طلب الحجز",
"meeting_ended": "انتهى الاجتماع",
"form_submitted": "تم إرسال النموذج",
"booking_paid": "تم الدفع لقاء الحجز",
"event_triggers": "مشغلات الحدث",
"subscriber_url": "رابط المشترك",
"create_new_webhook": "إنشاء ويب هوك جديد",
@@ -477,6 +496,7 @@
"max_limit_allowed_hint": "يجب أن يكون عدد الأحرف {{limit}} أو أقل",
"invalid_password_hint": "يجب أن تتألف كلمة المرور على الأقل من {{passwordLength}} أحرف، ورقم واحد على الأقل، ومزيج من الحروف الكبيرة والصغيرة",
"incorrect_password": "كلمة المرور غير صحيحة.",
"incorrect_email_password": "اسم المستخدم أو كلمة المرور غير صحيحين.",
"use_setting": "استخدام الإعداد",
"am_pm": "صباحًا/مساءً",
"time_options": "خيارات الوقت",
@@ -505,6 +525,7 @@
"your_name": "اسمك",
"your_full_name": "اسمك الكامل",
"no_name": "لا يوجد اسم",
"enter_number_between_range": "الرجاء إدخال رقم بين 1 و {{maxOccurences}}",
"email_address": "عنوان البريد الإلكتروني",
"enter_valid_email": "يرجى إدخال بريد إلكتروني صالح",
"location": "الموقع",
@@ -542,6 +563,7 @@
"leave": "خروج",
"profile": "الملف الشخصي",
"my_team_url": "عنوان URL الخاص بفريقي",
"my_teams": "فِرَقي",
"team_name": "اسم الفريق",
"your_team_name": "اسم فريقك",
"team_updated_successfully": "تم تحديث الفريق بنجاح",
@@ -569,6 +591,8 @@
"invite_new_member": "دعوة عضو جديد في الفريق",
"invite_new_member_description": "ملاحظة: سيكلّف هذا <1>مقعداً إضافياً (15 دولاراً شهرياً)</1> زيادةً على اشتراكك.",
"invite_new_team_member": "دعوة شخص ما إلى فريقك.",
"upload_csv_file": "تحميل ملف بصيغة .csv",
"invite_via_email": "الدعوة عبر البريد الإلكتروني",
"change_member_role": "تغيير دور العضو في الفريق",
"disable_cal_branding": "تعطيل علامات {{appName}} التجارية",
"disable_cal_branding_description": "إخفاء كل علامات {{appName}} التجارية من الصفحات العامة لديك.",
@@ -841,6 +865,7 @@
"team_view_user_availability_disabled": "يحتاج المستخدم إلى قبول الدعوة لعرض الأوقات المتاحة",
"set_as_away": "تغيير حالتك إلى \"ليس موجودًا\"",
"set_as_free": "تعطيل حالة \"ليس موجودًا\"",
"toggle_away_error": "حديث خطأ في تحديث الحالة إلى \"بعيد\"",
"user_away": "هذا المستخدم ليس موجودًا حاليًا.",
"user_away_description": "حالة الشخص الذي تحاول حجز خدماته \"ليس موجودًا\"، ولذا فهو لا يقبل عمليات حجز جديدة.",
"meet_people_with_the_same_tokens": "الاجتماع مع أشخاص بنفس ال tokens",
@@ -850,6 +875,7 @@
"account_managed_by_identity_provider_description": "لتغيير بريدك الإلكتروني وكلمة المرور وتمكين المصادقة من عاملين والمزيد، يُرجى زيارة إعدادات حساب {{provider}} لديك.",
"signin_with_google": "تسجيل الدخول عبر Google",
"signin_with_saml": "تسجيل الدخول عبر SAML",
"signin_with_saml_oidc": "تسجيل الدخول عبر SAML/OIDC",
"you_will_need_to_generate": "ستحتاج إلى إنشاء access token من أداة الجدولة القديمة لديك.",
"import": "استيراد",
"import_from": "الاستيراد من",
@@ -949,6 +975,8 @@
"offer_seats_description": "عرض مقاعد للحجز. هذا يعطل تلقائياً حجز الضيوف وحجز الاشتراك.",
"seats_available_one": "المقاعد المتاحة",
"seats_available_other": "المقاعد المتاحة",
"seats_nearly_full": "المقاعد ممتلئة تقريباً",
"seats_half_full": "المقاعد تُشغل بسرعة",
"number_of_seats": "عدد المقاعد لكل حجز",
"enter_number_of_seats": "أدخل عدد المقاعد",
"you_can_manage_your_schedules": "يمكنك إدارة الجداول الخاصة بك في صفحة الأوقات المتاحة.",
@@ -1029,12 +1057,15 @@
"how_you_want_add_cal_site": "كيف تريد إضافة {{appName}} إلى موقعك الإلكتروني؟",
"choose_ways_put_cal_site": "اختر واحدة من الطرق التالية لوضع {{appName}} على موقعك الإلكتروني.",
"setting_up_zapier": "إعداد دمج Zapier الخاص بك",
"setting_up_make": "إعداد دمج Make لديك",
"generate_api_key": "إنشاء مفتاح API",
"generate_api_key_description": "إنشاء مفتاح API لاستخدامه مع {{appName}} على",
"your_unique_api_key": "مفتاح API الفريد الخاص بك",
"copy_safe_api_key": "انسخ مفتاح API هذا واحفظه في مكان آمن. إذا فقدت هذا المفتاح، يتوجب عليك إنشاء مفتاح جديد.",
"zapier_setup_instructions": "<0>سجل الدخول إلى حساب Zapier الخاص بك وأنشئ Zap جديد.</0><1>حدد Cal.com كتطبيق Trigger لديك. اختر أيضًا حدث Trigger.</1><2>اختر حسابك ثم أدخل مفتاح API الفريد الخاص بك.</2><3>اختبر Trigger الخاص بك.</3><4>أنت جاهز!</4>",
"make_setup_instructions": "<0>انتقل إلى <1><0>إنشاء رابط دعوة</0></1> وقم بتثبيت تطبيق Cal.com </0><1> ثم سجّل الدخول إلى حسابك وقم بإنشاء \"سيناريو جديد\".</1><2>اختر Cal.com على أنه أحد تطبيقات \"التشغيل\" لديك. اختر أيضا حدث تشغيل. </2><3>اختر حسابك ثم ادخل مفتاح API الفريد الخاص بك.</3><4>اختبر المشغل لديك.</4><5>لقد أتممت الأمر!</5>",
"install_zapier_app": "يرجى تثبيت تطبيق Zapier من App Store أولًا.",
"install_make_app": "يرجى تثبيت تطبيق Make من متجر التطبيقات أولًا.",
"connect_apple_server": "الاتصال بخادم Apple",
"calendar_url": "رابط التقويم",
"apple_server_generate_password": "أنشئ كلمة مرور خاصة بالتطبيق لاستخدامها مع {{appName}} على",
@@ -1084,6 +1115,9 @@
"email_attendee_action": "إرسال رسالة إلكترونية إلى الحضور",
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى أحد الحضور",
"sms_number_action": "إرسال رسالة نصية قصيرة إلى رقم محدد",
"send_reminder_sms": "إرسال تذكيرات بالاجتماعات إلى الحاضرين بيُسر عبر الرسائل النصية القصيرة",
"whatsapp_number_action": "إرسال رسالة WhatsApp إلى رقم محدد",
"whatsapp_attendee_action": "إرسال رسالة عبر WhatsApp إلى أحد الحاضرين",
"workflows": "سير العمل",
"new_workflow_btn": "سير عمل جديد",
"add_new_workflow": "إضافة سير عمل جديد",
@@ -1147,6 +1181,8 @@
"choose_template": "اختيار قالب",
"custom": "مخصص",
"reminder": "تذكير",
"rescheduled": "تمت إعادة الجدولة",
"completed": "تمّ",
"reminder_email": "تذكر {{eventType}} مع {{name}} في {{date}}",
"not_triggering_existing_bookings": "لن يتم تشغيل الحجوزات الموجودة مسبقاً حيث سيتم طلب رقم الهاتف عند حجز الحدث.",
"minute_one": "{{count}} دقيقة",
@@ -1239,6 +1275,7 @@
"error_updating_settings": "خطأ في تحديث الإعدادات",
"personal_cal_url": "عنوان {{appName}} URL الخاص بي",
"bio_hint": "اكتب بضع جمل عن نفسك، والتي ستظهر على صفحة عنوان Url الشخصية لديك.",
"user_has_no_bio": "لم يُضف هذا المستخدم لمحة عنه بعد.",
"delete_account_modal_title": "حذف الحساب",
"confirm_delete_account_modal": "هل أنت متأكد من أنك تريد حذف حساب {{appName}} الخاص بك؟",
"delete_my_account": "حذف حسابي",
@@ -1421,6 +1458,7 @@
"add_limit": "إضافة حد",
"team_name_required": "اسم الفريق مطلوب",
"show_attendees": "مشاركة معلومات الحضور مع الضيوف",
"show_available_seats_count": "إظهار عدد المقاعد المتاحة",
"how_booking_questions_as_variables": "كيف يمكن استخدام أسئلة الحجز كمتغيرات؟",
"format": "التنسيق",
"uppercase_for_letters": "استخدم الحروف الكبيرة لجميع الأحرف",
@@ -1489,7 +1527,9 @@
"must_enter_team_name": "يجب إدخال اسم فريق",
"team_url_required": "يجب إدخال عنوان URL للفريق",
"url_taken": "عنوان URL هذا مأخوذ بالفعل",
"problem_registering_domain": "حدثت مشكلة في تسجيل المجال الفرعي، يُرجى المحاولة لاحقاً أو الاتصال بالمشرف",
"team_publish": "نشر فريق",
"number_text_notifications": "رقم الهاتف (إشعارات الرسائل النصية)",
"attendee_email_variable": "اسم الحاضر",
"attendee_email_info": "البريد الإلكتروني للشخص الحجز",
"kbar_search_placeholder": "اكتب أمرًا أو بحثًا...",
@@ -1652,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "هل تريد بالتأكيد حذف تكوين {{connectionType}}؟ لن يتمكن أعضاء فريقك الذين يستخدمون معلومات تسجيل الدخول إلى {{connectionType}} من الوصول إلى Cal.com بعد الآن.",
"organizer_timezone": "منظم المناطق الزمنية",
"email_user_cta": "عرض الدعوة",
"email_no_user_invite_heading_team": "تمت دعوتك للانضمام إلى فريق {{appName}}",
"email_no_user_invite_heading_org": "تمت دعوتك للانضمام إلى منظمة {{appName}}",
"email_no_user_invite_subheading": "دعاك {{invitedBy}} للانضمام إلى فريقه على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت وفريقك من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
"email_user_invite_subheading_team": "دعاك {{invitedBy}} للانضمام إلى فريقه {{teamName}} على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت وفريقك من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
"email_user_invite_subheading_org": "لقد دعاك {{invitedBy}} للانضمام إلى فريق {{teamName}} التابع لمنظمتهم على {{appName}}. إن {{appName}} هو برنامج جدولة للفعاليات يمنحك القدرة أنت ومؤسستك على جدولة الاجتماعات من دون الحاجة إلى التراسل الكثيف عبر البريد الإلكتروني.",
"email_no_user_invite_steps_intro": "سنرشدك خلال بضع خطوات قصيرة وستستمتع بجدول زمني خالٍ من التوتر مع {{entity}} في لمح البصر.",
"email_no_user_step_one": "اختر اسم المستخدم الخاص بك",
"email_no_user_step_two": "ربط حساب التقويم الخاص بك",
@@ -1824,6 +1867,8 @@
"insights_no_data_found_for_filter": "لم يتم العثور على بيانات لعامل التصفية المحدد أو التواريخ المحددة.",
"acknowledge_booking_no_show_fee": "أقر بأنه إذا لم أحضر هذا الحدث فسيتم سحب رسوم عدم حضور من بطاقتي تبلغ {{amount, currency}}.",
"card_details": "تفاصيل البطاقة",
"something_went_wrong_on_our_end": "حدث خطأ ما من طرفنا. اتصل بفريق الدعم لدينا، وسنُصلحه لك فوراً.",
"please_provide_following_text_to_suppport": "يرجى تقديم النص التالي عند الاتصال بالدعم لمساعدتك بشكل أفضل",
"seats_and_no_show_fee_error": "لا يمكن حاليًا تمكين المقاعد وفرض رسوم عدم الحضور",
"complete_your_booking": "أكمل الحجز",
"complete_your_booking_subject": "أكمل الحجز: {{title}} في {{date}}",
@@ -1857,6 +1902,9 @@
"open_dialog_with_element_click": "فتح مربع حوار Cal عندما ينقر شخص فوق عنصر ما.",
"need_help_embedding": "هل أنت بحاجة إلى مساعدة؟ راجع أدلتنا لتضمين Cal على Wix، أو Squarespace، أو WordPress، راجع أسئلتنا الشائعة، أو استكشف خيارات التضمين المتقدمة.",
"book_my_cal": "تثبيت الحجز في Cal",
"first_name": "الاسم الأول",
"last_name": "اسم العائلة",
"first_last_name": "الاسم الأول، اسم العائلة",
"invite_as": "دعوة باسم",
"form_updated_successfully": "تم تحديث النموذج بنجاح.",
"disable_attendees_confirmation_emails": "تعطيل رسائل التأكيد الافتراضية للحضور",
@@ -1870,6 +1918,7 @@
"first_event_type_webhook_description": "قم بإنشاء أول شبكة ويب هوك لهذا النوع من الأحداث",
"install_app_on": "تثبيت التطبيق على",
"create_for": "إنشاء من أجل",
"currency": "العملة",
"organization_banner_description": "إنشاء بيئات حيث يمكن لفرقك إنشاء تطبيقات مشتركة ومهام سير العمل وأنواع الأحداث باستخدام الجدولة الدوارة والجماعية.",
"organization_banner_title": "إدارة المنظمات ذات الفرق المتعددة",
"set_up_your_organization": "إعداد منظمتك",
@@ -1930,5 +1979,79 @@
"insights_team_filter": "الفريق: {{teamName}}",
"insights_user_filter": "المستخدم: {{userName}}",
"insights_subtitle": "عرض Insights الحجز عبر أحداثك",
"location_options": "خيارات الموقع {{locationCount}}",
"custom_plan": "الخطة المخصصة",
"email_embed": "البريد الإلكتروني المضمن",
"add_times_to_your_email": "حدّد بعض الفترات المتاحة وأدرجها في رسالتك الإلكترونية",
"select_time": "اختيار الوقت",
"select_date": "اختيار التاريخ",
"see_all_available_times": "رؤية كل الأوقات المتاحة",
"org_team_names_example": "مثال، فريق التسويق",
"org_team_names_example_1": "مثال، فريق التسويق",
"org_team_names_example_2": "مثال، فريق المبيعات",
"org_team_names_example_3": "مثال، فريق التصميم",
"org_team_names_example_4": "مثال، الفريق الهندسي",
"org_team_names_example_5": "مثال، فريق تحليل البيانات",
"org_max_team_warnings": "ستكون قادراً على إضافة فرق إضافية في وقت لاحق.",
"what_is_this_meeting_about": "عمَّ تدور هذه الجلسة؟",
"add_to_team": "إضافة إلى الفريق",
"remove_users_from_org": "إزالة مستخدمين من مؤسسة",
"remove_users_from_org_confirm": "هل أنت متأكد من أنك تريد إزالة هذا العدد من المستخدمين {{userCount}} من هذه المؤسسة؟",
"user_has_no_schedules": "لم يقم هذا المستخدم بإعداد بأي جدولة حتى الآن",
"user_isnt_in_any_teams": "هذا المستخدم ليس في أي فريق",
"requires_booker_email_verification": "يتطلب ذلك تأكيد البريد الإلكتروني لمن يقوم بالحجز",
"description_requires_booker_email_verification": "لضمان تأكيد البريد الإلكتروني لمن يقوم بالحجز قبل جدولة الفعاليات",
"requires_confirmation_mandatory": "يمكن إرسال رسائل نصية فقط للحاضرين عندما يتطلب نوع الفعالية تأكيداً.",
"kyc_verification_information": "يجب عليك إثبات صحة {{teamOrAccount}} لديك قبل إرسال رسائل نصية للحضور بهدف ضمان الأمان. يرجى الاتصال بنا عبر البريد الإلكتروني <a>{{supportEmail}}</a> وتقديم المعلومات التالية:",
"kyc_verification_documents": "<ul><li> {{teamOrUser}}</li><li>للأعمال التجارية: إرفاق مستندات تأكيد الأعمال</li><li>للأفراد: إرفاق بطاقة تعريفية صادرة من جهة حكومية</li></ul>",
"verify_team_or_account": "تأكيد {{teamOrAccount}}",
"verify_account": "تأكيد الحساب",
"kyc_verification": "تأكيد KYC",
"organizations": "المؤسسات",
"org_admin_other_teams": "فرق أخرى",
"org_admin_other_teams_description": "يمكنك هنا رؤية الفرق ضمن مؤسستك والتي أنت لست جزءاً منها؛ ويمكنك إضافة نفسك إليها عند الحاجة.",
"no_other_teams_found": "لم يتم العثور على فرق أخرى",
"no_other_teams_found_description": "لا توجد فرق أخرى في هذه المؤسسة.",
"attendee_first_name_variable": "الاسم الأول للحاضر",
"attendee_last_name_variable": "اسم العائلة للحاضر",
"attendee_first_name_info": "الاسم الأول للشخص صاحب الحجز",
"attendee_last_name_info": "اسم العائلة للشخص صاحب الحجز",
"me": "أنا",
"verify_team_tooltip": "تأكيد فريقك لتمكين إرسال الرسائل إلى الحاضرين",
"member_removed": "تمت إزالة العضو",
"my_availability": "أوقاتي المتاحة",
"team_availability": "أوقات الفريق المتاحة",
"backup_code": "الرمز الاحتياطي",
"backup_codes": "الرموز الاحتياطية",
"backup_code_instructions": "يمكن استخدام كل رمز احتياطي لمرة واحدة فقط لمنح حق الوصول بدون مصادقة منك.",
"backup_codes_copied": "تم نسخ الرموز الاحتياطية!",
"incorrect_backup_code": "الرمز الاحتياطي غير صحيح.",
"lost_access": "فُقد الوصول",
"missing_backup_codes": "لم يُعثر على رموز احتياطية. الرجاء إنشاؤها في الإعدادات لديك.",
"admin_org_notification_email_subject": "تم إنشاء منظمة جديدة: في انتظار العمل",
"hi_admin": "مرحباً حضرة المشرف",
"admin_org_notification_email_title": "تحتاج منظمة إلى إعداد DNS",
"admin_org_notification_email_body_part1": "تم إنشاء منظمة بعيار \"{{orgSlug}}\".<br /><br />يرجى التأكد من تكوين سجل DNS الخاص بك لتحديد النطاق الفرعي المقابل للمنظمة الجديدة إلى حيث يعمل التطبيق الرئيسي. وإلا فلن تعمل المنظمة.<br /><br />هنا لديك فقط الخيارات الأساسية لتكوين نطاق فرعي للإشارة إلى تطبيقهم حتى يُحمّل صفحة الملف الشخصي للمنظمة.<br /><br />يمكنك القيام بذلك إما بواسطة السجل A:",
"admin_org_notification_email_body_part2": "أو سجل CNAME:",
"admin_org_notification_email_body_part3": "بمجرد تكوين النطاق الفرعي، يرجى وضع علامة على تكوين DNS كما تم في إعدادات مشرف المنظمات.",
"admin_org_notification_email_cta": "الذهاب إلى إعدادات مشرف المؤسسات",
"org_has_been_processed": "تم تجهيز المؤسسة",
"org_error_processing": "حدث خطأ أثناء تجهيز هذه المؤسسة",
"orgs_page_description": "قائمة بجميع المؤسسات. سيسمح قبول مؤسسة ما لجميع المستخدمين الذين لديهم عناوين بريد إلكتروني تنتهي بنطاق المؤسسة بالتسجيل من دون الحاجة إلى تأكيد بريدهم الإلكتروني.",
"unverified": "لم تتم عملية التأكيد",
"dns_missing": "DNS مفقود",
"mark_dns_configured": "وضع إشارة تكوين على DNS",
"value": "القيمة",
"your_organization_updated_sucessfully": "تم تحديث منظمتك بنجاح",
"team_no_event_types": "ليس لدى هذا الفريق أنواع من الفعاليات",
"seat_options_doesnt_multiple_durations": "لا يدعم خيار المقعد فترات متعددة",
"include_calendar_event": "إدراج فعاليات في التقويم",
"recently_added": "تمت الإضافة مؤخراً",
"no_members_found": "لم يُعثر على أعضاء",
"event_setup_length_error": "إعداد الفعالية: يجب أن تكون المدة لدقيقة على الأقل.",
"availability_schedules": "جدولة التوافر",
"view_only_edit_availability_not_onboarded": "لم يكمل هذا المستخدم عملية الانضمام. لن تتمكن من تعيين توافره حتى يكتمل انضمامه.",
"view_only_edit_availability": "أنت تشاهد توافر هذا المستخدم. يمكنك تعديل توافرك فقط.",
"edit_users_availability": "تعديل توافر المستخدم: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Ověřte svoji e-mailovou adresu, abyste zaručili co nejlepší doručitelnost e-mailů a kalendáře",
"verify_email_email_header": "Ověřte svoji e-mailovou adresu",
"verify_email_email_button": "Ověřit e-mail",
"copy_somewhere_safe": "Uložte si tento klíč API na bezpečné místo. Možnost dalšího zobrazení mít nebudete.",
"verify_email_email_body": "Ověřte svoji e-mailovou adresu kliknutím na tlačítko níže.",
"verify_email_by_code_email_body": "Ověřte prosím svoji e-mailovou adresu pomocí níže uvedeného kódu.",
"verify_email_email_link_text": "Zde je odkaz pro případ, že nemáte rádi klikání na tlačítka:",
"email_verification_code": "Zadejte ověřovací kód",
"email_verification_code_placeholder": "Zadejte ověřovací kód odeslaný na váš e-mail",
"incorrect_email_verification_code": "Ověřovací kód je nesprávný.",
"email_sent": "E-mail byl odeslán",
"email_not_sent": "Při odesílání e-mailu došlo k chybě",
"event_declined_subject": "Odmítnuto: {{title}} v {{date}}",
"event_cancelled_subject": "Zrušeno: {{title}} dne {{date}}",
"event_request_declined": "Žádost o událost byla zamítnuta",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Opakovaná událost čeká na schválení",
"someone_requested_an_event": "Někdo požádal o naplánování události ve vašem kalendáři.",
"someone_requested_password_reset": "Někdo požádal o odkaz pro změnu vašeho hesla.",
"password_reset_email_sent": "Pokud tento e-mail v našem systému existuje, měli byste obdržet obnovovací e-mail.",
"password_reset_instructions": "Pokud jste o obnovení hesla nepožádali, můžete tento e-mail ignorovat. Vaše heslo se nezmění.",
"event_awaiting_approval_subject": "Čeká se na schválení: {{title}} dne {{date}}",
"event_still_awaiting_approval": "Událost stále čeká na schválení",
@@ -217,6 +224,10 @@
"already_have_an_account": "Už máte účet?",
"create_account": "Vytvořit účet",
"confirm_password": "Potvrdit heslo",
"confirm_auth_change": "Tím se změní způsob přihlašování",
"confirm_auth_email_change": "Změnou e-mailové adresy dojde v souvislosti s přihlášením do Cal.com k odpojení vašeho současného způsobu ověřování. Budeme po vás chtít ověření nové e-mailové adresy. Následně budete odhlášeni a po nastavení hesla podle pokynů, které vám přijdou do pošty, se k přihlašování bude namísto stávajícího způsobu ověřování používat nová e-mailová adresa.",
"reset_your_password": "Nastavte si nové heslo podle pokynů odeslaných na vaši e-mailovou adresu.",
"email_change": "Přihlaste se znovu pomocí nové e-mailové adresy a hesla.",
"create_your_account": "Vytvořit účet",
"sign_up": "Přihlásit se",
"youve_been_logged_out": "Byli jste odhlášeni",
@@ -243,6 +254,10 @@
"all": "Všechny aplikace",
"yours": "Váš účet",
"available_apps": "Dostupné aplikace",
"available_apps_lower_case": "Dostupné aplikace",
"available_apps_desc": "Nemáte nainstalované žádné aplikace. Níže si můžete prohlédnout oblíbené aplikace a další objevit v našem <1>obchodu s aplikacemi</1>",
"fixed_host_helper": "Přidejte každého, kdo se má zúčastnit události. <1>Další informace</1>",
"round_robin_helper": "Lidé ve skupině se střídají a na událost se dostaví pouze jedna osoba.",
"check_email_reset_password": "Podívejte se do e-mailu. Poslali jsme vám odkaz pro obnovení hesla.",
"finish": "Dokončit",
"organization_general_description": "Správa nastavení jazyka a časového pásma vašeho týmu",
@@ -251,6 +266,7 @@
"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í",
"availability_settings": "Nastavení dostupnosti",
"continue_without_calendar": "Pokračovat bez kalendáře",
"connect_your_calendar": "Připojit svůj kalendář",
"connect_your_video_app": "Propojte své video aplikace",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Odkazy na skupinové rezervace, které lze vytvořit dynamicky přidáním více uživatelských jmen s „+“. příklad: „{{appName}}/bailey+peer“",
"allow_dynamic_booking": "Povolit účastníkům rezervovat vás prostřednictvím dynamických skupinových rezervací",
"dynamic_booking": "Dynamické odkazy na skupiny",
"allow_seo_indexing": "Povolte vyhledávačům přístup k vašemu veřejnému obsahu",
"seo_indexing": "Zapnout indexování SEO",
"email": "E-mailová adresa",
"email_placeholder": "vas@email.cz",
"full_name": "Jméno a příjmení",
@@ -406,6 +424,7 @@
"booking_requested": "Váš požadavek na rezervaci byl úspěšně odeslán",
"meeting_ended": "Schůzka skončila",
"form_submitted": "Formulář byl odeslán",
"booking_paid": "Rezervace uhrazena",
"event_triggers": "Eventy na základě akce",
"subscriber_url": "URL pro odběry",
"create_new_webhook": "Vytvořit nový webhook",
@@ -506,6 +525,7 @@
"your_name": "Vaše jméno",
"your_full_name": "Vaše celé jméno",
"no_name": "Žádné jméno",
"enter_number_between_range": "Zadejte prosím číslo v rozpětí 1 a {{maxOccurences}}",
"email_address": "E-mailová adresa",
"enter_valid_email": "Zadejte platný e-mail",
"location": "Místo",
@@ -543,6 +563,7 @@
"leave": "Opustit",
"profile": "Profil",
"my_team_url": "URL adresa mého týmu",
"my_teams": "Moje týmy",
"team_name": "Název týmu",
"your_team_name": "Název vašeho týmu",
"team_updated_successfully": "Tým byl úspěšně aktualizován",
@@ -570,6 +591,8 @@
"invite_new_member": "Pozvat nového člena",
"invite_new_member_description": "Poznámka: Ve vašem předplatném to bude <1>stát místo navíc (15 USD/měs.)</1> .",
"invite_new_team_member": "Pozvat někoho do týmu.",
"upload_csv_file": "Nahrajte soubor .csv",
"invite_via_email": "Pozvat e-mailem",
"change_member_role": "Změnit roli člena týmu",
"disable_cal_branding": "Vypnout branding {{appName}}",
"disable_cal_branding_description": "Skrýt branding {{appName}} ze všech veřejných stránek.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Uživatel musí přijmout pozvánku, aby mohl zobrazit dostupnost",
"set_as_away": "Nastavit status \"pryč\"",
"set_as_free": "Vypnout status \"pryč\"",
"toggle_away_error": "Chyba při aktualizaci statusu „pryč“",
"user_away": "Tento uživatel je právě \"pryč\".",
"user_away_description": "Osoba, kterou se snažíte rezervovat, má nastavený status \"pryč\" a nepřijímá tak nové rezervace.",
"meet_people_with_the_same_tokens": "Seznamte se s lidmi se stejnými tokeny",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Pro změnu e-mailu, hesla, dvoufázového ověřování apod. prosím přejděte do nastavení účtu {{provider}}.",
"signin_with_google": "Přihlásit se pomocí Googlu",
"signin_with_saml": "Přihlásit se pomocí SAML",
"signin_with_saml_oidc": "Přihlášení pomocí SAML/OIDC",
"you_will_need_to_generate": "Budete muset vygenerovat přístupový token ve vašem dřívějším plánovacím nástroji.",
"import": "Importovat",
"import_from": "Importovat z",
@@ -950,6 +975,8 @@
"offer_seats_description": "Nabídnout místa k rezervaci. Tím se vypnou rezervace hostů a volitelné rezervace.",
"seats_available_one": "Dostupné místo",
"seats_available_other": "Dostupná místa",
"seats_nearly_full": "Místa jsou téměř obsazena",
"seats_half_full": "Místa se rychle zaplňují",
"number_of_seats": "Počet míst na rezervaci",
"enter_number_of_seats": "Zadejte počet míst",
"you_can_manage_your_schedules": "Své plány můžete spravovat na stránce Dostupnost.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Jak chcete přidat {{appName}} na vaše stránky?",
"choose_ways_put_cal_site": "Vyberte si některý z následujících způsobů, jak umístit {{appName}} na své stránky.",
"setting_up_zapier": "Nastavení integrace Zapier",
"setting_up_make": "Nastavení integrace s Make",
"generate_api_key": "Vygenerovat klíč API",
"generate_api_key_description": "Vygenerujte klíč API pro použití s {{appName}} na adrese",
"your_unique_api_key": "Váš unikátní klíč API",
"copy_safe_api_key": "Zkopírujte tento klíč API a uschovejte si ho na bezpečné místo. Pokud tento klíč ztratíte, musíte vygenerovat nový.",
"zapier_setup_instructions": "<0>Přihlaste se ke svému účtu Zapier a vytvořte nový Zap.</0><1>Vyberte Cal.com jako svoji aplikaci Trigger. Také vyberte událost Trigger.</1><2>Vyberte svůj účet a pak zadejte svůj unikátní klíč API.</2><3>Otestujte svůj Trigger.</3><4>Všechno máte nastaveno!</4>",
"make_setup_instructions": "<0>Přejděte na <1><0>odkaz s pozvánkou pro Make</0></1> a nainstalujte aplikaci Cal.com.</0><1>Přihlaste se ke svému účtu Make a vytvořte nový scénář.</1><2>Jako spouštěcí aplikaci vyberte Cal.com. Dále vyberte událost spouštěče.</2><3>Vyberte svůj účet a následně zadejte svůj unikátní klíč API.</3><4>Otestujte svůj spouštěč.</4><5>Všechno je připraveno!</5>",
"install_zapier_app": "Nejdřív si z App Store nainstalujte aplikaci Zapier.",
"install_make_app": "Nejprve si nainstalujte aplikaci Make z obchodu s aplikacemi.",
"connect_apple_server": "Připojit se k serveru Apple",
"calendar_url": "URL kalendáře",
"apple_server_generate_password": "Vygenerujte si specifické heslo pro aplikaci {{appName}} na",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "odeslat e-mail účastníkům",
"sms_attendee_action": "Odeslat SMS účastníkovi",
"sms_number_action": "odeslání SMS na konkrétní číslo",
"send_reminder_sms": "Snadné zasílání připomenutí schůzek účastníkům přes SMS",
"whatsapp_number_action": "odeslat Whatsapp na konkrétní číslo",
"whatsapp_attendee_action": "odeslat Whatsapp účastníkovi",
"workflows": "Pracovní postupy",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Chyba při aktualizaci nastavení",
"personal_cal_url": "Moje osobní adresa URL {{appName}}",
"bio_hint": "Několik vět o vás. Obsah se zobrazí se na vaší osobní stránce URL.",
"user_has_no_bio": "Tento uživatel zatím nepřidal životopis.",
"delete_account_modal_title": "Odstranit účet",
"confirm_delete_account_modal": "Opravdu chcete odstranit svůj účet {{appName}}?",
"delete_my_account": "Odstranit můj účet",
@@ -1426,6 +1458,7 @@
"add_limit": "Přidat limit",
"team_name_required": "Je vyžadován název týmu",
"show_attendees": "Sdílet informace o účastnících",
"show_available_seats_count": "Zobrazení počtu volných míst",
"how_booking_questions_as_variables": "Jak používat rezervační otázky jako proměnné?",
"format": "Formát",
"uppercase_for_letters": "Použít velká písmena pro všechna písmena",
@@ -1659,8 +1692,11 @@
"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_team": "Byli jste pozváni do týmu {{appName}}",
"email_no_user_invite_heading_org": "Byli jste pozváni do organizace {{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_team": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu „{{teamName}}“ 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 pingpongu.",
"email_user_invite_subheading_org": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} jeho organizace v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vaší organizaci 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",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Pro vybraný filtr nebo vybraná data nebyla nalezena žádná data.",
"acknowledge_booking_no_show_fee": "Beru na vědomí, že pokud se této události nezúčastním, bude z mé karty stržen poplatek za nedostavení se ve výši {{amount, currency}}.",
"card_details": "Údaje o kartě",
"something_went_wrong_on_our_end": "Na naší straně se něco pokazilo. Spojte se s naší podporou a hned to napravíme.",
"please_provide_following_text_to_suppport": "Při kontaktování podpory uveďte v zájmu lepší efektivity následující",
"seats_and_no_show_fee_error": "V současné době nelze povolit místa a strhnout poplatek za nedostavení se",
"complete_your_booking": "Dokončete svou rezervaci",
"complete_your_booking_subject": "Dokončete svou rezervaci: {{title}} dne {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Otevře dialogové okno Cal, pokud někdo klikne na prvek.",
"need_help_embedding": "Potřebujete pomoc? Prohlédněte si naše průvodce pro vložení Cal do Wixu, Squarespace nebo WordPressu, podívejte se na naše nejčastější dotazy nebo prozkoumejte pokročilé možnosti vložení.",
"book_my_cal": "Zarezervovat na Cal",
"first_name": "Jméno",
"last_name": "Příjmení",
"first_last_name": "Jméno, příjmení",
"invite_as": "Pozvat jako",
"form_updated_successfully": "Formulář byl aktualizován.",
"disable_attendees_confirmation_emails": "Vypnutí výchozích potvrzovacích e-mailů pro účastníky",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Vytvořte svůj první webhook pro tento typ události",
"install_app_on": "Nainstalovat aplikaci v",
"create_for": "Vytvořit pro",
"currency": "Měna",
"organization_banner_description": "Vytvořte prostředí, ve kterém budou moct vaše týmy vytvářet sdílené aplikace, pracovní postupy a typy událostí s kolektivním plánováním nebo plánováním typu round-robin.",
"organization_banner_title": "Správa organizace s více týmy",
"set_up_your_organization": "Nastavení organizace",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Tým: {{teamName}}",
"insights_user_filter": "Uživatel: {{userName}}",
"insights_subtitle": "Zobrazte si Insight rezervací napříč vašimi událostmi",
"location_options": "Možná místa konání: {{locationCount}}",
"custom_plan": "Vlastní plán",
"email_embed": "Vložení do e-mailu",
"add_times_to_your_email": "Vyberte několik dostupných časů a vložte je do e-mailu",
"select_time": "Vyberte čas",
"select_date": "Vyberte datum",
"see_all_available_times": "Zobrazit všechny dostupné časy",
"org_team_names_example": "Např. marketingový tým",
"org_team_names_example_1": "Např. marketingový tým",
"org_team_names_example_2": "Např. obchodní tým",
"org_team_names_example_3": "Např. designérský tým",
"org_team_names_example_4": "Např. inženýrský tým",
"org_team_names_example_5": "Např. tým datové analytiky",
"org_max_team_warnings": "Další týmy budete moct přidat později.",
"what_is_this_meeting_about": "Čeho se tato schůzka týká?",
"add_to_team": "Přidat do týmu",
"remove_users_from_org": "Odstranění uživatelů z organizace",
"remove_users_from_org_confirm": "Opravdu chcete odebrat uživatele ({{userCount}}) z této organizace?",
"user_has_no_schedules": "Tento uživatel zatím nenastavil žádné plány",
"user_isnt_in_any_teams": "Tento uživatel není v žádném týmu",
"requires_booker_email_verification": "Povinné ověření e-mailu rezervujícího",
"description_requires_booker_email_verification": "Zajištění ověření e-mailu rezervujícího před plánováním událostí",
"requires_confirmation_mandatory": "SMS zprávy lze účastníkům zasílat pouze v případě, že typ události vyžaduje potvrzení.",
"kyc_verification_information": "V zájmu zajištění bezpečnosti je nutné před odesláním SMS zpráv účastníkům ověřit {{teamOrAccount}}. Kontaktujte nás na adrese <a>{{supportEmail}}</a> a uveďte následující informace:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>Pro firmy: Přiložte svou dokumentaci k ověření podnikání</li><li>Pro jednotlivce: Přiložte dokumentaci k ověření podnikání</li><li>: Přiložte vládou vydaný průkaz totožnosti</li></ul>.",
"verify_team_or_account": "Ověřte {{teamOrAccount}}",
"verify_account": "Ověřit účet",
"kyc_verification": "Ověření typu KYC",
"organizations": "Organizace",
"org_admin_other_teams": "Ostatní týmy",
"org_admin_other_teams_description": "Zde můžete vidět týmy uvnitř vaší organizace, kterých nejste součástí, a případně se do nich můžete přidat.",
"no_other_teams_found": "Nenalezeny žádné další týmy",
"no_other_teams_found_description": "V této organizaci nejsou žádné další týmy.",
"attendee_first_name_variable": "Jméno účastníka",
"attendee_last_name_variable": "Příjmení účastníka",
"attendee_first_name_info": "Jméno rezervující osoby",
"attendee_last_name_info": "Příjmení rezervující osoby",
"me": "Já",
"verify_team_tooltip": "Proveďte ověření svého týmu a zapněte odesílání zpráv účastníkům",
"member_removed": "Člen odstraněn",
"my_availability": "Moje dostupnost",
"team_availability": "Dostupnost týmu",
"backup_code": "Záložní kód",
"backup_codes": "Záložní kódy",
"backup_code_instructions": "Každý záložní kód lze použít právě jednou k udělení přístupu bez vašeho způsobu ověřování.",
"backup_codes_copied": "Záložní kódy zkopírovány!",
"incorrect_backup_code": "Záložní kód není správný.",
"lost_access": "Ztracený přístup",
"missing_backup_codes": "Nenalezeny žádné záložní kódy. Vygenerujte je v nastavení.",
"admin_org_notification_email_subject": "Vytvořena nová organizace: čekající akce",
"hi_admin": "Dobrý den, administrátore",
"admin_org_notification_email_title": "Organizace vyžaduje nastavení DNS",
"admin_org_notification_email_body_part1": "Byla vytvořena organizace se slugem „{{orgSlug}}“.<br /><br />Zkontrolujte prosím, zda máte nakonfigurovaný registr DNS tak, aby subdoména odpovídající nové organizaci směřovala na místo, kde je spuštěna hlavní aplikace. Jinak organizace nebude fungovat.<br /><br />Tady jsou jen zcela základní možnosti, jak nakonfigurovat subdoménu tak, aby směřovala na příslušnou aplikaci a načítala profilovou stránku organizace.<br /><br />Můžete to udělat buď pomocí záznamu typu A:",
"admin_org_notification_email_body_part2": "nebo záznamu typu CNAME:",
"admin_org_notification_email_body_part3": "Až subdoménu nakonfigurujete, označte konfiguraci DNS jako provedenou v nastavení správce organizací.",
"admin_org_notification_email_cta": "Přejděte do nastavení správce organizací",
"org_has_been_processed": "Organizace byla zpracována",
"org_error_processing": "Při zpracování této organizace došlo k chybě",
"orgs_page_description": "Seznam všech organizací. Přijetí organizace umožní všem uživatelům s touto e-mailovou doménou registraci BEZ ověření e-mailu.",
"unverified": "Neověřeno",
"dns_missing": "Chybí DNS",
"mark_dns_configured": "Označit jako s nakonfigurovaným DNS",
"value": "Hodnota",
"your_organization_updated_sucessfully": "Vaše organizace byla aktualizována",
"team_no_event_types": "Tento tým nemá žádné typy událostí",
"seat_options_doesnt_multiple_durations": "Volba místa nepodporuje více dob trvání",
"include_calendar_event": "Zahrnout událost kalendáře",
"recently_added": "Nedávno přidáno",
"no_members_found": "Nenalezeni žádní členové",
"event_setup_length_error": "Nastavení události: Doba trvání musí být alespoň 1 minuta.",
"availability_schedules": "Plány dostupnosti",
"view_only_edit_availability_not_onboarded": "Tento uživatel ještě nedokončil onboarding. Dokud nedokončí onboarding, dostupnost nebude možné nastavit.",
"view_only_edit_availability": "Právě máte zobrazenou dostupnost tohoto uživatele. Upravovat lze pouze vlastní dostupnost.",
"edit_users_availability": "Upravte dostupnost uživatele: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Přidejte své nové řetězce nahoru ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+69 -2
View File
@@ -136,7 +136,7 @@
"team_upgrade_banner_description": "Vielen Dank, dass Sie unseren neuen Teamplan getestet haben. Wir haben festgestellt, dass Ihr Team „{{teamName}}“ aktualisiert werden muss.",
"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_upgrade_banner_description": "Vielen Dank, dass Sie unseren neuen Tarif „Organization“ getestet haben. Wir haben festgestellt, dass Ihre Organization „{{teamName}}“ ein Upgrade benötigt.",
"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,",
@@ -257,6 +257,7 @@
"available_apps_lower_case": "Verfügbare Apps",
"available_apps_desc": "Sie haben keine Apps installiert. Sehen Sie sich beliebte Apps unten an und entdecken Sie noch mehr in unserem <1>App Store</1>",
"fixed_host_helper": "Füge jeden hinzu, der an der Veranstaltung teilnehmen muss. <1>Mehr erfahren</1>",
"round_robin_helper": "Die Leute in der Gruppe wechseln sich ab und nur eine Person wird für die Veranstaltung erscheinen.",
"check_email_reset_password": "Überprüfen Sie Ihre E-Mail. Wir haben Ihnen einen Link zum Zurücksetzen Ihres Passworts gesendet.",
"finish": "Fertig",
"organization_general_description": "Einstellungen für die Sprache und Zeitzone Ihres Teams verwalten",
@@ -265,6 +266,7 @@
"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",
"availability_settings": "Verfügbarkeitseinstellungen",
"continue_without_calendar": "Ohne Kalender fortfahren",
"connect_your_calendar": "Kalender verbinden",
"connect_your_video_app": "Verbinden Sie Ihre Video-Apps",
@@ -589,6 +591,8 @@
"invite_new_member": "Ein neues Mitglied einladen",
"invite_new_member_description": "Hinweis: Dies wird <1>einen zusätzlichen Platz(15 $/m)</1> in Ihrem Abonnement kosten.",
"invite_new_team_member": "Laden Sie jemanden in Ihr Team ein.",
"upload_csv_file": "Eine .csv-Datei hochladen",
"invite_via_email": "Per E-Mail einladen",
"change_member_role": "Rolle des Teammitglieds ändern",
"disable_cal_branding": "{{appName}}-Branding deaktivieren",
"disable_cal_branding_description": "Blendet alle {{appName}}-Werbung auf Ihren öffentlichen Seiten aus.",
@@ -871,6 +875,7 @@
"account_managed_by_identity_provider_description": "Um Ihre E-Mail-Adresse, Ihr Passwort, die Zwei-Faktor-Authentifizierung und sonstiges zu ändern, besuchen Sie bitte Ihre {{provider}} -Kontoeinstellungen.",
"signin_with_google": "Mit Google anmelden",
"signin_with_saml": "Anmelden mit SAML",
"signin_with_saml_oidc": "Anmelden mit SAML/OIDC",
"you_will_need_to_generate": "Sie müssen ein Zugriffstoken in ihrem alten Kalender-Tool erzeugen.",
"import": "Importieren",
"import_from": "Importieren von",
@@ -970,6 +975,8 @@
"offer_seats_description": "Bieten Sie Plätze für Buchungen an (dies deaktiviert Gäste & Opt-in-Buchungen)",
"seats_available_one": "Verfügbarer Platz",
"seats_available_other": "Verfügbare Plätze",
"seats_nearly_full": "Plätze fast voll",
"seats_half_full": "Plätze werden schnell belegt",
"number_of_seats": "Anzahl der Plätze pro Termin",
"enter_number_of_seats": "Anzahl der Plätze eingeben",
"you_can_manage_your_schedules": "Sie können Ihren Verfügbarkeitsplan bei Ihren Verfügbarkeiten ändern.",
@@ -1050,12 +1057,15 @@
"how_you_want_add_cal_site": "Wie möchten Sie {{appName}} zu Ihrer Website hinzufügen?",
"choose_ways_put_cal_site": "Wählen Sie eine der folgenden Möglichkeiten, um {{appName}} in Ihre Website zu integrieren.",
"setting_up_zapier": "Einrichtung Ihrer Zapier-Integration",
"setting_up_make": "Einrichtung Ihrer Make-Integration",
"generate_api_key": "Api Key generieren",
"generate_api_key_description": "Generieren Sie einen API-Schlüssel für {{appName}} unter",
"your_unique_api_key": "Ihr eindeutiger API-Key",
"copy_safe_api_key": "Kopieren Sie diesen API-Schlüssel und speichern Sie ihn an einem sicheren Ort. Wenn Sie diesen Schlüssel verlieren, müssen Sie einen neuen generieren.",
"zapier_setup_instructions": "<0>Loggen Sie sich in Ihr Zapier-Konto ein und erstelle einen neuen Zap.</0><1>Wählen Sie Cal.com als ihre Trigger-App aus. Wählen Sie auch ein Auslöserereignis.</0><1>Wählen Sie ihr Konto aus und geben dann ihren eindeutigen API-Key ein.</2><3>Testen Sie den Trigger.</3><4>Alles fertig!</4>",
"make_setup_instructions": "<0>Gehen Sie zu: <1><0>Make-Einladungs-Link</0></1>und installieren Sie die Cal.com-App.</0><1> Loggen Sie sich in Ihr Make-Konto ein und erstellen Sie ein neues Szenario.</1><2>Wählen Sie Cal.com als ihre Auslöser-App aus. Wählen Sie auch ein Auslöserereignis aus.</2><3>Wählen Sie ihr Konto aus und geben Sie dann Ihren eindeutigen API-Key ein.</3><4>Probierne Sie den Auslöser aus.</4><5>Und fertig!</5>",
"install_zapier_app": "Bitte installieren Sie zuerst die Zapier-App im App Store.",
"install_make_app": "Bitte installieren Sie zuerst die Make-App im App Store.",
"connect_apple_server": "Mit Apple-Server verbinden",
"calendar_url": "Kalender-URL",
"apple_server_generate_password": "Generieren Sie ein App-spezifisches Passwort für {{appName}} unter",
@@ -1105,6 +1115,7 @@
"email_attendee_action": "E-Mail an Teilnehmende senden",
"sms_attendee_action": "SMS an Teilnehmende senden",
"sms_number_action": "SMS an eine bestimmte Nummer senden",
"send_reminder_sms": "Senden Sie Meeting-Erinnerungen einfach per SMS an Ihre Teilnehmer",
"whatsapp_number_action": "WhatsApp-Nachricht an eine bestimmte Nummer senden",
"whatsapp_attendee_action": "WhatsApp-Nachricht an Teilnehmer senden",
"workflows": "Workflows",
@@ -1264,6 +1275,7 @@
"error_updating_settings": "Fehler beim Aktualisieren der Einstellungen",
"personal_cal_url": "Meine persönliche {{appName}}-URL",
"bio_hint": "Schreiben Sie eine kurze Beschreibung, welche auf Ihrer persönlichen Profil-Seite erscheinen wird.",
"user_has_no_bio": "Dieser Benutzer hat noch keine Bio hinzugefügt.",
"delete_account_modal_title": "Account löschen",
"confirm_delete_account_modal": "Sind Sie sicher, dass Sie Ihr {{appName}}-Konto löschen möchten?",
"delete_my_account": "Meinen Account löschen",
@@ -1446,6 +1458,7 @@
"add_limit": "Begrenzung hinzufügen",
"team_name_required": "Teamname erforderlich",
"show_attendees": "Teilnehmerinformationen zwischen Gästen teilen",
"show_available_seats_count": "Anzahl der verfügbaren Plätze anzeigen",
"how_booking_questions_as_variables": "Wie verwendet man Buchungsfragen als Variablen?",
"format": "Format",
"uppercase_for_letters": "Großbuchstaben für alle Buchstaben verwenden",
@@ -1679,9 +1692,12 @@
"delete_sso_configuration_confirmation_description": "Sind Sie sicher, dass Sie die {{connectionType}}-Konfiguration löschen möchten? Ihre Teammitglieder, die sich über {{connectionType}} anmelden, werden keinen Zugriff mehr auf Cal.com haben.",
"organizer_timezone": "Zeitzone des Veranstalters",
"email_user_cta": "Einladung anzeigen",
"email_no_user_invite_heading_team": "Sie wurden eingeladen, einem {{appName}}-Team beizutreten",
"email_no_user_invite_heading_org": "Sie wurden eingeladen, einer {{appName}}-Organisation beizutreten",
"email_no_user_invite_subheading": "{{invitedBy}} hat Sie eingeladen, dem Team in {{appName}} beizutreten. {{appName}} ist der Event-Planer, der es Ihnen und Ihrem Team ermöglicht, Meetings ohne ständiges hin und her zu planen.",
"email_user_invite_subheading_team": "{{invitedBy}} hat Sie eingeladen, dem Team „{{teamName}}“ beizutreten. {{appName}} ist der Event-Planer, der es Ihnen und Ihrem Team ermöglicht, Meetings ohne Hin und Her zu planen.",
"email_no_user_invite_steps_intro": "Wir begleiten Sie durch ein paar Schritte, danach können Sie in kürzester Zeit stressfreie Planung mit Ihrem {{entity}} genießen.",
"email_user_invite_subheading_org": "{{invitedBy}} hat Sie eingeladen, ihrer Organisation „{{teamName}}“ in {{appName}} beizutreten. {{appName}} ist der Terminplaner, der es Ihnen und Ihrer Organisation ermöglicht, Meetings ohne ständiges hin und her zu planen.",
"email_no_user_invite_steps_intro": "Wir begleiten Sie durch ein paar Schritte, danach können Sie in kürzester Zeit stressfreie Planung mit Ihrer {{entity}} genießen.",
"email_no_user_step_one": "Wählen Sie Ihren Benutzernamen",
"email_no_user_step_two": "Verbinden Sie Ihr Kalenderkonto",
"email_no_user_step_three": "Legen Sie Ihre Verfügbarkeit fest",
@@ -1851,6 +1867,8 @@
"insights_no_data_found_for_filter": "Keine Daten für den ausgewählten Filter oder das ausgewählte Datum gefunden.",
"acknowledge_booking_no_show_fee": "Ich bestätige, dass meiner Karte eine Gebühr von {{amount, currency}} berechnet wird, sofern ich nicht an diesem Ereignis teilnehme.",
"card_details": "Karteninformationen",
"something_went_wrong_on_our_end": "Etwas ist auf unserer Seite schief gelaufen. Kontaktieren Sie unser Support-Team, wir werden es sofort für Sie reparieren.",
"please_provide_following_text_to_suppport": "Bitte geben Sie den folgenden Text an, wenn Sie den Support kontaktieren, damit wir Ihnen besser helfen können",
"seats_and_no_show_fee_error": "Aktuell können keine Plätze aktiviert oder eine Gebühr für das Nichterscheinen berechnet werden",
"complete_your_booking": "Schließen Sie Ihre Buchung ab",
"complete_your_booking_subject": "Schließen Sie Ihre Buchung ab: {{title}} am {{date}}",
@@ -1961,6 +1979,7 @@
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Benutzer: {{userName}}",
"insights_subtitle": "Sehen Sie sich Buchungs-Insights zu Ihren Termine an",
"location_options": "{{locationCount}} Veranstaltungsort-Optionen",
"custom_plan": "Maßgeschneiderter Tarif",
"email_embed": "E-Mail Einbettung",
"add_times_to_your_email": "Zeiten zur E-Mail hinzufügen",
@@ -1976,14 +1995,62 @@
"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?",
"add_to_team": "Zum Team hinzufügen",
"remove_users_from_org": "Benutzer aus der Organisation entfernen",
"remove_users_from_org_confirm": "Sind Sie sicher, dass Sie {{userCount}} Benutzer aus dieser Organisation entfernen möchten?",
"user_has_no_schedules": "Dieser Benutzer hat noch keine Verfügbarkeitspläne eingerichtet",
"user_isnt_in_any_teams": "Dieser Benutzer ist in keinem Team",
"requires_booker_email_verification": "Erfordert E-Mail-Verifizierung des Buchenden",
"description_requires_booker_email_verification": "Um sicherzustellen, dass die E-Mail des Buchenden vor der Terminplanung verifiziert ist",
"requires_confirmation_mandatory": "Textnachrichten können nur an Teilnehmer gesendet werden, wenn der Ereignistyp bestätigt werden muss.",
"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:",
"verify_team_or_account": "{{teamOrAccount}} verifizieren",
"verify_account": "Konto verifizieren",
"kyc_verification": "KYC-Verifizierung",
"organizations": "Organisationen",
"org_admin_other_teams": "Weitere Teams",
"org_admin_other_teams_description": "Hier können Sie Teams innerhalb Ihrer Organisation sehen, zu denen Sie nicht gehören. Sie können sich bei Bedarf selbst hinzufügen.",
"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",
"attendee_first_name_info": "Vorname der buchenden Person",
"attendee_last_name_info": "Nachname der buchenden Person",
"me": "Ich",
"verify_team_tooltip": "Verifizieren Sie Ihr Team, um das Senden von Nachrichten an Teilnehmer zu aktivieren",
"member_removed": "Mitglied entfernt",
"my_availability": "Meine Verfügbarkeit",
"team_availability": "Teamverfügbarkeit",
"backup_code": "Backup-Code",
"backup_codes": "Backup-Codes",
"backup_code_instructions": "Jeder Backup-Code kann genau einmal verwendet werden, um Zugriff ohne Ihren Authentifikator zu gewähren.",
"backup_codes_copied": "Backup-Codes kopiert!",
"incorrect_backup_code": "Backup-Code ist falsch.",
"lost_access": "Zugriff verloren",
"missing_backup_codes": "Keine Backup-Codes gefunden. Bitte generieren Sie diese in Ihren Einstellungen.",
"admin_org_notification_email_subject": "Neue Organisation erstellt: Ausstehende Aktion",
"hi_admin": "Hallo, Administrator",
"admin_org_notification_email_title": "Eine Organisation benötigt DNS-Konfiguration",
"admin_org_notification_email_body_part1": "Eine Organisation mit slug \"{{orgSlug}}\" wurde erstellt.<br /><br />Bitte konfigurieren Sie Ihre DNS-Registry so, dass die Subdomain der neuen Organisation auf die Hauptanwendung verweist. Andernfalls wird die Organisation nicht funktionieren.<br /><br />Hier sind nur die grundlegenden Optionen, um eine Subdomain so zu konfigurieren, dass sie auf ihre App verweist, so dass sie die Organisationsprofilseite lädt.<br /><br />SIe können es entweder mit dem A Record machen:",
"admin_org_notification_email_body_part2": "Oder der CNAME-Eintrag:",
"admin_org_notification_email_body_part3": "Sobald Sie die Subdomain konfiguriert haben, markieren Sie bitte die DNS-Konfiguration wie in den Organisationen Admin-Einstellungen.",
"admin_org_notification_email_cta": "Zu den Organisationen Admin-Einstellungen wechseln",
"org_has_been_processed": "Org wurde verarbeitet",
"org_error_processing": "Beim Verarbeiten dieser Organisation ist ein Fehler aufgetreten",
"orgs_page_description": "Eine Liste aller Organisationen. Wenn Sie eine Organisation akzeptieren, können sich alle Benutzer mit dieser E-Mail-Domain OHNE E-Mail-Überprüfung registrieren.",
"unverified": "Nicht verifiziert",
"dns_missing": "DNS fehlt",
"mark_dns_configured": "Als DNS konfiguriert kennzeichnen",
"value": "Wert",
"your_organization_updated_sucessfully": "Ihre Organisation wurde erfolgreich aktualisiert",
"team_no_event_types": "Dieses Team hat keine Ereignistypen",
"seat_options_doesnt_multiple_durations": "Platzoption unterstützt mehrere Dauern nicht",
"include_calendar_event": "Kalenderereignis hinzufügen",
"recently_added": "Kürzlich hinzugefügt",
"no_members_found": "Keine Mitglieder gefunden",
"event_setup_length_error": "Ereignis-Einrichtung: Die Dauer muss mindestens 1 Minute betragen.",
"availability_schedules": "Verfügbarkeitspläne",
"view_only_edit_availability_not_onboarded": "Dieser Benutzer hat das Onboarding noch nicht abgeschlossen. Sie können seine Verfügbarkeit erst festlegen, wenn er das Onboarding abgeschlossen hat.",
"view_only_edit_availability": "Sie sehen die Verfügbarkeit dieses Benutzers. Sie können nur Ihre eigene Verfügbarkeit bearbeiten.",
"edit_users_availability": "Benutzerverfügbarkeit bearbeiten: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Code-Zeilen über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+22 -6
View File
@@ -45,7 +45,6 @@
"invite_team_individual_segment": "Invite individual",
"invite_team_bulk_segment": "Bulk import",
"invite_team_notifcation_badge": "Inv.",
"signin_or_signup_to_accept_invite": "You need to Sign in or Sign up to see team invitation.",
"your_event_has_been_scheduled": "Your event has been scheduled",
"your_event_has_been_scheduled_recurring": "Your recurring event has been scheduled",
"accept_our_license": "Accept our license by changing the .env variable <1>NEXT_PUBLIC_LICENSE_CONSENT</1> to '{{agree}}'.",
@@ -292,9 +291,9 @@
"add_another_calendar": "Add another calendar",
"other": "Other",
"email_sign_in_subject": "Your sign-in link for {{appName}}",
"emailed_you_and_attendees": "We emailed you and the other attendees a calendar invitation with all the details.",
"emailed_you_and_attendees_recurring": "We emailed you and the other attendees a calendar invitation for the first of these recurring events.",
"emailed_you_and_any_other_attendees": "You and any other attendees have been emailed with this information.",
"emailed_you_and_attendees": "We sent an email with a calendar invitation with the details to everyone.",
"emailed_you_and_attendees_recurring": "We sent an email with a calendar invitation with the details to everyone for the first of these recurring events.",
"emailed_you_and_any_other_attendees": "We sent an email to everyone with this information.",
"needs_to_be_confirmed_or_rejected": "Your booking still needs to be confirmed or rejected.",
"needs_to_be_confirmed_or_rejected_recurring": "Your recurring meeting still needs to be confirmed or rejected.",
"user_needs_to_confirm_or_reject_booking": "{{user}} still needs to confirm or reject the booking.",
@@ -592,6 +591,8 @@
"invite_new_member": "Invite a new team member",
"invite_new_member_description": "Note: This will <1>cost an extra seat ($15/m)</1> on your subscription.",
"invite_new_team_member": "Invite someone to your team.",
"upload_csv_file": "Upload a .csv file",
"invite_via_email": "Invite via email",
"change_member_role": "Change team member role",
"disable_cal_branding": "Disable {{appName}} branding",
"disable_cal_branding_description": "Hide all {{appName}} branding from your public pages.",
@@ -974,6 +975,8 @@
"offer_seats_description": "Offer seats for booking. This automatically disables guest & opt-in bookings.",
"seats_available_one": "Seat available",
"seats_available_other": "Seats available",
"seats_nearly_full": "Seats almost full",
"seats_half_full": "Seats filling fast",
"number_of_seats": "Number of seats per booking",
"enter_number_of_seats": "Enter number of seats",
"you_can_manage_your_schedules": "You can manage your schedules on the Availability page.",
@@ -1100,7 +1103,7 @@
"reschedule_optional": "Reason for rescheduling (optional)",
"reschedule_placeholder": "Let others know why you need to reschedule",
"event_cancelled": "This event is canceled",
"emailed_information_about_cancelled_event": "We emailed you and the other attendees to let them know.",
"emailed_information_about_cancelled_event": "We sent an email to everyone to let them know.",
"this_input_will_shown_booking_this_event": "This input will be shown when booking this event",
"meeting_url_in_confirmation_email": "Meeting url is in the confirmation email",
"url_start_with_https": "URL needs to start with http:// or https://",
@@ -1455,6 +1458,7 @@
"add_limit": "Add Limit",
"team_name_required": "Team name required",
"show_attendees": "Share attendee information between guests",
"show_available_seats_count": "Show the number of available seats",
"how_booking_questions_as_variables": "How to use booking questions as variables?",
"format": "Format",
"uppercase_for_letters": "Use uppercase for all letters",
@@ -1739,7 +1743,8 @@
"show_on_booking_page": "Show on booking page",
"get_started_zapier_templates": "Get started with Zapier templates",
"team_is_unpublished": "{{team}} is unpublished",
"team_is_unpublished_description": "This {{entity}} link is currently not available. Please contact the {{entity}} owner or ask them to publish it.",
"org_is_unpublished_description": "This organization link is currently not available. Please contact the organization owner or ask them to publish it.",
"team_is_unpublished_description": "This team link is currently not available. Please contact the team owner or ask them to publish it.",
"team_member": "Team member",
"a_routing_form": "A Routing Form",
"form_description_placeholder": "Form Description",
@@ -2012,7 +2017,13 @@
"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",
"your_monthly_digest": "Your Monthly Digest",
"member_name": "Member Name",
"most_popular_events": "Most Popular Events",
"summary_of_events_for_your_team_for_the_last_30_days": "Here's your summary of popular events for your team {{teamName}} for the last 30 days",
"me": "Me",
"monthly_digest_email":"Monthly Digest Email",
"monthly_digest_email_for_teams": "Monthly digest email for teams",
"verify_team_tooltip": "Verify your team to enable sending messages to attendees",
"member_removed": "Member removed",
"my_availability": "My Availability",
@@ -2046,5 +2057,10 @@
"no_members_found": "No members found",
"event_setup_length_error":"Event Setup: The duration must be at least 1 minute.",
"availability_schedules":"Availability Schedules",
"view_only_edit_availability_not_onboarded":"This user has not completed onboarding. You will not be able to set their availability until they have completed onboarding.",
"view_only_edit_availability":"You are viewing this user's availability. You can only edit your own availability.",
"edit_users_availability":"Edit user's availability: {{username}}",
"resend_invitation": "Resend invitation",
"invitation_resent": "The invitation was resent.",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+116 -1
View File
@@ -17,9 +17,15 @@
"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",
"copy_somewhere_safe": "Guarde esta clave API en algún lugar seguro. No podrá volver a verla.",
"verify_email_email_body": "Verifique su dirección de correo electrónico al hacer clic en el botón a continuación.",
"verify_email_by_code_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 prefiera hacer clic en los botones:",
"email_verification_code": "Ingrese el código de verificación",
"email_verification_code_placeholder": "Ingrese el código de verificación enviado a su correo",
"incorrect_email_verification_code": "El código de verificación es incorrecto.",
"email_sent": "Correo electrónico enviado correctamente",
"email_not_sent": "Se produjo un error al enviar el correo electrónico",
"event_declined_subject": "Rechazado: {{title}} en {{date}}",
"event_cancelled_subject": "Cancelado: {{title}} el {{date}}",
"event_request_declined": "Su solicitud de reunión ha sido rechazada",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Un nuevo evento está esperando su aprobación",
"someone_requested_an_event": "Alguien ha solicitado programar un evento en su calendario.",
"someone_requested_password_reset": "Alguien ha solicitado un enlace para cambiar su contraseña.",
"password_reset_email_sent": "Si este correo electrónico existe en nuestro sistema, debería recibir un correo electrónico de restablecimiento.",
"password_reset_instructions": "Si usted no solicitó esto, puede ignorar este correo electrónico de forma segura y su contraseña no se cambiará.",
"event_awaiting_approval_subject": "Esperando aprobación: {{title}} en {{date}}",
"event_still_awaiting_approval": "Un evento aún está esperando su aprobación",
@@ -217,6 +224,10 @@
"already_have_an_account": "¿Ya tienes una cuenta?",
"create_account": "Crear Cuenta",
"confirm_password": "Confirmar Contraseña",
"confirm_auth_change": "Esto cambiará la forma de iniciar sesión",
"confirm_auth_email_change": "Cambiar la dirección de correo electrónico desconectará su método de autenticación actual para iniciar sesión en Cal.com. Le pediremos que verifique su nueva dirección de correo electrónico. En el futuro, se cerrará su sesión y utilizará su nueva dirección de correo electrónico para iniciar sesión en lugar de su método de autenticación actual después de configurar su contraseña siguiendo las instrucciones que se enviarán a su correo.",
"reset_your_password": "Establezca su nueva contraseña con las instrucciones enviadas a su dirección de correo electrónico.",
"email_change": "Vuelva a iniciar sesión con su nueva dirección de correo electrónico y contraseña.",
"create_your_account": "Crea tu Cuenta",
"sign_up": "Regístrate",
"youve_been_logged_out": "Has cerrado la sesión",
@@ -243,6 +254,10 @@
"all": "Todas las aplicaciones",
"yours": "Su cuenta",
"available_apps": "Aplicaciones disponibles",
"available_apps_lower_case": "Aplicaciones disponibles",
"available_apps_desc": "No tiene aplicaciones instaladas. Vea las aplicaciones populares a continuación y explore más en nuestra <1>App Store</1>",
"fixed_host_helper": "Agregue a cualquier persona que necesite asistir al evento. <1>Más información</1>",
"round_robin_helper": "Las personas del grupo se turnan y solo una persona se presentará al evento.",
"check_email_reset_password": "Revisa tu email. Te hemos enviado un enlace para restablecer tu contraseña.",
"finish": "Terminar",
"organization_general_description": "Administre los ajustes para el idioma y la zona horaria de su equipo",
@@ -251,6 +266,7 @@
"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",
"availability_settings": "Configuración de disponibilidad",
"continue_without_calendar": "Continuar sin calendario",
"connect_your_calendar": "Conecta tu calendario",
"connect_your_video_app": "Conecte sus aplicaciones favoritas",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Los enlaces de reservas grupales se pueden crear dinámicamente añadiendo varios nombres de usuario con un '+'. Ejemplo: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Permitir que los asistentes lo reserven a través de reservas dinámicas de grupo",
"dynamic_booking": "Enlaces dinámicos de grupo",
"allow_seo_indexing": "Permita que los motores de búsqueda accedan a su contenido público",
"seo_indexing": "Permitir indexación SEO",
"email": "Correo electrónico",
"email_placeholder": "nombre@ejemplo.com",
"full_name": "Nombre Completo",
@@ -406,6 +424,7 @@
"booking_requested": "Reserva solicitada",
"meeting_ended": "Reunión finalizada",
"form_submitted": "Formulario enviado",
"booking_paid": "Reserva pagada",
"event_triggers": "Activadores de Eventos",
"subscriber_url": "URL del suscriptor",
"create_new_webhook": "Crear un nuevo Webhook",
@@ -506,6 +525,7 @@
"your_name": "Tu Nombre",
"your_full_name": "Su nombre completo",
"no_name": "Sin nombre",
"enter_number_between_range": "Introduzca un número entre 1 y {{maxOccurences}}",
"email_address": "Email",
"enter_valid_email": "Ingresa un correo electrónico válido",
"location": "Ubicación",
@@ -543,6 +563,7 @@
"leave": "Abandonar",
"profile": "Perfil",
"my_team_url": "URL de Mi Equipo",
"my_teams": "Mis equipos",
"team_name": "Nombre del equipo",
"your_team_name": "Nombre de tu Equipo",
"team_updated_successfully": "Equipo Actualizado Correctamente",
@@ -570,6 +591,8 @@
"invite_new_member": "Invitar a un nuevo miembro",
"invite_new_member_description": "Nota: Esto costará <1>una plaza adicional ($15/m)</1> en su suscripción.",
"invite_new_team_member": "Invita a alguien a tu equipo.",
"upload_csv_file": "Cargar un archivo .csv",
"invite_via_email": "Invitar por correo electrónico",
"change_member_role": "Cambiar rol del miembro del equipo",
"disable_cal_branding": "Desactivar la marca de {{appName}}",
"disable_cal_branding_description": "Ocultar todas las marcas de {{appName}} de sus páginas públicas.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "El usuario necesita aceptar la invitación para ver su disponibilidad",
"set_as_away": "Activar estado Ausente",
"set_as_free": "Desactivar estado Ausente",
"toggle_away_error": "Error al actualizar el estado ausente",
"user_away": "Este usuario se encuentra Ausente.",
"user_away_description": "La persona a la que estás intentando reservar se ha marcado a sí misma como Ausente, por lo tanto, no acepta nuevas reservas por ahora.",
"meet_people_with_the_same_tokens": "Conoce personas con los mismos tokens",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Para cambiar tu correo electrónico, contraseña, habilitar la autenticación de doble factor y más, por favor visita la configuración de tu cuenta de {{provider}}.",
"signin_with_google": "Iniciar sesión con Google",
"signin_with_saml": "Iniciar sesión con SAML",
"signin_with_saml_oidc": "Inicie sesión con SAML/OIDC",
"you_will_need_to_generate": "Necesitarás generar un token de acceso desde tu antigua herramienta de programación.",
"import": "Importar",
"import_from": "Importar desde",
@@ -950,6 +975,8 @@
"offer_seats_description": "Ofrecer plazas para las reservas (desactiva las reservas de invitados y las optativas)",
"seats_available_one": "Plazas disponibles",
"seats_available_other": "Plazas disponibles",
"seats_nearly_full": "Cupos casi llenos",
"seats_half_full": "Los cupos se están copando rápido",
"number_of_seats": "Número de plazas por reserva",
"enter_number_of_seats": "Introduzca el número de plazas",
"you_can_manage_your_schedules": "Puede administrar sus horarios en la página Disponibilidad.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "¿Cómo quiere añadir {{appName}} a su sitio?",
"choose_ways_put_cal_site": "Elija una de las siguientes maneras de poner {{appName}} en su sitio.",
"setting_up_zapier": "Configurando su integración con Zapier",
"setting_up_make": "Configurando su integración Make",
"generate_api_key": "Generar clave API",
"generate_api_key_description": "Generar una clave API para usar con {{appName}} en",
"your_unique_api_key": "Su clave API única",
"copy_safe_api_key": "Copie esta clave API y guárdela en algún lugar seguro. Si pierde esta clave tendrá que generar una nueva.",
"zapier_setup_instructions": "<0>Inicie sesión en su cuenta de Zapier y cree un nuevo Zap.</0><1>Seleccione Cal.com cómo su aplicación Trigger. También elija un evento Trigger.</1><2>Seleccione su cuenta e ingrese su Clave API única.</2><3>Pruebe su Trigger.</3><4>¡Listo!</4>",
"make_setup_instructions": "<0>Vaya al <1><0>Enlace de invitación de Make</0></1> e instale la aplicación Cal.com.</0><1>Inicie sesión en su cuenta de Make y cree un nuevo escenario.</1><2>Seleccione Cal.com como su aplicación de activación. Elija también un evento de activación.</2><3>Elija su cuenta y luego ingrese su clave API única.</3><4>Pruebe su activador.</4><5>¡Ya está!</5 >",
"install_zapier_app": "Instale primero la aplicación Zapier desde la App Store.",
"install_make_app": "Instale primero la aplicación Make desde la App Store.",
"connect_apple_server": "Conectar con Apple Server",
"calendar_url": "URL del calendario",
"apple_server_generate_password": "Genere una contraseña específica de la aplicación para utilizarla con {{appName}} en",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "enviar correo electrónico a los asistentes",
"sms_attendee_action": "Enviar un SMS al asistente",
"sms_number_action": "enviar SMS a un número específico",
"send_reminder_sms": "Envíe fácilmente recordatorios de reuniones por SMS a sus asistentes",
"whatsapp_number_action": "enviar un mensaje de Whatsapp a un número específico",
"whatsapp_attendee_action": "enviar un mensae de Whatsapp al asistente",
"workflows": "Flujos de trabajo",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Error al actualizar la configuración",
"personal_cal_url": "Mi URL personal de {{appName}}",
"bio_hint": "Algunas frases sobre usted, esta información aparecerá en la página de su URL personal.",
"user_has_no_bio": "Este usuario no ha añadido una biografía todavía.",
"delete_account_modal_title": "Eliminar cuenta",
"confirm_delete_account_modal": "¿Está seguro que desea eliminar su cuenta de {{appName}}?",
"delete_my_account": "Eliminar mi cuenta",
@@ -1426,6 +1458,7 @@
"add_limit": "Agregue un límite",
"team_name_required": "Nombre de equipo requerido",
"show_attendees": "Comparta información de los asistentes entre los invitados",
"show_available_seats_count": "Mostrar el número de cupos disponibles",
"how_booking_questions_as_variables": "¿Cómo utilizar las preguntas de reserva como variables?",
"format": "Formato",
"uppercase_for_letters": "Use mayúsculas para todas las letras",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "¿Está seguro de que desea eliminar la configuración de {{connectionType}}? Los miembros de su equipo que utilicen el inicio de sesión {{connectionType}} ya no podrán acceder a Cal.com.",
"organizer_timezone": "Zona horaria del organizador",
"email_user_cta": "Ver la invitación",
"email_no_user_invite_heading_team": "Lo han invitado a unirse a un equipo en {{appName}}",
"email_no_user_invite_heading_org": "Lo han invitado a unirse a una organización en {{appName}}",
"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_team": "{{invitedBy}} lo ha invitado a unirse a su equipo \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su equipo programar reuniones sin correos electrónicos de ida y vuelta.",
"email_user_invite_subheading_org": "{{invitedBy}} lo ha invitado a unirse a su organización \"{{teamName}}\" en {{appName}}. {{appName}} es el programador de eventos que le permite a usted y a su organización programar reuniones sin el tenis del correo electrónico.",
"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",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "No se encontraron datos para el filtro seleccionado o las fechas seleccionadas.",
"acknowledge_booking_no_show_fee": "Reconozco que si no asisto a este evento, se aplicará a mi tarjeta una tarifa de {{amount, currency}} por no presentarme.",
"card_details": "Detalles de la tarjeta",
"something_went_wrong_on_our_end": "Algo salió mal por nuestra parte. Póngase en contacto con nuestro equipo de soporte y lo solucionaremos de inmediato.",
"please_provide_following_text_to_suppport": "Proporcione el siguiente texto cuando se comunique con el soporte para ayudarlo mejor",
"seats_and_no_show_fee_error": "Actualmente, no se pueden habilitar cupos ni cobrar una tarifa por no presentarse",
"complete_your_booking": "Complete su reserva",
"complete_your_booking_subject": "Complete su reserva: {{title}} el {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Abre su cuadro de diálogo Cal cuando alguien hace clic en un elemento.",
"need_help_embedding": "¿Necesita ayuda? Consulte nuestras guías para incrustar Cal en Wix, Squarespace o WordPress, consulte nuestras preguntas comunes o explore las opciones avanzadas de incrustación.",
"book_my_cal": "Reservar mi Cal",
"first_name": "Nombre",
"last_name": "Nombre",
"first_last_name": "Nombre, Apellido",
"invite_as": "Invitar como",
"form_updated_successfully": "Formulario actualizado con éxito.",
"disable_attendees_confirmation_emails": "Desactivar los correos electrónicos de confirmación predeterminados para los asistentes",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Cree su primer webhook para este tipo de evento",
"install_app_on": "Instalar aplicación en",
"create_for": "Crear para",
"currency": "Moneda",
"organization_banner_description": "Cree entornos en los que sus equipos puedan crear aplicaciones, flujos de trabajo y tipos de eventos compartidos con programación por turnos y colectiva.",
"organization_banner_title": "Gestione organizaciones con varios equipos",
"set_up_your_organization": "Configure su organización",
@@ -1888,7 +1930,7 @@
"organization_name": "Nombre de la organización",
"organization_url": "URL de la organización",
"organization_verify_header": "Verifique el correo electrónico de su organización",
"organization_verify_email_body": "Utilice el código a continuación para verificar su dirección de correo electrónico para seguir configurando su organización.",
"organization_verify_email_body": "Utilice el siguiente código para verificar su dirección de correo electrónico y continuar con la configuración de su organización.",
"additional_url_parameters": "Parámetros adicionales de URL",
"about_your_organization": "Acerca de su organización",
"about_your_organization_description": "Las organizaciones son entornos compartidos donde puede crear varios equipos con miembros, tipos de eventos, aplicaciones, flujos de trabajo compartidos y más.",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Equipo: {{teamName}}",
"insights_user_filter": "Usuario: {{userName}}",
"insights_subtitle": "Mire información de insights en todos sus eventos",
"location_options": "{{locationCount}} opciones de ubicación",
"custom_plan": "Plan personalizado",
"email_embed": "Incrustado en el correo electrónico",
"add_times_to_your_email": "Seleccione algunos horarios disponibles e incrústelos en su correo electrónico",
"select_time": "Seleccione la hora",
"select_date": "Seleccione la fecha",
"see_all_available_times": "Ver todas las horas disponibles",
"org_team_names_example": "ej. Equipo de marketing",
"org_team_names_example_1": "ej. Equipo de marketing",
"org_team_names_example_2": "ej. Equipo de ventas",
"org_team_names_example_3": "ej. Equipo de diseño",
"org_team_names_example_4": "ej. Equipo de ingeniería",
"org_team_names_example_5": "ej. Equipo de análisis de datos",
"org_max_team_warnings": "Más adelante podrá añadir más equipos.",
"what_is_this_meeting_about": "¿De qué trata esta reunión?",
"add_to_team": "Agregar al equipo",
"remove_users_from_org": "Eliminar usuarios de la organización",
"remove_users_from_org_confirm": "¿Está seguro de que desea eliminar {{userCount}} usuarios de esta organización?",
"user_has_no_schedules": "Este usuario no ha configurado ningún horario todavía",
"user_isnt_in_any_teams": "Este usuario no está en ningún equipo",
"requires_booker_email_verification": "Requiere verificación por correo electrónico de quien reserva",
"description_requires_booker_email_verification": "Para asegurar la verificación del correo electrónico de quien reserva antes de programar eventos",
"requires_confirmation_mandatory": "Los mensajes de texto solo se pueden enviar a los asistentes cuando el tipo de evento requiere confirmación.",
"kyc_verification_information": "Para garantizar la seguridad, debe verificar su {{teamOrAccount}} antes de enviar mensajes de texto a los asistentes. Comuníquese con nosotros en <a>{{supportEmail}}</a> y proporcione la siguiente información:",
"kyc_verification_documents": "<ul><li>Su {{teamOrUser}}</li><li>Para empresas: adjunte su documentación de verificación comercial</li><li>Para individuos: adjunte una identificación emitida por el gobierno</li></ul >",
"verify_team_or_account": "Verificar {{teamOrAccount}}",
"verify_account": "Verificar cuenta",
"kyc_verification": "Verificación de KYC",
"organizations": "Organizaciones",
"org_admin_other_teams": "Otros equipos",
"org_admin_other_teams_description": "Aquí puede ver los equipos dentro de su organización de los que no forma parte. Puede agregarse a ellos si es necesario.",
"no_other_teams_found": "No se encontraron otros equipos",
"no_other_teams_found_description": "No hay otros equipos en esta organización.",
"attendee_first_name_variable": "Nombre del asistente",
"attendee_last_name_variable": "Apellido del asistente",
"attendee_first_name_info": "Nombre de la persona que reserva",
"attendee_last_name_info": "Apellido de la persona que reserva",
"me": "Yo",
"verify_team_tooltip": "Verifique su equipo para activar el envío de mensajes a los asistentes",
"member_removed": "Miembro eliminado",
"my_availability": "Mi disponibilidad",
"team_availability": "Disponibilidad del equipo",
"backup_code": "Código de respaldo",
"backup_codes": "Códigos de respaldo",
"backup_code_instructions": "Cada código de respaldo se puede utilizar exactamente una vez para conceder acceso sin su autenticador.",
"backup_codes_copied": "¡Códigos de respaldo copiados!",
"incorrect_backup_code": "El código de respaldo no es correcto.",
"lost_access": "Acceso perdido",
"missing_backup_codes": "No se encontraron códigos de respaldo. Genere los códigos en su configuración.",
"admin_org_notification_email_subject": "Nueva organización creada: acción pendiente",
"hi_admin": "Hola Administrador",
"admin_org_notification_email_title": "Una organización requiere la configuración DNS",
"admin_org_notification_email_body_part1": "Se creó una organización con slug \"{{orgSlug}}\".<br /><br />Asegúrese de configurar su registro DNS para que apunte el subdominio correspondiente a la nueva organización hacia donde se ejecuta la aplicación principal. De lo contrario, la organización no funcionará.<br /><br />Estas son solo las opciones muy básicas para configurar un subdominio para que apunte a su aplicación para que cargue la página de perfil de la organización.<br /><br />Puede hacerlo ya sea con el Registro A:",
"admin_org_notification_email_body_part2": "O el registro CNAME:",
"admin_org_notification_email_body_part3": "Una vez que configure el subdominio, marque la configuración DNS como se hace en la Configuración de administrador.",
"admin_org_notification_email_cta": "Ir a la Configuración del administrador de organizaciones",
"org_has_been_processed": "Se procesó la organización",
"org_error_processing": "Ocurrió un error al procesar esta organización",
"orgs_page_description": "Una lista de todas las organizaciones. Aceptar una organización permitirá que todos los usuarios con ese dominio de correo electrónico se registren SIN verificación de correo electrónico.",
"unverified": "Sin verificar",
"dns_missing": "Falta el DNS",
"mark_dns_configured": "Marcar como DNS configurado",
"value": "Valor",
"your_organization_updated_sucessfully": "Su organization se actualizó con éxito",
"team_no_event_types": "Este equipo no tiene tipos de eventos",
"seat_options_doesnt_multiple_durations": "La opción Cupo no soporta múltiples duraciones",
"include_calendar_event": "Incluir evento del calendario",
"recently_added": "Añadido recientemente",
"no_members_found": "No se encontraron miembros",
"event_setup_length_error": "Configuración del evento: la duración debe ser de al menos 1 minuto.",
"availability_schedules": "Horarios de disponibilidad",
"view_only_edit_availability_not_onboarded": "Este usuario no ha completado la incorporación. No podrá establecer su disponibilidad hasta que haya completado la incorporación.",
"view_only_edit_availability": "Está viendo la disponibilidad de este usuario. Sólo puede editar su propia disponibilidad.",
"edit_users_availability": "Editar disponibilidad del usuario: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Agregue sus nuevas cadenas arriba ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+15 -5
View File
@@ -45,7 +45,6 @@
"invite_team_individual_segment": "Inviter une personne",
"invite_team_bulk_segment": "Importation multiple",
"invite_team_notifcation_badge": "Inv.",
"signin_or_signup_to_accept_invite": "Vous devez vous connecter ou vous inscrire pour voir l'invitation d'équipe.",
"your_event_has_been_scheduled": "Votre événement a été planifié",
"your_event_has_been_scheduled_recurring": "Votre événement récurrent a été planifié",
"accept_our_license": "Acceptez notre licence en changeant la variable .env <1>NEXT_PUBLIC_LICENSE_CONSENT</1> en « {{agree}} ».",
@@ -292,9 +291,9 @@
"add_another_calendar": "Ajouter un autre calendrier",
"other": "Autre",
"email_sign_in_subject": "Votre lien de connexion pour {{appName}}",
"emailed_you_and_attendees": "Vous et tous les autres participants avez reçu ces informations par e-mail.",
"emailed_you_and_attendees_recurring": "Vous et tous les autres participants avez reçu par e-mail les informations pour le premier de ces événements récurrents.",
"emailed_you_and_any_other_attendees": "Vous et tous les autres participants avez reçu ces informations par e-mail.",
"emailed_you_and_attendees": "Nous avons envoyé un e-mail avec une invitation de calendrier comprenant les détails à tout le monde.",
"emailed_you_and_attendees_recurring": "Nous avons envoyé un e-mail avec une invitation de calendrier comprenant les détails à tout le monde pour le premier de ces événements récurrents.",
"emailed_you_and_any_other_attendees": "Nous avons envoyé cette information à tout le monde par e-mail.",
"needs_to_be_confirmed_or_rejected": "Votre réservation doit encore être confirmée ou refusée.",
"needs_to_be_confirmed_or_rejected_recurring": "Votre rendez-vous récurrent doit encore être confirmé ou refusé.",
"user_needs_to_confirm_or_reject_booking": "{{user}} doit encore confirmer ou refuser la réservation.",
@@ -592,6 +591,8 @@
"invite_new_member": "Inviter un nouveau membre d'équipe",
"invite_new_member_description": "Remarque : cela <1>coûtera une place supplémentaire (15 $/mois)</1> sur votre abonnement.",
"invite_new_team_member": "Invitez quelqu'un à rejoindre votre équipe.",
"upload_csv_file": "Télécharger un fichier .csv",
"invite_via_email": "Inviter par e-mail",
"change_member_role": "Changer le rôle du membre de l'équipe",
"disable_cal_branding": "Désactiver les références à la marque {{appName}}",
"disable_cal_branding_description": "Supprimez toutes les références à la marque {{appName}} de vos pages publiques.",
@@ -974,6 +975,8 @@
"offer_seats_description": "Proposez des places de réservation. Cela désactive automatiquement les réservations d'invités et d'opt-in.",
"seats_available_one": "Place disponible",
"seats_available_other": "Places disponibles",
"seats_nearly_full": "Places presque toutes occupées",
"seats_half_full": "Les places partent vite",
"number_of_seats": "Nombre de places par réservation",
"enter_number_of_seats": "Saisir le nombre de sièges",
"you_can_manage_your_schedules": "Vous pouvez gérer vos disponibilités sur la page Disponibilité.",
@@ -1100,7 +1103,7 @@
"reschedule_optional": "Raison de la replanification (facultatif)",
"reschedule_placeholder": "Faites savoir aux autres pourquoi vous devez replanifier le rendez-vous.",
"event_cancelled": "Cet événement est annulé",
"emailed_information_about_cancelled_event": "Nous vous avons envoyé un e-mail à vous et aux autres participants pour les en informer.",
"emailed_information_about_cancelled_event": "Nous avons envoyé un e-mail à tout le monde pour les en informer.",
"this_input_will_shown_booking_this_event": "Ce champ sera affiché lors de la réservation de cet événement.",
"meeting_url_in_confirmation_email": "Le lien du rendez-vous est dans l'e-mail de confirmation",
"url_start_with_https": "Le lien doit commencer par http:// ou https://",
@@ -1455,6 +1458,7 @@
"add_limit": "Ajouter une limite",
"team_name_required": "Nom d'équipe requis",
"show_attendees": "Partagez les informations des participants entre les invités",
"show_available_seats_count": "Afficher le nombre de places disponibles",
"how_booking_questions_as_variables": "Comment utiliser les questions de réservation comme variables ?",
"format": "Format",
"uppercase_for_letters": "Utilisez des majuscules pour toutes les lettres.",
@@ -2012,7 +2016,13 @@
"attendee_last_name_variable": "Nom du participant",
"attendee_first_name_info": "Le prénom du participant",
"attendee_last_name_info": "Le nom de famille du participant",
"your_monthly_digest": "Votre résumé mensuel",
"member_name": "Nom du membre",
"most_popular_events": "Événements les plus populaires",
"summary_of_events_for_your_team_for_the_last_30_days": "Voici votre résumé des événements populaires pour votre équipe {{teamName}} au cours des 30 derniers jours",
"me": "Moi",
"monthly_digest_email": "E-mail de résumé mensuel",
"monthly_digest_email_for_teams": "E-mail de résumé mensuel pour les équipes",
"verify_team_tooltip": "Vérifiez votre équipe pour activer l'envoi de messages aux participants",
"member_removed": "Membre supprimé",
"my_availability": "Mes disponibilités",
@@ -210,6 +210,8 @@
"done": "Učinjeno",
"all_done": "Završeno!",
"all": "Sve",
"available_apps": "Dostupne Aplikacije",
"available_apps_lower_case": "Dostupne aplikacije",
"check_email_reset_password": "Provjerite svoju e-poštu. Poslali smo vam link za resetiranje lozinke.",
"finish": "Završi",
"few_sentences_about_yourself": "Nekoliko rečenica o sebi. Ovo će se pojaviti na vašoj osobnoj stranici.",
@@ -331,5 +333,6 @@
"dark": "Tamna",
"automatically_adjust_theme": "Automatski prilagodite temu na temelju preferencija pozvanih osoba",
"user_dynamic_booking_disabled": "Neki od korisnika u grupi trenutno su onemogućili dinamičke grupne rezervacije",
"full_name": "Puno ime",
"insights_all_org_filter": "Sve"
}
@@ -17,9 +17,15 @@
"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",
"copy_somewhere_safe": "Salva questa chiave API in un posto sicuro. Non potrai visualizzarla in seguito.",
"verify_email_email_body": "Verifica il tuo indirizzo e-mail facendo clic sul pulsante qui sotto.",
"verify_email_by_code_email_body": "Verifica il tuo indirizzo e-mail utilizzando il codice sottostante.",
"verify_email_email_link_text": "Se non ti piacciono i pulsanti, puoi usare questo link:",
"email_verification_code": "Inserisci il codice di verifica",
"email_verification_code_placeholder": "Inserisci il codice di verifica che hai ricevuto via e-mail",
"incorrect_email_verification_code": "Il codice di verifica è errato.",
"email_sent": "Email inviata",
"email_not_sent": "Si è verificato un errore durante l'invito dell'e-mail",
"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",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Un evento ricorrente è in attesa della tua approvazione",
"someone_requested_an_event": "Qualcuno ha richiesto di programmare un evento sul tuo calendario.",
"someone_requested_password_reset": "Qualcuno ha richiesto un link per cambiare la tua password.",
"password_reset_email_sent": "Se questo indirizzo e-mail esiste nel nostro sistema, riceverai un'e-mail per la reimpostazione.",
"password_reset_instructions": "Se non l'hai richiesto, puoi tranquillamente ignorare questa email e la tua password non verrà modificata.",
"event_awaiting_approval_subject": "In attesa di approvazione: {{title}} il {{date}}",
"event_still_awaiting_approval": "Un evento è ancora in attesa della tua approvazione",
@@ -217,6 +224,10 @@
"already_have_an_account": "Hai già un account?",
"create_account": "Crea Account",
"confirm_password": "Conferma password",
"confirm_auth_change": "Questo cambierà il modo il cui effettui l'accesso",
"confirm_auth_email_change": "Cambiando l'indirizzo e-mail disconnetterai il tuo metodo di autenticazione attuale che utilizzi per accedere a Cal.com. Ti verrà chiesto di verificare il tuo nuovo indirizzo e-mail. Continuando, verrai disconnesso e dovrai usare il nuovo indirizzo e-mail per accedere, al posto del tuo metodo di autenticazione attuale, dopo aver impostato la password seguendo le istruzioni che ti invieremo al tuo indirizzo e-mail.",
"reset_your_password": "Imposta la nuova password seguendo le istruzioni che ti sono state inviate via e-mail.",
"email_change": "Accedi di nuovo con il nuovo indirizzo e-mail e la nuova password.",
"create_your_account": "Crea il tuo account",
"sign_up": "Registrati",
"youve_been_logged_out": "Hai fatto il log out",
@@ -243,6 +254,10 @@
"all": "Tutte le app",
"yours": "Il tuo account",
"available_apps": "Applicazioni disponibili",
"available_apps_lower_case": "Applicazioni disponibili",
"available_apps_desc": "Non hai nessuna applicazione installata. Visualizza le applicazioni popolari qui sotto ed esplorane altre nel nostro <1>App Store</1>",
"fixed_host_helper": "Aggiungi chiunque abbia bisogno di partecipare all'evento. <1>Per saperne di più</1>",
"round_robin_helper": "Le persone nel gruppo fanno a turno e una sola persona si presenterà all'evento.",
"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 della lingua e del fuso orario per il tuo team",
@@ -251,6 +266,7 @@
"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à",
"availability_settings": "Impostazioni di disponibilità",
"continue_without_calendar": "Continua senza calendario",
"connect_your_calendar": "Collega il tuo calendario",
"connect_your_video_app": "Collega le tue applicazioni video",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "È possibile creare dinamicamente collegamenti a prenotazioni di gruppo inserendo più nomi utente separati da '+'. Esempio: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Consenti ai partecipanti di prenotare per te utilizzando le prenotazioni di gruppo dinamiche",
"dynamic_booking": "Collegamenti dinamici di gruppo",
"allow_seo_indexing": "Consenti ai motori di ricerca di accedere ai tuoi contenuti pubblici",
"seo_indexing": "Consenti l'indicizzazione SEO",
"email": "Email",
"email_placeholder": "jdoe@example.com",
"full_name": "Nome completo",
@@ -406,6 +424,7 @@
"booking_requested": "Richiesta di prenotazione inviata",
"meeting_ended": "Riunione terminata",
"form_submitted": "Modulo inviato",
"booking_paid": "Prenotazione pagata",
"event_triggers": "Attivatori Evento",
"subscriber_url": "URL abbonato",
"create_new_webhook": "Crea un nuovo webhook",
@@ -506,6 +525,7 @@
"your_name": "Il tuo nome",
"your_full_name": "Nome completo",
"no_name": "Nessun nome",
"enter_number_between_range": "Insrisci un numero compreso tra 1 e {{maxOccurences}}",
"email_address": "Indirizzo email",
"enter_valid_email": "Immettere un indirizzo e-mail valido",
"location": "Luogo",
@@ -543,6 +563,7 @@
"leave": "Abbandona",
"profile": "Profilo",
"my_team_url": "Url del mio team",
"my_teams": "I miei team",
"team_name": "Nome del team",
"your_team_name": "Nome del tuo team",
"team_updated_successfully": "Team aggiornato con successo",
@@ -570,6 +591,8 @@
"invite_new_member": "Invita un nuovo membro",
"invite_new_member_description": "Nota: Sul tuo abbonamento verrà addebitato <1>un posto aggiuntivo (15$/m)</1>.",
"invite_new_team_member": "Invita qualcuno nel tuo team.",
"upload_csv_file": "Carica un file .csv",
"invite_via_email": "Invita via e-mail",
"change_member_role": "Cambia il ruolo del membro del team",
"disable_cal_branding": "Disabilita il branding {{appName}}",
"disable_cal_branding_description": "Nascondi tutti i brand {{appName}} dalle tue pagine pubbliche.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "L'utente deve accettare l'invito per visualizzare la disponibilità",
"set_as_away": "Segnalati assente",
"set_as_free": "Disabilita lo stato \"assente\"",
"toggle_away_error": "Errore durante l'aggiornamento dello stato \"assente\"",
"user_away": "Questo utente è attualmente assente.",
"user_away_description": "La persona che stai cercando di prenotare si è segnalata assente, quindi non accetta nuove prenotazioni.",
"meet_people_with_the_same_tokens": "Incontra persone con gli stessi token",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Per modificare la tua email o la tua password, per abilitare l'autenticazione a due fattori e altro ancora, consulta le impostazioni del tuo account {{provider}}.",
"signin_with_google": "Accedi con Google",
"signin_with_saml": "Accedi con SAML",
"signin_with_saml_oidc": "Accedi con SAML/OIDC",
"you_will_need_to_generate": "Dovrai generare un token di accesso con il tuo vecchio strumento di pianificazione.",
"import": "Importa",
"import_from": "Importa da",
@@ -950,6 +975,8 @@
"offer_seats_description": "Indica i posti disponibili (ciò disabiliterà le prenotazioni ospite e le prenotazioni opt-in).",
"seats_available_one": "Posto disponibile",
"seats_available_other": "Posti disponibili",
"seats_nearly_full": "Quasi tutti i posti sono al completo",
"seats_half_full": "I posti si esauriscono in fretta",
"number_of_seats": "Numero di posti per prenotazione",
"enter_number_of_seats": "Immettere il numero di posti",
"you_can_manage_your_schedules": "Puoi gestire i tuoi programmi dalla pagina Disponibilità.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Come desideri aggiungere {{appName}} al tuo sito?",
"choose_ways_put_cal_site": "Scegli uno dei seguenti modi per inserire {{appName}} nel tuo sito.",
"setting_up_zapier": "Configurare l'integrazione con Zapier",
"setting_up_make": "Configurare l'integrazione con Make",
"generate_api_key": "Genera una chiave API",
"generate_api_key_description": "Genera una chiave API da usare con {{appName}} su",
"your_unique_api_key": "La tua chiave API univoca",
"copy_safe_api_key": "Copia questa chiave API e conservala in un posto sicuro. Se perdi la chiave, dovrai generarne una nuova.",
"zapier_setup_instructions": "<0>Accedi al tuo account Zapier e crea un nuovo Zap.</0><1>Seleziona Cal.com come app trigger. Scegli l'evento trigger.</1><2>Seleziona il tuo account e immetti la tua chiave API univoca.</2><3>Fai una prova del tuo trigger.</3><4>Fatto!</4>",
"make_setup_instructions": "<0>Segui il <1><0>link di invito Make</0></1> e installa l'applicazione Cal.com.</0><1>Accedi al tuo account Make e crea un nuovo Scenario.</1><2>Seleziona Cal.com come app trigger. Scegli l'evento trigger.</2><3>Seleziona il tuo account e immetti la tua chiave API unica.</3><4>Fai una prova del tuo trigger.</4><5>Fatto!</5>",
"install_zapier_app": "Prima è necessario installare l'app Zapier, disponibile nell'App Store.",
"install_make_app": "Prima è necessario installare l'applicazione Make, disponibile nell'App Store.",
"connect_apple_server": "Connetti al server Apple",
"calendar_url": "URL del calendario",
"apple_server_generate_password": "Genera una password specifica dell'app da usare con {{appName}} presso",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "invia e-mail ai partecipanti",
"sms_attendee_action": "Invia SMS al partecipante",
"sms_number_action": "invia SMS a un numero specifico",
"send_reminder_sms": "Invia facilmente dei promemoria di riunioni via SMS ai partecipanti",
"whatsapp_number_action": "invia un messaggio Whatsapp a un numero specifico",
"whatsapp_attendee_action": "invia un messaggio Whatsapp al partecipante",
"workflows": "Flussi di lavoro",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Errore durante l'aggiornamento delle impostazioni",
"personal_cal_url": "Il mio URL personale di {{appName}}",
"bio_hint": "Scrivi qualcosa di te. Queste informazioni appariranno nella tua pagina personale.",
"user_has_no_bio": "Questo utente non ha ancora aggiunto una biografia.",
"delete_account_modal_title": "Elimina account",
"confirm_delete_account_modal": "Eliminare il tuo account {{appName}}?",
"delete_my_account": "Elimina il mio account",
@@ -1426,6 +1458,7 @@
"add_limit": "Aggiungi limite",
"team_name_required": "Nome del team richiesto",
"show_attendees": "Condividi le informazioni dei partecipanti tra gli ospiti",
"show_available_seats_count": "Mostra il numero di posti disponibili",
"how_booking_questions_as_variables": "Come utilizzare le domande poste nella pagina di prenotazione come variabili?",
"format": "Formato",
"uppercase_for_letters": "Usa tutte lettere maiuscole",
@@ -1659,8 +1692,11 @@
"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_team": "Hai ricevuto un invito a entrare a far parte del team di {{appName}}",
"email_no_user_invite_heading_org": "Hai ricevuto un invito a entrare a far parte dell'organizzazione {{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_team": "{{invitedBy}} ti ha invitato a unirti al suo team `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e al tuo team di pianificare le riunioni senza scambiare decine di e-mail.",
"email_user_invite_subheading_org": "{{invitedBy}} ti ha invitato a unirti alla sua organizzazione `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e alla tua organizzazione di pianificare le riunioni senza scambiare 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",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Nessun dato trovato per il filtro selezionato o le date selezionate.",
"acknowledge_booking_no_show_fee": "Confermo che in caso di mia mancata partecipazione a questo evento, una penale per mancata presentazione di {{amount, currency}} verrà addebitata sulla mia carta.",
"card_details": "Dati della carta",
"something_went_wrong_on_our_end": "Si è verificato un problema dal lato nostro. Contatta il nostro team di supporto e provvederemo subito a risolverlo.",
"please_provide_following_text_to_suppport": "Fornisci il seguente testo quando contatterai il team di supporto per permeterci di aiutarti meglio",
"seats_and_no_show_fee_error": "Attualmente non è possibile abilitare i posti e addebitare la penale per mancata presentazione",
"complete_your_booking": "Completa la prenotazione",
"complete_your_booking_subject": "Completa la prenotazione: {{title}} del {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Apre la finestra di dialogo di Cal quando un utente fa clic su un elemento.",
"need_help_embedding": "Hai bisogno di aiuto? Consulta le nostre guide per integrare Cal su Wix, Squarespace o WordPress, leggi le risposte alle domande più frequenti o esplora le opzioni di incorporamento avanzate.",
"book_my_cal": "Prenota su Cal",
"first_name": "Nome",
"last_name": "Cognome",
"first_last_name": "Nome, cognome",
"invite_as": "Invita come",
"form_updated_successfully": "Modulo aggiornato correttamente.",
"disable_attendees_confirmation_emails": "Disabilita le e-mail di conferma predefinite per i partecipanti",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Crea il primo webhook per questo tipo di evento",
"install_app_on": "Installa l'app su",
"create_for": "Crea per",
"currency": "Valuta",
"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",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Utente: {{userName}}",
"insights_subtitle": "Visualizza insight sulle prenotazioni per tutti i tuoi eventi",
"location_options": "{{locationCount}} opzioni di luogo",
"custom_plan": "Piano personalizzato",
"email_embed": "Incorporamento nell'e-mail",
"add_times_to_your_email": "Seleziona alcuni orari disponibili e incorporali nella tua e-mail",
"select_time": "Seleziona l'ora",
"select_date": "Seleziona la data",
"see_all_available_times": "Vedi tutti gli orari disponibili",
"org_team_names_example": "ad es., team di marketing",
"org_team_names_example_1": "ad es., Team di marketing",
"org_team_names_example_2": "ad es., team vendite",
"org_team_names_example_3": "ad es., team di progettazione",
"org_team_names_example_4": "ad es., team di ingegneria",
"org_team_names_example_5": "ad es., team di analisi dei dati",
"org_max_team_warnings": "Sarà possibile aggiungere altri team in un secondo momento.",
"what_is_this_meeting_about": "Qual è l'oggetto della riunione?",
"add_to_team": "Aggiungi al team",
"remove_users_from_org": "Rimuovi utenti dall'organizzazione",
"remove_users_from_org_confirm": "Rimuovere {{userCount}} utenti da questa organizzazione?",
"user_has_no_schedules": "Questo utente non ha ancora impostato alcuna pianificazione",
"user_isnt_in_any_teams": "Questo utente non fa parte di nessun team",
"requires_booker_email_verification": "Richiede la verifica dell'indirizzo e-mail della persona che prenota",
"description_requires_booker_email_verification": "Per garantire la verifica dell'indirizzo e-mail della persona che prenota prima di panificare eventi",
"requires_confirmation_mandatory": "I messaggi di testo possono solo essere inviati ai partecipanti quando il tipo di evento richiede una conferma.",
"kyc_verification_information": "Per garantire la sicurezza, è necessario verificare {{teamOrAccount}} prima di inviare messaggi di testo ai partecipanti. Contattaci all'indirizzo <a>{{supportEmail}}</a> fornendo le seguenti informazioni:",
"kyc_verification_documents": "<ul><li>Il tuo {{teamOrUser}}</li><li>Per le aziende: allegare la documentazione di verifica aziendale</li><li>Per gli utenti privati: allegare un documento di identità rilasciato dal governo</li></ul>",
"verify_team_or_account": "Verifica {{teamOrAccount}}",
"verify_account": "Verifica account",
"kyc_verification": "Verifica KYC",
"organizations": "Organizzazioni",
"org_admin_other_teams": "Atri team",
"org_admin_other_teams_description": "Qui puoi vedere i team di cui non fai parte all'interno della tua organizzazione. Puoi entrare a far parte di tali team se necessario.",
"no_other_teams_found": "Nessun altro team trovato",
"no_other_teams_found_description": "Non ci sono altri team in questa organizzazione.",
"attendee_first_name_variable": "Nome del partecipante",
"attendee_last_name_variable": "Cognome del partecipante",
"attendee_first_name_info": "Nome della persona che prenota",
"attendee_last_name_info": "Cognome della persona che prenota",
"me": "Io",
"verify_team_tooltip": "Effettua la verifica del tuo team per abilitare l'invio di messaggi ai partecipanti",
"member_removed": "Membro rimosso",
"my_availability": "La mia disponibilità",
"team_availability": "La disponibilità del team",
"backup_code": "Codice di backup",
"backup_codes": "Codici di backup",
"backup_code_instructions": "Ogni codice di backup può essere utilizzato soltanto una volta per concedere l'accesso senza l'autenticatore.",
"backup_codes_copied": "Codici di backup copiati!",
"incorrect_backup_code": "Il codice di backup è errato.",
"lost_access": "Accesso perso",
"missing_backup_codes": "Nessun codice di backup trovato. Puoi generarli nelle impostazioni.",
"admin_org_notification_email_subject": "Nuova organizzazione creata: azione in sospeso",
"hi_admin": "Ciao amministratore",
"admin_org_notification_email_title": "Un'organizzazione richiede la configurazione DNS",
"admin_org_notification_email_body_part1": "È stata creata un'organizzazione con lo slug \"{{orgSlug}}\".<br /><br />Assicurati di configurare il registro DNS in modo che il sottodominio corrispondente alla nuova organizzazione punti verso dov'è eseguita l'applicazione principale, altrimenti l'organizzazione non funzionerà.<br /><br />Ecco solo alcune opzioni molto basilari per configurare un sottodominio in modo che punti alla propria app e carichi la pagina del profilo dell'organizzazione.<br /><br />È possibile farlo utilizzando il record A:",
"admin_org_notification_email_body_part2": "O il record CNAME:",
"admin_org_notification_email_body_part3": "Dopo aver configurato il sottodominio, contrassegnare la configurazione del DNS come completata nelle impostazioni di amministrazione dell'organizzazione.",
"admin_org_notification_email_cta": "Vai alle impostazioni di amministrazione dell'organizzazione",
"org_has_been_processed": "Organizzazione elaborata",
"org_error_processing": "Si è verificato un errore durante l'elaborazione di questa organizzazione",
"orgs_page_description": "Un elenco di tutte le organizzazioni. Accettando un'organizzazione, tutti gli utenti con il rispettivo dominio e-mail potranno registrarsi SENZA verificare l'indirizzo e-mail.",
"unverified": "Non verificato",
"dns_missing": "DNS mancante",
"mark_dns_configured": "Contrassegna DNS come configurato",
"value": "Valore",
"your_organization_updated_sucessfully": "L'organizzazione è stata aggiornata correttamente",
"team_no_event_types": "Questo team non ha nessun tipo di evento",
"seat_options_doesnt_multiple_durations": "L'opzione di prenotazione dei posti non supporta durate multiple",
"include_calendar_event": "Includi evento del calendario",
"recently_added": "Aggiunti di recente",
"no_members_found": "Nessun membro trovato",
"event_setup_length_error": "Impostazione evento: la durata deve essere di almeno 1 minuto.",
"availability_schedules": "Calendario disponibilità",
"view_only_edit_availability_not_onboarded": "Questo utente non ha completato l'onboarding. Non sarai in grado di impostare la sua disponibilità fino a quando non avrà completato l'onboarding.",
"view_only_edit_availability": "Stai visualizzando la disponibilità di questo utente. Puoi solo modificare la tua disponibilità.",
"edit_users_availability": "Modifica la disponibilità dell'utente: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi le tue nuove stringhe qui sopra ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "メール配信とカレンダー通知が確実に機能するようにするには、メールアドレスをご確認ください。",
"verify_email_email_header": "メールアドレスをご確認ください",
"verify_email_email_button": "メールを確認する",
"copy_somewhere_safe": "この API キーを安全な場所に保存してください。再度表示することはできません。",
"verify_email_email_body": "以下のボタンをクリックして、メールアドレスをご確認ください。",
"verify_email_by_code_email_body": "以下のコードを使って、メールアドレスを確認してください。",
"verify_email_email_link_text": "ボタンをクリックしたくない場合には、こちらのリンクをご利用ください。",
"email_verification_code": "確認コードを入力します",
"email_verification_code_placeholder": "メールに送信された確認コードを入力します",
"incorrect_email_verification_code": "確認コードが正しくありません。",
"email_sent": "メールが正常に送信されました",
"email_not_sent": "メール送信中にエラーが発生しました",
"event_declined_subject": "却下: {{title}} {{date}}",
"event_cancelled_subject": "{{date}} に {{title}} がキャンセルされました",
"event_request_declined": "イベントのリクエストが拒否されました",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "繰り返しイベントはあなたの承認待ちです",
"someone_requested_an_event": "別のユーザーがあなたのカレンダーにイベントを予定するリクエストしています。",
"someone_requested_password_reset": "別のユーザーがあなたのパスワードを変更するためのリンクをリクエストしています。",
"password_reset_email_sent": "このメールがシステムに存在する場合は、リセットメールを受信するはずです。",
"password_reset_instructions": "このリクエストをしていない場合は、このメールを無視しても大丈夫です。パスワードも変更されません。",
"event_awaiting_approval_subject": "承認を待っています: {{date}} の {{title}}",
"event_still_awaiting_approval": "イベントはまだあなたの承認待ちです",
@@ -217,6 +224,10 @@
"already_have_an_account": "既にアカウントをお持ちですか?",
"create_account": "アカウントを作成",
"confirm_password": "パスワードを確認",
"confirm_auth_change": "これによりログイン方法が変わります",
"confirm_auth_email_change": "メールアドレスを変更すると、Cal.com にログインするための現在の認証方法は解除されます。新しいメールアドレスの確認をお願いいたします。ログアウトした後は、メールに送信された手順に従ってパスワードを設定した後、現在の認証方法の代わりに新しいメールアドレスを使ってログインします。",
"reset_your_password": "メールアドレスに送信された手順に従って新しいパスワードを設定します。",
"email_change": "新しいメールアドレスとパスワードを使ってログインし直します。",
"create_your_account": "アカウントを作成",
"sign_up": "新規登録",
"youve_been_logged_out": "ログアウトしました",
@@ -243,6 +254,10 @@
"all": "すべて",
"yours": "ご利用のアカウント",
"available_apps": "利用可能なアプリ",
"available_apps_lower_case": "利用できるアプリ",
"available_apps_desc": "インストールされているアプリがありません。以下で人気アプリを確認して、さらに <1>App Store</1> でご覧ください",
"fixed_host_helper": "イベントに出席する必要がある人を追加します。<1>さらに詳しく</1>",
"round_robin_helper": "グループの人々は順番に交代し、イベントには1人だけが出席します。",
"check_email_reset_password": "メールをご確認ください。パスワードをリセットするためのリンクを送信しました。",
"finish": "完了",
"organization_general_description": "チームの言語とタイムゾーンの設定を管理します",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "最後に、短い自己紹介と写真があれば、予約してもらったり、誰と予約しているのかを知らせるのに役立ちます。",
"set_availability_instructions": "定期的に利用できる時間の範囲を定義します。後でこれらをさらに作成し、別のカレンダーに割り当てることができます。",
"set_availability": "利用可否の設定",
"availability_settings": "利用できる設定",
"continue_without_calendar": "カレンダーなしで続行",
"connect_your_calendar": "カレンダーに接続",
"connect_your_video_app": "ビデオアプリを接続",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "\"+\" を使って複数のユーザー名を追加することで動的に作成できるグループ予約リンク。例: \"{{appName}}/bailey+peer\"",
"allow_dynamic_booking": "出席者が動的なグループ予約を通じてあなたを予約できるようにする",
"dynamic_booking": "ダイナミックグループリンク",
"allow_seo_indexing": "検索エンジンが公開コンテンツにアクセスできるようにする",
"seo_indexing": "SEO インデックス作成を許可",
"email": "Eメールアドレス",
"email_placeholder": "jdoe@example.com",
"full_name": "フルネーム",
@@ -406,6 +424,7 @@
"booking_requested": "予約がリクエストされました",
"meeting_ended": "ミーティングが終了しました",
"form_submitted": "フォームが送信されました",
"booking_paid": "予約の支払いが済みました",
"event_triggers": "イベントトリガー",
"subscriber_url": "登録者の URL",
"create_new_webhook": "新しいウェブフックを作成",
@@ -506,6 +525,7 @@
"your_name": "あなたの名前",
"your_full_name": "あなたのフルネーム",
"no_name": "名前がありません",
"enter_number_between_range": "1 から {{maxOccurences}} の数字を入力してください",
"email_address": "メールアドレス",
"enter_valid_email": "有効なメールアドレスを入力してください",
"location": "所在地",
@@ -543,6 +563,7 @@
"leave": "退出",
"profile": "プロフィール",
"my_team_url": "チームの URL",
"my_teams": "マイチーム",
"team_name": "チームの名前",
"your_team_name": "チーム名",
"team_updated_successfully": "チームが正常に更新されました",
@@ -570,6 +591,8 @@
"invite_new_member": "新しいチームメンバーを招待",
"invite_new_member_description": "注: これにより、サブスクリプションに<1>追加の座席料金 (15 米ドル/メンバー) が加算されます。</1>",
"invite_new_team_member": "チームに誰かを招待する。",
"upload_csv_file": ".csv ファイルをアップロード",
"invite_via_email": "メールで招待",
"change_member_role": "チームメンバーの役割を変更する",
"disable_cal_branding": "{{appName}} のブランディングを無効化",
"disable_cal_branding_description": "公開ページに表示される {{appName}} のブランディングをすべて非表示にする。",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "状態を表示するには、招待を承認する必要があります",
"set_as_away": "自分を離席中に設定する",
"set_as_free": "離席中状態を無効化する",
"toggle_away_error": "離席中状態の更新中にエラーが発生しました",
"user_away": "このユーザーは現在離席中です。",
"user_away_description": "あなたが予約しようとしているユーザーは離席中です。そのため、新しい予約を承認することができません。",
"meet_people_with_the_same_tokens": "同じトークンを持っているユーザーに会う",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "メールアドレスやパスワードを変更したり、二段階認証を有効にしたりするには、{{provider}} のアカウント設定をご確認ください。",
"signin_with_google": "Google アカウントを使用してサインイン",
"signin_with_saml": "SAML を使用してサインイン",
"signin_with_saml_oidc": "SAML/OIDCでサインイン",
"you_will_need_to_generate": "従来のスケジュールツールからアクセストークンを生成する必要があります。",
"import": "インポートする",
"import_from": "インポート元",
@@ -950,6 +975,8 @@
"offer_seats_description": "予約可能な座席を設定します。これにより、ゲストおよびオプトイン予約は自動的に無効化されます。",
"seats_available_one": "座席あり",
"seats_available_other": "空席あり",
"seats_nearly_full": "座席はほとんど満員です",
"seats_half_full": "座席がすばやく埋まりつつあります",
"number_of_seats": "1予約あたりの座席数",
"enter_number_of_seats": "座席数を入力",
"you_can_manage_your_schedules": "スケジュール管理は、「空き状況」ページで行えます。",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "{{appName}} をどうやってあなたのサイトに追加しますか?",
"choose_ways_put_cal_site": "サイトに {{appName}} を設置する方法を、次の中から 1 つ選んでください。",
"setting_up_zapier": "Zapier 連携の設定",
"setting_up_make": "Make 連携の設定",
"generate_api_key": "API キーを生成",
"generate_api_key_description": "以下より {{appName}} で使用する API キーを生成する: ",
"your_unique_api_key": "あなた専用の API キー",
"copy_safe_api_key": "この API キーをコピーして安全な場所に保存してください。このキーを紛失した場合は、新しいキーを生成する必要があります。",
"zapier_setup_instructions": "<0>Zapier アカウントにログインし、新しい Zap を作成します。</0><1>Cal.com をトリガーアプリとして選択します。また、トリガーイベントも選択します。</1><2>アカウントを選択し、あなた専用の API キーを入力します。</2><3>トリガーをテストします。</3><4>これで設定は完了です!</4>",
"make_setup_instructions": "<0><1><0>Make の招待リンク</0></1>に移動して、Cal.com アプリをインストールします。</0><1>Make アカウントにログインして、新しいシナリオ作成します。</1><2>Cal.com をトリガーアプリとして選択します。またトリガーイベントを選びます。</2><3>アカウントを選んでから、あなた専用のAPIキーを入力します。</3><4>トリガーをテストします。</4><5>設定完了!</5>",
"install_zapier_app": "まず、アプリストアで Zapier アプリをインストールしてください。",
"install_make_app": "まず、アプリストアで Make アプリをインストールしてください。",
"connect_apple_server": "Apple のサーバーに接続",
"calendar_url": "カレンダーの URL",
"apple_server_generate_password": "以下で {{appName}} で使用するアプリ固有のパスワードを生成しましょう: ",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "出席者にメールを送る",
"sms_attendee_action": "出席者に SMS を送信する",
"sms_number_action": "特定の番号に SMS を送信",
"send_reminder_sms": "SMS で簡単にミーティングのリマインダーを送信します",
"whatsapp_number_action": "特定の番号に Whatsapp メッセージを送信",
"whatsapp_attendee_action": "出席者に Whatsapp メッセージを送信",
"workflows": "ワークフロー",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "設定の更新中にエラーが発生しました",
"personal_cal_url": "私の個人 {{appName}} URL",
"bio_hint": "あなたに関する簡潔な説明。これはあなたの個人 URL ページに表示されます。",
"user_has_no_bio": "このユーザーはまだ経歴を追加していません。",
"delete_account_modal_title": "アカウントを削除する",
"confirm_delete_account_modal": "{{appName}} アカウントを削除してもよろしいですか?",
"delete_my_account": "アカウントを削除する",
@@ -1426,6 +1458,7 @@
"add_limit": "上限を追加する",
"team_name_required": "チーム名が必要です",
"show_attendees": "ゲスト間で出席者情報を共有する",
"show_available_seats_count": "空席数を表示",
"how_booking_questions_as_variables": "予約時の質問を変数として使うにはどうすればいいですか?",
"format": "書式",
"uppercase_for_letters": "すべての文字に大文字を使用する",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "{{connectionType}} の構成を削除してもよろしいですか?{{connectionType}} でのログインを使用しているチームメンバーは、Cal.com にアクセスできなくなります。",
"organizer_timezone": "主催者のタイムゾーン",
"email_user_cta": "招待を表示",
"email_no_user_invite_heading_team": "{{appName}} チームに参加するよう招待されました",
"email_no_user_invite_heading_org": "{{appName}} 組織に参加するよう招待されました",
"email_no_user_invite_subheading": "{{invitedBy}} は {{appName}} のチームに参加するようあなたを招待しました。{{appName}} は、イベント調整スケジューラーです。チームと延々とメールのやりとりをすることなくミーティングのスケジュール設定を行うことができます。",
"email_user_invite_subheading_team": "{{invitedBy}}から{{appName}}の「{{teamName}}」に参加するよう招待されました。{{appName}}はイベント調整スケジューラーで、チーム内で延々とメールのやりとりをすることなく、ミーティングのスケジュールを設定できます。",
"email_user_invite_subheading_org": "{{invitedBy}} は {{appName}} の組織の「{{teamName}}」に参加するようあなたを招待しました。{{appName}} はイベント調整スケジューラーで、組織内で延々とメールのやりとりをすることなく、ミーティングのスケジュールを設定できます。",
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐに {{entity}} のストレスフリーなスケジュール設定をお楽しみいただけます。",
"email_no_user_step_one": "ユーザー名を選択",
"email_no_user_step_two": "カレンダーアカウントを接続",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "選択したフィルターまたは日付のデータが見つかりませんでした。",
"acknowledge_booking_no_show_fee": "このイベントに出席しなかった場合、不参加費用として {{amount, currency}} が私のカードに請求されることに同意します。",
"card_details": "カードの詳細",
"something_went_wrong_on_our_end": "こちらで問題が発生しました。サポートチームにお問い合わせいただければ、直ちに問題を解決いたします。",
"please_provide_following_text_to_suppport": "サポートにお問い合わせいただく際に次のテキストをご提供いただければ、解決に役立ちます。",
"seats_and_no_show_fee_error": "現在、座席の有効化と不参加費用の請求はできません",
"complete_your_booking": "予約を完了する",
"complete_your_booking_subject": "次の予約を完了する: {{date}} の {{title}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "誰かが要素をクリックしたときに Cal ダイアログを開きます。",
"need_help_embedding": "サポートが必要ですか?Cal を Wix や Squarespace、WordPress に埋め込むためのガイドを読んだり、よくある質問をチェックしたり、高度な埋め込みオプションを試したりしてみてください。",
"book_my_cal": "Cal で予約",
"first_name": "名",
"last_name": "姓",
"first_last_name": "名、姓",
"invite_as": "次の役割で招待",
"form_updated_successfully": "フォームは正常に更新されました。",
"disable_attendees_confirmation_emails": "出席者へのデフォルトの確認メールを無効にする",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "このイベントの種類の最初の Webhook を作成",
"install_app_on": "次のアカウントにアプリをインストール",
"create_for": "作成対象",
"currency": "通貨",
"organization_banner_description": "チームがラウンドロビンスケジューリングや一括スケジューリングを活用して、共有アプリ、ワークフロー、イベントの種類を作成できる環境を作成します。",
"organization_banner_title": "複数のチームを持つ組織を管理する",
"set_up_your_organization": "組織をセットアップする",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "チーム: {{teamName}}",
"insights_user_filter": "ユーザー: {{userName}}",
"insights_subtitle": "イベント全体での予約に関する Insights を表示する",
"location_options": "{{locationCount}} ヵ所の場所のオプション",
"custom_plan": "カスタムプラン",
"email_embed": "メールの埋め込み",
"add_times_to_your_email": "出席できる時間帯をいくつか選んで、メールに埋め込みます",
"select_time": "時間帯を選ぶ",
"select_date": "日付を選ぶ",
"see_all_available_times": "出席できる時間帯をすべて表示",
"org_team_names_example": "例:マーケティングチーム",
"org_team_names_example_1": "例:マーケティングチーム",
"org_team_names_example_2": "例:営業チーム",
"org_team_names_example_3": "例:デザインチーム",
"org_team_names_example_4": "例:エンジニアリングチーム",
"org_team_names_example_5": "例:データ分析チーム",
"org_max_team_warnings": "チームはあとでさらに追加できます。",
"what_is_this_meeting_about": "このミーティングの内容は?",
"add_to_team": "チームに追加",
"remove_users_from_org": "組織からユーザーを削除",
"remove_users_from_org_confirm": "この組織から {{userCount}} 人のユーザーを削除しますか?",
"user_has_no_schedules": "このユーザーはまだスケジュールを設定していません",
"user_isnt_in_any_teams": "このユーザーはどのチームにも所属していません",
"requires_booker_email_verification": "予約者のメール確認が必要です",
"description_requires_booker_email_verification": "イベントをスケジュール設定する前に、予約者のメールを確認しておくため",
"requires_confirmation_mandatory": "イベントタイプが確認を必要とする場合にのみ、出席者にテキストメッセージが送信されることがあります。",
"kyc_verification_information": "セキュリティを確保するため、出席者にテキストメッセージを送信する前に {{teamOrAccount}} を確認する必要があります。<a>{{supportEmail}}</a> まで連絡して、以下の情報をご提供ください:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>企業の場合:企業確認書類を添付してください</li><li>個人の場合:政府発行の身分証明書を添付してください</li></ul>",
"verify_team_or_account": "{{teamOrAccount}}を確認",
"verify_account": "アカウントを確認",
"kyc_verification": "本人確認",
"organizations": "組織",
"org_admin_other_teams": "他のチーム",
"org_admin_other_teams_description": "こちらでは、組織内であなたが所属していないチームを確認できます。必要なら、これらのチームに自分自身を追加することができます。",
"no_other_teams_found": "他のチームは見つかりません",
"no_other_teams_found_description": "この組織には他のチームはありません。",
"attendee_first_name_variable": "出席者の名",
"attendee_last_name_variable": "出席者の姓",
"attendee_first_name_info": "予約者の名",
"attendee_last_name_info": "予約者の姓",
"me": "私",
"verify_team_tooltip": "出席者へのメッセージ送信ができるようにするには、チームを確認してください",
"member_removed": "メンバーが削除されました",
"my_availability": "私の空き状況",
"team_availability": "チームの空き状況",
"backup_code": "バックアップコード",
"backup_codes": "バックアップコード",
"backup_code_instructions": "各バックアップコードが使えるのは1回ずつで、認証ソフトを使わずにアクセスを許可します。",
"backup_codes_copied": "バックアップコードがコピーされました!",
"incorrect_backup_code": "バックアップコードが正しくありません。",
"lost_access": "アクセスが失われました",
"missing_backup_codes": "バックアップコードが見つかりません。設定でバックアップコードを生成してください。",
"admin_org_notification_email_subject": "新しい組織が作成されました:アクションは保留中です",
"hi_admin": "管理者様",
"admin_org_notification_email_title": "組織には DNS 設定が必要です",
"admin_org_notification_email_body_part1": "スラッグ「{{orgSlug}}」を持つ組織が作成されました。<br /><br />新しい組織に対応するサブドメインが必ずメインアプリを実行する場所を指すように DNS 登録を設定してください。そうでなければ、組織は機能しません。<br /><br />こちらはサブドメインが組織のアプリを指し示し、組織のプロフィールページを読み込むように設定するためのごく基本的なオプションです。<br /><br />これは次のいずれかで設定できます。A レコード:",
"admin_org_notification_email_body_part2": "または CNAMEレコード:",
"admin_org_notification_email_body_part3": "サブドメインを設定したら、組織の管理設定で DNS 設定を完了とマークしてください。",
"admin_org_notification_email_cta": "組織管理者設定へ移動",
"org_has_been_processed": "組織が処理されました",
"org_error_processing": "この組織の処理中にエラーが発生しました",
"orgs_page_description": "全組織の一覧です。組織を受け入れると、そのメールドメインを持つすべてのユーザーがメール確認なしでサインアップできるようになります。",
"unverified": "未確認",
"dns_missing": "DNS が見つかりません",
"mark_dns_configured": "DNS を設定済みとマークしました",
"value": "値",
"your_organization_updated_sucessfully": "組織は正常にアップデートされました",
"team_no_event_types": "このチームにはイベントタイプはありません",
"seat_options_doesnt_multiple_durations": "座席オプションは複数の期間をサポートしていません",
"include_calendar_event": "カレンダーのイベントを含める",
"recently_added": "最近追加されました",
"no_members_found": "メンバーが見つかりません",
"event_setup_length_error": "イベント設定:時間は 1 分以上でなくてはいけません。",
"availability_schedules": "空き状況一覧",
"view_only_edit_availability_not_onboarded": "このユーザーはオンボーディングを完了していません。オンボーディングを完了するまで、ユーザーの空き状況は設定できません。",
"view_only_edit_availability": "このユーザーの空き状況を表示しています。編集できるのは自分の空き状況だけです。",
"edit_users_availability": "ユーザーの空き状況を編集:{{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ この上に新しい文字列を追加してください ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "이메일 및 일정을 가능한 한 차질 없이 보내드릴 수 있도록 이메일 주소를 인증하세요.",
"verify_email_email_header": "이메일 주소 인증",
"verify_email_email_button": "이메일 인증",
"copy_somewhere_safe": "이 API 키를 안전한 곳에 보관하세요. 이 키는 다시 볼 수 없게 됩니다.",
"verify_email_email_body": "아래 버튼을 클릭하여 이메일 주소를 인증하세요.",
"verify_email_by_code_email_body": "아래 코드를 사용하여 이메일 주소를 인증하세요.",
"verify_email_email_link_text": "버튼 클릭이 마음에 들지 않는 경우 다음 링크를 사용하세요.",
"email_verification_code": "인증 코드 입력",
"email_verification_code_placeholder": "메일로 전송된 인증번호를 입력하세요",
"incorrect_email_verification_code": "인증 코드가 올바르지 않습니다.",
"email_sent": "이메일이 성공적으로 전송되었습니다",
"email_not_sent": "이메일을 보내는 중 오류가 발생했습니다",
"event_declined_subject": "거절됨: {{date}} {{title}}",
"event_cancelled_subject": "취소됨: {{title}}, 날짜 {{date}}",
"event_request_declined": "회의 요청이 거절되었습니다.",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "되풀이 이벤트가 승인을 기다리고 있습니다",
"someone_requested_an_event": "누군가 귀하의 캘린더에 일정을 예약하도록 요청했습니다.",
"someone_requested_password_reset": "누군가 귀하의 비밀번호 변경을 위한 링크를 요청했습니다.",
"password_reset_email_sent": "이 이메일이 당사 시스템에 존재하는 경우, 재설정 이메일을 받게 됩니다.",
"password_reset_instructions": "요청하지 않으셨다면 이 이메일을 무시하십시오. 비밀번호는 변경되지 않습니다.",
"event_awaiting_approval_subject": "승인을 기다리고 있습니다: {{date}} {{title}}",
"event_still_awaiting_approval": "이벤트가 아직 승인을 기다리고 있습니다.",
@@ -217,6 +224,10 @@
"already_have_an_account": "이미 계정이 있으신가요?",
"create_account": "계정 만들기",
"confirm_password": "비밀번호 확인",
"confirm_auth_change": "이것으로 로그인 방식이 변경됩니다",
"confirm_auth_email_change": "이메일 주소를 변경하면 Cal.com에 로그인하는 기존 인증 방법이 연결 해제됩니다. 새 이메일 주소를 인증하라는 메시지가 표시됩니다. 앞으로는 메일로 전송되는 지침에 따라 비밀번호를 설정한 후 로그아웃하고 기존 인증 방법 대신 새 이메일 주소를 사용하여 로그인하게 됩니다.",
"reset_your_password": "이메일 주소로 전송된 지침에 따라 새 비밀번호를 설정하십시오.",
"email_change": "새 이메일 주소와 비밀번호로 다시 로그인하십시오.",
"create_your_account": "계정 만들기",
"sign_up": "가입하기",
"youve_been_logged_out": "로그아웃 되었습니다.",
@@ -243,6 +254,10 @@
"all": "모두",
"yours": "사용자 계정",
"available_apps": "사용 가능한 앱",
"available_apps_lower_case": "사용 가능한 앱",
"available_apps_desc": "설치된 앱이 없습니다. 아래에서 인기 앱을 확인하고 <1>App Store</1>에서 더 많은 앱을 탐색해 보세요",
"fixed_host_helper": "이벤트에 참석해야 하는 인원을 추가하세요. <1>자세히 알아보기</1>",
"round_robin_helper": "그룹의 인원들은 차례로 돌아가며 한 명만 이벤트에 참석하게 됩니다.",
"check_email_reset_password": "이메일을 확인하세요. 비밀번호 재설정을 위한 링크를 보냈습니다.",
"finish": "끝",
"organization_general_description": "팀 언어 및 시간대 설정 관리",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "마지막으로, 예약에 도움이 되고 사람들이 본인에 대해 알 수 있도록 본인에 대한 간단한 소개와 사진을 올려주세요.",
"set_availability_instructions": "주기적으로 시간이 되는 때가 언제인지 알려주세요. 나중에 더 추가할 수 있습니다.",
"set_availability": "언제 여유가 있는지 설정하세요.",
"availability_settings": "사용 가능한 설정",
"continue_without_calendar": "캘린더 없이 계속하기",
"connect_your_calendar": "캘린더 연결하기",
"connect_your_video_app": "비디오 앱 연결",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "'+' 기호로 여러 사용자 이름을 추가하여 동적으로 생성할 수 있는 그룹 예약 링크. 예: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "참석자가 동적 그룹 예약을 통해 귀하를 예약하도록 허용",
"dynamic_booking": "동적 그룹 링크",
"allow_seo_indexing": "검색 엔진이 공개 콘텐츠에 액세스하도록 허용",
"seo_indexing": "SEO 인덱싱 허용",
"email": "이메일",
"email_placeholder": "jdoe@example.com",
"full_name": "이름",
@@ -406,6 +424,7 @@
"booking_requested": "예약 요청됨",
"meeting_ended": "회의 종료됨",
"form_submitted": "양식 제출됨",
"booking_paid": "예약 결제됨",
"event_triggers": "이벤트 트리거",
"subscriber_url": "구독자 URL",
"create_new_webhook": "새 웹훅 만들기",
@@ -506,6 +525,7 @@
"your_name": "당신의 이름",
"your_full_name": "전체 이름",
"no_name": "이름 없음",
"enter_number_between_range": "1에서 {{maxOccurences}} 사이의 숫자를 입력하세요",
"email_address": "이메일 주소",
"enter_valid_email": "유효한 이메일을 입력하세요",
"location": "위치",
@@ -543,6 +563,7 @@
"leave": "떠나기",
"profile": "프로필",
"my_team_url": "우리팀 URL",
"my_teams": "내 팀",
"team_name": "팀 이름",
"your_team_name": "팀 이름",
"team_updated_successfully": "팀이 성공적으로 업데이트되었습니다.",
@@ -570,6 +591,8 @@
"invite_new_member": "새 팀원 초대",
"invite_new_member_description": "참고: 이로 인해 해당 구독에 <1>추가 시트 비용($15/m)</1>이 발생합니다.",
"invite_new_team_member": "누군가를 팀에 초대하기",
"upload_csv_file": ".csv 파일 업로드",
"invite_via_email": "이메일을 통한 초대",
"change_member_role": "팀원 역할 변경",
"disable_cal_branding": "{{appName}} 브랜딩 비활성화",
"disable_cal_branding_description": "공개 페이지에서 모든 {{appName}} 브랜딩 숨기기",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "사용 가능 여부를 보려면 사용자가 초대를 수락해야 합니다",
"set_as_away": "본인을 공석으로 설정",
"set_as_free": "공석 상태 비활성화",
"toggle_away_error": "부재중 상태를 업데이트하는 중 오류가 발생했습니다",
"user_away": "이 사용자는 현재 자리를 비웠습니다.",
"user_away_description": "예약하려는 사람이 자신을 공석으로 설정했기 때문에 새 예약을 받고 있지 않습니다.",
"meet_people_with_the_same_tokens": "같은 토큰을 가진 사람들을 만나세요",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "이메일, 비밀번호를 변경하고 이중 인증을 활성화하려면 {{provider}} 계정 설정을 방문하세요.",
"signin_with_google": "Google로 로그인",
"signin_with_saml": "SAML로 로그인",
"signin_with_saml_oidc": "SAML/OIDC로 로그인",
"you_will_need_to_generate": "이전 일정 관리 도구에서 액세스 토큰을 생성해야 합니다.",
"import": "가져오기",
"import_from": "가져오기 위치",
@@ -950,6 +975,8 @@
"offer_seats_description": "예약에 좌석 제공(게스트를 비활성화하고 예약을 선택함)",
"seats_available_one": "사용 가능한 좌석",
"seats_available_other": "사용 가능한 좌석",
"seats_nearly_full": "좌석이 거의 꽉 찼습니다",
"seats_half_full": "좌석이 빠르게 채워지는 중",
"number_of_seats": "예약당 좌석 수",
"enter_number_of_seats": "좌석 수 입력",
"you_can_manage_your_schedules": "가용성 페이지에서 자신의 일정을 관리할 수 있습니다.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "귀하의 사이트에 {{appName}}을 어떻게 추가하시겠습니까?",
"choose_ways_put_cal_site": "귀하의 사이트에 {{appName}}을 추가하는 다음 방법 중 하나를 선택하십시오.",
"setting_up_zapier": "Zapier 통합을 설정하는 중",
"setting_up_make": "Make 통합을 설정하는 중",
"generate_api_key": "API 키 생성",
"generate_api_key_description": "{{appName}}에서 사용할 API 키 생성 위치",
"your_unique_api_key": "귀하의 고유 API 키",
"copy_safe_api_key": "이 API 키를 복사하여 안전한 곳에 보관하십시오. 이 키를 분실한 경우 새 키를 생성해야 합니다.",
"zapier_setup_instructions": "<0>Zapier 계정에 로그인하고 새 Zap을 만듭니다.</0><1>Cal.com을 트리거 앱으로 선택합니다. 또한 트리거 이벤트를 선택합니다.</1><2>계정을 선택한 후 고유 API 키를 입력합니다.</2><3>트리거를 테스트합니다.</3><4>설정이 완료되었습니다!</4 >",
"make_setup_instructions": "<0><1><0>초대 링크 만들기</0></1>로 이동하여 Cal.com 앱을 설치합니다.</0><1>Make 계정에 로그인하고 새 시나리오를 만듭니다.</1><2>Cal.com을 Trigger 앱으로 선택합니다. 트리거 이벤트도 선택합니다.</2><3>계정을 선택한 후 고유 API 키를 입력합니다.</3><4>트리거를 테스트합니다.</4><5>이제 준비되었습니다!</5 >",
"install_zapier_app": "먼저 앱 스토어에서 Zapier 앱을 설치하십시오.",
"install_make_app": "먼저 앱 스토어에서 Make 앱을 설치하십시오.",
"connect_apple_server": "Apple 서버에 연결하기",
"calendar_url": "캘린더 URL",
"apple_server_generate_password": "{{appName}}에서 사용할 앱 비밀번호 생성:",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "참석자들에게 이메일 전송",
"sms_attendee_action": "참석자에게 SMS 발송",
"sms_number_action": "특정 번호로 SMS 발송",
"send_reminder_sms": "SMS를 통해 참석자에게 회의 알림을 쉽게 보낼 수 있습니다",
"whatsapp_number_action": "특정 번호로 Whatsapp 발송",
"whatsapp_attendee_action": "참석자에게 Whatsapp 발송",
"workflows": "워크플로",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "설정 업데이트 중 오류 발생",
"personal_cal_url": "내 개인 {{appName}} URL",
"bio_hint": "자신에 대해 몇 마디를 써보세요. 개인 URL 페이지에 보이는 내용입니다.",
"user_has_no_bio": "이 사용자는 아직 사용자 정보를 추가하지 않았습니다.",
"delete_account_modal_title": "계정 삭제",
"confirm_delete_account_modal": "{{appName}} 계정을 삭제하시겠습니까?",
"delete_my_account": "내 계정 삭제",
@@ -1426,6 +1458,7 @@
"add_limit": "제한 추가",
"team_name_required": "팀 이름 필수",
"show_attendees": "게스트 간에 참석자 정보 공유",
"show_available_seats_count": "사용 가능한 좌석 수 표시",
"how_booking_questions_as_variables": "예약 질문을 어떻게 변수로 사용합니까?",
"format": "형식",
"uppercase_for_letters": "모든 문자에 대문자 사용",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "{{connectionType}} 구성을 삭제하시겠습니까? {{connectionType}} 로그인을 사용하는 팀원은 더 이상 Cal.com에 액세스할 수 없습니다.",
"organizer_timezone": "주최자 시간대",
"email_user_cta": "초대 보기",
"email_no_user_invite_heading_team": "{{appName}} 팀에 참여 초대를 받으셨습니다",
"email_no_user_invite_heading_org": "{{appName}} 조직에 참여 초대를 받으셨습니다",
"email_no_user_invite_subheading": "{{invitedBy}} 님이 귀하를 {{appName}}에서 자신의 팀에 초대했습니다. {{appName}} 앱은 귀하와 귀하의 팀이 이메일을 주고 받지 않고 회의 일정을 잡을 수 있게 해주는 이벤트 정리 스케줄러입니다.",
"email_user_invite_subheading_team": "{{invitedBy}}님이 {{appName}}에서 자신의 `{{teamName}}` 팀에 가입하도록 당신을 초대했습니다. {{appName}}은 유저와 팀이 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 하는 이벤트 조율 스케줄러입니다.",
"email_user_invite_subheading_org": "{{invitedBy}} 님이 {{appName}}에서 자신의 조직의 `{{teamName}}`에 귀하의 참여를 초대했습니다. {{appName}}은(는) 사용자와 조직이 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 해주는 이벤트 조정 스케줄러입니다.",
"email_no_user_invite_steps_intro": "안내해 드릴 몇 가지 간단한 단계만 거치면 곧 스트레스 없이 편리하게 {{entity}} 일정을 관리할 수 있게 될 것입니다.",
"email_no_user_step_one": "사용자 이름 선택",
"email_no_user_step_two": "캘린더 계정 연결",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "선택한 필터 또는 날짜에 대한 데이터를 찾을 수 없습니다.",
"acknowledge_booking_no_show_fee": "본인은 이 이벤트에 참석하지 않을 경우 {{amount, currency}}에 대한 노쇼 수수료가 내 카드에 부과됨을 인정합니다.",
"card_details": "카드 세부정보",
"something_went_wrong_on_our_end": "문제가 발생했습니다. 지원팀에 연락하시면 즉시 문제를 해결해 드리겠습니다.",
"please_provide_following_text_to_suppport": "더 나은 도움을 받으려면 지원팀에 문의할 때 다음 텍스트를 제공해 주세요",
"seats_and_no_show_fee_error": "현재 좌석을 활성화할 수 없으므로 노쇼 수수료를 부과할 수 없습니다",
"complete_your_booking": "예약을 완료하세요",
"complete_your_booking_subject": "예약 완료: {{title}} 날짜 {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "누군가 요소를 클릭하면 Cal 대화 상자를 엽니다.",
"need_help_embedding": "도움이 필요하신가요? Wix, Squarespace, 또는 WordPress에서 Cal을 임베드하기 위한 가이드를 참조하거나, 자주 묻는 질문을 확인하거나, 고급 임베드 옵션을 살펴보세요.",
"book_my_cal": "내 Cal 예약",
"first_name": "이름",
"last_name": "성",
"first_last_name": "이름, 성",
"invite_as": "다른 이름으로 초대",
"form_updated_successfully": "양식이 성공적으로 업데이트되었습니다.",
"disable_attendees_confirmation_emails": "참석자에 대한 기본 확인 이메일 사용 안 함",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "이 이벤트 유형에 대한 첫 번째 웹훅 만들기",
"install_app_on": "앱 설치 대상",
"create_for": "작성 대상",
"currency": "통화",
"organization_banner_description": "팀이 라운드 로빈 및 공동 예약을 통해 공유 앱, 워크플로 및 이벤트 유형을 생성할 수 있는 환경을 만듭니다.",
"organization_banner_title": "여러 팀으로 조직 관리",
"set_up_your_organization": "조직 설정",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "팀: {{teamName}}",
"insights_user_filter": "사용자: {{userName}}",
"insights_subtitle": "이벤트 전반에 걸친 예약 Insights 보기",
"location_options": "{{locationCount}}개의 위치 옵션",
"custom_plan": "사용자 정의 플랜",
"email_embed": "이메일 포함",
"add_times_to_your_email": "사용 가능한 시간을 몇 개 선택하여 이메일에 포함시키세요",
"select_time": "시간 선택",
"select_date": "날짜 선택",
"see_all_available_times": "모든 사용 가능한 시간 보기",
"org_team_names_example": "예: 마케팅 팀",
"org_team_names_example_1": "예: 마케팅 팀",
"org_team_names_example_2": "예: 세일즈 팀",
"org_team_names_example_3": "예: 디자인 팀",
"org_team_names_example_4": "예: 엔지니어링 팀",
"org_team_names_example_5": "예: 데이터 분석 팀",
"org_max_team_warnings": "나중에 더 많은 팀을 추가할 수 있습니다.",
"what_is_this_meeting_about": "이 회의는 어떤 주제를 다루나요?",
"add_to_team": "팀에 추가",
"remove_users_from_org": "조직에서 사용자 제거",
"remove_users_from_org_confirm": "이 조직에서 {{userCount}}명의 사용자를 제거하시겠습니까?",
"user_has_no_schedules": "이 사용자는 아직 일정을 설정하지 않았습니다",
"user_isnt_in_any_teams": "이 사용자는 어떤 팀의 소속도 아닙니다",
"requires_booker_email_verification": "예약자 이메일 인증이 필요합니다",
"description_requires_booker_email_verification": "이벤트를 예약하기 전 예약자의 이메일 인증하기",
"requires_confirmation_mandatory": "문자 메시지는 이벤트 유형에 확인이 필요한 경우에만 참석자에게 보낼 수 있습니다.",
"kyc_verification_information": "보안이 되게 하려면 참석자에게 문자 메시지를 보내기 전에 {{teamOrAccount}} 인증은 필수입니다. <a>{{supportEmail}}</a>에 연락하여 다음 정보를 제공해 주시기 바랍니다.",
"kyc_verification_documents": "<ul><li>귀하의 {{teamOrUser}}</li><li>기업의 경우: 비즈니스 확인 서류 첨부</li><li>개인의 경우: 정부 발급 신분증 첨부</li></ul >",
"verify_team_or_account": "{{teamOrAccount}} 인증",
"verify_account": "계정 인증",
"kyc_verification": "KYC 인증",
"organizations": "조직",
"org_admin_other_teams": "다른 팀",
"org_admin_other_teams_description": "여기에서 귀하의 소속이 아닌 조직 내부의 팀을 볼 수 있습니다. 필요한 경우 여기에 자신을 추가할 수 있습니다.",
"no_other_teams_found": "다른 팀 없음",
"no_other_teams_found_description": "이 조직에는 다른 팀이 없습니다.",
"attendee_first_name_variable": "참석자 이름",
"attendee_last_name_variable": "참석자 성",
"attendee_first_name_info": "예약자 이름",
"attendee_last_name_info": "예약자 성",
"me": "나",
"verify_team_tooltip": "참석자에게 메시지를 보낼 수 있도록 팀을 인증하세요",
"member_removed": "구성원 제거됨",
"my_availability": "내 가용성",
"team_availability": "팀 가용성",
"backup_code": "백업 코드",
"backup_codes": "백업 코드",
"backup_code_instructions": "각 백업 코드는 인증자 없이 액세스 권한을 부여하기 위해 정확히 한 번만 사용할 수 있습니다.",
"backup_codes_copied": "백업 코드가 복사되었습니다!",
"incorrect_backup_code": "백업 코드가 올바르지 않습니다.",
"lost_access": "액세스 상실",
"missing_backup_codes": "백업 코드를 찾을 수 없습니다. 설정에서 생성하세요.",
"admin_org_notification_email_subject": "새 조직 생성됨: 작업 대기 중",
"hi_admin": "안녕하세요 관리자 님",
"admin_org_notification_email_title": "조직에 DNS 설정이 필요합니다",
"admin_org_notification_email_body_part1": "슬러그 \"{{orgSlug}}\" 있는 조직이 생성되었습니다.<br /><br />새 조직에 해당하는 하위 도메인이 기본 앱이 실행되는 위치를 가리키도록 DNS 레지스트리를 구성하십시오. 구성하지 않으면 조직은 작동하지 않습니다.<br /><br />다음은 하위 도메인이 앱을 가리키도록 구성하여 조직 프로필 페이지를 로드하는 매우 기본적인 옵션입니다.<br /><br />할 수 있는 작업은 A 레코드를 사용하는 것입니다:",
"admin_org_notification_email_body_part2": "또는 CNAME 레코드를 사용하는 것입니다:",
"admin_org_notification_email_body_part3": "하위 도메인을 구성한 후 조직 관리 설정에서 DNS 구성을 완료로 표시하십시오.",
"admin_org_notification_email_cta": "조직 관리자 설정으로 이동",
"org_has_been_processed": "조직이 처리되었습니다",
"org_error_processing": "이 조직을 처리하는 중 오류가 발생했습니다",
"orgs_page_description": "모든 조직의 목록입니다. 조직을 수락하면 해당 이메일 도메인을 가진 모든 사용자가 이메일 인증 없이 가입할 수 있습니다.",
"unverified": "미인증됨",
"dns_missing": "DNS 없음",
"mark_dns_configured": "DNS 구성됨으로 표시",
"value": "값",
"your_organization_updated_sucessfully": "조직이 업데이트되었습니다",
"team_no_event_types": "이 팀에는 이벤트 유형이 없습니다",
"seat_options_doesnt_multiple_durations": "좌석 옵션은 여러 기간을 지원하지 않습니다",
"include_calendar_event": "캘린더 이벤트 포함",
"recently_added": "최근 추가됨",
"no_members_found": "구성원 없음",
"event_setup_length_error": "이벤트 설정: 지속 시간은 1분 이상이어야 합니다.",
"availability_schedules": "사용 가능한 일정",
"view_only_edit_availability_not_onboarded": "이 사용자는 온보딩을 완료하지 않았습니다. 온보딩이 완료될 때까지는 가용성을 설정할 수 없습니다.",
"view_only_edit_availability": "이 사용자의 가용성을 보고 계십니다. 본인의 가용성만 편집할 수 있습니다.",
"edit_users_availability": "사용자 가용성 편집: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,11 +17,15 @@
"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",
"verify_email_email_button": "E-mailadres verifiëren",
"copy_somewhere_safe": "Sla deze API-sleutel ergens veilig op. U kunt deze niet opnieuw bekijken.",
"verify_email_email_body": "Verifieer uw e-mailadres door op de onderstaande knop te klikken.",
"verify_email_by_code_email_body": "Verifieer je e-mailadres door onderstaande code te gebruiken.",
"verify_email_email_link_text": "Hier is de link voor het geval u niet graag op knoppen klikt:",
"email_verification_code": "Voer verificatiecode in",
"email_verification_code_placeholder": "Voer de verificatiecode in die u per e-mail is toegestuurd",
"incorrect_email_verification_code": "Verificatiecode is onjuist.",
"email_sent": "E-mail verzonden",
"email_not_sent": "Fout opgetreden tijdens het versturen van e-mail",
"event_declined_subject": "Afgewezen: {{title}}",
"event_cancelled_subject": "Geannuleerd: {{title}} op {{date}}",
"event_request_declined": "Uw gebeurtenisverzoek is geweigerd",
@@ -80,6 +84,7 @@
"event_awaiting_approval_recurring": "Een terugkerende gebeurtenis wacht op uw goedkeuring",
"someone_requested_an_event": "Iemand heeft verzocht om een gebeurtenis op uw kalender te plannen.",
"someone_requested_password_reset": "Iemand heeft een link verzocht om uw wachtwoord te wijzigen.",
"password_reset_email_sent": "Als dit e-mailadres in ons systeem bestaat, zou u een e-mail voor het opnieuw instellen van uw wachtwoord moeten ontvangen.",
"password_reset_instructions": "Als dit niet heeft verzocht, kunt u deze e-mail gerust negeren en wordt uw wachtwoord niet gewijzigd.",
"event_awaiting_approval_subject": "In afwachting van goedkeuring: {{title}} om {{date}}",
"event_still_awaiting_approval": "Een gebeurtenis wacht nog op uw goedkeuring",
@@ -219,6 +224,10 @@
"already_have_an_account": "Heeft u al een account?",
"create_account": "Account Aanmaken",
"confirm_password": "Wachtwoord bevestigen",
"confirm_auth_change": "Dit wijzigt de manier waarop u inlogt",
"confirm_auth_email_change": "Als u het e-mailadres wijzigt, wordt uw huidige verificatiemethode om in te loggen op Cal.com ontkoppeld. We vragen u om uw nieuwe e-mailadres te verifiëren. In de toekomst wordt u uitgelogd en gebruikt u uw nieuwe e-mailadres om in te loggen in plaats van uw huidige verificatiemethode nadat u uw wachtwoord heeft ingesteld door de instructies te volgen die u oer e-mail worden toegestuurd.",
"reset_your_password": "Stel uw nieuwe wachtwoord in met de instructies die u per e-mail zijn toegestuurd.",
"email_change": "Log opnieuw in met uw nieuwe e-mailadres en wachtwoord.",
"create_your_account": "Uw account aanmaken",
"sign_up": "Registreer nu",
"youve_been_logged_out": "U bent uitgelogd",
@@ -246,6 +255,9 @@
"yours": "Uw account",
"available_apps": "Beschikbare apps",
"available_apps_lower_case": "Beschikbare apps",
"available_apps_desc": "U heeft geen apps geïnstalleerd. Bekijk hieronder populaire apps en ontdek meer in onze <1>appstore</1>",
"fixed_host_helper": "Voeg iedereen toe die de gebeurtenis moet bijwonen. <1>Meer informatie</1>",
"round_robin_helper": "Mensen in de groep wisselen elkaar af en er komt maar één persoon opdagen voor de gebeurtenis.",
"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 de taal en tijdzone van uw team",
@@ -254,6 +266,7 @@
"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",
"availability_settings": "Beschikbaarheidsinstellingen",
"continue_without_calendar": "Doorgaan zonder kalender",
"connect_your_calendar": "Koppel uw agenda",
"connect_your_video_app": "Koppel uw videoapps",
@@ -395,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Groepsboekingslinks die dynamisch kunnen worden aangemaakt door meerdere gebruikersnamen toe te voegen met een \"+\", bijvoorbeeld: \"{{appName}}/bailey+peer",
"allow_dynamic_booking": "Sta deelnemers toe om u te boeken via dynamische groepsboekingen",
"dynamic_booking": "Dynamische groepslinks",
"allow_seo_indexing": "Geef zoekmachines toegang tot uw openbare content",
"seo_indexing": "Sta SEO-indexering toe",
"email": "E-mailadres",
"email_placeholder": "jjansen@voorbeeld.nl",
"full_name": "Volledige naam",
@@ -510,6 +525,7 @@
"your_name": "Uw naam",
"your_full_name": "Uw volledige naam",
"no_name": "Geen naam",
"enter_number_between_range": "Voer een getal in tussen 1 en {{maxOccurences}}",
"email_address": "E-mail adres",
"enter_valid_email": "Voer een geldig e-mailadres in",
"location": "Locatie",
@@ -547,6 +563,7 @@
"leave": "Verlaat",
"profile": "Profiel",
"my_team_url": "Mijn team URL",
"my_teams": "Mijn teams",
"team_name": "Teamnaam",
"your_team_name": "Naam van uw team",
"team_updated_successfully": "Team bijgewerkt",
@@ -574,6 +591,8 @@
"invite_new_member": "Nieuw teamlid uitnodigen",
"invite_new_member_description": "Opmerking: dit <1>kost een extra plaats ($ 15/maand)</1> op uw abonnement.",
"invite_new_team_member": "Nodig iemand uit tot uw team.",
"upload_csv_file": "Upload een .csv-bestand",
"invite_via_email": "Uitnodigen via e-mail",
"change_member_role": "Rol teamlid wijzigen",
"disable_cal_branding": "{{appName}}-merk uitschakelen",
"disable_cal_branding_description": "Verberg alle {{appName}} branding op uw openbare pagina's.",
@@ -846,6 +865,7 @@
"team_view_user_availability_disabled": "Gebruiker moet de uitnodiging accepteren om beschikbaarheid weer te geven",
"set_as_away": "Zet uzelf op afwezig",
"set_as_free": "Status afwezig uitschakelen",
"toggle_away_error": "Fout bij het bijwerken van de status afwezig",
"user_away": "Deze gebruiker is momenteel afwezig.",
"user_away_description": "De persoon die u probeert te boeken heeft zichzelf op afwezig gezet en accepteert dus geen nieuwe boekingen.",
"meet_people_with_the_same_tokens": "Ontmoet mensen met dezelfde tokens",
@@ -855,6 +875,7 @@
"account_managed_by_identity_provider_description": "Ga naar uw accountinstellingen bij {{provider}} om uw e-mailadres en wachtwoord te wijzigen, tweestapsverificatie in te schakelen en meer.",
"signin_with_google": "Aanmelden met Google",
"signin_with_saml": "Aanmelden met SAML",
"signin_with_saml_oidc": "Aanmelden met SAML/OIDC",
"you_will_need_to_generate": "U moet een toegangstoken genereren van uw oude planningstool.",
"import": "Importeren",
"import_from": "Importeren van",
@@ -954,6 +975,8 @@
"offer_seats_description": "Bied beschikbare plaatsen aan voor boekingen. Hiermee worden gastboekingen en aanmeldingsboekingen automatisch uitgeschakeld.",
"seats_available_one": "Plaats beschikbaar",
"seats_available_other": "Beschikbare zitplaatsen",
"seats_nearly_full": "Plaatsen bijna vol",
"seats_half_full": "Plaatsen raken snel vol",
"number_of_seats": "Aantal zitplaatsen per boeking",
"enter_number_of_seats": "Voer het aantal zitplaatsen in",
"you_can_manage_your_schedules": "U kunt uw schema's beheren op de beschikbaarheidspagina.",
@@ -1034,12 +1057,15 @@
"how_you_want_add_cal_site": "Hoe wilt u {{appName}} aan uw website toevoegen?",
"choose_ways_put_cal_site": "Kies een van de volgende manieren om {{appName}} op uw website te plaatsen.",
"setting_up_zapier": "Uw Zapier-integratie configureren",
"setting_up_make": "Uw Make-integratie configureren",
"generate_api_key": "API-sleutel genereren",
"generate_api_key_description": "Genereer een API-sleutel die gebruikt moet worden met {{appName}} op",
"your_unique_api_key": "Uw unieke API-sleutel",
"copy_safe_api_key": "Kopieer deze API-sleutel en sla deze ergens veilig op. Als u deze sleutel verliest, moet u een nieuwe genereren.",
"zapier_setup_instructions": "<0>Meld u aan op uw Zapier-account en maak een nieuwe Zap.</0><1>Selecteer {{appName}} als uw activatie-app. Kies ook een activatiegebeurtenis.</1><2>Kies uw account en voer vervolgens uw unieke API-sleutel in.</2><3>Test uw activatie.</3><4>U bent er klaar voor!</4>",
"make_setup_instructions": "<0>Ga naar <1><0>Make-uitnodigingslink</0></1> en installeer de Cal.com-app.</0><1>Log in bij uw Make-account en maak een nieuw scenario.</1><2>Selecteer Cal.com als uw activatie-app. Kies ook een activatiegebeurtenis.</2><3>Kies uw account en voer uw unieke API-sleutel in.</3><4>Test uw activatie.</4><5>U bent er klaar voor!</5>",
"install_zapier_app": "Installeer eerst de Zapier-app in de App Store.",
"install_make_app": "Installeer eerst de Make-app uit de appstore.",
"connect_apple_server": "Verbinding maken met Apple Server",
"calendar_url": "Agenda-URL",
"apple_server_generate_password": "Genereer een appspecifiek wachtwoord voor gebruik met {{appName}} op",
@@ -1089,6 +1115,7 @@
"email_attendee_action": "e-mail naar deelnemers versturen",
"sms_attendee_action": "Sms verzenden naar deelnemer",
"sms_number_action": "sms naar een specifiek nummer sturen",
"send_reminder_sms": "Stuur eenvoudig vergaderherinneringen via sms naar uw deelnemers",
"whatsapp_number_action": "WhatsApp-bericht naar een specifiek nummer versturen",
"whatsapp_attendee_action": "WhatsApp-bericht naar deelnemer versturen",
"workflows": "Werkstromen",
@@ -1248,6 +1275,7 @@
"error_updating_settings": "Fout bij het bijwerken van de instellingen",
"personal_cal_url": "Mijn persoonlijke {{appName}}-URL",
"bio_hint": "Een korte introductie over uzelf. Dit wordt weergegeven op uw persoonlijke pagina.",
"user_has_no_bio": "Deze gebruiker heeft nog geen bio toegevoegd.",
"delete_account_modal_title": "Account verwijderen",
"confirm_delete_account_modal": "Weet u zeker dat u uw {{appName}}-account wilt verwijderen?",
"delete_my_account": "Verwijder mijn account",
@@ -1430,6 +1458,7 @@
"add_limit": "Voeg een limiet toe",
"team_name_required": "Teamnaam verplicht",
"show_attendees": "Deel de deelnemersinformatie met de gasten",
"show_available_seats_count": "Aantal beschikbare plaatsen weergeven",
"how_booking_questions_as_variables": "Hoe gebruik ik boekingsvragen als variabelen?",
"format": "Formatteren",
"uppercase_for_letters": "Gebruik hoofdletters voor alle letters",
@@ -1663,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Weet u zeker dat u de {{connectionType}}-configuratie wilt verwijderen? Uw teamleden die {{connectionType}}-aanmelding gebruiken hebben niet langer toegang tot Cal.com.",
"organizer_timezone": "Tijdzone organisator",
"email_user_cta": "Uitnodiging weergeven",
"email_no_user_invite_heading_team": "U bent uitgenodigd om lid te worden van een {{appName}}-team",
"email_no_user_invite_heading_org": "U bent uitgenodigd om lid te worden van de {{appName}}-organisatie",
"email_no_user_invite_subheading": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn team op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw team in staat stelt vergaderingen te plannen zonder heen en weer te e-mailen.",
"email_user_invite_subheading_team": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn team '{{teamName}}' op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw team in staat stelt afspraken te plannen zonder heen en weer te e-mailen.",
"email_user_invite_subheading_org": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn organisatie '{{teamName}}' op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw organisatie in staat stelt afspraken te plannen zonder heen en weer te e-mailen.",
"email_no_user_invite_steps_intro": "We doorlopen samen een paar korte stappen en in een mum van tijd kunt u genieten van een stressvrije planning met uw {{entity}}.",
"email_no_user_step_one": "Kies uw gebruikersnaam",
"email_no_user_step_two": "Koppel uw agenda-account",
@@ -1835,6 +1867,8 @@
"insights_no_data_found_for_filter": "Geen gegevens gevonden voor het geselecteerde filter of de geselecteerde datums.",
"acknowledge_booking_no_show_fee": "Ik erken dat als ik deze gebeurtenis niet bijwoon, er {{amount, currency}} aan afwezigheidsvergoeding van mijn kaart worden afgeschreven.",
"card_details": "Kaartgegevens",
"something_went_wrong_on_our_end": "Er is iets misgegaan aan onze kant. Neem contact op met ons ondersteuningsteam en we lossen het meteen voor u op.",
"please_provide_following_text_to_suppport": "Vermeld de volgende tekst wanneer u contact opneemt met ondersteuning, zodat we u beter kunnen helpen",
"seats_and_no_show_fee_error": "Kan op dit moment geen plaatsen inschakelen en afwezigheidsvergoeding in rekening brengen",
"complete_your_booking": "Voltooi uw boeking",
"complete_your_booking_subject": "Voltooi uw boeking: {{title}} op {{date}}",
@@ -1884,6 +1918,7 @@
"first_event_type_webhook_description": "Maak uw eerste webhook voor dit gebeurtenistype",
"install_app_on": "App installeren op",
"create_for": "Maken voor",
"currency": "Valuta",
"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",
@@ -1944,11 +1979,79 @@
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Gebruiker: {{userName}}",
"insights_subtitle": "Bekijk boekingsinsights voor al uw gebeurtenissen",
"location_options": "{{locationCount}} locatieopties",
"custom_plan": "Aangepast abonnement",
"email_embed": "E-mail insluiten",
"add_times_to_your_email": "Selecteer enkele beschikbare tijden en voeg ze toe aan uw e-mail",
"select_time": "Tijd selecteren",
"select_date": "Datum selecteren",
"see_all_available_times": "Bekijk alle beschikbare tijden",
"org_team_names_example": "bijvoorbeeld Marketingteam",
"org_team_names_example_1": "bijvoorbeeld Marketingteam",
"org_team_names_example_2": "bijvoorbeeld Verkoopteam",
"org_team_names_example_3": "bijvoorbeeld Ontwerpteam",
"org_team_names_example_4": "bijvoorbeeld Engineeringteam",
"org_team_names_example_5": "bijvoorbeeld Gegevensanalyseteam",
"org_max_team_warnings": "U kunt later meer teams toevoegen.",
"what_is_this_meeting_about": "Waar gaat deze afspraak over?",
"add_to_team": "Voeg toe aan team",
"remove_users_from_org": "Gebruikers verwijderen uit organisatie",
"remove_users_from_org_confirm": "Weet u zeker dat u {{userCount}} gebruikers uit deze organisatie wilt verwijderen?",
"user_has_no_schedules": "Deze gebruiker heeft nog geen planningen ingesteld",
"user_isnt_in_any_teams": "Deze gebruiker zit niet in een team",
"requires_booker_email_verification": "E-mailverificatie door boeker vereist",
"description_requires_booker_email_verification": "Om te zorgen voor de e-mailverificatie door de boeker voordat gebeurtenissen worden gepland",
"requires_confirmation_mandatory": "Sms-berichten kunnen alleen naar deelnemers worden verzonden als het gebeurtenistype bevestiging vereist.",
"kyc_verification_information": "Om de veiligheid te garanderen, moet u uw {{teamOrAccount}} verifiëren voordat u sms-berichten naar deelnemers verstuurd. Neem contact met ons op via <a>{{supportEmail}}</a> en verstrek de volgende gegevens:",
"kyc_verification_documents": "<ul><li>Uw {{teamOrUser}}</li><li>Voor bedrijven: voeg uw bedrijfsverificatiedocumentatie bij</li><li>Voor particulieren: voeg een door de overheid uitgegeven identiteitsbewijs bij</li></ul>",
"verify_team_or_account": "{{teamOrAccount}} verifiëren",
"verify_account": "Account verifiëren",
"kyc_verification": "KYC-verificatie",
"organizations": "Organisaties",
"org_admin_other_teams": "Andere teams",
"org_admin_other_teams_description": "Hier kunt u teams binnen uw organisatie zien waar u geen deel van uitmaakt. U kunt uzelf aan hen toevoegen indien nodig.",
"no_other_teams_found": "Geen andere teams gevonden",
"no_other_teams_found_description": "Er zijn geen andere teams binnen deze organisatie.",
"attendee_first_name_variable": "Voornaam deelnemer",
"attendee_last_name_variable": "Achternaam deelnemer",
"attendee_first_name_info": "De voornaam van de persoon die boekt",
"attendee_last_name_info": "De achternaam van de persoon die boekt",
"me": "Ik",
"verify_team_tooltip": "Verifieer uw team om het versturen van berichten naar deelnemers in te schakelen",
"member_removed": "Lid verwijderd",
"my_availability": "Mijn beschikbaarheid",
"team_availability": "Beschikbaarheid team",
"backup_code": "Back-upcode",
"backup_codes": "Back-upcodes",
"backup_code_instructions": "Elke back-upcode kan slechts één keer gebruikt worden om toegang te verlenen zonder uw authenticator.",
"backup_codes_copied": "Back-upcodes gekopieerd!",
"incorrect_backup_code": "De back-upcode is onjuist.",
"lost_access": "Toegang verloren",
"missing_backup_codes": "Geen back-upcodes gevonden. Genereer ze in uw instellingen.",
"admin_org_notification_email_subject": "Nieuwe organisatie gemaakt: in afwachting van actie",
"hi_admin": "Hallo beheerder",
"admin_org_notification_email_title": "Een organisatie vereist DNS-configuratie",
"admin_org_notification_email_body_part1": "Een organisatie met de slug \"{{orgSlug}}\" is gemaakt.<br /><br />Zorg ervoor dat u uw DNS-register configureert om het subdomein dat overeenkomt met de nieuwe organisatie te verwijzen naar waar de hoofd-app draait. Anders werkt de organisatie niet.<br /><br />Hier zijn slechts de basisopties om een subdomein te laten verwijzen naar de app, zodat de organisatieprofielpagina wordt geladen.<br /><br />U kunt dit doen met het A-record:",
"admin_org_notification_email_body_part2": "Of het CNAME-record:",
"admin_org_notification_email_body_part3": "Zodra u het subdomein heeft geconfigureerd, markeert u de DNS-configuratie als voltooid in Beheerdersinstellingen voor organisaties.",
"admin_org_notification_email_cta": "Naar Beheerdersinstellingen voor organisaties",
"org_has_been_processed": "Organisatie is verwerkt",
"org_error_processing": "Er is een fout opgetreden bij het verwerken van deze organisatie",
"orgs_page_description": "Een lijst met alle organisaties. Als u een organisatie accepteert, kunnen alle gebruikers met dat e-maildomein zich aanmelden ZONDER e-mailverificatie.",
"unverified": "Niet-geverifieerd",
"dns_missing": "DNS ontbreekt",
"mark_dns_configured": "Markeer als DNS geconfigureerd",
"value": "Waarde",
"your_organization_updated_sucessfully": "Uw organisatie is bijgewerkt",
"team_no_event_types": "Dit team heeft geen gebeurtenistypes",
"seat_options_doesnt_multiple_durations": "De plaatsoptie ondersteunt geen meerdere duren",
"include_calendar_event": "Agendagebeurtenis opnemen",
"recently_added": "Recent toegevoegd",
"no_members_found": "Geen leden gevonden",
"event_setup_length_error": "Gebeurtenisconfiguratie: de duur moet minimaal 1 minuut zijn.",
"availability_schedules": "Beschikbaarheidsschema's",
"view_only_edit_availability_not_onboarded": "Deze gebruiker heeft de onboarding nog niet voltooid. U kunt diens beschikbaarheid pas instellen nadat ze men de onboarding heeft voltooid.",
"view_only_edit_availability": "U bekijkt de beschikbaarheid van deze gebruiker. U kunt alleen uw eigen beschikbaarheid bewerken.",
"edit_users_availability": "Beschikbaarheid van gebruiker bewerken: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Voeg uw nieuwe strings hierboven toe ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"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",
"copy_somewhere_safe": "Zapisz ten klucz API w bezpiecznym miejscu. Nie będzie można wyświetlić go ponownie.",
"verify_email_email_body": "Zweryfikuj swój adres e-mail, klikając poniższy przycisk.",
"verify_email_by_code_email_body": "Zweryfikuj swój adres e-mail, używając kodu poniżej.",
"verify_email_email_link_text": "Oto link, jeśli nie lubisz klikać przycisków:",
"email_verification_code": "Wprowadź kod weryfikacyjny",
"email_verification_code_placeholder": "Wprowadź kod weryfikacyjny wysłany na Twój adres e-mail",
"incorrect_email_verification_code": "Kod weryfikacyjny jest nieprawidłowy.",
"email_sent": "Wysłano wiadomość e-mail",
"email_not_sent": "Podczas wysyłania wiadomości e-mail wystąpił błąd.",
"event_declined_subject": "Odrzucono: {{title}} w dniu {{date}}",
"event_cancelled_subject": "Anulowano: {{title}}, {{date}}",
"event_request_declined": "Twoja prośba o wydarzenie została odrzucona",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Wydarzenie cykliczne oczekuje na Twoje zatwierdzenie",
"someone_requested_an_event": "Ktoś poprosił o zaplanowanie wydarzenia w Twoim kalendarzu.",
"someone_requested_password_reset": "Ktoś poprosił o link do zmiany Twojego hasła.",
"password_reset_email_sent": "Jeśli ten adres e-mail istnieje w naszym systemie, otrzymasz wiadomość e-mail do zresetowania hasła.",
"password_reset_instructions": "Jeśli nie poprosiłeś o to, możesz bezpiecznie zignorować ten e-mail, a Twoje hasło nie zostanie zmienione.",
"event_awaiting_approval_subject": "Oczekiwanie na zatwierdzenie: {{title}} w {{date}}",
"event_still_awaiting_approval": "Wydarzenie nadal oczekuje na Twoje zatwierdzenie",
@@ -217,6 +224,10 @@
"already_have_an_account": "Masz już konto?",
"create_account": "Utwórz Konto",
"confirm_password": "Potwierdź hasło",
"confirm_auth_change": "Spowoduje to zmianę sposobu logowania.",
"confirm_auth_email_change": "Zmiana adresu e-mail spowoduje odłączenie bieżącej metody uwierzytelnienia używanej do logowania do Cal.com. Poprosimy Cię o zweryfikowanie nowego adresu e-mail. Następnie wylogujemy Cię, a po skonfigurowaniu hasła zgodnie z instrukcjami, które otrzymasz w wiadomości e-mail, poprosimy Cię o zalogowanie się nowym adresem e-mail zamiast bieżącej metody uwierzytelnienia.",
"reset_your_password": "Ustaw nowe hasło zgodnie z instrukcjami wysłanymi na Twój adres e-mail.",
"email_change": "Zaloguj się ponownie za pomocą nowego adresu e-mail i hasła.",
"create_your_account": "Załóż swoje konto",
"sign_up": "Zarejestruj",
"youve_been_logged_out": "Zostałeś wylogowany",
@@ -243,6 +254,10 @@
"all": "Wszystkie",
"yours": "Twoje konto",
"available_apps": "Dostępne aplikacje",
"available_apps_lower_case": "Dostępne aplikacje",
"available_apps_desc": "Nie masz zainstalowanych aplikacji. Zobacz popularne aplikacje poniżej i odkryj ich więcej w naszym sklepie <1>App Store</1>.",
"fixed_host_helper": "Dodaj każdego, kto powinien wziąć udział w wydarzeniu. <1>Dowiedz się więcej</1>",
"round_robin_helper": "Osoby należące do grupy pracują na zmianę i w wydarzeniu weźmie udział tylko jedna z nich.",
"check_email_reset_password": "Sprawdź swój e-mail. Wysłaliśmy Ci link do zresetowania hasła.",
"finish": "Ukończ",
"organization_general_description": "Zarządzaj ustawieniami języka i strefy czasowej Twojego zespołu.",
@@ -251,6 +266,7 @@
"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ść",
"availability_settings": "Ustawienia dostępności",
"continue_without_calendar": "Kontynuuj bez kalendarza",
"connect_your_calendar": "Połącz swój kalendarz",
"connect_your_video_app": "Podłącz aplikacje wideo",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Grupuj linki do rezerwacji, które mogą być tworzone dynamicznie przez dodanie wielu nazw użytkowników z '+'. przykład: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Pozwól uczestnikom rezerwować cię przez dynamiczne rezerwacje grupowe",
"dynamic_booking": "Dynamiczne linki grup",
"allow_seo_indexing": "Zezwól wyszukiwarkom na dostęp do Twoich publicznych treści",
"seo_indexing": "Zezwalaj na indeksowanie SEO",
"email": "E-mail",
"email_placeholder": "jkowalski@przyklad.com",
"full_name": "Imię i nazwisko",
@@ -406,6 +424,7 @@
"booking_requested": "Poproszono o rezerwację",
"meeting_ended": "Spotkanie zakończone",
"form_submitted": "Przesłano formularz",
"booking_paid": "Rezerwacja opłacona",
"event_triggers": "Wyzwalacze Zdarzeń",
"subscriber_url": "Adres URL subskrybenta",
"create_new_webhook": "Utwórz nowy webhook",
@@ -506,6 +525,7 @@
"your_name": "Twoje imię",
"your_full_name": "Twoje imię i nazwisko",
"no_name": "Bez nazwy",
"enter_number_between_range": "Wprowadź liczbę od 1 do {{maxOccurences}}",
"email_address": "Adres e-mail",
"enter_valid_email": "Wprowadź prawidłowy adres e-mail",
"location": "Lokalizacja",
@@ -543,6 +563,7 @@
"leave": "Opuść",
"profile": "Profil",
"my_team_url": "Adres URL mojej drużyny",
"my_teams": "Moje zespoły",
"team_name": "Nazwa zespołu",
"your_team_name": "Nazwa Twojego zespołu",
"team_updated_successfully": "Zespół został pomyślnie zaktualizowany",
@@ -570,6 +591,8 @@
"invite_new_member": "Zaproś nowego członka zespołu",
"invite_new_member_description": "Uwaga: będzie to <1>kosztowało dodatkowe miejsce (15 USD/miesiąc)</1>, które doliczymy do Twojej subskrypcji.",
"invite_new_team_member": "Zaproś kogoś do twojego zespołu.",
"upload_csv_file": "Prześlij plik .csv",
"invite_via_email": "Zaproś przez e-mail",
"change_member_role": "Zmień rolę członka zespołu",
"disable_cal_branding": "Wyłącz branding {{appName}}",
"disable_cal_branding_description": "Ukryj wszystkie marki {{appName}} na swoich stronach publicznych.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Użytkownik musi zaakceptować zaproszenie, aby wyświetlić dostępność",
"set_as_away": "Ustaw się jako nieobecny",
"set_as_free": "Wyłącz status Nieobecny",
"toggle_away_error": "Błąd podczas aktualizacji niedostępności",
"user_away": "Ten użytkownik jest obecnie nieobecny.",
"user_away_description": "Osoba, którą próbujesz zarezerwować, jest teraz nieobecna i dlatego nie akceptuje nowych rezerwacji.",
"meet_people_with_the_same_tokens": "Poznaj ludzi z tymi samymi tokenami",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Aby zmienić swój adres e-mail, hasło, włącz uwierzytelnianie dwuetapowe i więcej, odwiedź swoje ustawienia konta {{provider}}.",
"signin_with_google": "Zaloguj się przez Google",
"signin_with_saml": "Zaloguj się za pomocą SAML",
"signin_with_saml_oidc": "Zaloguj się za pomocą SAML/OIDC",
"you_will_need_to_generate": "Będziesz musiał wygenerować token dostępu ze strony integracji.",
"import": "Importuj",
"import_from": "Importuj z",
@@ -950,6 +975,8 @@
"offer_seats_description": "Zaoferuj miejsca do zarezerwowania. To automatycznie wyłącza rezerwacje gości i rezerwacje wstępne.",
"seats_available_one": "Dostępne miejsce",
"seats_available_other": "Dostępne miejsca",
"seats_nearly_full": "Prawie wszystkie miejsca zajęte",
"seats_half_full": "Miejsca szybko znikają",
"number_of_seats": "Liczba miejsc na rezerwację",
"enter_number_of_seats": "Wprowadź liczbę miejsc",
"you_can_manage_your_schedules": "Możesz zarządzać swoimi harmonogramami na stronie Dostępności.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Jak chcesz dodać aplikację {{appName}} do swojej witryny?",
"choose_ways_put_cal_site": "Wybierz jeden z następujących sposobów, aby umieścić aplikację {{appName}} w swojej witrynie.",
"setting_up_zapier": "Konfiguracja integracji z Zapier",
"setting_up_make": "Konfiguracja integracji z Make",
"generate_api_key": "Wygeneruj klucz interfejsu API",
"generate_api_key_description": "Wygeneruj klucz interfejsu API do użycia z aplikacją {{appName}} na",
"your_unique_api_key": "Twój niepowtarzalny klucz API",
"copy_safe_api_key": "Skopiuj ten klucz API i zapisz go w bezpiecznym miejscu. Jeśli stracisz ten klucz, trzeba będzie wygenerować nowy.",
"zapier_setup_instructions": "<0>Zaloguj się do swojego konta Zapier i utwórz nowy Zap.</0><1>Wybierz Cal.com jako aplikację wyzwalającą. Wybierz również wydarzenie wyzwalające. </1><2>Wybierz konto, a następnie wprowadź niepowtarzalny klucz interfejsu API.</2><3>Przetestuj wyzwalanie.</3><4>Wszystko gotowe!</4>",
"make_setup_instructions": "<0>Przejdź do sekcji <1><0>Link z zaproszeniem Make</0></1> i zainstaluj aplikację Cal.com.</0><1><0>Zaloguj się do swojego konta Make i utwórz nowy Scenariusz (Scenario).</1><2>Wybierz Cal.com jako aplikację wyzwalającą. Wybierz również wydarzenie wyzwalające. </2></2>Wybierz konto, a następnie wprowadź niepowtarzalny klucz interfejsu API.</3><4>Przetestuj wyzwalanie.</4><5>Wszystko gotowe!</5>",
"install_zapier_app": "Najpierw zainstaluj aplikację Zapier pobraną ze sklepu App Store.",
"install_make_app": "Najpierw zainstaluj aplikację Make pobraną ze sklepu App Store.",
"connect_apple_server": "Połącz z serwerem Apple",
"calendar_url": "Adres URL kalendarza",
"apple_server_generate_password": "Wygeneruj hasło aplikacji do użycia z {{appName}} w witrynie",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "wyślij wiadomość e-mail do uczestników",
"sms_attendee_action": "Wyślij wiadomość SMS do uczestnika",
"sms_number_action": "wyślij wiadomość SMS na określony numer",
"send_reminder_sms": "Łatwo wysyłaj uczestnikom przypomnienia SMS o spotkaniu",
"whatsapp_number_action": "wyślij wiadomość w aplikacji Whatsapp na określony numer",
"whatsapp_attendee_action": "wyślij wiadomość w aplikacji Whatsapp do uczestnika",
"workflows": "Przepływy pracy",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Błąd podczas aktualizacji ustawień",
"personal_cal_url": "Mój osobisty adres URL aplikacji {{appName}}",
"bio_hint": "Kilka zdań o Tobie. Pojawią się one na Twojej osobistej stronie URL.",
"user_has_no_bio": "Ten użytkownik nie dodał jeszcze biogramu.",
"delete_account_modal_title": "Usuń konto",
"confirm_delete_account_modal": "Czy na pewno chcesz usunąć swoje konto {{appName}}?",
"delete_my_account": "Usuń konto",
@@ -1426,6 +1458,7 @@
"add_limit": "Dodaj limit",
"team_name_required": "Wymagana nazwa zespołu",
"show_attendees": "Udostępniaj gościom informacje o uczestnikach",
"show_available_seats_count": "Pokaż liczbę dostępnych miejsc",
"how_booking_questions_as_variables": "Jak używać pytań dotyczących rezerwacji jako zmiennych?",
"format": "Formatowanie",
"uppercase_for_letters": "Użyj wielkich liter w przypadku wszystkich liter",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Czy na pewno chcesz usunąć konfigurację {{connectionType}}? Członkowie zespołu, którzy używają logowania {{connectionType}} nie będą już mogli uzyskać dostępu do Cal.com.",
"organizer_timezone": "Strefa czasowa organizatora",
"email_user_cta": "Wyświetl zaproszenie",
"email_no_user_invite_heading_team": "Zaproszono Cię do dołączenia do zespołu {{appName}}",
"email_no_user_invite_heading_org": "Zaproszono Cię do dołączenia do organizacji {{appName}}",
"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_team": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu „{{teamName}}” 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_org": "{{invitedBy}} zaprasza Cię do dołączenia do organizacji „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojej organizacji 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",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Nie znaleziono danych dotyczących wybranego filtru lub wskazanych dat.",
"acknowledge_booking_no_show_fee": "Rozumiem, że jeśli nie wezmę udziału w wydarzeniu, z mojej karty pobrana zostanie opłata za niestawienie się w wysokości {{amount, currency}}.",
"card_details": "Dane karty",
"something_went_wrong_on_our_end": "Coś poszło nie tak po naszej stronie. Skontaktuj się z naszym zespołem pomocy technicznej, a zaraz rozwiążemy ten problem.",
"please_provide_following_text_to_suppport": "W razie kontaktu z pomocą techniczną podaj następujący tekst, abyśmy mogli lepiej Ci pomóc.",
"seats_and_no_show_fee_error": "Obecnie nie można udostępnić miejsc ani naliczyć opłaty za niestawienie się.",
"complete_your_booking": "Ukończ rezerwację",
"complete_your_booking_subject": "Ukończ rezerwację: {{title}} dnia {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Otwiera okno dialogowe Cal, gdy użytkownik kliknie odpowiedni element.",
"need_help_embedding": "Potrzebujesz pomocy? Zapoznaj się z naszymi instrukcjami osadzania narzędzi Cal w stronach utworzonych w usługach Wix, Squarespace lub WordPress, sprawdź często zadawane pytania lub poznaj zaawansowane opcje osadzania.",
"book_my_cal": "Zarezerwuj za pośrednictwem Cal",
"first_name": "Imię",
"last_name": "Nazwisko",
"first_last_name": "Imię, nazwisko",
"invite_as": "Zaproś jako",
"form_updated_successfully": "Formularz został zaktualizowany.",
"disable_attendees_confirmation_emails": "Wyłącz domyślne wiadomości e-mail z potwierdzeniem dla uczestników",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Utwórz swój pierwszy element webhook dla tego typu wydarzenia",
"install_app_on": "Zainstaluj aplikację na koncie",
"create_for": "Utwórz dla",
"currency": "Waluta",
"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 swoją organizację",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Zespół: {{teamName}}",
"insights_user_filter": "Użytkownik: {{userName}}",
"insights_subtitle": "Wyświetl wskaźniki Insights rezerwacji z różnych wydarzeń",
"location_options": "Lokalizacje do wyboru: {{locationCount}}",
"custom_plan": "Plan niestandardowy",
"email_embed": "Osadź w wiadomości e-mail",
"add_times_to_your_email": "Wybierz kilka dostępnych terminów i osadź je w wiadomości e-mail",
"select_time": "Wybierz godzinę",
"select_date": "Wybierz datę",
"see_all_available_times": "Zobacz wszystkie dostępne godziny",
"org_team_names_example": "np. zespół marketingowy",
"org_team_names_example_1": "np. zespół marketingowy",
"org_team_names_example_2": "np. zespół ds. sprzedaży",
"org_team_names_example_3": "np. zespół projektowy",
"org_team_names_example_4": "np. zespół ds. inżynierii",
"org_team_names_example_5": "np. zespół ds. analityki danych",
"org_max_team_warnings": "Później będzie można dodać więcej zespołów.",
"what_is_this_meeting_about": "Czego dotyczy to spotkanie?",
"add_to_team": "Dodaj do zespołu",
"remove_users_from_org": "Usuń użytkowników z organizacji",
"remove_users_from_org_confirm": "Czy na pewno chcesz usunąć {{userCount}} użytkowników z tej organizacji?",
"user_has_no_schedules": "Ten użytkownik nie skonfigurował jeszcze żadnych typów harmonogramów.",
"user_isnt_in_any_teams": "Ten użytkownik nie należy do żadnego zespołu.",
"requires_booker_email_verification": "Wymaga weryfikacji adresu e-mail rezerwującego.",
"description_requires_booker_email_verification": "W celu weryfikacji adresu e-mail rezerwującego przed wydarzeniami z harmonogramu.",
"requires_confirmation_mandatory": "Wiadomości tekstowe można wysyłać do uczestników tylko wtedy, gdy typ zdarzenia wymaga potwierdzenia.",
"kyc_verification_information": "Ze względów bezpieczeństwa musisz zweryfikować {{teamOrAccount}}, zanim wyślesz wiadomości tekstowe do uczestników. Napisz na adres <a>{{supportEmail}}</a> i podaj następujące informacje:",
"kyc_verification_documents": "<ul><li>Twój adres: {{teamOrUser}}</li><li>Firmy: dołącz dokumenty weryfikacyjne firmy</li><li>Osoby fizyczne: dołącz skan dokumentu tożsamości</li></ul>",
"verify_team_or_account": "Zweryfikuj {{teamOrAccount}}",
"verify_account": "Zweryfikuj konto",
"kyc_verification": "Weryfikacja KYC",
"organizations": "Organizacje",
"org_admin_other_teams": "Inne zespoły",
"org_admin_other_teams_description": "Tutaj możesz zobaczyć zespoły wewnątrz organizacji, do których nie należy. W razie potrzeby możesz do nich dołączyć.",
"no_other_teams_found": "Nie znaleziono innych zespołów",
"no_other_teams_found_description": "W tej organizacji nie ma żadnych innych zespołów.",
"attendee_first_name_variable": "Imię uczestnika",
"attendee_last_name_variable": "Nazwisko uczestnika",
"attendee_first_name_info": "Imię osoby rezerwującej",
"attendee_last_name_info": "Nazwisko osoby rezerwującej",
"me": "Ja",
"verify_team_tooltip": "Zweryfikuj zespół, aby włączyć wysyłanie wiadomości do uczestników",
"member_removed": "Usunięto członka",
"my_availability": "Moja dostępność",
"team_availability": "Dostępność zespołu",
"backup_code": "Kod zapasowy",
"backup_codes": "Kody zapasowe",
"backup_code_instructions": "Każdy kod zapasowy można wykorzystać dokładnie raz, aby uzyskać dostęp bez uwierzytelniania.",
"backup_codes_copied": "Kody zapasowe skopiowane!",
"incorrect_backup_code": "Kod zapasowy jest nieprawidłowy.",
"lost_access": "Utracono dostęp",
"missing_backup_codes": "Nie znaleziono kodów zapasowych. Wygeneruj je w ustawieniach.",
"admin_org_notification_email_subject": "Utworzono nową organizację: oczekujące działanie",
"hi_admin": "Witaj, Administratorze",
"admin_org_notification_email_title": "Organizacja wymaga konfiguracji DNS",
"admin_org_notification_email_body_part1": "Utworzono organizację ze slugiem „{{orgSlug}}”.<br /><br />Pamiętaj o skonfigurowaniu rejestru DNS, aby wskazać subdomenę nowej organizacji, na górej jest uruchomiona główna aplikacja. W przeciwnym wypadku organizacja nie będzie działać.<br /><br />Poniżej podano kilka najbardziej podstawowych opcji do skonfigurowania subdomeny, by kierowała do aplikacji, która wczyta stronę profilową organizacji.<br /><br />Możesz zrobić to albo za pomocą rekordu A:",
"admin_org_notification_email_body_part2": "Albo rekordu CNAME:",
"admin_org_notification_email_body_part3": "Po skonfigurowaniu subdomeny,proszę oznaczyć konfigurację DNS jako gotową w ustawieniach administratora organizacji.",
"admin_org_notification_email_cta": "Przejdź do ustawień administratora organizacji",
"org_has_been_processed": "Organizacja została przetworzona.",
"org_error_processing": "Podczas przetwarzania tej organizacji wystąpił błąd.",
"orgs_page_description": "Lista wszystkich organizacji. Akceptacja organizacji pozwoli wszystkim użytkownikom z adresami e-mail z tej domeny rejestrację BEZ weryfikacji adresu e-mail.",
"unverified": "Niezweryfikowane",
"dns_missing": "Brak DNS",
"mark_dns_configured": "Oznacz jako DNS skonfigurowany",
"value": "Wartość",
"your_organization_updated_sucessfully": "Twoja organizacja została pomyślnie zaktualizowana.",
"team_no_event_types": "Ten zespół nie ma żadnych typów zdarzeń.",
"seat_options_doesnt_multiple_durations": "Opcja Miejsce nie obsługuje wielu czasów trwania.",
"include_calendar_event": "Uwzględnij wydarzenie z kalendarza",
"recently_added": "Niedawno dodane",
"no_members_found": "Nie znaleziono członków",
"event_setup_length_error": "Konfiguracja wydarzenia: czas trwania musi wynosić co najmniej minutę.",
"availability_schedules": "Harmonogramy dostępności",
"view_only_edit_availability_not_onboarded": "Ten użytkownik nie zakończył procesu wdrażania. Ustawienie jego dostępności będzie niedostępne, póki nie zakończy wdrażania.",
"view_only_edit_availability": "Wyświetlasz dostępność tego użytkownika. Możesz edytować tylko własną dostępność.",
"edit_users_availability": "Edytuj dostępność użytkownika: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodaj nowe ciągi powyżej ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -225,6 +225,7 @@
"create_account": "Criar Conta",
"confirm_password": "Confirmar senha",
"confirm_auth_change": "Isso alterará a forma como você faz login",
"confirm_auth_email_change": "Ao alterar o endereço de e-mail, seu método de autenticação atual será desconectado para entrar no Cal.com. Será solicitado que você verifique seu novo endereço de e-mail. Em seguida, você sairá e seu novo endereço de e-mail será usado para entrar em vez do seu método de autenticação atual, depois que sua senha for definida segundo as instruções enviadas por e-mail.",
"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",
@@ -256,6 +257,7 @@
"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>",
"round_robin_helper": "As pessoas do grupo se revezam, e apenas uma aparecerá para o evento.",
"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",
@@ -264,6 +266,7 @@
"nearly_there_instructions": "Por último, uma breve descrição de você mesmo e uma foto ajudam a conseguir agendamentos e a mostrar às pessoas com quem elas estão agendando.",
"set_availability_instructions": "Definir períodos em que você está disponível de forma recorrente. Mais tarde você poderá criar outros períodos e atribuí-los a diferentes calendários.",
"set_availability": "Definir disponibilidade",
"availability_settings": "Configurações de disponibilidade",
"continue_without_calendar": "Continuar sem calendário",
"connect_your_calendar": "Conectar seu calendário",
"connect_your_video_app": "Conecte seus aplicativos de vídeo",
@@ -405,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Agrupe links de reserva que podem ser criados dinamicamente ao adicionar vários nomes de usuário com \"+\", por exemplo: \"{{appName}}/bailey+peer\"",
"allow_dynamic_booking": "Permita que os participantes façam reservas com as reservas de grupo dinâmicas",
"dynamic_booking": "Links de grupo dinâmicos",
"allow_seo_indexing": "Permitir que mecanismos de busca acessem seu conteúdo público",
"seo_indexing": "Pemitir indexação em SEO",
"email": "Email",
"email_placeholder": "nome@exemplo.com",
"full_name": "Nome Completo",
@@ -558,6 +563,7 @@
"leave": "Sair",
"profile": "Perfil",
"my_team_url": "URL do meu time",
"my_teams": "Meus times",
"team_name": "Nome do time",
"your_team_name": "Nome do seu time",
"team_updated_successfully": "Time atualizado com sucesso",
@@ -585,6 +591,8 @@
"invite_new_member": "Convidar um novo membro",
"invite_new_member_description": "Observação: isso <1>custará um lugar extra ($15/m)</1> na sua assinatura.",
"invite_new_team_member": "Convidar alguém para seu time.",
"upload_csv_file": "Carregar arquivo .csv",
"invite_via_email": "Convidar via e-mail",
"change_member_role": "Alterar função de membro da equipe",
"disable_cal_branding": "Remover a marca {{appName}}",
"disable_cal_branding_description": "Ocultar todas as marcas de {{appName}} de suas páginas públicas.",
@@ -867,6 +875,7 @@
"account_managed_by_identity_provider_description": "Para alterar o seu endereço de email, senha, ativar a autenticação de dois fatores e outras alterações, por favor utilize as configurações de seu provedor de identidade {{provider}}.",
"signin_with_google": "Entrar com Google",
"signin_with_saml": "Entrar com SAML",
"signin_with_saml_oidc": "Entrar com SAML/OIDC",
"you_will_need_to_generate": "Você precisa gerar um token de acesso na ferramenta de agendamento antiga.",
"import": "Importar",
"import_from": "Importar de",
@@ -966,6 +975,8 @@
"offer_seats_description": "Oferecer assentos para reserva. Isto desativa automaticamente reservas de convidados e confirmações.",
"seats_available_one": "Assento disponível",
"seats_available_other": "Assentos disponíveis",
"seats_nearly_full": "Assentos quase preenchidos",
"seats_half_full": "Assentos sendo preenchidos rapidamente",
"number_of_seats": "Número de assentos por reserva",
"enter_number_of_seats": "Insira a quantidade de assentos",
"you_can_manage_your_schedules": "Você pode gerenciar suas agendas na página de Disponibilidade.",
@@ -1046,12 +1057,15 @@
"how_you_want_add_cal_site": "Como deseja adicionar o {{appName}} ao seu site?",
"choose_ways_put_cal_site": "Escolha uma das maneiras a seguir para colocar o {{appName}} no seu site.",
"setting_up_zapier": "Configurando a sua integração com o Zapier",
"setting_up_make": "Configurando a sua integração com o Make",
"generate_api_key": "Gerar chave de API",
"generate_api_key_description": "Gerar uma chave de API para usar com o {{appName}} em",
"your_unique_api_key": "Sua chave de API única",
"copy_safe_api_key": "Copie esta chave de API e salve em um local seguro. Se perder a chave, será preciso gerar uma nova.",
"zapier_setup_instructions": "<0>Entre na conta do Zapier e crie um novo Zap.</0><1>Selecione {{appName}} como seu app de gatilho. Escolha também um evento de gatilho.</1><2>Escolha sua conta e insira sua chave de API única.</2><3>Teste seu gatilho.</3><4>Tudo pronto!</4>",
"make_setup_instructions": "<0>Vá para <1><0>Vincular convite do Make</0></1> e instale o aplicativo do Cal.com.</0><1>Entre na conta do Make e crie um novo Cenário.</1><2>Selecione Cal.com como seu aplicativo de gatilho. Escolha também um evento de gatilho.</2><3>Escolha sua conta e insira sua chave de API única.</3><4>Teste seu gatilho.</4><5>Tudo pronto!</5>",
"install_zapier_app": "Instale primeiro o app do Zapier na loja de apps.",
"install_make_app": "Instale primeiro o aplicativo do Make na loja de aplicativos.",
"connect_apple_server": "Conectar com o servidor da Apple",
"calendar_url": "URL do calendário",
"apple_server_generate_password": "Gerar uma senha específica de app para usar com o {{appName}} em",
@@ -1101,6 +1115,7 @@
"email_attendee_action": "enviar e-mail aos participantes",
"sms_attendee_action": "Enviar SMS para participante",
"sms_number_action": "enviar SMS para um número específico",
"send_reminder_sms": "Envie lembretes de reuniões facilmente aos participantes por SMS",
"whatsapp_number_action": "enviar mensagem por WhatsApp para um número específico",
"whatsapp_attendee_action": "enviar mensagem por WhatsApp para participante",
"workflows": "Fluxos de trabalho",
@@ -1260,6 +1275,7 @@
"error_updating_settings": "Erro ao atualizar configurações",
"personal_cal_url": "Meu URL pessoal da {{appName}}",
"bio_hint": "Escreva algumas frases sobre você. Isso aparecerá no URL da sua página pessoal.",
"user_has_no_bio": "Este usuário ainda não adicionou uma biografia.",
"delete_account_modal_title": "Excluir conta",
"confirm_delete_account_modal": "Tem certeza de que deseja excluir sua conta {{appName}}?",
"delete_my_account": "Excluir minha conta",
@@ -1442,6 +1458,7 @@
"add_limit": "Adicione limite",
"team_name_required": "Nome da equipe obrigatório",
"show_attendees": "Compartilhe informações do participante entre convidados",
"show_available_seats_count": "Mostrar a quantidade de assentos disponíveis",
"how_booking_questions_as_variables": "Como usar perguntas de reserva como variáveis?",
"format": "Formato",
"uppercase_for_letters": "Use letras maiúsculas para todas as letras",
@@ -1675,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Você tem certeza que deseja remover a configuração de {{connectionType}}? Os membros do seu time que utilizam {{connectionType}} para fazer login não conseguirão acessar o Cal.com.",
"organizer_timezone": "Fuso horário do organizador",
"email_user_cta": "Ver convite",
"email_no_user_invite_heading_team": "Você recebeu um convite para ingressar em um time do {{appName}}",
"email_no_user_invite_heading_org": "Você recebeu um convite para ingressar em uma organização do {{appName}}",
"email_no_user_invite_subheading": "Você recebeu um convite de {{invitedBy}} para ingressar em sua equipe em {{appName}}. {{appName}} é um agendador que concilia eventos e permite que sua equipe agende reuniões sem precisar trocar e-mails.",
"email_user_invite_subheading_team": "Você recebeu um convite de {{invitedBy}} para ingressar na equipe \"{{teamName}}\" em {{appName}}. {{appName}} é um agendador que concilia eventos e permite que sua equipe agende reuniões sem precisar trocar e-mails.",
"email_user_invite_subheading_org": "Você recebeu um convite de {{invitedBy}} para ingressar na organização \"{{teamName}}\" em {{appName}}. {{appName}} é um agendador que concilia eventos e permite que sua organização agende reuniões sem precisar trocar e-mails.",
"email_no_user_invite_steps_intro": "Orientaremos ao longo de alguns passos rápidos para que você comece logo a agendar eventos com {{entity}} sem preocupação.",
"email_no_user_step_one": "Escolha seu nome de usuário",
"email_no_user_step_two": "Conecte com sua conta de calendário",
@@ -1847,6 +1867,8 @@
"insights_no_data_found_for_filter": "Nenhum dado encontrado para o filtro ou dados selecionados.",
"acknowledge_booking_no_show_fee": "Estou ciente de que, se eu não comparecer a este evento, será cobrada no meu cartão uma taxa de não comparecimento de {{amount, currency}}.",
"card_details": "Detalhes do cartão",
"something_went_wrong_on_our_end": "Algo deu errado da nossa parte. Entre em contato com a equipe de suporte, solucionaremos o problema imediatamente.",
"please_provide_following_text_to_suppport": "Para obter mais ajuda, insira o texto a seguir ao entrar em contato com o suporte",
"seats_and_no_show_fee_error": "Neste momento, não é possível habilitar assentos e cobrar taxa de não comparecimento",
"complete_your_booking": "Conclua sua reserva",
"complete_your_booking_subject": "Conclua sua reserva: {{title}} à(s) {{date}}",
@@ -1957,7 +1979,10 @@
"insights_team_filter": "Equipe: {{teamName}}",
"insights_user_filter": "Usuário: {{userName}}",
"insights_subtitle": "Veja insights de reserva em seus eventos",
"location_options": "{{locationCount}} opções de local",
"custom_plan": "Plano personalizado",
"email_embed": "Incorporação de e-mail",
"add_times_to_your_email": "Selecione alguns horários disponíveis e incorpore-os no seu e-mail",
"select_time": "Selecione o horário",
"select_date": "Selecione a data",
"see_all_available_times": "Veja todos os horários disponíveis",
@@ -1967,9 +1992,66 @@
"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",
"org_max_team_warnings": "Você poderá adicionar mais equipes depois.",
"what_is_this_meeting_about": "De que se trata esta reunião?",
"add_to_team": "Adicionar à equipe",
"remove_users_from_org": "Remover usuários da organização",
"remove_users_from_org_confirm": "Tem certeza de que deseja remover {{userCount}} usuários desta organização?",
"user_has_no_schedules": "Este usuário ainda não definiu nenhuma agenda",
"user_isnt_in_any_teams": "Este usuário não está em nenhuma equipe",
"requires_booker_email_verification": "Requer verificação de e-mail do reservante",
"description_requires_booker_email_verification": "Para assegurar a verificação do e-mail do reservante antes de agendar eventos",
"requires_confirmation_mandatory": "Mensagens de texto só podem ser enviadas a participantes quando este tipo de evento exigir confirmação.",
"kyc_verification_information": "Para assegurar a segurança, é preciso verificar {{teamOrAccount}} antes de enviar mensagens de texto aos participantes. Fale conosco via <a>{{supportEmail}}</a> e envie as seguintes informações:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>para empresas: anexe a documentação de verificação da sua empresa</li><li>Para pessoas físicas: anexe um documento de identidade emitido pelo governo</li></ul>",
"verify_team_or_account": "Verificar {{teamOrAccount}}",
"verify_account": "Verificar Conta",
"kyc_verification": "Verificação \"conheça seu cliente\"",
"organizations": "Organizações",
"org_admin_other_teams": "Outros times",
"org_admin_other_teams_description": "Aqui você pode conferir os times da sua organização dos quais você não faz parte. Se necessário, você pode se adicionar a eles.",
"no_other_teams_found": "Nenhum outro time encontrado",
"no_other_teams_found_description": "Não há outros times nesta organização.",
"attendee_first_name_variable": "Nome do participante",
"attendee_last_name_variable": "Sobrenome do participante",
"attendee_first_name_info": "Nome da pessoa que fez a reserva",
"attendee_last_name_info": "O sobrenome da pessoa que fez a reserva",
"me": "Eu",
"verify_team_tooltip": "Verifique seu time para habilitar o envio de mensagens aos participantes",
"member_removed": "Membro removido",
"my_availability": "Minha disponibilidade",
"team_availability": "Disponibilidade da equipe",
"backup_code": "Código de reserva",
"backup_codes": "Códigos de reserva",
"backup_code_instructions": "Cada código de reserva pode ser usado exatamente uma vez para conceder acesso sem seu autenticador.",
"backup_codes_copied": "Códigos de reserva copiados!",
"incorrect_backup_code": "O código de reserva está incorreto.",
"lost_access": "Acesso perdido",
"missing_backup_codes": "Nenhum código de reserva encontrado. Gere nas suas configurações.",
"admin_org_notification_email_subject": "Nova organização criada: ação pendente",
"hi_admin": "Olá, administrador",
"admin_org_notification_email_title": "A organização exige uma configuração de DNS",
"admin_org_notification_email_body_part1": "Foi criada uma organização com um campo de dados dinâmicos \"{{orgSlug}}\".<br /><br />Configure seu registro de DNS para apontar o subdomínio correspondente da nova organização para onde o aplicativo principal está sendo executado. Se não fizer isso, a organização não funcionará.<br /><br />Confira algumas opções muito básicas de configuração para que o subdomínio aponte para seu aplicativo e a página do perfil da organização seja carregada.<br /><br />É possível fazer isso com um registro de endereço:",
"admin_org_notification_email_body_part2": "Ou o registro CNAME:",
"admin_org_notification_email_body_part3": "Após configurar o subdomínio, marque a configuração do DNS com concluída nas Configurações de administrador das organizações.",
"admin_org_notification_email_cta": "Ir para Configurações de administrador das organizações",
"org_has_been_processed": "A organização foi processada",
"org_error_processing": "Ocorreu um erro ao processar esta organização",
"orgs_page_description": "Uma lista de todas as organizações. Ao aceitar uma organização, todos os usuários com aquele domínio de e-mail poderão entrar SEM a verificação do e-mail.",
"unverified": "Sem verificação",
"dns_missing": "DNS ausente",
"mark_dns_configured": "Marcar como DNS configurado",
"value": "Valor",
"your_organization_updated_sucessfully": "Sua organização foi atualizada com êxito",
"team_no_event_types": "Sua equipe não tem tipos de evento",
"seat_options_doesnt_multiple_durations": "A opção de assento não é compatível com múltiplas durações",
"include_calendar_event": "Incluir evento do calendário",
"recently_added": "Adicionou recentemente",
"no_members_found": "Nenhum membro encontrado",
"event_setup_length_error": "Configuração do evento: deve ter pelo menos 1 minuto de duração.",
"availability_schedules": "Agendamentos de disponibilidade",
"view_only_edit_availability_not_onboarded": "Este usuário não concluiu a integração. Não será possível definir a disponibilidade antes de concluir a integração.",
"view_only_edit_availability": "Você está vendo a disponibilidade deste usuário. Você só pode editar sua disponibilidade.",
"edit_users_availability": "Editar disponibilidade do usuário: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adicione suas novas strings aqui em cima ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"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",
"copy_somewhere_safe": "Guarde esta chave da API num local seguro. Não poderá consultar a mesma novamente.",
"verify_email_email_body": "Confirme o seu endereço de e-mail clicando no botão abaixo.",
"verify_email_by_code_email_body": "Confirme o seu endereço de e-mail utilizando o código abaixo.",
"verify_email_email_link_text": "Aqui está a ligação caso não goste de clicar em botões:",
"email_verification_code": "Introduza o código de verificação",
"email_verification_code_placeholder": "Introduza o código de verificação enviado para o 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": "Declinado: {{title}} em {{date}}",
"event_cancelled_subject": "Cancelado: {{title}} a {{date}}",
"event_request_declined": "O seu pedido de evento foi declinado",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Um evento recorrente aguarda a sua aprovação",
"someone_requested_an_event": "Alguém pediu para agendar um evento no seu calendário.",
"someone_requested_password_reset": "Alguém pediu uma ligação para alterar a sua senha.",
"password_reset_email_sent": "Se este e-mail existir no nosso sistema, deverá receber uma mensagem de redefinição.",
"password_reset_instructions": "Se não fez este pedido, pode ignorar este email com segurança e a sua senha não será alterada.",
"event_awaiting_approval_subject": "A aguardar aprovação: {{title}} em {{date}}",
"event_still_awaiting_approval": "Um evento ainda aguarda a sua aprovação",
@@ -217,6 +224,10 @@
"already_have_an_account": "Já tem uma conta?",
"create_account": "Criar Conta",
"confirm_password": "Confirmar senha",
"confirm_auth_change": "Isto irá alterar a forma como inicia sessão",
"confirm_auth_email_change": "A alteração do endereço de e-mail irá desassociar o seu método de autenticação atual para iniciar sessão no Cal.com. Vamos solicitar que confirme o seu novo endereço de e-mail. Ao continuar, a sua sessão será terminada e vai utilizar o seu novo endereço de e-mail para iniciar sessão em vez do seu método de autenticação atual, depois de definir a sua palavra-passe, de acordo com as instruções que serão enviadas para o seu e-mail.",
"reset_your_password": "Defina a sua nova palavra-passe seguindo as instruções enviadas para o seu endereço de e-mail.",
"email_change": "Inicie sessão novamente com o seu novo endereço de e-mail e palavra-passe.",
"create_your_account": "Crie a sua conta",
"sign_up": "Registar",
"youve_been_logged_out": "A sessão foi encerrada",
@@ -243,6 +254,10 @@
"all": "Todos as aplicações",
"yours": "A sua conta",
"available_apps": "Aplicações disponíveis",
"available_apps_lower_case": "Aplicações disponíveis",
"available_apps_desc": "Não tem aplicações instaladas. Consulte as aplicações mais populares abaixo e explore mais na nossa <1>App Store</1>",
"fixed_host_helper": "Adicione qualquer pessoa que precise de participar no evento. <1>Saiba mais</1>",
"round_robin_helper": "As pessoas no grupo revezam-se e apenas uma pessoa aparecerá no evento.",
"check_email_reset_password": "Verifique o seu email. Enviámos uma ligação para redefinir a sua senha.",
"finish": "Terminar",
"organization_general_description": "Faça a gestão das definições do idioma e fuso horário da sua equipa",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "Por último, uma breve descrição sobre si e uma fotografia ajudam a obter reservas e a mostrar às pessoas com quem estão a reservar.",
"set_availability_instructions": "Definir períodos em que está disponível numa base recorrente. Mais tarde poderá criar mais destes, e atribuí-los a diferentes calendários.",
"set_availability": "Definir disponibilidade",
"availability_settings": "Configurações de disponibilidade",
"continue_without_calendar": "Continuar sem calendário",
"connect_your_calendar": "Ligar o seu calendário",
"connect_your_video_app": "Associar as suas aplicações de vídeo",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "As ligações de reservas dinâmicas de grupos podem ser criadas dinamicamente ao adicionar múltiplos nomes de utilizador com um '+'. Por exemplo: '{{appName}}/duarte+marta'",
"allow_dynamic_booking": "Permitir que os participantes façam reservas consigo através de reservas dinâmicas de grupos",
"dynamic_booking": "Ligações dinâmicas de grupos",
"allow_seo_indexing": "Permitir que os motores de pesquisa acedam ao seu conteúdo público",
"seo_indexing": "Permitir indexação para SEO",
"email": "Email",
"email_placeholder": "nome@exemplo.com",
"full_name": "Nome Completo",
@@ -406,6 +424,7 @@
"booking_requested": "Reserva solicitada",
"meeting_ended": "A reunião terminou",
"form_submitted": "Formulário enviado",
"booking_paid": "Reserva paga",
"event_triggers": "Causadores de eventos",
"subscriber_url": "URL do assinante",
"create_new_webhook": "Criar um novo webhook",
@@ -506,6 +525,7 @@
"your_name": "O seu nome",
"your_full_name": "O seu nome completo",
"no_name": "Sem nome",
"enter_number_between_range": "Introduza um número entre 1 e {{maxOccurences}}",
"email_address": "Endereço de email",
"enter_valid_email": "Insira um e-mail válido",
"location": "Localização",
@@ -543,6 +563,7 @@
"leave": "Sair",
"profile": "Perfil",
"my_team_url": "URL da Minha Equipa",
"my_teams": "As minhas equipas",
"team_name": "Nome da Equipa",
"your_team_name": "Nome da sua equipa",
"team_updated_successfully": "Equipa atualizada com sucesso",
@@ -570,6 +591,8 @@
"invite_new_member": "Convidar um Novo Membro",
"invite_new_member_description": "Nota: isto vai ter o <1>custo de um lugar adicional ($15/m)</1> na sua subscrição.",
"invite_new_team_member": "Convide alguém para a sua equipa.",
"upload_csv_file": "Carregar um ficheiro .csv",
"invite_via_email": "Convidar por e-mail",
"change_member_role": "Alterar função de membro da equipa",
"disable_cal_branding": "Desativar a marca {{appName}}",
"disable_cal_branding_description": "Ocultar todas as marcas de {{appName}} das suas páginas públicas.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "O utilizador tem de aceitar o convite para ver a disponibilidade",
"set_as_away": "Defina o seu estado como ausente",
"set_as_free": "Desactivar estado de ausência",
"toggle_away_error": "Erro ao atualizar o estado de ausência",
"user_away": "Este utilizador está ausente de momento.",
"user_away_description": "A pessoa com quem está a tentar fazer uma reserva está ausente, pelo que não está a aceitar novas reservas.",
"meet_people_with_the_same_tokens": "Conheça pessoas com os mesmos tokens",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Para alterar o seu email ou a sua senha, para ativar a autenticação de dois fatores ou outras opções, vá às definições da sua conta {{provider}}.",
"signin_with_google": "Iniciar sessão com o Google",
"signin_with_saml": "Iniciar sessão com SAML",
"signin_with_saml_oidc": "Iniciar sessão com SAML/OIDC",
"you_will_need_to_generate": "Precisará de gerar um token de acesso na página das integrações.",
"import": "Importar",
"import_from": "Importar de",
@@ -950,6 +975,8 @@
"offer_seats_description": "Oferecer lugares para reservas (isto desactiva os convidados e confirmações nas reservas)",
"seats_available_one": "Lugar disponível",
"seats_available_other": "Lugares disponíveis",
"seats_nearly_full": "Lugares quase esgotados",
"seats_half_full": "Lugares rapidamente ocupados",
"number_of_seats": "Número de lugares por reserva",
"enter_number_of_seats": "Digite um número de lugares",
"you_can_manage_your_schedules": "Pode gerir os seus horários na página de Disponibilidade.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Como deseja adicionar o {{appName}} ao seu site?",
"choose_ways_put_cal_site": "Escolha uma das seguintes formas de colocar o {{appName}} no seu site.",
"setting_up_zapier": "A configurar a sua integração com Zapier",
"setting_up_make": "A configurar a sua integração com Make",
"generate_api_key": "Gerar chave de API",
"generate_api_key_description": "Gerar uma chave da API para utilizar com {{appName}} em",
"your_unique_api_key": "A sua chave de API única",
"copy_safe_api_key": "Copie esta chave da API e guarde-a num lugar seguro. Se perder esta chave, terá de gerar uma nova.",
"zapier_setup_instructions": "<0>Inicie sessão na sua conta Zapier e crie um novo Zap.</0><1>Seleccione {{appName}} como aplicação acionadora. Selecione também um evento acionador.</1><2>Seleccione a sua conta e insira a sua chave de API única.</2><3>Teste o seu accionador.</3><4>Está configurado!</4>",
"make_setup_instructions": "<0>Aceda a <1><0>Criar ligação de convite</0></1> e instale a aplicação Cal.com.</0><1>Inicie sessão na sua conta Make e crie um novo Cenário.</1><2>Selecione Cal.com como a sua aplicação de Trigger. Escolha também um evento de Trigger.</2><3>Escolha a sua conta e depois introduza a sua Chave da API Única.</3><4>Teste o seu Trigger.</4><5>Está pronto!</5>",
"install_zapier_app": "Por favor, primeiro instale a aplicação Zapier da App Store.",
"install_make_app": "Instale primeiro a aplicação Make na app store.",
"connect_apple_server": "Ligar a Apple Server",
"calendar_url": "URL do calendário",
"apple_server_generate_password": "Crie uma palavra-passe de aplicação específica para utilizar com {{appName}} em",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "enviar e-mail aos participantes",
"sms_attendee_action": "Enviar SMS ao participante",
"sms_number_action": "enviar SMS para um número específico",
"send_reminder_sms": "Envie com facilidade lembretes de reunião via SMS aos seus participantes",
"whatsapp_number_action": "enviar Whatsapp para um número específico",
"whatsapp_attendee_action": "enviar Whatsapp ao participante",
"workflows": "Fluxos de trabalho",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Erro ao atualizar as definições",
"personal_cal_url": "O meu endereço pessoal do {{appName}}",
"bio_hint": "Algumas frases sobre si. Isto irá ser mostrado no endereço da sua página pessoal.",
"user_has_no_bio": "Este utilizador ainda não adicionou uma biografia.",
"delete_account_modal_title": "Eliminar conta",
"confirm_delete_account_modal": "Tem a certeza que pretende eliminar a sua conta {{appName}}?",
"delete_my_account": "Eliminar a minha conta",
@@ -1426,6 +1458,7 @@
"add_limit": "Adicionar limite",
"team_name_required": "É necessário um nome para a equipa",
"show_attendees": "Partilhar informações dos participantes entre os convidados",
"show_available_seats_count": "Mostrar o número de lugares disponíveis",
"how_booking_questions_as_variables": "Como utilizar perguntas de agendamento como variáveis?",
"format": "Formato",
"uppercase_for_letters": "Utilize letras maiúsculas para todas as letras",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Tem a certeza que pretende eliminar a configuração {{connectionType}}? Os membros da sua equipa que utilizem {{connectionType}} para o início de sessão deixarão de poder aceder a Cal.com.",
"organizer_timezone": "Fuso horário do organizador",
"email_user_cta": "Ver convite",
"email_no_user_invite_heading_team": "Recebeu um convite para fazer parte de uma equipa {{appName}}",
"email_no_user_invite_heading_org": "Recebeu um convite para fazer parte de uma organização {{appName}}",
"email_no_user_invite_subheading": "Recebeu um convite de {{invitedBy}} para fazer parte da respetiva equipa em {{appName}}. {{appName}} é um ferramenta de conciliação e agendamento de eventos que lhe permite a si e à sua equipa agendar reuniões sem o pingue-pongue de e-mails.",
"email_user_invite_subheading_team": "Recebeu um convite de {{invitedBy}} para fazer parte da equipa `{{teamName}}` em {{appName}}. {{appName}} é uma ferramenta de conciliação e agendamento de eventos que lhe permite a si e à sua equipa agendar reuniões sem o pingue-pongue de mensagens eletrónicas.",
"email_user_invite_subheading_org": "Recebeu um convite de {{invitedBy}} para fazer parte de {{teamName}} da sua organização em {{appName}}. {{appName}} é a solução de agendamento de eventos que lhe permite a si e à sua organização agendar reuniões sem o pingue-pongue de e-mails.",
"email_no_user_invite_steps_intro": "Vamos ajudar com alguns pequenos passos para que você e a sua {{entity}} possam desfrutar rapidamente de uma gestão de agendamentos sem complicações.",
"email_no_user_step_one": "Escolha o seu nome de utilizador",
"email_no_user_step_two": "Associe a sua conta de calendário",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Não foram encontrados dados para as datas ou filtros selecionados.",
"acknowledge_booking_no_show_fee": "Eu aceito que caso eu não compareça a este evento, será cobrada uma taxa de não-comparência de {{amount, currency}} no meu cartão.",
"card_details": "Detalhes do cartão",
"something_went_wrong_on_our_end": "Algo correu mal do nosso lado. Entre em contacto com a nossa equipa de apoio e resolveremos o problema imediatamente para si.",
"please_provide_following_text_to_suppport": "Forneça o seguinte texto ao contactar o apoio para conseguirmos prestar um melhor apoio",
"seats_and_no_show_fee_error": "Atualmente, não é possível ativar lugares e cobrar uma taxa de não-comparência",
"complete_your_booking": "Concluir a sua reserva",
"complete_your_booking_subject": "Concluir a sua reserva: {{title}} a {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Abrir a sua janela do Cal quando alguém clicar num elemento.",
"need_help_embedding": "Precisa de ajuda? Consulte os nossos guias para incorporar o Cal no Wix, Squarespace, ou WordPress. Consulte ainda as nossas perguntas frequentes ou explore opções avançadas de incorporação.",
"book_my_cal": "Reservar o meu Cal",
"first_name": "Primeiro nome",
"last_name": "Último nome",
"first_last_name": "Primeiro nome, Último nome",
"invite_as": "Convidar como",
"form_updated_successfully": "Formulário atualizado com sucesso.",
"disable_attendees_confirmation_emails": "Desativar mensagens eletrónicas de confirmação predefinidas para participantes",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Crie o seu primeiro webhook para este tipo de evento",
"install_app_on": "Instalar aplicação em",
"create_for": "Criar para",
"currency": "Moeda",
"organization_banner_description": "Crie um ambiente onde as suas equipas possam criar aplicações partilhadas, fluxos de trabalho e tipos de eventos com distribuição equilibrada e agendamento coletivo.",
"organization_banner_title": "Faça a gestão de múltiplas organizações com múltiplas equipas",
"set_up_your_organization": "Configurar a sua organização",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Equipa: {{teamName}}",
"insights_user_filter": "Utilizador: {{userName}}",
"insights_subtitle": "Ver informações sobre reservas nos seus eventos",
"location_options": "{{locationCount}} opções de localização",
"custom_plan": "Plano personalizado",
"email_embed": "Incorporação de e-mail",
"add_times_to_your_email": "Selecione alguns horários disponíveis e incorpore-os no seu E-mail",
"select_time": "Selecionar horário",
"select_date": "Selecionar data",
"see_all_available_times": "Ver todos os horários disponíveis",
"org_team_names_example": "Por exemplo, Equipa de Marketing",
"org_team_names_example_1": "Por exemplo, Equipa de Marketing",
"org_team_names_example_2": "Por exemplo, Equipa de Vendas",
"org_team_names_example_3": "Por exemplo, Equipa de Design",
"org_team_names_example_4": "Por exemplo, Equipa de Engenharia",
"org_team_names_example_5": "Por exemplo, Equipa de Análise de Dados",
"org_max_team_warnings": "Poderá adicionar mais equipas mais tarde.",
"what_is_this_meeting_about": "Sobre o que é esta reunião?",
"add_to_team": "Adicionar à equipa",
"remove_users_from_org": "Remover utilizadores da organização",
"remove_users_from_org_confirm": "Tem a certeza de que deseja remover {{userCount}} utilizadores desta organização?",
"user_has_no_schedules": "Este utilizador ainda não definiu nenhum horário",
"user_isnt_in_any_teams": "Este utilizador não está em nenhuma equipa",
"requires_booker_email_verification": "Requer a confirmação do e-mail do responsável pela reserva",
"description_requires_booker_email_verification": "Para garantir a confirmação do e-mail do responsável pela reserva antes de agendar eventos",
"requires_confirmation_mandatory": "As mensagens de texto só podem ser enviadas aos participantes quando o tipo de evento requerer confirmação.",
"kyc_verification_information": "Para garantir a segurança, tem de verificar {{teamOrAccount}} antes de enviar mensagens de texto aos participantes. Contacte-nos em <a>{{supportEmail}}</a> e forneça as seguintes informações:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>Para empresas: anexe a sua documentação de verificação empresarial</li><li>Para indivíduos: anexe um documento de identificação emitido pelo governo</li></ul>",
"verify_team_or_account": "Verificar {{teamOrAccount}}",
"verify_account": "Verificar conta",
"kyc_verification": "Verificação KYC",
"organizations": "Organizações",
"org_admin_other_teams": "Outras equipas",
"org_admin_other_teams_description": "Aqui pode ver equipas dentro da sua organização e das quais não faz parte. Pode adicionar-se às mesmas, se necessário.",
"no_other_teams_found": "Não foram encontradas outras equipas",
"no_other_teams_found_description": "Não há outras equipas nesta organização.",
"attendee_first_name_variable": "Primeiro nome do participante",
"attendee_last_name_variable": "Último nome do participante",
"attendee_first_name_info": "Primeiro nome da pessoa da reserva",
"attendee_last_name_info": "Último nome da pessoa da reserva",
"me": "Eu",
"verify_team_tooltip": "Verifique a sua equipa para poder enviar mensagens aos participantes",
"member_removed": "Membro removido",
"my_availability": "A minha disponibilidade",
"team_availability": "Disponibilidade da equipa",
"backup_code": "Código alternativo",
"backup_codes": "Códigos alternativos",
"backup_code_instructions": "Cada código alternativo pode ser utilizado exatamente uma vez para conceder acesso sem o seu autenticador.",
"backup_codes_copied": "Códigos alternativos copiados!",
"incorrect_backup_code": "O código alternativo está incorreto.",
"lost_access": "Acesso perdido",
"missing_backup_codes": "Não foram encontrados códigos alternativos. Faça a gestão dos mesmos nas suas definições.",
"admin_org_notification_email_subject": "Nova organização criada: ação pendente",
"hi_admin": "Olá Administrador(a)",
"admin_org_notification_email_title": "Uma organização requer a configuração do DNS",
"admin_org_notification_email_body_part1": "Foi criada uma organização com o slug \"{{orgSlug}}\".<br /><br />Certifique-se que configura o seu registo de DNS, para apontar o subdomínio correspondente à nova organização para onde a aplicação principal está a funcionar. Caso contrário, a organização não vai funcionar.<br /><br />Aqui estão apenas as opções muito básicas para configurar um subdomínio, para que o mesmo aponte para a sua aplicação e para que esta carregue a página de perfil da organização.<br /><br />Pode fazer isto com o A Record:",
"admin_org_notification_email_body_part2": "Ou o registo CNAME:",
"admin_org_notification_email_body_part3": "Depois de configurar o subdomínio, marque a configuração DNS como concluída nas Definições de Administração de Organizações.",
"admin_org_notification_email_cta": "Ir para as Definições de Administração de Organizações",
"org_has_been_processed": "A organização foi processada",
"org_error_processing": "Ocorreu um erro ao processar esta organização",
"orgs_page_description": "Uma lista de todas as organizações. Aceitar uma organização permitirá que todos os utilizadores com esse domínio de e-mail se registem SEM a verificação de e-mail.",
"unverified": "Não verificada",
"dns_missing": "DNS em falta",
"mark_dns_configured": "Marcar como o DNS configurado",
"value": "Valor",
"your_organization_updated_sucessfully": "A sua organização foi atualizada com sucesso",
"team_no_event_types": "Esta equipa não tem tipos de evento",
"seat_options_doesnt_multiple_durations": "A opção lugar não suporta múltiplas durações",
"include_calendar_event": "Incluir evento no calendário",
"recently_added": "Adicionados recentemente",
"no_members_found": "Nenhum membro encontrado",
"event_setup_length_error": "Configuração do Evento: a duração deve ser de, pelo menos, 1 minuto.",
"availability_schedules": "Horários de Disponibilidade",
"view_only_edit_availability_not_onboarded": "Este utilizador ainda não completou o processo de integração. Não poderá definir a respetiva disponibilidade até que este procedimento esteja concluído para este utilizador.",
"view_only_edit_availability": "Está a visualizar a disponibilidade deste utilizador. Só pode editar a sua própria disponibilidade.",
"edit_users_availability": "Editar a disponibilidade do utilizador: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Verificați-vă adresa de e-mail pentru a garanta cea mai bună furnizare a e-mailurilor și datelor de calendar",
"verify_email_email_header": "Verificați-vă adresa de e-mail",
"verify_email_email_button": "Verificare e-mail",
"copy_somewhere_safe": "Salvați această cheie API într-un loc sigur. Nu o veți mai putea vedea din nou.",
"verify_email_email_body": "Verificați-vă adresa de e-mail făcând clic pe butonul de mai jos.",
"verify_email_by_code_email_body": "Verificați-vă adresa de e-mail utilizând codul de mai jos.",
"verify_email_email_link_text": "Iată linkul, în caz că nu vă place să apăsați butoane:",
"email_verification_code": "Introduceți codul de verificare",
"email_verification_code_placeholder": "Introduceți codul de verificare trimis la adresa dvs. de e-mail",
"incorrect_email_verification_code": "Codul de verificare este incorect.",
"email_sent": "E-mail trimis cu succes",
"email_not_sent": "A survenit o eroare la trimiterea e-mailului",
"event_declined_subject": "Refuzat: {{title}} în {{date}}",
"event_cancelled_subject": "Anulat: {{title}} pe {{date}}",
"event_request_declined": "Solicitarea pentru eveniment a fost refuzată",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Un eveniment recurent așteaptă aprobarea dvs.",
"someone_requested_an_event": "Cineva a solicitat să programeze un eveniment în calendar.",
"someone_requested_password_reset": "Cineva a solicitat un link pentru a vă schimba parola.",
"password_reset_email_sent": "Dacă această adresă există în sistemul nostru, ar trebui să primiți un e-mail de resetare.",
"password_reset_instructions": "Dacă nu ați solicitat acest lucru, puteți ignora acest e-mail, iar parola nu va fi schimbată.",
"event_awaiting_approval_subject": "Se așteaptă aprobarea: {{title}} în {{date}}",
"event_still_awaiting_approval": "Un eveniment încă așteaptă aprobarea dvs.",
@@ -217,6 +224,10 @@
"already_have_an_account": "Aveți deja un cont?",
"create_account": "Creează un cont",
"confirm_password": "Confirmă parola",
"confirm_auth_change": "Acest lucru va schimba modul în care vă conectați",
"confirm_auth_email_change": "Schimbarea adresei de e-mail va deconecta metoda actuală de conectare la Cal.com. Vă vom solicita să vă verificați noua adresă de e-mail. În continuare, veți fi deconectat și veți folosi noua dvs. adresă de e-mail pentru a vă conecta în locul metodei actuale de autentificare după setarea parolei, urmând instrucțiunile care vor fi trimise pe adresa dvs. de e-mail.",
"reset_your_password": "Setați noua parolă cu instrucțiunile trimise la adresa dvs. de e-mail.",
"email_change": "Conectați-vă din nou cu noua adresă de e-mail și parolă.",
"create_your_account": "Creează-ți contul",
"sign_up": "Înregistrează-te",
"youve_been_logged_out": "Ai fost delogat",
@@ -243,6 +254,10 @@
"all": "Toate aplicațiile",
"yours": "Contul dvs.",
"available_apps": "Aplicații disponibile",
"available_apps_lower_case": "Aplicații disponibile",
"available_apps_desc": "Nu aveți nicio aplicație instalată. Vizualizați aplicațiile populare de mai jos și explorați mai multe în <1>App Store</1>",
"fixed_host_helper": "Adăugați pe oricine trebuie să participe la eveniment. <1>Aflați mai multe</1>",
"round_robin_helper": "Persoanele din grup participă pe rând și doar o singură persoană va fi prezentă pentru eveniment.",
"check_email_reset_password": "Verificați adresa de e-mail. V-am trimis un link pentru resetarea parolei.",
"finish": "Finalizeaza",
"organization_general_description": "Gestionați setările echipei pentru limbă și fus orar",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "Nu în ultimul rând, o scurtă descriere despre dvs. și o fotografie vă ajută să obțineți rezervări și să le arătați celorlalți cu cine fac rezervarea.",
"set_availability_instructions": "Definiți intervalele de timp atunci când sunteți disponibil în mod recurent. Puteți crea mai multe dintre acestea mai târziu și atribuiți-le calendarelor diferite.",
"set_availability": "Setează-ți disponibilitatea",
"availability_settings": "Setări de disponibilitate",
"continue_without_calendar": "Continuă fără calendar",
"connect_your_calendar": "Conectează-ți calendarul",
"connect_your_video_app": "Conectați-vă aplicațiile video",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Linkuri de rezervare în grup care pot fi create dinamic prin adăugarea mai multor nume de utilizator cu „+”. Exemplu: „{{appName}}/bailey+peer”",
"allow_dynamic_booking": "Permiteți participanților să vă efectueze rezervări dinamice în grup",
"dynamic_booking": "Linkuri de grup dinamice",
"allow_seo_indexing": "Permiteți motoarelor de căutare să acceseze conținutul dvs. public",
"seo_indexing": "Permiteți indexarea SEO",
"email": "E-mail",
"email_placeholder": "jdoe@exemplu.com",
"full_name": "Numele complet",
@@ -406,6 +424,7 @@
"booking_requested": "Rezervare solicitată",
"meeting_ended": "Ședință încheiată",
"form_submitted": "Formular trimis",
"booking_paid": "Rezervare plătită",
"event_triggers": "Declanșatoare eveniment",
"subscriber_url": "URL abonat",
"create_new_webhook": "Creează un nou webhook",
@@ -506,6 +525,7 @@
"your_name": "Numele tău",
"your_full_name": "Numele dvs. complet",
"no_name": "Niciun nume",
"enter_number_between_range": "Introduceți un număr între 1 și {{maxOccurences}}",
"email_address": "Adresa de e-mail",
"enter_valid_email": "Introduceți un e-mail valid",
"location": "Locaţie",
@@ -543,6 +563,7 @@
"leave": "Părăsește",
"profile": "Profil",
"my_team_url": "URL-ul echipei mele",
"my_teams": "Echipele mele",
"team_name": "Denumirea echipei",
"your_team_name": "Numele echipei tale",
"team_updated_successfully": "Echipă actualizată cu succes",
@@ -570,6 +591,8 @@
"invite_new_member": "Invitați un nou membru în echipă",
"invite_new_member_description": "Notă: acest lucru va <1>adăuga un loc suplimentar (15 USD/lună)</1> la abonamentul dvs.",
"invite_new_team_member": "Invită pe cineva în echipa ta.",
"upload_csv_file": "Încărcați un fișier .csv",
"invite_via_email": "Invitați prin e-mail",
"change_member_role": "Schimbați rolul de membru al echipei",
"disable_cal_branding": "Dezactivare branding {{appName}}",
"disable_cal_branding_description": "Ascunde tot branding-ul {{appName}} din paginile tale publice.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Utilizatorul trebuie să accepte invitația pentru a vizualiza disponibilitatea",
"set_as_away": "Setați starea la Plecat",
"set_as_free": "Dezactivați starea Plecat",
"toggle_away_error": "Eroare la actualizarea stării Plecat",
"user_away": "Acest utilizator nu este momentan disponibil.",
"user_away_description": "Persoana pentru care încercați să efectuați rezervare și-a setat starea la Plecat, prin urmare, nu acceptă rezervări noi.",
"meet_people_with_the_same_tokens": "Cunoașteți persoane cu aceleași tokenuri",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Pentru a vă schimba adresa de e-mail sau parola, a activa autentificarea în doi pași și multe altele, accesați setările contului {{provider}}.",
"signin_with_google": "Conectați-vă cu Google",
"signin_with_saml": "Conectați-vă cu SAML",
"signin_with_saml_oidc": "Conectați-vă cu SAML/OIDC",
"you_will_need_to_generate": "Va trebui să generați un token de acces din vechiul instrument de programare.",
"import": "Importare",
"import_from": "Importați din",
@@ -950,6 +975,8 @@
"offer_seats_description": "Opțiunea oferă locuri pentru rezervare și dezactivează automat rezervările pentru oaspeți și cele la alegere.",
"seats_available_one": "Loc disponibil",
"seats_available_other": "Locuri disponibile",
"seats_nearly_full": "Locuri aproape ocupate",
"seats_half_full": "Locurile se ocupă repede",
"number_of_seats": "Numărul de locuri per rezervare",
"enter_number_of_seats": "Introduceți numărul de locuri",
"you_can_manage_your_schedules": "Vă puteți gestiona programările pe pagina Disponibilitate.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Cum doriți să adăugați {{appName}} pe site-ul dvs.?",
"choose_ways_put_cal_site": "Alegeți una dintre următoarele modalități de a include {{appName}} pe site-ul dvs.",
"setting_up_zapier": "Configurarea integrării dvs. Zapier",
"setting_up_make": "Configurarea integrării dvs. Make",
"generate_api_key": "Generare cheie API",
"generate_api_key_description": "Generați o cheie API pentru utilizare cu {{appName}} pe",
"your_unique_api_key": "Cheia dvs. API unică",
"copy_safe_api_key": "Copiați această cheie API și salvați-o într-un loc sigur. Dacă pierdeți această cheie, va trebui să generați una nouă.",
"zapier_setup_instructions": "<0>Conectează-te la contul Zapier și creează un Zap nou.</0><1>Selectează Cal.com ca aplicație Trigger. Alege și un eveniment Trigger.</1><2>Alege contul, apoi introdu cheia API unică.</2><3>Testează Trigger-ul.</3><4>Ai terminat!</4>",
"make_setup_instructions": "<0>Mergeți la <1><0>linkul de invitație Make</0></1> și instalați aplicația Cal.com.</0><1>Conectați-vă la contul dvs. Make și creați un scenariu nou.</1><2>Selectați Cal.com ca aplicație declanșatoare. De asemenea, alegeți un eveniment de declanșare.</2><3>Selectați contul dvs. și introduceți cheia dvs. API unică.</3><4>Testați declanșatorul.</4><5>Sunteți gata!</5>",
"install_zapier_app": "Instalați mai întâi aplicația Zapier din App Store.",
"install_make_app": "Instalați mai întâi aplicația Make din App Store.",
"connect_apple_server": "Conectați-vă la serverul Apple",
"calendar_url": "URL calendar",
"apple_server_generate_password": "Generați o parolă specifică aplicației, pe care o veți utiliza cu {{appName}} la",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "trimiteți e-mail participanților",
"sms_attendee_action": "Trimiteți SMS către participant",
"sms_number_action": "trimiteți SMS la un anumit număr",
"send_reminder_sms": "Trimiteți-le cu ușurință participanților mementouri pentru ședințe prin SMS",
"whatsapp_number_action": "trimiteți mesaj WhatsApp la un anumit număr",
"whatsapp_attendee_action": "trimiteți mesaj WhatsApp căte participant",
"workflows": "Fluxuri de lucru",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Eroare la actualizarea setărilor",
"personal_cal_url": "URL-ul meu personal {{appName}}",
"bio_hint": "Câteva propoziții despre dvs. Acestea vor apărea pe pagina URL-ului dvs. personal.",
"user_has_no_bio": "Acest utilizator nu a adăugat încă o biografie.",
"delete_account_modal_title": "Ștergeți contul",
"confirm_delete_account_modal": "Sigur doriți să vă ștergeți contul {{appName}}?",
"delete_my_account": "Ștergeți contul meu",
@@ -1426,6 +1458,7 @@
"add_limit": "Adăugați o limită",
"team_name_required": "Este necesar numele echipei",
"show_attendees": "Distribuiți informațiile despre participanți între invitați",
"show_available_seats_count": "Afișați numărul de locuri disponibile",
"how_booking_questions_as_variables": "Cum puteți utiliza ca variabile întrebările despre rezervare?",
"format": "Format",
"uppercase_for_letters": "Utilizați majuscule pentru toate literele",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Sigur doriți să ștergeți configurația {{connectionType}}? Membrii echipei dvs. care utilizează conectarea prin {{connectionType}} nu vor mai putea accesa Cal.com.",
"organizer_timezone": "Fusul orar al organizatorului",
"email_user_cta": "Vizualizare invitație",
"email_no_user_invite_heading_team": "Ați fost invitat să faceți parte dintr-o echipă {{appName}}",
"email_no_user_invite_heading_org": "Ați fost invitat să faceți parte dintr-o organizație {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} v-a invitat să faceți parte din echipa sa de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, care vă permite dvs. și echipei dvs. să programați ședințe fără a face ping-pong prin e-mail.",
"email_user_invite_subheading_team": "{{invitedBy}} v-a invitat să faceți parte din echipa sa „{{teamName}}” de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, care vă permite dvs. și echipei dvs. să programați ședințe fără a face ping-pong prin e-mail.",
"email_user_invite_subheading_org": "{{invitedBy}} v-a invitat să faceți parte din organizația sa „{{teamName}}” de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, prin care dvs. și organizația dvs. puteți să programați ședințe fără a face ping-pong prin e-mail.",
"email_no_user_invite_steps_intro": "Vom parcurge împreună câțiva pași simpli și vă veți bucura alături de {{entity}} dvs. de programări fără probleme, în cel mai scurt timp.",
"email_no_user_step_one": "Alegeți-vă numele de utilizator",
"email_no_user_step_two": "Conectați-vă contul de calendar",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Nu s-au găsit date pentru filtrul selectat sau pentru datele selectate.",
"acknowledge_booking_no_show_fee": "Dacă nu particip la acest eveniment, accept să mi se perceapă de pe card o taxă de neprezentare în valoare de {{amount, currency}}.",
"card_details": "Detalii card",
"something_went_wrong_on_our_end": "A survenit o eroare de partea noastră. Contactați echipa de asistență și vom soluționa imediat problema.",
"please_provide_following_text_to_suppport": "Furnizați următorul text atunci când contactați echipa de asistență pentru a vă putea ajuta mai bine",
"seats_and_no_show_fee_error": "Momentan, nu se pot elibera locuri și nici nu se poate percepe o taxă de neprezentare",
"complete_your_booking": "Finalizați rezervarea",
"complete_your_booking_subject": "Finalizați rezervarea: {{title}}, pe {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Deschide o fereastră de dialog Cal atunci când cineva face clic pe un element.",
"need_help_embedding": "Aveți nevoie de ajutor? Consultați ghidurile noastre pentru încorporarea Cal pe Wix, Squarespace sau WordPress, citiți răspunsurile la întrebările noastre frecvente sau descoperiți opțiunile de încorporare avansate.",
"book_my_cal": "Rezervare în Cal",
"first_name": "Prenume",
"last_name": "Nume de familie",
"first_last_name": "Prenume, nume de familie",
"invite_as": "Invitare ca",
"form_updated_successfully": "Formular actualizat cu succes.",
"disable_attendees_confirmation_emails": "Dezactivare e-mailuri de confirmare implicite pentru participanți",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Creați primul dvs. webhook pentru acest tip de eveniment",
"install_app_on": "Instalați aplicația în",
"create_for": "Creare pentru",
"currency": "Monedă",
"organization_banner_description": "Dezvoltați medii în care echipele dvs. să poată crea aplicații, fluxuri de lucru și tipuri de evenimente comune, folosind programarea colectivă sau cu alocare prin rotație.",
"organization_banner_title": "Gestionați organizații cu mai multe echipe",
"set_up_your_organization": "Configurați organizația",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Echipă: {{teamName}}",
"insights_user_filter": "Utilizator: {{userName}}",
"insights_subtitle": "Vizualizați date Insights cu privire la rezervări pentru toate evenimentele dvs.",
"location_options": "{{locationCount}} (de) opțiuni privind locul",
"custom_plan": "Plan personalizat",
"email_embed": "Încorporare în e-mail",
"add_times_to_your_email": "Selectați câteva date disponibile și încorporați-le în e-mailul dvs.",
"select_time": "Selectați ora",
"select_date": "Selectați data",
"see_all_available_times": "Vedeți toate orele disponibile",
"org_team_names_example": "de ex. echipa de marketing",
"org_team_names_example_1": "de ex. echipa de marketing",
"org_team_names_example_2": "de ex. echipa de vânzări",
"org_team_names_example_3": "de ex. echipa de design",
"org_team_names_example_4": "de ex. echipa de inginerie",
"org_team_names_example_5": "de ex. echipa de analiză a datelor",
"org_max_team_warnings": "Veți putea adăuga mai multe echipe ulterior.",
"what_is_this_meeting_about": "Despre ce este vorba în această ședință?",
"add_to_team": "Adăugați la echipă",
"remove_users_from_org": "Eliminați utilizatori din organizație",
"remove_users_from_org_confirm": "Sigur doriți să eliminați {{userCount}} utilizatori din această organizație?",
"user_has_no_schedules": "Acest utilizator nu a configurat încă niciun program",
"user_isnt_in_any_teams": "Acest utilizator nu este în nicio echipă",
"requires_booker_email_verification": "Necesită verificarea e-mailului persoanei care efectuează rezervarea",
"description_requires_booker_email_verification": "Pentru a asigura verificarea de e-mailului persoanei care efectuează rezervarea înainte de programarea evenimentelor",
"requires_confirmation_mandatory": "Mesajele text pot fi trimise participanților doar atunci când tipul de eveniment necesită confirmare.",
"kyc_verification_information": "Din motive de securitate, trebuie să verificați {{teamOrAccount}} înainte de a trimite mesaje text participanților. Contactați-ne la <a>{{supportEmail}}</a> și furnizați următoarele informații:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}} dvs.</li><li>Pentru companii: atașați documentele de verificare a companiei</li><li>Pentru persoane fizice: atașați un act de identitate emis de autorități</li></ul>",
"verify_team_or_account": "Verificați {{teamOrAccount}}",
"verify_account": "Verificați contul",
"kyc_verification": "Verificare KYC",
"organizations": "Organizații",
"org_admin_other_teams": "Alte echipe",
"org_admin_other_teams_description": "Aici puteți vedea echipe din cadrul organizației dvs. din care nu faceți parte. Vă puteți adăuga la acestea dacă este cazul.",
"no_other_teams_found": "Nu au fost găsite alte echipe",
"no_other_teams_found_description": "Nu există alte echipe în această organizație.",
"attendee_first_name_variable": "Prenumele participantului",
"attendee_last_name_variable": "Numele de familie al participantului",
"attendee_first_name_info": "Prenumele persoanei care efectuează rezervarea",
"attendee_last_name_info": "Numele de familie al persoanei care efectuează rezervarea",
"me": "Eu",
"verify_team_tooltip": "Verificați-vă echipa pentru a permite trimiterea de mesaje către participanți",
"member_removed": "Membru eliminat",
"my_availability": "Disponibilitatea mea",
"team_availability": "Disponibilitatea echipei",
"backup_code": "Cod de rezervă",
"backup_codes": "Coduri de rezervă",
"backup_code_instructions": "Fiecare cod de rezervă poate fi folosit exact o singură dată pentru a permite accesul fără autentificator.",
"backup_codes_copied": "Coduri de rezervă copiate!",
"incorrect_backup_code": "Codul de rezervă este incorect.",
"lost_access": "Acces pierdut",
"missing_backup_codes": "Nu s-a găsit niciun cod de rezervă. Generați-le din setări.",
"admin_org_notification_email_subject": "Organizație nouă creată: acțiune în așteptare",
"hi_admin": "Bună ziua, administrator",
"admin_org_notification_email_title": "O organizație necesită configurarea DNS",
"admin_org_notification_email_body_part1": "A fost creată o organizație cu slugul „{{orgSlug}}”.<br /><br />Aveți grijă să vă configurați registrul DNS astfel încât să indice subdomeniul aferent noii organizații pe care rulează aplicația principală. În caz contrar, organizația nu va funcționa.<br /><br />Aici găsiți doar opțiunile de bază pentru a configura unui subdomeniu să direcționeze către aplicația sa astfel încât să încarce pagina de profil a organizației.<br /><br />Puteți realiza acest lucru fie cu înregistrarea A:",
"admin_org_notification_email_body_part2": "Fie cu înregistrarea CNAME:",
"admin_org_notification_email_body_part3": "După ce configurați subdomeniul, marcați configurarea DNS ca finalizată în setările de administrare a organizațiilor.",
"admin_org_notification_email_cta": "Mergeți la Setări administrare organizații",
"org_has_been_processed": "Organizația a fost procesată",
"org_error_processing": "A survenit o eroare la procesarea organizației",
"orgs_page_description": "O listă cu toate organizațiile. Acceptarea unei organizații va permite tuturor utilizatorilor cu acel domeniu de e-mail să se înregistreze fără verificarea adresei de e-mail.",
"unverified": "Neverificat",
"dns_missing": "DNS lipsă",
"mark_dns_configured": "Marcați ca DNS configurat",
"value": "Valoare",
"your_organization_updated_sucessfully": "Organizația dvs. a fost actualizată cu succes",
"team_no_event_types": "Această echipă nu are niciun tip de eveniment",
"seat_options_doesnt_multiple_durations": "Opțiunea de loc nu acceptă mai multe durate",
"include_calendar_event": "Includeți eveniment din calendar",
"recently_added": "Adăugate recent",
"no_members_found": "Nu s-a găsit niciun membru",
"event_setup_length_error": "Configurare eveniment: Durata trebuie să fie de cel puțin 1 minut.",
"availability_schedules": "Programe de disponibilitate",
"view_only_edit_availability_not_onboarded": "Acest utilizator nu a finalizat integrarea. Nu-i veți putea seta disponibilitatea până când nu finalizează integrarea.",
"view_only_edit_availability": "Vizualizați disponibilitatea acestui utilizator. Nu puteți edita decât disponibilitatea dvs. personală.",
"edit_users_availability": "Editați disponibilitatea utilizatorului: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adăugați stringurile noi deasupra acestui rând ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Подтвердите адрес электронной почты для обеспечения гарантированной доставки уведомлений по электронной почте и в календаре",
"verify_email_email_header": "Подтвердите свой адрес электронной почты",
"verify_email_email_button": "Подтвердить эл. почту",
"copy_somewhere_safe": "Сохраните этот ключ API в надежном месте, сервис показывает его только один раз.",
"verify_email_email_body": "Подтвердите адрес электронной почты, нажав кнопку ниже.",
"verify_email_by_code_email_body": "Подтвердите адрес электронной почты с помощью приведенного ниже кода.",
"verify_email_email_link_text": "Вы также можете вручную перейти по следующей ссылке:",
"email_verification_code": "Введите код подтверждения",
"email_verification_code_placeholder": "Введите код подтверждения, отправленный на ваш адрес электронной почты",
"incorrect_email_verification_code": "Неверный код подтверждения.",
"email_sent": "Письмо успешно отправлено",
"email_not_sent": "При отправке письма произошла ошибка",
"event_declined_subject": "Отклонено: {{title}} {{date}}",
"event_cancelled_subject": "Отмена: {{title}} {{date}}",
"event_request_declined": "Ваш запрос на встречу отклонен",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Повторяющееся событие ждет вашего одобрения",
"someone_requested_an_event": "Кто-то записался на встречу в вашем календаре.",
"someone_requested_password_reset": "Кто-то запросил ссылку для изменения вашего пароля.",
"password_reset_email_sent": "Если этот адрес электронной почты зарегистрирован в нашей системе, вы получите письмо с инструкциями для сброса пароля.",
"password_reset_instructions": "Если вы не запрашивали это, проигнорируйте это письмо и пароль не будет изменен.",
"event_awaiting_approval_subject": "Ожидает подтверждения: {{title}} на {{date}}",
"event_still_awaiting_approval": "Событие все еще ждет вашего подтверждения",
@@ -217,6 +224,10 @@
"already_have_an_account": "Уже есть аккаунт?",
"create_account": "Создать аккаунт",
"confirm_password": "Подтвердите пароль",
"confirm_auth_change": "После этого изменится способ авторизации",
"confirm_auth_email_change": "При изменении адреса электронной почты используемый способ авторизации для входа на Cal.com перестанет работать. Мы попросим вас подтвердить новый адрес электронной почты. Будет выполнен выход из вашего аккаунта. Затем вместо предыдущего способа авторизации вы войдете в Cal.com с помощью нового адреса электронной почты. Для этого нужно задать пароль. Инструкция о том, как это сделать, придет к вам на почту.",
"reset_your_password": "Задайте новый пароль. Инструкции о том, как это сделать, мы отправили на ваш адрес электронной почты.",
"email_change": "Войдите, используя новый адрес электронной почты и пароль.",
"create_your_account": "Создайте аккаунт",
"sign_up": "Регистрация",
"youve_been_logged_out": "Вы вышли из аккаунта",
@@ -243,6 +254,10 @@
"all": "Все приложения",
"yours": "Ваш аккаунт",
"available_apps": "Доступные приложения",
"available_apps_lower_case": "Доступные приложения",
"available_apps_desc": "У вас нет установленных приложений. Просмотрите популярные приложения ниже или найдите нужные вам приложения в нашем <1>App Store</1>",
"fixed_host_helper": "Добавьте любого пользователя, которому нужно принять участие в событии. <1>Подробнее</1>",
"round_robin_helper": "Участники группы действуют по очереди: только один пользователь посетит событие.",
"check_email_reset_password": "Проверьте вашу электронную почту, мы отправили вам ссылку для сброса пароля.",
"finish": "Завершить",
"organization_general_description": "Настройте язык и часовой пояс для своей команды",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "И последнее: добавьте краткую информацию о себе и свою фотографию; так людям будет проще понять, с кем они бронируют встречу.",
"set_availability_instructions": "Определите диапазон времени, в который вы обычно доступны. В дальнейшем можно будет добавить ещё диапазоны и назначить их разным календарям.",
"set_availability": "Задайте время в которое вы доступны",
"availability_settings": "Настройки доступности",
"continue_without_calendar": "Продолжить без подключения календаря",
"connect_your_calendar": "Подключите календарь",
"connect_your_video_app": "Подключите приложения для видеосвязи",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Ссылки для группового бронирования, которые можно создавать динамически, указывая несколько имен пользователей при помощи знака «+». Пример: «{{appName}}/bailey+peer»",
"allow_dynamic_booking": "Разрешить участникам бронировать встречи с вами при помощи динамического группового бронирования",
"dynamic_booking": "Динамические ссылки для групп",
"allow_seo_indexing": "Разрешить поисковым системам доступ к публичному контенту",
"seo_indexing": "Разрешить SEO- индексацию",
"email": "Адрес электронной почты",
"email_placeholder": "jdoe@example.com",
"full_name": "Имя",
@@ -406,6 +424,7 @@
"booking_requested": "Запрос на бронирование отправлен",
"meeting_ended": "Встреча завершилась",
"form_submitted": "Форма отправлена",
"booking_paid": "Бронирование оплачено",
"event_triggers": "Триггеры событий",
"subscriber_url": "URL-адрес подписчика",
"create_new_webhook": "Создать новый веб-хук",
@@ -506,6 +525,7 @@
"your_name": "Ваше имя",
"your_full_name": "ФИО",
"no_name": "Нет названия",
"enter_number_between_range": "Введите число от 1 до {{maxOccurences}}",
"email_address": "Адрес электронной почты",
"enter_valid_email": "Укажите допустимый адрес электронной почты",
"location": "Местоположение",
@@ -543,6 +563,7 @@
"leave": "Покинуть",
"profile": "Профиль",
"my_team_url": "URL-адрес моей команды",
"my_teams": "Мои команды",
"team_name": "Название команды",
"your_team_name": "Название вашей команды",
"team_updated_successfully": "Команда успешно обновлена",
@@ -570,6 +591,8 @@
"invite_new_member": "Пригласить нового участника команды",
"invite_new_member_description": "Примечание: стоимость подписки увеличится на <1>15 $/месяц за дополнительное место</1>.",
"invite_new_team_member": "Пригласите кого-нибудь в вашу команду.",
"upload_csv_file": "Загрузить файл .csv",
"invite_via_email": "Пригласить по электронной почте",
"change_member_role": "Изменить роль члена команды",
"disable_cal_branding": "Отключить брендинг {{appName}}",
"disable_cal_branding_description": "Скрыть весь брендинг {{appName}} с ваших публичных страниц.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Пользователь должен принять приглашение для просмотра доступности",
"set_as_away": "Установить статус «отошел»",
"set_as_free": "Отключить статус «отошел»",
"toggle_away_error": "Ошибка при обновлении статуса «отошел»",
"user_away": "Этот пользователь в настоящее время отсутствует.",
"user_away_description": "Человек, с которым вы пытаетесь забронировать встречу - недоступен, поэтому он не принимает новых записей.",
"meet_people_with_the_same_tokens": "Проводите встречи с пользователями с такими же токенами",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Чтобы изменить адрес электронной почты, пароль, включить двухфакторную авторизацию, пожалуйста, посетите настройки учетной записи {{provider}}.",
"signin_with_google": "Войти через Google",
"signin_with_saml": "Войти с помощью SAML",
"signin_with_saml_oidc": "Войти с помощью SAML/OIDC",
"you_will_need_to_generate": "Вам нужно сгенерировать токен доступа на странице интеграции.",
"import": "Импорт",
"import_from": "Импортировать из",
@@ -950,6 +975,8 @@
"offer_seats_description": "Предлагать места при бронировании (данная настройка автоматически отключает гостевой режим и бронирование с подтверждением).",
"seats_available_one": "Доступное место",
"seats_available_other": "Доступные места",
"seats_nearly_full": "Свободных мест почти не осталось",
"seats_half_full": "Свободные места быстро разбирают",
"number_of_seats": "Количество мест на одну бронь",
"enter_number_of_seats": "Укажите количество мест",
"you_can_manage_your_schedules": "Расписаниями можно управлять на странице «Доступность».",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Как вы хотите добавить {{appName}} на сайт?",
"choose_ways_put_cal_site": "Выберите способ размещения {{appName}} на сайте.",
"setting_up_zapier": "Настройка интеграции с Zapier",
"setting_up_make": "Настройка интеграции с Make",
"generate_api_key": "Сгенерировать ключ API",
"generate_api_key_description": "Сгенерируйте ключ API, чтобы использовать его в {{appName}}, по адресу",
"your_unique_api_key": "Ваш уникальный ключ API",
"copy_safe_api_key": "Скопируйте этот ключ API и сохраните его в надежном месте. Если ключ потеряется, вам придется создать новый.",
"zapier_setup_instructions": "<0>Войдите в свой аккаунт Zapier и создайте новый Zap.</0><1>Выберите в качестве приложения-триггера Cal.com. Также выберите событие-триггер.</1><2>Выберите свою учетную запись и введите уникальный ключ API.</2><3>Проверьте триггер.</3><4>Готово!</4>",
"make_setup_instructions": "<0>Перейдите по <1><0>пригласительной ссылке Make</0></1> и установите приложение Cal.com.</0><1>Войдите в аккаунт Make и создайте новый сценарий.</1><2>Выберите Cal.com в качестве приложения-триггера. Также выберите событие-триггер.</2><3>Выберите свою учетную запись и введите уникальный ключ API.</3><4>Проверьте триггер.</4><5>Готово!</5>",
"install_zapier_app": "Сначала установите приложение Zapier из App Store.",
"install_make_app": "Сначала установите приложение Make из App Store.",
"connect_apple_server": "Подключиться к серверу Apple",
"calendar_url": "URL-адрес календаря",
"apple_server_generate_password": "Сгенерируйте пароль для программы, чтобы использовать его в {{appName}}, по адресу",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "отправить письмо участникам",
"sms_attendee_action": "Отправить SMS-сообщение участнику",
"sms_number_action": "отправка SMS-сообщение на указанный номер",
"send_reminder_sms": "Отправляйте участникам напоминания о встрече по SMS",
"whatsapp_number_action": "отправка сообщение в Whatsapp на указанный номер",
"whatsapp_attendee_action": "отправить участнику сообщение в Whatsapp",
"workflows": "Рабочие процессы",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Ошибка при обновлении настроек",
"personal_cal_url": "URL-адрес моего персонального {{appName}}",
"bio_hint": "Несколько предложений о себе. Они будут отображаться на вашей персональной странице.",
"user_has_no_bio": "Пользователь еще не указал данные о себе.",
"delete_account_modal_title": "Удалить аккаунт",
"confirm_delete_account_modal": "Удалить аккаунт {{appName}}?",
"delete_my_account": "Удалить мой аккаунт",
@@ -1426,6 +1458,7 @@
"add_limit": "Добавить ограничение",
"team_name_required": "Требуется название команды",
"show_attendees": "Предоставлять гостям информацию об участниках",
"show_available_seats_count": "Показать количество доступных мест",
"how_booking_questions_as_variables": "Как использовать вопросы о бронировании в качестве переменных?",
"format": "Формат",
"uppercase_for_letters": "Использовать только прописные буквы",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Удалить конфигурацию {{connectionType}}? Участники команды, входящие в Cal.com через {{connectionType}}, больше не смогут получить к нему доступ.",
"organizer_timezone": "Часовой пояс организатора",
"email_user_cta": "Посмотреть приглашение",
"email_no_user_invite_heading_team": "Вас пригласили в команду {{appName}}",
"email_no_user_invite_heading_org": "Вас пригласили в организацию {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} пригласил(-а) вас в команду в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.",
"email_user_invite_subheading_team": "{{invitedBy}} пригласил(а) вас в команду в `{{teamName}}` в приложении {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.",
"email_user_invite_subheading_org": "{{invitedBy}} пригласил(а) вас в организацию `{{teamName}}` в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого вы и ваша организация можете планировать встречи без утомительной переписки по электронной почте.",
"email_no_user_invite_steps_intro": "Всего несколько шагов — и вы сможете оперативно и без стресса планировать встречи в рамках вашей {{entity}}.",
"email_no_user_step_one": "Выберите имя пользователя",
"email_no_user_step_two": "Подключите аккаунт календаря",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Данные, соответствующие выбранному фильтру или диапазону дат, не найдены.",
"acknowledge_booking_no_show_fee": "Я подтверждаю, что в случае моей неявки на событие с моей карты будет списана комиссия в размере {{amount, currency}}.",
"card_details": "Реквизиты карты",
"something_went_wrong_on_our_end": "Что-то пошло не так. Свяжитесь с нашей службой поддержки, и мы быстро устраним проблему.",
"please_provide_following_text_to_suppport": "Чтобы специалисты техподдержки могли быстрее вам помочь, укажите следующую информацию",
"seats_and_no_show_fee_error": "Списание платы за неявку при использовании выбора места в настоящее время не поддерживается",
"complete_your_booking": "Завершить бронирование",
"complete_your_booking_subject": "Завершите бронирование: {{title}}, {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Открыть диалог Cal при нажатии на элемент.",
"need_help_embedding": "Нужна помощь? Ознакомьтесь с нашими руководствами по встраиванию Cal на Wix, Squarespace или WordPress, списком часто встречающих вопросов, а также информацией о расширенных возможностях встраивания.",
"book_my_cal": "Забронировать в Cal",
"first_name": "Имя",
"last_name": "Фамилия",
"first_last_name": "Имя, фамилия",
"invite_as": "Пригласить в качестве",
"form_updated_successfully": "Форма успешно обновлена.",
"disable_attendees_confirmation_emails": "Отключить стандартное подтверждение по электронной почте для участников",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Создайте первый вебхук для этого типа событий",
"install_app_on": "Установить приложение в",
"create_for": "Создать для",
"currency": "Валюта",
"organization_banner_description": "Создавайте рабочие среды, в рамках которых ваши команды смогут создавать общие приложения, рабочие процессы и типы событий с назначением участников по очереди и коллективным планированием.",
"organization_banner_title": "Управляйте организациями с несколькими командами",
"set_up_your_organization": "Настройка профиля организации",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Команда: {{teamName}}",
"insights_user_filter": "Пользователь: {{userName}}",
"insights_subtitle": "Insights: просматривайте информацию о бронировании по всем вашим событиям",
"location_options": "Параметры местоположения {{locationCount}}",
"custom_plan": "Пользовательский тариф",
"email_embed": "Встроить электронную почту",
"add_times_to_your_email": "Выберите доступные промежутки времени и вставьте их в письмо",
"select_time": "Выбрать время",
"select_date": "Выбрать дату",
"see_all_available_times": "Посмотреть все доступные интервалы времени",
"org_team_names_example": "например, команда по маркетингу",
"org_team_names_example_1": "например, команда по маркетингу",
"org_team_names_example_2": "например, Отдел продаж",
"org_team_names_example_3": "например, отдел дизайна",
"org_team_names_example_4": "например, технический отдел",
"org_team_names_example_5": "например, отдел анализа данных",
"org_max_team_warnings": "Позже можно добавить другие команды.",
"what_is_this_meeting_about": "Чему посвязена эта встреча?",
"add_to_team": "Добавить в команду",
"remove_users_from_org": "Удалить пользователей из организации",
"remove_users_from_org_confirm": "Удалить {{userCount}} пользователей из этой организации?",
"user_has_no_schedules": "Этот пользователь еще не настроил ни одного расписания",
"user_isnt_in_any_teams": "Этот пользователь не относится ни к одной команде",
"requires_booker_email_verification": "Требуется подтверждение электронной почты пользователя, оформляющего бронирование",
"description_requires_booker_email_verification": "Чтобы подтвердить электронную почту пользователя, оформляющего бронирование, до планирования событий",
"requires_confirmation_mandatory": "Участникам можно отправлять сообщения, только если тип события предполагает подтверждение.",
"kyc_verification_information": "Из соображений безопасности вы сможете отправлять текстовые сообщения участникам только после верификации {{teamOrAccount}}. Свяжитесь с нами по <a>{{supportEmail}}</a> и предоставьте следующую информацию:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>Для юридических лиц: Предоставьте документы о верификации компании</li><li>Для физических лиц: Предоставьте официальное удостоверение личности</li></ul>",
"verify_team_or_account": "Подтвердить {{teamOrAccount}}",
"verify_account": "Подтвердить аккаунт",
"kyc_verification": "Верификация KYC",
"organizations": "Организации",
"org_admin_other_teams": "Другие команды",
"org_admin_other_teams_description": "Это перечень команд вашей организации, в которые вы не входите. При необходимости можно добавить себя в эти команды.",
"no_other_teams_found": "Другие команды не найдены",
"no_other_teams_found_description": "В этой организации нет других команд.",
"attendee_first_name_variable": "Имя участника",
"attendee_last_name_variable": "Фамилия участника",
"attendee_first_name_info": "Имя участника, который оформляет бронирование",
"attendee_last_name_info": "Фамилия участника, который оформляет бронирование",
"me": "Я",
"verify_team_tooltip": "Подтвердите свою команду, чтобы отправлять участникам сообщения",
"member_removed": "Участник удален",
"my_availability": "Моя доступность",
"team_availability": "Доступность команды",
"backup_code": "Код бэкапа",
"backup_codes": "Коды бэкапа",
"backup_code_instructions": "Каждый код бэкапа можно использовать только один раз, чтобы предоставить доступ без аутентификатора.",
"backup_codes_copied": "Коды бэкапа скопированы!",
"incorrect_backup_code": "Неверный код бэкапа.",
"lost_access": "Доступ потерян",
"missing_backup_codes": "Коды бэкапа не найдены. Сгенерируйте их в настройках.",
"admin_org_notification_email_subject": "Создана новая организация: ожидается действие",
"hi_admin": "Привет, администратор",
"admin_org_notification_email_title": "Для организации требуется установка DNS",
"admin_org_notification_email_body_part1": "Создана организация со слагом \"{{orgSlug}}\".<br /><br />Обязательно настройте реестр DNS, указав поддомен, соответствующий новой организации, в котором выполняется основное приложение. В противном случае организация не сможет работать.<br /><br />Вот несколько базовых параметров для настройки поддомена, указывающих на приложение и позволяющих ему загрузить страницу профиля организации.<br /><br />Это также можно сделать с помощью записи A:",
"admin_org_notification_email_body_part2": "Или запись CNAME:",
"admin_org_notification_email_body_part3": "Настроив поддомен, в настройках администратора организаций поставьте «готово» рядом с конфигурацией DNS.",
"admin_org_notification_email_cta": "Перейти в настройки администратора организаций",
"org_has_been_processed": "Обработка для организации завершена",
"org_error_processing": "При обработке этой организации произошла ошибка",
"orgs_page_description": "Список всех организаций. При приеме организации все пользователи с этим доменом электронной почты смогут регистрироваться БЕЗ подтверждения электронной почты.",
"unverified": "Не подтверждено",
"dns_missing": "Отсутствует DNS",
"mark_dns_configured": "Отметить как \"конфигурация DNS завершена\"",
"value": "Значение",
"your_organization_updated_sucessfully": "Данные об организации успешно обновлены",
"team_no_event_types": "У этой команды нет типов событий",
"seat_options_doesnt_multiple_durations": "Параметр «место» не поддерживает несколько вариантов продолжительности",
"include_calendar_event": "Включить событие календаря",
"recently_added": "Недавно добавленные",
"no_members_found": "Участники не найдены",
"event_setup_length_error": "Настройка события: продолжительность должна быть не менее 1 минуты.",
"availability_schedules": "График с информацией о доступности",
"view_only_edit_availability_not_onboarded": "Этот пользователь не прошел онбординг. Вы сможете настроить для него информацию о доступность, только когда он пройдет онбординг.",
"view_only_edit_availability": "Вы просматриваете информацию о доступности этого пользователя. Вы можете редактировать только информацию о собственной доступности.",
"edit_users_availability": "Редактировать данные о доступности пользователя: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Добавьте строки выше ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+128 -14
View File
@@ -19,8 +19,13 @@
"verify_email_email_button": "Potvrdi adresu e-pošte",
"copy_somewhere_safe": "Čuvajte ovaj API ključ na bezbednom mestu. Nećete moći da ga ponovo vidite.",
"verify_email_email_body": "Potvrdite svoju adresu e-pošte klikom na dugme ispod.",
"verify_email_by_code_email_body": "Potvrdite svoju imejl adresu korišćenjem kôda u nastavku.",
"verify_email_email_link_text": "U slučaju da ne volite da klikćete na dugmad, evo linka:",
"email_verification_code": "Unesite kôd za verifikaciju",
"email_verification_code_placeholder": "Unesite kôd za verifikaciju koji vam je poslat imejlom",
"incorrect_email_verification_code": "Verifikacioni kôd nije tačan.",
"email_sent": "Imejl je uspešno poslat",
"email_not_sent": "Desila se greška prilikom slanja imejla",
"event_declined_subject": "Odbijeno: {{title}} datuma {{date}}",
"event_cancelled_subject": "Otkazano: {{title}} dana {{date}}",
"event_request_declined": "Vaš zahtev za događaj je odbijen",
@@ -79,6 +84,7 @@
"event_awaiting_approval_recurring": "Ponavljajući događaj čeka na vaše odobrenje",
"someone_requested_an_event": "Neko zahteva da rezerviše dogadjaj na vašem kalendaru.",
"someone_requested_password_reset": "Neko zahteva link da promeni vašu lozinku.",
"password_reset_email_sent": "Ako ovaj imejl postoji našem sistemu, trebalo bi da primite imejl za resetovanje.",
"password_reset_instructions": "Ako niste pokrenuli ovaj zahtev, slobodno ignorišite ovu e-poštu i vaša lozinka se neće promeniti.",
"event_awaiting_approval_subject": "Čeka na odobrenje: {{title}} datuma {{date}}",
"event_still_awaiting_approval": "Događaj još čeka na vaše odobrenje",
@@ -218,6 +224,10 @@
"already_have_an_account": "Već imate nalog?",
"create_account": "Napravite Nalog",
"confirm_password": "Potvrdite lozinku",
"confirm_auth_change": "To će promeniti način na koji se prijavljujete",
"confirm_auth_email_change": "Promena imejl adrese će prekinuti trenutni način autentifikacije za prijavljivanje na Cal.com. Zatražićemo da verifikujete svoju novu imejl adresu. Nakon toga, bićete odjavljeni, i koristićete novu imejl adresu za prijavljivanje umesto trenutnog načina autentifikacije nakon što podesite lozinku prateći uputstva koja će vam biti poslata imejlom.",
"reset_your_password": "Podesite novu lozinku pomoću uputstva poslatim na vašu imejl adresu.",
"email_change": "Prijavite se ponovo sa novom imejl adresom i lozinkom.",
"create_your_account": "Napravite svoj nalog",
"sign_up": "Prijavite se",
"youve_been_logged_out": "Odjavili ste se",
@@ -244,6 +254,10 @@
"all": "Sve aplikacije",
"yours": "Vaš nalog",
"available_apps": "Dostupne aplikacije",
"available_apps_lower_case": "Dostupne aplikacije",
"available_apps_desc": "Nemate instaliranih aplikacija. Pogledajte popularne aplikacije ispod i dodatno istražite na našem <1>App Store-u</1>",
"fixed_host_helper": "Dodajte bilo koga ko treba da prisustvuje događaju. <1>Saznajte više</1>",
"round_robin_helper": "Ljudi u grupi se smenjuju i samo jedna osoba će doći na događaj.",
"check_email_reset_password": "Proverite vašu e-poštu. Poslali smo vam link za resetovanje lozinke.",
"finish": "Završi",
"organization_general_description": "Upravljajte podešavanjima tima za jezik i vremensku zonu",
@@ -252,6 +266,7 @@
"nearly_there_instructions": "Na kraju, kratak opis o vama i slika mogu vam pomoći oko rezervacija i da obavestite druge s kim zapravo rezervišu.",
"set_availability_instructions": "Definišite periode kad ste stalno dostupni. Kasnije možete kreirati više njih i dodeliti ih različitim kalendarima.",
"set_availability": "Podesite svoju dostupnost",
"availability_settings": "Podešavanja dostuposti",
"continue_without_calendar": "Nastavite bez kalendara",
"connect_your_calendar": "Povežite vaš kalendar",
"connect_your_video_app": "Povežite svoje video aplikacije",
@@ -308,7 +323,7 @@
"layout": "Raspored",
"bookerlayout_default_title": "Podrazumevani prikaz",
"bookerlayout_description": "Možete da izaberete više njih, a vaši učesnici mogu da menjaju prikaze.",
"bookerlayout_user_settings_title": "Raspored zakazivanja",
"bookerlayout_user_settings_title": "Režim prikaza rezervacija",
"bookerlayout_user_settings_description": "Možete da izaberete više njih, a učesnici mogu da menjaju prikaz. Ovo se može zameniti za svaki događaj.",
"bookerlayout_month_view": "Mesec",
"bookerlayout_week_view": "Nedeljno",
@@ -393,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Moguće je dinamičko kreiranje linkova za grupne rezervacije navođenjem više korisničkih imena sa znakom „+”. Na primer: „{{appName}}/bailey+peer”",
"allow_dynamic_booking": "Dozvolite učesnicima da rezervišu termin sa vama putem dinamičkih grupnih rezervacija",
"dynamic_booking": "Dinamični linkovi grupa",
"allow_seo_indexing": "Dozvolite pretraživačima da pristupe vašem javnom sadržaju",
"seo_indexing": "Dozvolite SEO indeksiranje",
"email": "E-pošta",
"email_placeholder": "ppetrovic@example.com",
"full_name": "Ime i prezime",
@@ -404,9 +421,10 @@
"recording_ready": "Link za preuzimanje snimka je spreman",
"booking_created": "Rezervacija Napravljena",
"booking_rejected": "Rezevacija je odbijena",
"booking_requested": "Rezervacija je zahtevana",
"booking_requested": "Zahtev za rezervaciju je poslat",
"meeting_ended": "Sastanak se završio",
"form_submitted": "Formular poslat",
"booking_paid": "Rezervacija je plaćena",
"event_triggers": "Okidači Dogadjaja",
"subscriber_url": "URL pretplatnika",
"create_new_webhook": "Napravite novi webhook",
@@ -507,6 +525,7 @@
"your_name": "Vaše ime",
"your_full_name": "Ime i prezime",
"no_name": "Bez imena",
"enter_number_between_range": "Unesite broj između 1 i {{maxOccurences}}",
"email_address": "E-pošta",
"enter_valid_email": "Unesite važeću imejl adresu",
"location": "Lokacija",
@@ -544,6 +563,7 @@
"leave": "Napusti",
"profile": "Profil",
"my_team_url": "URL mog tima",
"my_teams": "Moji timovi",
"team_name": "Ime tima",
"your_team_name": "Ime vašeg tima",
"team_updated_successfully": "Tim uspešno ažuriran",
@@ -552,11 +572,11 @@
"team_description": "Par rečenica o vašem timu. Ovo će se pojaviti na stranici URL adrese vašeg tima.",
"org_description": "Nekoliko rečenica o vašoj organizaciji. Ovo će se pojaviti na url stranici vaše organizacije.",
"members": "Članovi",
"organization_members": "Članovi organizacije",
"organization_members": "Korisnici uključeni u tarifni plan Organization",
"member": "Član",
"number_member_one": "{{count}} član",
"number_member_other": "{{count}} članova",
"number_selected": "{{count}} izabrano",
"number_selected": "Izabrano: {{count}}",
"owner": "Vlasnik",
"admin": "Admin",
"administrator_user": "Administrator",
@@ -571,6 +591,8 @@
"invite_new_member": "Pozovite novog člana",
"invite_new_member_description": "</1>Napomena: Ovo će <1>povećati vašu pretplatu za dodatno mesto (15 $/mesečno)</1>.",
"invite_new_team_member": "Pozovite nekog u vaš tim.",
"upload_csv_file": "Otpremite .csv datoteku",
"invite_via_email": "Pozovite putem imejla",
"change_member_role": "Promenite ulogu članu tima",
"disable_cal_branding": "Onemogući brendiranje {{appName}}",
"disable_cal_branding_description": "Skrijte svako {{appName}} brendiranje sa svojih javnih stranica.",
@@ -843,6 +865,7 @@
"team_view_user_availability_disabled": "Korisnik mora da prihvati poziv da bi video dostupnost",
"set_as_away": "Postavite se da niste prisutni",
"set_as_free": "Deaktiviraj status prisutnosti",
"toggle_away_error": "Greška pri ažuriranju statusa odsutan",
"user_away": "Ovaj korisnink nije prisutan.",
"user_away_description": "Osoba sa kojom želite da rezervišete sastanak je postavila status da nije prisutna, tako da ne prihvata nove rezervacije.",
"meet_people_with_the_same_tokens": "Upoznajte ljude sa istim tokenima",
@@ -852,6 +875,7 @@
"account_managed_by_identity_provider_description": "Da biste promenili svoju adresu e-pošte, lozinku, omogućili dvofaktorsku autentifikaciju itd., molimo vas posetite vaša {{provider}} podešavanja naloga.",
"signin_with_google": "Ulogujte sa pomoću Google-a",
"signin_with_saml": "Ulogujte se pomoću SAML",
"signin_with_saml_oidc": "Prijavite se pomoću SAML/OIDC",
"you_will_need_to_generate": "Morate generisati token pristupnosti iz svog prošlog softvera za zakazivanje.",
"import": "Importuj",
"import_from": "Importuj iz",
@@ -951,6 +975,8 @@
"offer_seats_description": "Ponudite mesta za zakazivanje. Ovo automatski onemogućava gostujuća i opciona zakazivanja.",
"seats_available_one": "Dostupno mesto",
"seats_available_other": "Slobodnih mesta",
"seats_nearly_full": "Mesta su skoro zauzeta",
"seats_half_full": "Mesta se brzo popunjavaju",
"number_of_seats": "Broj mesta po zakazivanju",
"enter_number_of_seats": "Unesite broj slobodnih mesta",
"you_can_manage_your_schedules": "Svojim rasporedima možete upravljati na stranici Dostupnost.",
@@ -1031,12 +1057,15 @@
"how_you_want_add_cal_site": "Kako želite da dodate {{appName}} na vaš sajt?",
"choose_ways_put_cal_site": "Izaberite jedan od sledećih načina za postavljanje {{appName}}-a na vaš sajt.",
"setting_up_zapier": "Podešavanje vaše Zapier integracije",
"setting_up_make": "Podešavanje vaše Make integracije",
"generate_api_key": "Generiši API ključ",
"generate_api_key_description": "Generišite API ključ za upotrebu sa {{appName}} na",
"your_unique_api_key": "Vaš jedinstveni API ključ",
"copy_safe_api_key": "Kopirajte ovaj API ključ i sačuvajte ga na bezbednom mestu. Ako izgubite ovaj ključ, moraćete da generište novi.",
"zapier_setup_instructions": "<0>Prijavite se na vaš Zapier nalog i kreirajte novi Zap.</0><1>Izaberite Cal.com kao vašu Trigger aplikaciju. Takođe izaberite i Trigger događaj.</1><2>Izaberite svoj nalog i unesite vaš jedinstveni API ključ.</2><3>Testirajte svoj Trigger.</3><4>Završili ste!</4>",
"make_setup_instructions": "<0>Idite na <1><0>link Napravi pozivnicu</0></1> i instalirajte aplikaciju Cal.com.</0><1>Prijavite se u Napravi nalog i kreirajte novi Scenario.</1><2>Izaberite Cal.com kao vašu applikaciju Okidač. Takođe odaberite okidač događaja.</2><3>Izaberite svoj nalog i unesite svoj jedinstveni API ključ.</3><4>Testirajte svoj okidač.</4><5>Spremni ste!</5>",
"install_zapier_app": "Prvo instalirajte aplikaciju Zapier iz App Store.",
"install_make_app": "Prvo instalirajte aplikaciju Make iz App Store-a.",
"connect_apple_server": "Poveži se sa Apple serverom",
"calendar_url": "URL kalendara",
"apple_server_generate_password": "Generišite posebnu lozinku aplikacije za korišćenje sa {{appName}} na",
@@ -1086,6 +1115,7 @@
"email_attendee_action": "pošalji imejl učesnicima",
"sms_attendee_action": "Pošalji SMS učesniku",
"sms_number_action": "pošalji SMS na određeni broj",
"send_reminder_sms": "Učesnicima lako pošaljite podsetnike za sastanak putem poruke",
"whatsapp_number_action": "pošaljite Whatsapp poruku na određeni broj",
"whatsapp_attendee_action": "pošaljite Whatsapp poruku učesniku",
"workflows": "Radni tokovi",
@@ -1245,6 +1275,7 @@
"error_updating_settings": "Greška pri ažuriranju podešavanja",
"personal_cal_url": "Moj lični {{appName}} URL",
"bio_hint": "Par rečenica o vama. Ovo će se pojaviti na vašoj ličnoj url stranici.",
"user_has_no_bio": "Ovaj korisnik još nije dodao svoju biografiju.",
"delete_account_modal_title": "Izbriši nalog",
"confirm_delete_account_modal": "Jeste li sigurni da želite da izbrišete vaš {{appName}} nalog?",
"delete_my_account": "Izbriši moj nalog",
@@ -1427,6 +1458,7 @@
"add_limit": "Dodajte ograničenje",
"team_name_required": "Ime tima je potrebno",
"show_attendees": "Podelite informacije o učesnicima između gostiju",
"show_available_seats_count": "Prikaži broj dostupnih mesta",
"how_booking_questions_as_variables": "Kako da koristite pitanja o zakazivanju kao promenljivu?",
"format": "Format",
"uppercase_for_letters": "Koristite velika slova za sva slova",
@@ -1660,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Da li ste sigurni da želite da izbrišete {{connectionType}} konfiguraciju? Članovi vašeg tima koji koriste {{connectionType}} prijavljivanje više neće moći da pristupe Cal.com-u.",
"organizer_timezone": "Vremenska zona organizatora",
"email_user_cta": "Prikaži pozivnicu",
"email_no_user_invite_heading_team": "Pozvani ste da se pridružite timu {{appName}}",
"email_no_user_invite_heading_org": "Pozvani ste da se pridružite organizaciji {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} vas je pozvao/la da se pridružite njihovom timu u {{appName}}. {{appName}} je planer za koordinaciju događaja koji omogućava vama i vašem timu da zakazujete sastanke bez dopisivanja imejlovima.",
"email_user_invite_subheading_team": "{{invitedBy}} vas je pozvao/la da se pridružite njihovom timu `{{teamName}}` u {{appName}}. {{appName}} je planer za koordinaciju događaja koji omogućava vama i vašem timu da zakazujete sastanke bez dopisivanja imejlovima.",
"email_user_invite_subheading_org": "{{invitedBy}} vas je pozvao da se pridružite njihovoj organizaciji „{{teamName}}” na {{appName}}. {{appName}} je planer za zakazivanje događaja koji omogućava vama i vašoj organizaciji da zakažete sastanke bez dopisivanja imejlom.",
"email_no_user_invite_steps_intro": "Provešćemo vas u nekoliko kratkiih koraka i za tren ćete uživati u zakazivanju bez stresa sa vašim {{entity}}.",
"email_no_user_step_one": "Izaberite korisničko ime",
"email_no_user_step_two": "Povežite se sa nalogom kalendara",
@@ -1687,7 +1722,7 @@
"attendee_no_longer_attending": "Polaznik više ne pohađa vaš događaj",
"attendee_no_longer_attending_subtitle": "Korisnik {{name}} je otkazao. To znači da se otvorilo mesto za ovaj vremenski period",
"create_event_on": "Kreirajte događaj na",
"create_routing_form_on": "Kreiraj obrazac za usmeravanje",
"create_routing_form_on": "Kreiranje obrasca za usmeravanje za",
"default_app_link_title": "Podesite podrazumevani link aplikacije",
"default_app_link_description": "Podešavanje podrazumevanog linka aplikacije omogućava novokreiranim tipovima događaja da koriste link aplikacije koji ste postavili.",
"organizer_default_conferencing_app": "Podrazumevana aplikacija organizatora",
@@ -1832,6 +1867,8 @@
"insights_no_data_found_for_filter": "Nisu pronađeni podaci za izabrani filter ili izabrane datume.",
"acknowledge_booking_no_show_fee": "Jasno mi je da će mi biti naplaćena naknada za izostanak putem kartice u iznosu od {{amount, currency}} ukoliko ne prisustvujem ovom događaju.",
"card_details": "Informacije o kartici",
"something_went_wrong_on_our_end": "Nešto kod nas nije u redu. Obratite se korisničkoj podršci i mi ćemo to odmah popraviti za vas.",
"please_provide_following_text_to_suppport": "Prilikom kontaktiranja sa korisničkom službom, dostavite sledeći tekst kako bi vam bolje pomogli",
"seats_and_no_show_fee_error": "Trenutno nije moguće aktiviranje mesta i naplata naknade za izostanak",
"complete_your_booking": "Završite svoje zakazivanje",
"complete_your_booking_subject": "Završite svoje zakazivanje: {{title}} dana {{date}}",
@@ -1865,6 +1902,9 @@
"open_dialog_with_element_click": "Otvara Cal dijalog prozor kada neko klikne na element.",
"need_help_embedding": "Potrebna vam je pomoć? Pogledajte naše vodiče za ugrađivanje Cal-a na Wix, Squarespace ili WordPress, pogledajte naša često postavljana pitanja ili istražite napredne opcije za ugrađivanje.",
"book_my_cal": "Zakaži moj Cal",
"first_name": "Ime",
"last_name": "Prezime",
"first_last_name": "Ime, prezime",
"invite_as": "Pozovi kao",
"form_updated_successfully": "Formular je uspešno ažuriran.",
"disable_attendees_confirmation_emails": "Onemogući podrazumevane imejlove za potvrdu za učesnike",
@@ -1876,23 +1916,24 @@
"connect_google_workspace": "Poveži Google Workspace",
"google_workspace_admin_tooltip": "Morate da budete Workspace administrator da biste koristili ovu opciju",
"first_event_type_webhook_description": "Napravite svoj prvi webhook za ovaj tip događaja",
"install_app_on": "Instaliraj aplikaciju",
"install_app_on": "Instaliraj aplikaciju za",
"create_for": "Napravi za",
"organization_banner_description": "Kreirajte okruženje gde vaši timovi mogu da postave deljene aplikacije, radne tokove i vrste događaja sa kružnom dodelom i zajedničko zakazivanje.",
"currency": "Valuta",
"organization_banner_description": "Kreirajte okruženja gde vaši timovi mogu da postave deljene aplikacije, radne tokove i vrste događaja sa kružnom dodelom i zajedničko zakazivanje.",
"organization_banner_title": "Upravljajte organizacijama sa više timova",
"set_up_your_organization": "Postavite svoju organizaciju",
"set_up_your_organization": "Konfigurisanje profila organizacije",
"organizations_description": "Organizacije su deljena okruženja gde timovi mogu da kreiraju deljene vrste događaja, aplikacije, radne tokove i još mnogo toga.",
"must_enter_organization_name": "Morate da unesete naziv organizacije",
"must_enter_organization_admin_email": "Morate da unesete adresu e-pošte vaše organizacije",
"admin_email": "Imejl adresa vaše organizacije",
"admin_email": "Vaša adresa e-pošte u organizaciji",
"admin_username": "Korisničko ime administratora",
"organization_name": "Naziv organizacije",
"organization_url": "URL organizacije",
"organization_verify_header": "Potvrdite imejl vaše organizacije",
"organization_verify_header": "Potvrdite svoju adresu e-pošte u organizaciji",
"organization_verify_email_body": "Koristite kôd u nastavku da potvrdite svoju adresu e-pošte kako biste nastavili sa podešavanjem svoje organizacije.",
"additional_url_parameters": "Dodatni URL parametri",
"about_your_organization": "O vašoj organizaciji",
"about_your_organization_description": "Organizacije su deljena okruženja gde možete da kreirate više timova sa deljenim članovima, vrste događaja, aplikacije, radne tokove i drugo.",
"about_your_organization_description": "Organizacije su deljena okruženja gde možete da kreirate više timova sa deljenim članovima, vrstama događaja, aplikacijama, radnim tokovima i mnogim drugim stvarima.",
"create_your_teams": "Kreirajte svoje timove",
"create_your_teams_description": "Počnite planiranje zajedno dodavanjem članova tima u svoju organizaciju",
"invite_organization_admins": "Pozovite administratore vaše organizacije",
@@ -1917,7 +1958,7 @@
"org_no_teams_yet_description": "Ako ste administrator, obavezno kreirajte timove koji će ovde biti prikazani.",
"set_up": "Podesi",
"set_up_your_profile": "Podesite svoj profil",
"set_up_your_profile_description": "Neka ljudi u organizaciji {{orgName}} znaju ko ste i kako da se povežu sa vama putem javnog linka.",
"set_up_your_profile_description": "Unesite informacije o svojoj ulozi u organizaciji {{orgName}}. Te informacije će videti osobe koje kliknu na vaš javni link.",
"my_profile": "Moj profil",
"my_settings": "Moja podešavanja",
"crm": "CRM",
@@ -1925,7 +1966,7 @@
"sender_id_info": "Ime ili broj koji će biti prikazani kao pošiljalac SMS-a (neke zemlje ne dozvoljavaju alfanumeričke ID-ove pošiljaoca)",
"org_admins_can_create_new_teams": "Samo administrator vaše ogranizacije može da kreira nove timove",
"google_new_spam_policy": "Google-ova nova politika neželjene pošte može da spreči da primate bilo koje imejlove ili obaveštenja kalendara u vezi sa ovom rezervacijom.",
"resolve": "Reši",
"resolve": "Kako rešiti taj problem",
"no_organization_slug": "Desila se greška kod kreiranja timova za ovu organizaciju. Nedostaje URL slug.",
"org_name": "Naziv organizacije",
"org_url": "URL organizacije",
@@ -1933,11 +1974,84 @@
"404_the_org": "Organizacija",
"404_the_team": "Tim",
"404_claim_entity_org": "Zatražite poddomen za svoju organizaciju",
"404_claim_entity_team": "Zahtevajte ovaj tim i počnite da uređujete kolektivni raspored",
"404_claim_entity_team": "Postanite deo ovog tima i počnite da uređujete kolektivni raspored",
"insights_all_org_filter": "Sve aplikacije",
"insights_team_filter": "Tim: {{teamName}}",
"insights_user_filter": "Korisnik: {{userName}}",
"insights_subtitle": "Pogledajte insights rezervacije za vaše događaje",
"location_options": "{{locationCount}} opcije lokacije",
"custom_plan": "Prilagođeni plan",
"email_embed": "Ugradi u imejl",
"add_times_to_your_email": "Izaberite nekoliko dostupnih termina i ugradite ih u svoj imejl",
"select_time": "Izaberite vreme",
"select_date": "Izaberite datum",
"see_all_available_times": "Pogledajte sva dostupna vremena",
"org_team_names_example": "npr. Marketing tim",
"org_team_names_example_1": "npr. Marketing tim",
"org_team_names_example_2": "npr. Prodajni tim",
"org_team_names_example_3": "npr. Dizajnerski tim",
"org_team_names_example_4": "npr. Inženjerski tim",
"org_team_names_example_5": "npr. Tim analize podataka",
"org_max_team_warnings": "Kasnije ćete moći da dodate još timova.",
"what_is_this_meeting_about": "O čemu je sastanak?",
"add_to_team": "Dodajte timu",
"remove_users_from_org": "Uklonite korisnike iz organizacije",
"remove_users_from_org_confirm": "Da li ste sigurni da želite da uklonite {{userCount}} korisnika iz organizacije?",
"user_has_no_schedules": "Ovaj korisnik još uvek nije podesio nijedan raspored",
"user_isnt_in_any_teams": "Ovaj korisnik nije ni u jednom timu",
"requires_booker_email_verification": "Zahteva imejl verifikaciju rezervacije",
"description_requires_booker_email_verification": "Da biste obezbedili verifikaciju imejla osobe koja rezerviše pre zakazivanja događaja",
"requires_confirmation_mandatory": "Poruke mogu da se šalju samo učesnicima kada tip događaja zahteva potvrdu.",
"kyc_verification_information": "Da bi osigurali bezbednost, morate da verifikujete svoj {{teamOrAccount}} pre slanja poruka učesnicima. Obratite nam se putem <a>{{supportEmail}}</a> i dostavite sledeće podatke:",
"kyc_verification_documents": "<ul><li>Vaš {{teamOrUser}}</li><li> za firme: Priložite dokumentaciju za poslovnu verifikaciju</li><li>Za pojedince: Priložite zvaničnu ličnu ispravu</li></ul>",
"verify_team_or_account": "Verifikuj {{teamOrAccount}}",
"verify_account": "Verifikuj nalog",
"kyc_verification": "KYC verifikacija",
"organizations": "Organizacije",
"org_admin_other_teams": "Drugi timovi",
"org_admin_other_teams_description": "Ovde možete da vidite timove u vašoj organizaciji gde niste član. Možete da se dodate ako je potrebno.",
"no_other_teams_found": "Nisu pronađeni drugi timovi",
"no_other_teams_found_description": "U ovoj organizaciji nema drugih timova.",
"attendee_first_name_variable": "Ime učesnika",
"attendee_last_name_variable": "Prezime učesnika",
"attendee_first_name_info": "Ime osobe koja rezerviše",
"attendee_last_name_info": "Prezime osobe koja rezerviše",
"me": "Ja",
"verify_team_tooltip": "Verifikujte svoj tim da biste omogućili slanje poruka učesnicima",
"member_removed": "Član je uklonjen",
"my_availability": "Moja dostupnost",
"team_availability": "Dostupnost tima",
"backup_code": "Rezervna kopija kôda",
"backup_codes": "Kodovi za rezervnu kopiju",
"backup_code_instructions": "Svaki kôd za rezervnu kopiju može biti korišćen samo jednom da bi se obezbedio pristup bez vašeg autentifikatora.",
"backup_codes_copied": "Kopirani su kodovi za rezervnu kopiju!",
"incorrect_backup_code": "Kôd za rezervnu kopiju je netačan.",
"lost_access": "Izgubljen pristup",
"missing_backup_codes": "Nisu pronađeni kodovi za rezervnu kopiju. Generišite ih u svojim podešavanjima.",
"admin_org_notification_email_subject": "Kreirana je nova organizacija: čeka se radnja",
"hi_admin": "Zdravo administratore,",
"admin_org_notification_email_title": "Organizacija zahteva DNS podešavanja",
"admin_org_notification_email_body_part1": "Organizacija sa slug-om „{{orgSlug}}” je kreirana. <br /><br />Uverite se da je konfigurisan DNS registar koji vodi ka poddomenu koji odgovara novoj organizaciji kada je pokrenuta glavna aplikacija. U suprotnom organizacija neće raditi.<br /><br /> Ovo su osnovne mogućnosti za konfigurisanje poddomena koji vodi ka njihovoj aplikaciji da bi se učitala profilna strana organizacije.<br /><br />To možete takođe da uradite sa A zapisom:",
"admin_org_notification_email_body_part2": "Ili sa CNAME zapisom:",
"admin_org_notification_email_body_part3": "Kada konfigurišete poddomen, označite DNS konfiguraciju kao završenu u Podešavanjima administratora organizacije.",
"admin_org_notification_email_cta": "Idite na Podešavanja administratora organizacije",
"org_has_been_processed": "Org je obrađena",
"org_error_processing": "Desila se greška u obradi ove organizacije",
"orgs_page_description": "Spisak svih organzacija. Prihvatanjem organizacije omogućiće svim korisnicima sa tim imejl domenom da se prijave BEZ verifikacije imejlom.",
"unverified": "Neverifikovano",
"dns_missing": "Nedostaje DNS",
"mark_dns_configured": "Označite da je DNS konfigurisan",
"value": "Vrednost",
"your_organization_updated_sucessfully": "Vaša ogranizacija je uspešno ažurirana",
"team_no_event_types": "Ovaj tim nema tipove događaja",
"seat_options_doesnt_multiple_durations": "Opcije za mesta ne podržavaju višestruko trajanje",
"include_calendar_event": "Uključite događaj u kalendaru",
"recently_added": "Nedavno dodato",
"no_members_found": "Članovi nisu pronađeni",
"event_setup_length_error": "Podešavanje događaja: Trajanje mora da bude barem 1 minut.",
"availability_schedules": "Raspored dostupnosti",
"view_only_edit_availability_not_onboarded": "Ovaj korisnik nije završio uvodnu obuku. Nećete moći da podesite dostupnost dok ne dovrši uvodnu obuku.",
"view_only_edit_availability": "Pregledate dostupnost ovog korisnika. Možete da uredite samo svoju dostupnost.",
"edit_users_availability": "Uredi dostupnost korisnika: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodajte svoje nove stringove iznad ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Verifiera din e-postadress för att garantera bästa e-post- och kalenderleverans",
"verify_email_email_header": "Verifiera din e-postadress",
"verify_email_email_button": "Verifiera e-post",
"copy_somewhere_safe": "Spara denna API-nyckel någonstans säkert. Du kommer inte att kunna visa den igen.",
"verify_email_email_body": "Verifiera din e-postadress genom att klicka på knappen nedan.",
"verify_email_by_code_email_body": "Verifiera din e-postadress genom att använda nedanstående kod.",
"verify_email_email_link_text": "Här är länken om du inte gillar att klicka på knappar:",
"email_verification_code": "Ange verifieringskod",
"email_verification_code_placeholder": "Ange verifieringskoden som skickats till din e-post",
"incorrect_email_verification_code": "Vertifieringskoden är felaktig.",
"email_sent": "E-postmeddelandet har skickats",
"email_not_sent": "Ett fel uppstod när e-post skulle skickas",
"event_declined_subject": "Avvisades: {{title}} kl. {{date}}",
"event_cancelled_subject": "Avbokad: {{title}} {{date}}",
"event_request_declined": "Din bokningsförfrågan har avbjöts",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "En återkommande händelse väntar på ditt godkännande",
"someone_requested_an_event": "Någon har begärt att schemalägga en händelse i din kalender.",
"someone_requested_password_reset": "Någon har begärt en länk för att ändra ditt lösenord.",
"password_reset_email_sent": "Om denna e-postadress finns i vårt system bör du få ett återställningsmeddelande.",
"password_reset_instructions": "Om du inte begärde detta kan du ignorera detta e-postmeddelande och ditt lösenord kommer inte att ändras.",
"event_awaiting_approval_subject": "Inväntar godkännande: {{title}} den {{date}}",
"event_still_awaiting_approval": "En bokning väntar fortfarande på ditt godkännande",
@@ -217,6 +224,10 @@
"already_have_an_account": "Har du redan ett konto?",
"create_account": "Skapa konto",
"confirm_password": "Bekräfta lösenord",
"confirm_auth_change": "Detta kommer att ändra hur du loggar in",
"confirm_auth_email_change": "Att ändra e-postadressen kommer att koppla bort din nuvarande autentiseringsmetod för att logga in på Cal.com. Vi kommer att be dig verifiera din nya e-postadress. Framå kommer du att loggas ut och använda din nya e-postadress för att logga in istället för din nuvarande autentiseringsmetod efter att du ställt in ditt lösenord genom att följa instruktionerna som kommer att skickas till din e-post.",
"reset_your_password": "Konfigurera ditt nya lösenord med instruktionerna som skickas till din e-postadress.",
"email_change": "Logga in igen med din nya e-postadress och lösenord.",
"create_your_account": "Skapa ditt konto",
"sign_up": "Registrera dig",
"youve_been_logged_out": "Du har loggats ut",
@@ -243,6 +254,10 @@
"all": "Alla",
"yours": "Ditt konto",
"available_apps": "Tillgängliga appar",
"available_apps_lower_case": "Tillgängliga appar",
"available_apps_desc": "Du har inga appar installerade. Visa populära appar nedan och utforska mer i vår <1>App Store</1>",
"fixed_host_helper": "Lägg till alla som behöver delta i evenemanget. <1>Läs mer</1>",
"round_robin_helper": "Personer i gruppen turas om och endast en person kommer att dyka upp för evenemanget.",
"check_email_reset_password": "Kolla din e-post. Vi har skickat en länk till dig för att återställa ditt lösenord.",
"finish": "Slutför",
"organization_general_description": "Hantera inställningar för ditt teams språk och tidszon",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "Till sist så hjälper en kort beskrivning om dig själv och ett foto dig verkligen att få bokningar och andra kan veta vem de bokar med.",
"set_availability_instructions": "Definiera tidsintervall när du är tillgänglig på en återkommande basis. Du kan skapa fler av dessa senare och tilldela dem till olika kalendrar.",
"set_availability": "Ställ in din tillgänglighet",
"availability_settings": "Tillgänglighetsinställningar",
"continue_without_calendar": "Fortsätt utan kalender",
"connect_your_calendar": "Anslut din kalender",
"connect_your_video_app": "Anslut dina videoappar",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Gruppbokningslänkar som kan skapas dynamiskt genom att lägga till flera användarnamn med ett '+'. Exempel: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Tillåt deltagare att boka dig via dynamiska gruppbokningar",
"dynamic_booking": "Dynamiska grupplänkar",
"allow_seo_indexing": "Tillåt sökmotorer att komma åt ditt publika innehåll",
"seo_indexing": "Tillåt SEO-indexering",
"email": "E-post",
"email_placeholder": "jdoe@exempel.se",
"full_name": "Fullständigt namn",
@@ -406,6 +424,7 @@
"booking_requested": "Bokning begärd",
"meeting_ended": "Mötet avslutat",
"form_submitted": "Formulär skickat",
"booking_paid": "Bokning betald",
"event_triggers": "Händelseutlösare",
"subscriber_url": "Prenumerantens URL",
"create_new_webhook": "Skapa en ny webhook",
@@ -506,6 +525,7 @@
"your_name": "Ditt namn",
"your_full_name": "Ditt fullständiga namn",
"no_name": "Inget namn",
"enter_number_between_range": "Ange ett tal mellan 1 och {{maxOccurences}}",
"email_address": "E-postadress",
"enter_valid_email": "Ange en giltig e-postadress",
"location": "Plats",
@@ -543,6 +563,7 @@
"leave": "Lämna",
"profile": "Profil",
"my_team_url": "Min team-URL",
"my_teams": "Mina team",
"team_name": "Teamnamn",
"your_team_name": "Ditt team-namn",
"team_updated_successfully": "Teamet har uppdaterats",
@@ -570,6 +591,8 @@
"invite_new_member": "Bjud in en ny teammedlem",
"invite_new_member_description": "Obs! Detta kommer att <1>kosta en extra plats (150 kr/mån)</1> i din prenumeration.",
"invite_new_team_member": "Bjud in någon till ditt team.",
"upload_csv_file": "Ladda upp en .csv-fil",
"invite_via_email": "Bjud in via e-post",
"change_member_role": "Ändra teammedlemmens roll",
"disable_cal_branding": "Inaktivera {{appName}}-varumärke",
"disable_cal_branding_description": "Dölj all {{appName}} reklam från dina offentliga sidor.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Användaren måste acceptera inbjudan för att visa tillgängligheten",
"set_as_away": "Ställ in dig själv som inte tillgänglig",
"set_as_free": "Ställ av din status som inte tillgänglig",
"toggle_away_error": "Fel vid uppdatering av frånvarostatus",
"user_away": "Den här användaren är för inte tillgänglig.",
"user_away_description": "Personen du försöker boka har satt sig som inte tillgänglig och accepterar därför inte nya bokningar.",
"meet_people_with_the_same_tokens": "Träffa personer med samma tokens",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Besök dina {{provider}} -kontoinställningar för att ändra din e-post, lösenord, aktivera tvåfaktorsautentisering mm.",
"signin_with_google": "Logga in med Google",
"signin_with_saml": "Logga in med SAML",
"signin_with_saml_oidc": "Logga in med SAML/OIDC",
"you_will_need_to_generate": "Du måste generera en åtkomsttoken från ditt gamla schemaläggningsverktyg.",
"import": "Importera",
"import_from": "Importera från",
@@ -950,6 +975,8 @@
"offer_seats_description": "Erbjud platser till bokningar. Detta inaktiverar gäster och bokningar.",
"seats_available_one": "Tillgänglig plats",
"seats_available_other": "Tillgängliga platser",
"seats_nearly_full": "Sittplatser nästan fulla",
"seats_half_full": "Sittplatser fylls snabbt",
"number_of_seats": "Antal platser per bokning",
"enter_number_of_seats": "Ange antal platser",
"you_can_manage_your_schedules": "Du kan hantera dina scheman på sidan Tillgänglighet.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Hur vill du lägga till {{appName}} till din webbplats?",
"choose_ways_put_cal_site": "Välj ett av följande sätt att lägga {{appName}} på din webbplats.",
"setting_up_zapier": "Ställa in din Zapier-integration",
"setting_up_make": "Konfigurera din Make-integration",
"generate_api_key": "Generera API-nyckel",
"generate_api_key_description": "Skapa en API-nyckel att använda med {{appName}} på",
"your_unique_api_key": "Din unika API-nyckel",
"copy_safe_api_key": "Kopiera denna API-nyckel och spara den någonstans säkert. Om du förlorar denna nyckel måste du skapa en ny.",
"zapier_setup_instructions": "<0>Logga in på ditt Zapier-konto och skapa en ny Zap.</0><1>Välj {{appName}} som din Trigger-app. Välj också en Trigger-händelse. /1><2>Välj ditt konto och ange sedan din unika API-nyckel.</2><3>Testa din Trigger.</3><4>Du är klar!</4>",
"make_setup_instructions": "<0>Gå till <1><0>Skapa inbjudningslänk</0></1> och installera Cal.com-appen.</0><1>Logga in på ditt Make-konto och skapa ett nytt Scenario.</1><2>Välj Cal.com som din Trigger-app. Välj också en triggerhändelse.</2><3>Välj ditt konto och ange sedan din unika API-nyckel.</3><4>Testa din trigger.</4><5>Du är redo!</5>",
"install_zapier_app": "Installera först Zapier-appen i appbutiken.",
"install_make_app": "Installera först Make-appen i appbutiken.",
"connect_apple_server": "Anslut till Apple Server",
"calendar_url": "Kalender-URL",
"apple_server_generate_password": "Skapa ett appspecifikt lösenord som du kan använda med {{appName}} på",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "skicka e-post till deltagare",
"sms_attendee_action": "Skicka SMS till deltagare",
"sms_number_action": "skicka SMS till ett specifikt nummer",
"send_reminder_sms": "Skicka enkelt mötespåminnelser via SMS till dina deltagare",
"whatsapp_number_action": "skicka Whatsapp till ett specifikt nummer",
"whatsapp_attendee_action": "skicka Whatsapp till deltagare",
"workflows": "Arbetsflöden",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Fel vid uppdatering av inställningar",
"personal_cal_url": "Min personliga {{appName}}-URL",
"bio_hint": "Några meningar om dig själv. Detta kommer att visas på din personliga webbsida.",
"user_has_no_bio": "Den här användaren har inte lagt till en biografi ännu.",
"delete_account_modal_title": "Radera konto",
"confirm_delete_account_modal": "Är du säker på att du vill radera ditt {{appName}}-konto?",
"delete_my_account": "Radera mitt konto",
@@ -1426,6 +1458,7 @@
"add_limit": "Lägg till gräns",
"team_name_required": "Teamnamn krävs",
"show_attendees": "Dela deltagarinformation mellan gäster",
"show_available_seats_count": "Visa antalet lediga platser",
"how_booking_questions_as_variables": "Hur används bokningsfrågor som variabler?",
"format": "Formatera",
"uppercase_for_letters": "Använd versaler för alla bokstäver",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Vill du verkligen ta bort {{connectionType}}-konfigurationen? Dina teammedlemmar som använder {{connectionType}}-inloggning kan inte längre komma åt Cal.com.",
"organizer_timezone": "Organisatörens tidszon",
"email_user_cta": "Visa inbjudan",
"email_no_user_invite_heading_team": "Du har blivit inbjuden att gå med i ett {{appName}}-team",
"email_no_user_invite_heading_org": "Du har blivit inbjuden att gå med i en {{appName}}-organisation",
"email_no_user_invite_subheading": "{{invitedBy}} har bjudit in dig att gå med i sitt team på {{appName}}. {{appName}} är en händelsejonglerande schemaläggare som du och ditt team kan använda för att planera möten utan att skicka e-post fram och tillbaka.",
"email_user_invite_subheading_team": "{{invitedBy}} har bjudit in dig att gå med i sitt team {{teamName}} den {{appName}}. {{appName}} är en händelsejonglerande schemaläggare som du och ditt team kan använda för att planera möten utan att skicka e-post fram och tillbaka.",
"email_user_invite_subheading_org": "{{invitedBy}} har bjudit in dig att gå med i deras organisation \"{{teamName}}\" på {{appName}}. {{appName}} är schemaläggaren som gör det möjligt för dig och din organisation att schemalägga möten utan e-posttennis.",
"email_no_user_invite_steps_intro": "Vi guidar dig genom några korta steg och du kommer att kunna schemalägga med din/ditt {{entity}} på nolltid utan stress.",
"email_no_user_step_one": "Välj ditt användarnamn",
"email_no_user_step_two": "Anslut ditt kalenderkonto",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Inga data hittades för valt filter eller valda datum.",
"acknowledge_booking_no_show_fee": "Jag bekräftar att en avgift på {{amount, currency}} för utebliven närvaro debiteras mitt kort om jag inte deltar i händelsen.",
"card_details": "Kortuppgifter",
"something_went_wrong_on_our_end": "Något gick fel från vår sida. Kontakta vårt supportteam så fixar vi det åt dig direkt.",
"please_provide_following_text_to_suppport": "Ange följande text när du kontaktar supporten så att vi kan hjälpa dig bättre",
"seats_and_no_show_fee_error": "För närvarande går det inte att aktivera platser och ta ut en avgift för utebliven närvaro",
"complete_your_booking": "Slutför din bokning",
"complete_your_booking_subject": "Slutför din bokning: {{title}} {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Öppna din Cal-dialogruta när någon klickar på ett element.",
"need_help_embedding": "Behöver du hjälp? Se våra guider för inbäddning av Cal på Wix, Squarespace eller WordPress, kolla in våra vanliga frågor eller utforska avancerade inbäddningsalternativ.",
"book_my_cal": "Boka i min Cal",
"first_name": "Förnamn",
"last_name": "Efternamn",
"first_last_name": "Förnamn, Efternamn",
"invite_as": "Bjud in som",
"form_updated_successfully": "Formuläret har uppdaterats.",
"disable_attendees_confirmation_emails": "Inaktivera förinställda e-postbekräftelser för deltagare",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Skapa din första webhook för denna händelsetyp",
"install_app_on": "Installera appen på",
"create_for": "Skapa för",
"currency": "Valuta",
"organization_banner_description": "Skapa miljöer där dina team kan skapa delade appar, arbetsflöden och händelsetyper med round-robin och kollektiv schemaläggning.",
"organization_banner_title": "Hantera organisationer med flera team",
"set_up_your_organization": "Konfigurera din organisation",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Användare: {{userName}}",
"insights_subtitle": "Visa Insights-bokningar för dina händelser",
"location_options": "{{locationCount}} platsalternativ",
"custom_plan": "Anpassad plan",
"email_embed": "E-post inbäddad",
"add_times_to_your_email": "Välj några tillgängliga tider och bädda in dem i din e-post",
"select_time": "Välj tid",
"select_date": "Välj datum",
"see_all_available_times": "Se alla tillgängliga tider",
"org_team_names_example": "t.ex. marknadsföringsteam",
"org_team_names_example_1": "t.ex. marknadsföringsteam",
"org_team_names_example_2": "t.ex. säljteam",
"org_team_names_example_3": "t.ex. designteam",
"org_team_names_example_4": "t.ex. ingenjörsteam",
"org_team_names_example_5": "t.ex. dataanalytikerteam",
"org_max_team_warnings": "Du kommer att kunna lägga till fler team senare.",
"what_is_this_meeting_about": "Vad handlar det här mötet om?",
"add_to_team": "Lägg till i teamet",
"remove_users_from_org": "Ta bort användare från organisationen",
"remove_users_from_org_confirm": "Är du säker på att du vill ta bort {{userCount}} användare från denna organisation?",
"user_has_no_schedules": "Den här användaren har inte skapat några scheman ännu",
"user_isnt_in_any_teams": "Den här användaren är inte med i något team",
"requires_booker_email_verification": "Kräver e-postverifiering för bokare",
"description_requires_booker_email_verification": "För att säkerställa bokarens e-postverifiering före schemaläggning av evenemang",
"requires_confirmation_mandatory": "Textmeddelanden kan endast skickas till deltagare när evenemangstypen kräver bekräftelse.",
"kyc_verification_information": "För att garantera säkerheten måste du verifiera ditt {{teamOrAccount}} innan du skickar textmeddelanden till deltagare. Kontakta oss på <a>{{supportEmail}}</a> och ange följande information:",
"kyc_verification_documents": "<ul><li>Din {{teamOrUser}}</li><li>För företag: Bifoga din dokumentation för verifiering av företag</li><li>För privatpersoner: Bifoga ett statligt utfärdat ID-kort</li></ul>",
"verify_team_or_account": "Verifiera {{teamOrAccount}}",
"verify_account": "Verifiera konto",
"kyc_verification": "KYC-verifiering",
"organizations": "Organisationer",
"org_admin_other_teams": "Andra team",
"org_admin_other_teams_description": "Här kan du se team i din organisation som du inte är en del av. Du kan lägga till dem om det behövs.",
"no_other_teams_found": "Inga andra team hittades",
"no_other_teams_found_description": "Det finns inga andra team i denna organisation.",
"attendee_first_name_variable": "Deltagarens förnamn",
"attendee_last_name_variable": "Deltagarens efternamn",
"attendee_first_name_info": "Förnamnet på personen som bokat",
"attendee_last_name_info": "Efternamnet på personen som bokat",
"me": "Jag",
"verify_team_tooltip": "Verifiera ditt team för att aktivera att skicka meddelanden till deltagare",
"member_removed": "Medlem borttagen",
"my_availability": "Min tillgänglighet",
"team_availability": "Teamets tillgänglighet",
"backup_code": "Säkerhetskopiera kod",
"backup_codes": "Säkerhetskopiera koder",
"backup_code_instructions": "Varje säkerhetskopierad kod kan användas exakt en gång för att ge åtkomst utan din autentiserare.",
"backup_codes_copied": "Säkerhetskopierade koder kopierade!",
"incorrect_backup_code": "Den säkerhetskopierade koden är felaktig.",
"lost_access": "Förlorad åtkomst",
"missing_backup_codes": "Inga säkerhetskopieringskoder hittades. Generera dem i dina inställningar.",
"admin_org_notification_email_subject": "Ny organisation skapad: väntande åtgärd",
"hi_admin": "Hej administratör",
"admin_org_notification_email_title": "En organisation kräver DNS-inställning",
"admin_org_notification_email_body_part1": "En organisation med slug \"{{orgSlug}}\" skapades.<br /><br />Se till att konfigurera ditt DNS-register så att underdomänen motsvarar den nya organisationen där huvudappen körs. Annars kommer organisationen inte att fungera.<br /><br />Här är bara de allra grundläggande alternativen för att konfigurera en underdomän för att peka på deras app så den laddar organisationens profilsida.<br /><br />Du kan göra det antingen med A-posten:",
"admin_org_notification_email_body_part2": "Eller CNAME-posten:",
"admin_org_notification_email_body_part3": "När du har konfigurerat underdomänen, markera DNS-konfigurationen som gjort i organisationens admin-inställningar.",
"admin_org_notification_email_cta": "Gå till organisationens admin-inställningar",
"org_has_been_processed": "Org har behandlats",
"org_error_processing": "Det har uppstått ett fel vid behandlingen av denna organisation",
"orgs_page_description": "En lista över alla organisationer. Genom att acceptera en organisation kan alla användare med den e-postdomänen registrera sig UTAN e-postverifiering.",
"unverified": "Overifierad",
"dns_missing": "DNS saknas",
"mark_dns_configured": "Markera som DNS konfigurerad",
"value": "Värde",
"your_organization_updated_sucessfully": "Din organisation har uppdaterats",
"team_no_event_types": "Detta team har inga händelsetyper",
"seat_options_doesnt_multiple_durations": "Platsalternativet stöder inte flera varaktigheter",
"include_calendar_event": "Inkludera kalenderhändelse",
"recently_added": "Nyligen tillagda",
"no_members_found": "Inga medlemmar hittades",
"event_setup_length_error": "Konfigurering av evenemang: Längden måste vara minst 1 minut.",
"availability_schedules": "Scheman för tillgänglighet",
"view_only_edit_availability_not_onboarded": "Den här användaren har inte slutfört introduktionen. Du kommer inte att kunna ange deras tillgänglighet förrän de har slutfört introduktionen.",
"view_only_edit_availability": "Du tittar på användarens tillgänglighet. Du kan bara redigera din egen tillgänglighet.",
"edit_users_availability": "Redigera användarens tillgänglighet: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -950,6 +950,8 @@
"offer_seats_description": "Rezervasyonlar için yer teklif edin. Bu işlem, misafirleri ve rezervasyon onaylarını devre dışı bırakır.",
"seats_available_one": "Yer mevcut",
"seats_available_other": "Yer mevcut",
"seats_nearly_full": "Koltuklar neredeyse dolu",
"seats_half_full": "Koltuklar hızla doluyor",
"number_of_seats": "Rezervasyon başına yer sayısı",
"enter_number_of_seats": "Yer sayısını girin",
"you_can_manage_your_schedules": "Müsaitlik durumu sayfasından planlarınızı yönetebilirsiniz.",
@@ -1030,6 +1032,7 @@
"how_you_want_add_cal_site": "{{appName}}'ı sitenize nasıl eklemek istersiniz?",
"choose_ways_put_cal_site": "{{appName}}'ı sitenize eklemek için aşağıdaki seçeneklerden birini belirleyin.",
"setting_up_zapier": "Zapier entegrasyonunuzu ayarlama",
"setting_up_make": "Make entegrasyonunuzu ayarlayın",
"generate_api_key": "API anahtarı oluştur",
"generate_api_key_description": "{{appName}} ile kullanmak için bir API anahtarı oluşturun:",
"your_unique_api_key": "Benzersiz API anahtarınız",
@@ -1085,6 +1088,7 @@
"email_attendee_action": "katılımcılara e-posta gönder",
"sms_attendee_action": "Katılımcıya SMS gönder",
"sms_number_action": "belirli bir numaraya SMS gönder",
"send_reminder_sms": "Katılımcılarınıza toplantı hatırlatmalarını SMS ile kolayca gönderin",
"whatsapp_number_action": "belirli bir numaraya Whatsapp mesajı gönder",
"whatsapp_attendee_action": "katılımcıya Whatsapp mesajı gönder",
"workflows": "İş akışları",
@@ -1659,6 +1663,7 @@
"delete_sso_configuration_confirmation_description": "{{connectionType}} yapılandırmasını silmek istediğinizden emin misiniz? {{connectionType}} girişini kullanan ekip üyeleriniz artık Cal.com'a erişemeyecek.",
"organizer_timezone": "Organizatörün saat dilimi",
"email_user_cta": "Daveti görüntüle",
"email_no_user_invite_heading_org": "{{appName}} grubuna katılmaya davet edildiniz",
"email_no_user_invite_subheading": "{{invitedBy}}, sizi {{appName}} ekibine katılmaya davet etti. {{appName}}, size ve ekibinize e-posta iletişimine ihtiyaç duymadan toplantı planlama yapma olanağı sağlayan bir etkinlik planlayıcıdır.",
"email_user_invite_subheading_team": "{{invitedBy}}, sizi {{appName}} uygulamasındaki `{{teamName}}` ekibine katılmaya davet etti. {{appName}}, size ve ekibinize e-posta iletişimine ihtiyaç duymadan toplantı planlama yapma olanağı sağlayan bir etkinlik planlayıcıdır.",
"email_no_user_invite_steps_intro": "{{entity}} ekibinizle birlikte kısa sürede ve sorunsuz planlama yapmanın keyfini çıkarmanız için birkaç adımda size rehberlik edeceğiz.",
@@ -1938,5 +1943,8 @@
"insights_user_filter": "Kullanıcı: {{userName}}",
"insights_subtitle": "Etkinliklerinizdeki rezervasyon insights'ı görüntüleyin",
"custom_plan": "Özel Plan",
"email_embed": "E-posta Yerleştirme",
"add_times_to_your_email": "Uygun zamanlardan bazılarını seçin ve bunları E-postanıza ekleyin",
"kyc_verification_information": "Güvenliği sağlamak için katılımcılara kısa mesaj göndermeden önce {{teamOrAccount}} hesabınızı doğrulamanız gereklidir. Lütfen <a>{{supportEmail}}</a> adresinden bizimle iletişime geçin ve aşağıdaki bilgileri sağlayın:",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Yeni dizelerinizi yukarıya ekleyin ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Підтвердьте свою електронну адресу, щоб уникнути проблем із доставкою листів і даних календаря",
"verify_email_email_header": "Підтвердьте свою електронну адресу",
"verify_email_email_button": "Підтвердити ел. адресу",
"copy_somewhere_safe": "Збережіть цей ключ API у надійному місці. Ви не зможете знову його переглянути.",
"verify_email_email_body": "Підтвердьте свою електронну адресу, натиснувши кнопку нижче.",
"verify_email_by_code_email_body": "Підтвердьте свою електронну адресу, використавши нижчезазначений код.",
"verify_email_email_link_text": "Можете скористатися цим посиланням, якщо не любите натискати кнопки:",
"email_verification_code": "Ведіть код перевірки",
"email_verification_code_placeholder": "Введіть код перевірки, надісланий на вашу пошту",
"incorrect_email_verification_code": "Код перевірки неправильний.",
"email_sent": "Лист надіслано",
"email_not_sent": "Під час надсилання електронного листа сталася помилка",
"event_declined_subject": "Відхилено: {{title}}, {{date}}",
"event_cancelled_subject": "Скасовано: {{title}}, {{date}}",
"event_request_declined": "Ваш запит на захід відхилено",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Періодичний захід чекає на ваше схвалення",
"someone_requested_an_event": "Хтось хоче запланувати захід у вашому календарі.",
"someone_requested_password_reset": "Хтось хоче змінити ваш пароль.",
"password_reset_email_sent": "Якщо ця електронна адреса є в нашій системі, ви отримаєте електронний лист для скидання.",
"password_reset_instructions": "Якщо ви не надсилали цього запиту, можете не звертати уваги на цей лист. Пароль не зміниться.",
"event_awaiting_approval_subject": "Очікування на схвалення: {{title}}, {{date}}",
"event_still_awaiting_approval": "Захід досі чекає на ваше схвалення",
@@ -217,6 +224,10 @@
"already_have_an_account": "Уже маєте обліковий запис?",
"create_account": "Створити обліковий запис",
"confirm_password": "Підтвердити пароль",
"confirm_auth_change": "Це змінить спосіб входу",
"confirm_auth_email_change": "У результаті зміни електронної адреси буде від’єднано ваш поточний метод автентифікації для входу на Cal.com. Ми попросимо вас підтвердити вашу нову електронну адресу. Після налаштування пароля відповідно до інструкцій надісланих вам поштою вам потрібно буде вийти із системи й увійти за допомогою нової електронної адреси замість вашого поточного методу автентифікації.",
"reset_your_password": "Установіть новий пароль, дотримуючись інструкцій, надісланих на вашу електронну адресу.",
"email_change": "Увійдіть у систему за допомогою нової електронної адреси й пароля.",
"create_your_account": "Створіть власний обліковий запис",
"sign_up": "Реєстрація",
"youve_been_logged_out": "Ви вийшли із системи",
@@ -243,6 +254,10 @@
"all": "Усі",
"yours": "Ваш обліковий запис",
"available_apps": "Доступні додатки",
"available_apps_lower_case": "Доступні додатки",
"available_apps_desc": "У вас немає встановлених додатків. Перегляньте популярні додатки нижче й дізнайтеся більше в <1>App Store</1>",
"fixed_host_helper": "Додайте осіб, які повинні бути присутніми на заході. <1>Докладніше</1>",
"round_robin_helper": "Учасники групи беруть участь по черзі, і на заході буде присутньою лише одна особа.",
"check_email_reset_password": "Перевірте електронну пошту. Ми надіслали вам посилання для скидання пароля.",
"finish": "Готово",
"organization_general_description": "Налаштуйте параметри мови й часового поясу для своєї команди",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "І останнє: стислі відомості про вас і ваше фото заохочуватимуть інших бронюванювати ваш час, адже вони бачитимуть, з ким домовляються.",
"set_availability_instructions": "Визначте повторювані діапазони часу, у які ви доступні. Ви зможете додати більше таких діапазонів пізніше та призначити їх різним календарям.",
"set_availability": "Укажіть, коли ви доступні",
"availability_settings": "Налаштування доступності",
"continue_without_calendar": "Продовжити без календаря",
"connect_your_calendar": "Підключити календар",
"connect_your_video_app": "Підключіть улюблені відеозастосунки",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Посилання для групового бронювання, які можна створювати динамічно, додаючи кілька імен користувачів за допомогою «+». Приклад: «{{appName}}/bailey+peer»",
"allow_dynamic_booking": "Дозволити учасникам бронювати ваш час за допомогою динамічних групових бронювань",
"dynamic_booking": "Динамічні групові посилання",
"allow_seo_indexing": "Надати пошуковим системам доступ до вашого загальнодоступного вмісту",
"seo_indexing": "Дозволити SEO індексування",
"email": "Ел. адреса",
"email_placeholder": "vpetrenko@zrazok.com",
"full_name": "Ім’я і прізвище",
@@ -406,6 +424,7 @@
"booking_requested": "Запит на бронювання надіслано",
"meeting_ended": "Нарада завершилася",
"form_submitted": "Форму надіслано",
"booking_paid": "Бронювання оплачено",
"event_triggers": "Тригери заходів",
"subscriber_url": "URL-адреса підписника",
"create_new_webhook": "Створити новий вебгук",
@@ -506,6 +525,7 @@
"your_name": "Ваше ім’я",
"your_full_name": "Ваше повне ім’я",
"no_name": "Немає імені",
"enter_number_between_range": "Введіть число від 1 до {{maxOccurences}}",
"email_address": "Електронна адреса",
"enter_valid_email": "Введіть дійсну адресу електронної пошти",
"location": "Розташування",
@@ -543,6 +563,7 @@
"leave": "Вийти",
"profile": "Профіль",
"my_team_url": "URL моєї команди",
"my_teams": "Мої команди",
"team_name": "Назва команди",
"your_team_name": "Назва вашої команди",
"team_updated_successfully": "Відомості про команду оновлено",
@@ -570,6 +591,8 @@
"invite_new_member": "Запросити нового учасника команди",
"invite_new_member_description": "Зверніть увагу: у вашій підписці потрібно буде оплатити <1>одне додаткове місце (15 дол. США)</1>.",
"invite_new_team_member": "Запросіть когось у свою команду.",
"upload_csv_file": "Передати CSV-файл",
"invite_via_email": "Запросити електронною поштою",
"change_member_role": "Змініть роль учасника команди",
"disable_cal_branding": "Вимкнути фірмове оформлення {{appName}}",
"disable_cal_branding_description": "Приховайте весь брендинг {{appName}} зі своїх загальнодоступних сторінок.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Користувач має прийняти запрошення, щоб переглядати відомості про доступність команди",
"set_as_away": "Установити для себе стан «Не на місці»",
"set_as_free": "Вимкнути стан «Не на місці»",
"toggle_away_error": "Помилка оновлення стану «Не на місці»",
"user_away": "Цей користувач зараз не на місці.",
"user_away_description": "Користувач, час якого ви намагаєтеся забронювати, указав, що він зараз не на місці. Через це він не приймає нові бронювання.",
"meet_people_with_the_same_tokens": "Зустрічі з користувачами, у яких такі самі токени",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Щоб змінити електронну адресу чи пароль, увімкнути двоетапну автентифікацію тощо, перейдіть до налаштувань свого облікового запису {{provider}}.",
"signin_with_google": "Увійдіть через Google",
"signin_with_saml": "Увійдіть через SAML",
"signin_with_saml_oidc": "Увійдіть через SAML/OIDC",
"you_will_need_to_generate": "Вам потрібно буде згенерувати токен доступу зі старого інструменту планування.",
"import": "Імпорт",
"import_from": "Імпортувати з",
@@ -950,6 +975,8 @@
"offer_seats_description": "Пропонуйте місця під час бронювання (при цьому вимикається гостьовий режим і бронювання з підтвердженням).",
"seats_available_one": "Є доступне місце",
"seats_available_other": "Доступні місця",
"seats_nearly_full": "Місць майже не залишилось",
"seats_half_full": "Місця швидко займають",
"number_of_seats": "Кількість місць на одне бронювання",
"enter_number_of_seats": "Введіть кількість місць",
"you_can_manage_your_schedules": "Керувати розкладами можна на сторінці «Доступність».",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Як саме ви хочете додати {{appName}} на свій сайт?",
"choose_ways_put_cal_site": "Виберіть один із наведених нижче способів розмістити {{appName}} на сайті.",
"setting_up_zapier": "Налаштування інтеграції із Zapier",
"setting_up_make": "Налаштування інтеграції з Make",
"generate_api_key": "Створити ключ API",
"generate_api_key_description": "Створіть ключ API для використання з {{appName}} на сайті",
"your_unique_api_key": "Ваш унікальний ключ API",
"copy_safe_api_key": "Скопіюйте цей ключ API і збережіть його в надійному місці. Якщо ви втратите цей ключ, потрібно буде створити новий.",
"zapier_setup_instructions": "<0>Увійдіть в обліковий запис Zapier та створіть Zap.</0><1>Виберіть Cal.com як додаток Trigger, а також укажіть подію Trigger.</1><2>Виберіть свій обліковий запис і введіть унікальний ключ API.</2><3>Перевірте тригер.</3><4>Усе готово!</4>",
"make_setup_instructions": "<0>Перейдіть<1><0>за посиланням у запрошенні Make</0></1> і встановіть додаток Cal.com.</0><1>Увійдіть у свій обліковий запис Make і створіть новий сценарій.</1><2>Виберіть Cal.com як додаток Trigger, а також укажіть подію Trigger.</2><3>Виберіть свій обліковий запис і введіть унікальний ключ API.</3><4>Перевірте Trigger.</4><5>Усе готово!</5>",
"install_zapier_app": "Спочатку встановіть додаток Zapier з App Store.",
"install_make_app": "Спочатку встановіть додаток Make з App Store.",
"connect_apple_server": "Підключитися до сервера Apple",
"calendar_url": "URL-адреса календаря",
"apple_server_generate_password": "Згенеруйте спеціальний пароль додатка для використання з {{appName}} за адресою",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "надіслати ел. лист учасникам",
"sms_attendee_action": "Надіслати SMS учаснику",
"sms_number_action": "надсилати SMS на певний номер",
"send_reminder_sms": "Легко відправляйте нагадування про зустріч в SMS вашим відвідувачам",
"whatsapp_number_action": "надсилати повідомлення у Whatsapp на певний номер",
"whatsapp_attendee_action": "надсилати повідомлення у Whatsapp учаснику",
"workflows": "Робочі процеси",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Помилка оновлення параметрів",
"personal_cal_url": "Моя персональна URL-адреса {{appName}}",
"bio_hint": "Кілька речень про вас. Ця інформація з’явиться на сторінці за вашою URL-адресою.",
"user_has_no_bio": "Цей користувач ще не додав біографію.",
"delete_account_modal_title": "Видалення облікового запису",
"confirm_delete_account_modal": "Справді видалити свій обліковий запис {{appName}}?",
"delete_my_account": "Видалити мій обліковий запис",
@@ -1426,6 +1458,7 @@
"add_limit": "Додати ліміт",
"team_name_required": "Назва команди обов’язкова",
"show_attendees": "Поширювати інформацію про учасників серед гостей",
"show_available_seats_count": "Показати кількість доступних місць",
"how_booking_questions_as_variables": "Як використовувати запитання про бронювання як змінні?",
"format": "Формат",
"uppercase_for_letters": "Використовувати всі великі літери",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Справді видалити конфігурацію {{connectionType}}? Учасники вашої команди, які входять через {{connectionType}}, не зможуть ввійти в Cal.com.",
"organizer_timezone": "Часовий пояс організатора",
"email_user_cta": "Переглянути запрошення",
"email_no_user_invite_heading_team": "Вас запрошено приєднатися до команди в застосунку {{appName}}",
"email_no_user_invite_heading_org": "Вас запрошено приєднатися до організації в застосунку {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} запрошує вас приєднатися до команди в {{appName}}. {{appName}} — планувальник подій, який дає змогу вам і вашій команді планувати зустрічі без тривалої переписки електронною поштою.",
"email_user_invite_subheading_team": "{{invitedBy}} запрошує вас приєднатися до команди «{{teamName}}» в {{appName}}. {{appName}} — планувальник подій, який дає змогу вам і вашій команді планувати зустрічі без тривалої переписки електронною поштою.",
"email_user_invite_subheading_org": "{{invitedBy}} запрошує вас приєднатися до організації «{{teamName}}» в застосунку {{appName}}. {{appName}} — планувальник подій, завдяки якому ви й ваша організація можете планувати наради без довгого листування.",
"email_no_user_invite_steps_intro": "Ми ознайомимо вас із застосунком, і вже скоро ви й ваша {{entity}} насолоджуватиметеся плануванням без жодного клопоту.",
"email_no_user_step_one": "Виберіть ім’я користувача",
"email_no_user_step_two": "Підключіть обліковий запис календаря",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Не знайдено жодних даних для вибраного фільтра або вибраних дат.",
"acknowledge_booking_no_show_fee": "Я усвідомлюю, що в разі моєї відсутності на цьому заході з моєї картки буде стягнуто плату в розмірі {{amount, currency}}.",
"card_details": "Карткові реквізити",
"something_went_wrong_on_our_end": "Щось пішло не так на нашому боці. Зв’яжіться з нашою службою підтримки й ми одразу все виправимо.",
"please_provide_following_text_to_suppport": "Надайте нижчезазначений текст, звертаючись до служби підтримки, щоб нам було легше допомогти вам",
"seats_and_no_show_fee_error": "Зараз неможливо активувати місця і стягнути плату за відсутність",
"complete_your_booking": "Завершіть бронювання",
"complete_your_booking_subject": "Завершіть бронювання: {{title}} від {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Відкриває діалогове вікно з Cal у разі натискання елемента.",
"need_help_embedding": "Потрібна допомога? Перегляньте наші посібники з вбудовування Cal на Wix, Squarespace чи WordPress і ознайомтеся з поширеними запитаннями або розширеними параметрами вбудовування.",
"book_my_cal": "Забронювати на Cal.com",
"first_name": "Ім’я",
"last_name": "Прізвище",
"first_last_name": "Ім’я, прізвище",
"invite_as": "Запросити як",
"form_updated_successfully": "Форму оновлено.",
"disable_attendees_confirmation_emails": "Вимкнути листи підтвердження за замовчуванням для учасників",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Створіть свій перший вебгук для цього типу заходів",
"install_app_on": "Установити застосунок у",
"create_for": "Створити для",
"currency": "Валюта",
"organization_banner_description": "Підготуйте середовища, де ваші команди можуть створювати спільні застосунки, робочі процеси й типи заходів із циклічним і колективним плануванням.",
"organization_banner_title": "Керування організаціями з кількома командами",
"set_up_your_organization": "Налаштуйте свою організацію",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Команда: {{teamName}}",
"insights_user_filter": "Користувач: {{userName}}",
"insights_subtitle": "Переглядайте дані Insights про бронювання для своїх заходів",
"location_options": "Варіантів місць проведення: {{locationCount}}",
"custom_plan": "Користувацький план",
"email_embed": "Вбудовування в ел. пошту",
"add_times_to_your_email": "Виберіть кілька доступних часових проміжків і вбудуйте їх в електронний лист",
"select_time": "Виберіть час",
"select_date": "Виберіть дату",
"see_all_available_times": "Переглянути доступні часові проміжки",
"org_team_names_example": "напр. команда маркетингу",
"org_team_names_example_1": "напр. маркетинговий відділ",
"org_team_names_example_2": "напр. відділ продажів",
"org_team_names_example_3": "напр. дизайнерський відділ",
"org_team_names_example_4": "e.g. інженерний відділ",
"org_team_names_example_5": "e.g. відділ аналітики даних",
"org_max_team_warnings": "Ви зможете додати більше команд пізніше.",
"what_is_this_meeting_about": "Про що ця зустріч?",
"add_to_team": "Додати в команду",
"remove_users_from_org": "Видалити користувачів з організації",
"remove_users_from_org_confirm": "Справді видалити користувачів ({{userCount}}) із цієї організації?",
"user_has_no_schedules": "Цей користувач ще не налаштував розкладу",
"user_isnt_in_any_teams": "Цей користувач не входить до жодної команди",
"requires_booker_email_verification": "Потрібно підтвердження ел. адреси особи, які здійснює бронювання",
"description_requires_booker_email_verification": "Щоб забезпечити підтвердження ел. адреси особи, яка здійснює бронювання, до планування заходів",
"requires_confirmation_mandatory": "Текстові повідомлення можна надсилати лише учасникам, коли тип події вимагає підтвердження.",
"kyc_verification_information": "З міркувань безпеки потрібно підтвердити {{teamOrAccount}}, перш ніж надсилати текстові повідомлення учасникам. Зверніться до нас за адресою <a>{{supportEmail}}</a> і надайте таку інформацію:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}}</li><li>Для бізнесу: надайте документи для перевірки бізнесу</li><li>Для фізичних осіб: надайте посвідчення особи державного зразка</li></ul>",
"verify_team_or_account": "Підтвердити {{teamOrAccount}}",
"verify_account": "Підтвердити обліковий запис",
"kyc_verification": "Перевірка KYC",
"organizations": "Організації",
"org_admin_other_teams": "Інші команди",
"org_admin_other_teams_description": "Тут ви можете побачити команди у вашій організації, до яких ви не приєдналися. За потреби ви можете приєднатися до них.",
"no_other_teams_found": "Не знайдено інших команд",
"no_other_teams_found_description": "У цій організації немає інших команд.",
"attendee_first_name_variable": "Ім’я учасника",
"attendee_last_name_variable": "Прізвище учасника",
"attendee_first_name_info": "Ім’я особи, яка бронює",
"attendee_last_name_info": "Прізвище особи, яка бронює",
"me": "Я",
"verify_team_tooltip": "Верифікуйте свою команду, щоб увімкнути надсилання повідомлень відвідувачам",
"member_removed": "Учасника вилучено",
"my_availability": "Моя доступність",
"team_availability": "Доступність команди",
"backup_code": "Резервний код",
"backup_codes": "Резервні коди",
"backup_code_instructions": "Кожен резервний код можна використовувати один раз, щоб надати доступ без автентифікатора.",
"backup_codes_copied": "Резервні коди скопійовані!",
"incorrect_backup_code": "Неправильний резервний код.",
"lost_access": "Втрачено доступ",
"missing_backup_codes": "Не знайдено резервних кодів. Створіть їх у налаштуваннях.",
"admin_org_notification_email_subject": "Створено нову організацію: очікується дія",
"hi_admin": "Вітаємо, адміністраторе",
"admin_org_notification_email_title": "Організації потрібно налаштувати DNS",
"admin_org_notification_email_body_part1": "Створено організацію з URL-адресою «{{orgSlug}}».<br /><br />Налаштуйте реєстр DNS, щоб піддомен, який відповідає новій організації, указував на те місце, де запущено основний застосунок. Інакше організація не працюватиме.<br /><br />Ось кілька базових варіантів того, як налаштувати, щоб піддомен вказував на відповідний застосунок і завантажував сторінку профілю організації.<br /><br />Це можна зробити за допомогою запису А:",
"admin_org_notification_email_body_part2": "Або запису CNAME:",
"admin_org_notification_email_body_part3": "Щойно ви налаштуєте піддомен, вкажіть в налаштуваннях адміністратора організації, що налаштування DNS виконано.",
"admin_org_notification_email_cta": "Перейти до налаштувань адміністратора організації",
"org_has_been_processed": "Організація обробляється",
"org_error_processing": "Під час обробки цієї організації сталася помилка",
"orgs_page_description": "Список всіх організацій. Після прийняття організації всі користувачі із цим доменом електронної пошти зможуть зареєструватися без підтвердження електронної адреси.",
"unverified": "Не підтверджено",
"dns_missing": "Відсутній DNS",
"mark_dns_configured": "Позначити DNS налаштованим",
"value": "Значення",
"your_organization_updated_sucessfully": "Організацію оновлено",
"team_no_event_types": "У цієї команди немає типів заходів",
"seat_options_doesnt_multiple_durations": "Параметр «Місця» не підтримує декілька варіантів тривалості",
"include_calendar_event": "Включити календарний захід",
"recently_added": "Нещодавно додані",
"no_members_found": "Учасників не знайдено",
"event_setup_length_error": "Налаштування заходу: мінімальна тривалість — 1 хвилина.",
"availability_schedules": "Розклад доступності",
"view_only_edit_availability_not_onboarded": "Цей користувач не завершив ознайомлення. Доки він не зробить цього, ви не зможете налаштувати доступність для нього.",
"view_only_edit_availability": "Ви переглядаєте доступність цього користувача. Ви можете редагувати лише свою доступність.",
"edit_users_availability": "Редагувати доступність користувача: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "Xác minh địa chỉ email của bạn nhằm bảo đảm khả năng gửi email và lịch hẹn tốt nhất",
"verify_email_email_header": "Xác minh địa chỉ email của bạn",
"verify_email_email_button": "Xác minh email",
"copy_somewhere_safe": "Lưu khoá API này ở nơi an toàn. Bạn sẽ không thể xem nó lại.",
"verify_email_email_body": "Vui lòng xác minh địa chỉ email của bạn bằng cách nhấp vào nút bên dưới.",
"verify_email_by_code_email_body": "Vui lòng xác minh địa chỉ email của bạn bằng cách sử dụng mã bên dưới.",
"verify_email_email_link_text": "Đây là liên kết phòng trường hợp bạn không thích nhấp vào nút:",
"email_verification_code": "Nhập mã xác minh",
"email_verification_code_placeholder": "Nhập mã xác minh được gửi đến hộp thư của bạn",
"incorrect_email_verification_code": "Mã xác minh sai.",
"email_sent": "Email đã gửi thành công",
"email_not_sent": "Có lỗi trong lúc gửi email",
"event_declined_subject": "Đã từ chối: {{title}} tại {{date}}",
"event_cancelled_subject": "Đã hủy: {{title}} vào {{date}}",
"event_request_declined": "Lời mời sự kiện của bạn đã bị từ chối",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "Một sự kiện định kỳ đang chờ sự chấp thuận của bạn",
"someone_requested_an_event": "Ai đó đã yêu cầu đặt sự kiện trên lịch của bạn.",
"someone_requested_password_reset": "Ai đó đã yêu cầu link để đổi mật khẩu của bạn.",
"password_reset_email_sent": "Nếu email này tồn tại trong hệ thống của bạn, bạn nên nhận một email đặt lại.",
"password_reset_instructions": "Nếu bạn không yêu cầu link này, bạn có thể yên tâm bỏ qua email này và mật khẩu của bạn sẽ không bị đổi.",
"event_awaiting_approval_subject": "Đang chờ phê duyệt: {{title}} lúc {{date}}",
"event_still_awaiting_approval": "Một sự kiện vẫn đang chờ bạn phê duyệt",
@@ -217,6 +224,10 @@
"already_have_an_account": "Bạn đã có sẵn tài khoản?",
"create_account": "Tạo tài khoản",
"confirm_password": "Xác nhận mật khẩu",
"confirm_auth_change": "Thao tác này sẽ thay đổi cách thức bạn đăng nhập",
"confirm_auth_email_change": "Việc thay đổi địa chỉ email sẽ gây ngắt kết nối cho phương thức xác thực hiện tại mà bạn dùng để đăng nhập Cal.com. Chúng tôi sẽ yêu cầu bạn xác minh địa chỉ email mới. Sau đó, bạn sẽ được đăng xuất và sử dụng địa chỉ email mới để đăng nhập thay cho phương thức xác thực hiện tại sau khi thiết lập mật khẩu bằng cách làm theo các chỉ dẫn được gủi đến hộp thư của bạn.",
"reset_your_password": "Thiết lập mật khẩu mới bằng những chỉ dẫn được gửi đến địa chỉ email của bạn.",
"email_change": "Đăng nhập trở lại bằng địa chỉ email và mật khẩu mới.",
"create_your_account": "Tạo tài khoản của bạn",
"sign_up": "Đăng ký",
"youve_been_logged_out": "Bạn đã đăng xuất",
@@ -243,6 +254,10 @@
"all": "Tất cả",
"yours": "Tài khoản của bạn",
"available_apps": "Ứng dụng hiện có",
"available_apps_lower_case": "Ứng dụng hiện có",
"available_apps_desc": "Bạn chưa cài đặt ứng dụng nào. Xem những ứng dụng được chuộng bên dưới và khám phá thêm trong <1>App Store</1>",
"fixed_host_helper": "Thêm bất kì ai cần tham dự sự kiện. <1>Tìm hiểu thêm</1>",
"round_robin_helper": "Những người trong nhóm thay phiên và chỉ một người xuất hiện cho sự kiện này.",
"check_email_reset_password": "Kiểm tra hộp thư điện tử của bạn. Chúng tôi đã gửi cho bạn một liên kết để đặt lại mật khẩu của bạn.",
"finish": "Hoàn thành",
"organization_general_description": "Quản lí cài đặt cho ngôn ngữ và múi giờ của nhóm bạn",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "Điều cuối cùng, mô tả ngắn gọn về bạn và một bức ảnh để giúp bạn nhận lịch hẹn dễ hơn và cho mọi người biết họ đang đặt lịch hẹn với ai.",
"set_availability_instructions": "Xác định những phạm vi thời gian bạn có thể chấp nhận lịch hẹn định kỳ. Bạn có thể tạo thêm phạm vi thời gian này sau và gán chúng vào các lịch khác nhau.",
"set_availability": "Đặt lịch khả dụng của bạn",
"availability_settings": "Thiết lập tình trạng trống lịch",
"continue_without_calendar": "Tiếp tục mà không có lịch",
"connect_your_calendar": "Kết nối lịch của bạn",
"connect_your_video_app": "Kết nối các ứng dụng video của bạn",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "Những liên kết đặt chỗ nhóm vốn có thể được tạo linh động bằng cách thêm nhiều tên người dùng bằng một dấu '+'. Ví dụ như '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "Cho phép người tham gia đặt chỗ cho bạn thông qua chức năng đặt chỗ động cho nhóm",
"dynamic_booking": "Liên kết động cho nhóm",
"allow_seo_indexing": "Cho phép các công cụ tìm kiếm truy cập nội dung công cộng của bạn",
"seo_indexing": "Cho phép lập chỉ mục SEO",
"email": "Email",
"email_placeholder": "nvana@vidu.com",
"full_name": "Họ và tên",
@@ -406,6 +424,7 @@
"booking_requested": "Lịch hẹn đã được yêu cầu",
"meeting_ended": "Cuộc họp đã kết thúc",
"form_submitted": "Biểu mẫu đã được gửi",
"booking_paid": "Lịch hẹn đã thanh toán",
"event_triggers": "Sự kiện kích hoạt",
"subscriber_url": "URL người đăng ký",
"create_new_webhook": "Tạo một webhook mới",
@@ -506,6 +525,7 @@
"your_name": "Tên của bạn",
"your_full_name": "Tên đầy đủ của bạn",
"no_name": "Không tên",
"enter_number_between_range": "Vui lòng nhập một số từ 1 đến {{maxOccurences}}",
"email_address": "Địa chỉ email",
"enter_valid_email": "Vui lòng điền vào email hợp lệ",
"location": "Vị trí",
@@ -543,6 +563,7 @@
"leave": "Rời bỏ",
"profile": "Hồ sơ",
"my_team_url": "URL nhóm của tôi",
"my_teams": "Nhóm của tôi",
"team_name": "Tên nhóm",
"your_team_name": "Tên nhóm của bạn",
"team_updated_successfully": "Đã cập nhật nhóm thành công",
@@ -570,6 +591,8 @@
"invite_new_member": "Mời một thành viên mới",
"invite_new_member_description": "Lưu ý: Việc này sẽ <1>mất phí bổ sung chỗ ngồi (15$/tháng)</1> cho gói đăng ký của bạn.",
"invite_new_team_member": "Mời ai đó vào nhóm của bạn.",
"upload_csv_file": "Tải lên một file .csv",
"invite_via_email": "Mời qua email",
"change_member_role": "Thay đổi vai trò thành viên trong nhóm",
"disable_cal_branding": "Tắt thương hiệu {{appName}}",
"disable_cal_branding_description": "Ẩn tất cả thương hiệu {{appName}} khỏi các trang công khai của bạn.",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "Người dùng cần chấp nhận lời mời để xem lịch khả dụng",
"set_as_away": "Đặt trạng thái đi vắng",
"set_as_free": "Tắt trạng thái đi vắng",
"toggle_away_error": "Lỗi khi cập nhật trạng thái đi vắng",
"user_away": "Người dùng này hiện đang đi vắng.",
"user_away_description": "Người mà bạn đang cố gắng đặt lịch hẹn đã đặt trạng thái đi vắng, và do đó không chấp nhận các lịch hẹn mới.",
"meet_people_with_the_same_tokens": "Gặp gỡ những người có cùng mã token",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "Để thay đổi email, mật khẩu, bật xác thực hai yếu tố và những thứ khác, vui lòng truy cập cài đặt tài khoản {{provider}} của bạn.",
"signin_with_google": "Đăng nhập bằng Google",
"signin_with_saml": "Đăng nhập bằng SAML",
"signin_with_saml_oidc": "Đăng nhập bằng SAML/OIDC",
"you_will_need_to_generate": "Bạn sẽ cần tạo mã access token từ công cụ lập lịch cũ của mình.",
"import": "Nhập",
"import_from": "Nhập từ",
@@ -950,6 +975,8 @@
"offer_seats_description": "Cung cấp ghế để đặt lịch. Việc này sẽ tự động vô hiệu hoá đặt lịch của khách & đặt lịch tham gia.",
"seats_available_one": "Số ghế trống",
"seats_available_other": "Số ghế trống",
"seats_nearly_full": "Gần hết chỗ ngồi",
"seats_half_full": "Chỗ ngồi sắp hết",
"number_of_seats": "Số ghế cho mỗi lần đặt",
"enter_number_of_seats": "Điền vào số lượng ghế",
"you_can_manage_your_schedules": "Bạn có thể quản lý lịch biểu của mình trên trang \bLịch khả dụng.",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "Bạn muốn thêm {{appName}} vào website của mình bằng cách nào?",
"choose_ways_put_cal_site": "Chọn một trong những cách sau để đặt {{appName}} trên website.",
"setting_up_zapier": "Thiết lập tích hợp Zapier của bạn",
"setting_up_make": "Thiết lập tích hợp Make của bạn",
"generate_api_key": "Tạo khoá API",
"generate_api_key_description": "Tạo một khoá API để sử dụng với {{appName}} tại",
"your_unique_api_key": "Khoá API đặc trưng của bạn",
"copy_safe_api_key": "Sao chép khoá API này và lưu nó ở nơi an toàn. Nếu bạn làm mất khoá này, bạn phải tạo khoá mới.",
"zapier_setup_instructions": "<0>Đăng nhập vào tài khoản Zapier của bạn và tạo một Zap mới.</0><1>Chọn {{appName}} làm ứng dụng Trigger của bạn. Đồng thời chọn một sự kiện Trigger.</1><2>Chọn tài khoản của bạn và sau đó điền vào Khoá API đặc trưng.</2><3>Thử nghiệm Trigger của bạn.</3><4>Bạn đã xong!</4>",
"make_setup_instructions": "<0>Đến <1><0>Liên kết mời Make</0></1> và cài đặt ứng dụng Cal.com.</0><1>Đăng nhập vào tài khoản Make của bạn và tạo một Scenario mới.</1><2>Chọn Cal.com làm ứng dụng Trigger của bạn. Đồng thời chọn một sự kiện Trigger.</2><3>Chọn tài khoản của bạn và sau đó điền vào Khoá API đặc trưng.</3><4>Thử nghiệm Trigger của bạn.</4><5>Bạn đã xong!</5>",
"install_zapier_app": "Trước tiên hãy cài đặt ứng dụng Zapier trong App Store.",
"install_make_app": "Trước tiên hãy cài đặt ứng dụng Make trong App Store.",
"connect_apple_server": "Kết nối với Máy chủ Apple",
"calendar_url": "URL lịch",
"apple_server_generate_password": "Tạo một mật khẩu chuyên dùng cho ứng dụng để sử dụng với {{appName}} tại",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "gửi email đến người tham gia",
"sms_attendee_action": "Gửi SMS đến người tham gia",
"sms_number_action": "gửi SMS đến một số cụ thể",
"send_reminder_sms": "Dễ dàng gửi lời nhắc họp qua SMS đến người tham dự",
"whatsapp_number_action": "gửi WhatsApp đến một số cụ thể",
"whatsapp_attendee_action": "gửi WhatsApp đến người tham gia",
"workflows": "Tiến độ công việc",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "Lỗi khi cập nhật cài đặt",
"personal_cal_url": "URL {{appName}} cá nhân của tôi",
"bio_hint": "Nói mấy lời về bản thân. Thông tin này sẽ xuất hiện trên trang url cá nhân của bạn.",
"user_has_no_bio": "Người dùng này chưa thêm vào tiểu sử.",
"delete_account_modal_title": "Xoá tài khoản",
"confirm_delete_account_modal": "Bạn có chắc chắn muốn xoá tài khoản {{appName}}?",
"delete_my_account": "Xoá tài khoản của tôi",
@@ -1426,6 +1458,7 @@
"add_limit": "Thêm giới hạn",
"team_name_required": "Cần có tên nhóm",
"show_attendees": "Chia sẻ thông tin người tham gia cho khách",
"show_available_seats_count": "Hiện số ghế ngồi còn trống",
"how_booking_questions_as_variables": "Làm thế nào để dùng những câu hỏi lịch hẹn ở dạng tham số?",
"format": "Định dạng",
"uppercase_for_letters": "In hoa hết tất cả các chữ cái",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "Bạn có chắc chắn muốn xóa cấu hình {{connectionType}} không? Các thành viên trong nhóm của bạn sử dụng thông tin đăng nhập {{connectionType}} sẽ không thể truy cập vào Cal.com được nữa.",
"organizer_timezone": "Múi giờ của người tổ chức",
"email_user_cta": "Xem lời mời",
"email_no_user_invite_heading_team": "Bạn đã được mời gia nhập nhóm {{appName}}",
"email_no_user_invite_heading_org": "Bạn đã được mời gia nhập tổ chức {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} đã mời bạn gia nhập nhóm của họ trên {{appName}}. {{appName}} là công cụ lên lịch sắp xếp sự kiện cho phép bạn và nhóm bạn lên lịch các cuộc gặp mà không cần trao đổi email nhiều.",
"email_user_invite_subheading_team": "{{invitedBy}} đã mời bạn gia nhập nhóm '{{teamName}}' của họ trên {{appName}}. {{appName}} là công cụ lên lịch sắp xếp sự kiện cho phép bạn và nhóm bạn lên lịch các cuộc gặp mà không cần trao đổi email nhiều.",
"email_user_invite_subheading_org": "{{invitedBy}} đã mời bạn gia nhập tổ chức '{{teamName}}' của họ trên {{appName}}. {{appName}} là công cụ lên lịch sắp xếp sự kiện cho phép bạn và tổ chức của bạn lên lịch các cuộc gặp mà không cần trao đổi email nhiều.",
"email_no_user_invite_steps_intro": "Chúng tôi sẽ hướng dẫn cho bạn qua vài bước nhỏ và bạn sẽ tận hưởng được ngay cảm giác thoải mái không căng thẳng trong việc lên lịch cùng {{entity}} của mình.",
"email_no_user_step_one": "Chọn tên người dùng của bạn",
"email_no_user_step_two": "Kết nối tài khoản lịch của bạn",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "Không tìm thấy dữ liệu cho bộ lọc hay ngày đã chọn.",
"acknowledge_booking_no_show_fee": "Tôi công nhận là nếu tôi không tham dự sự kiện này thì một khoản phí vắng mặt là {{amount, currency}} sẽ được áp dụng cho thẻ của tôi.",
"card_details": "Chi tiết thẻ",
"something_went_wrong_on_our_end": "Bên chúng tôi có sự cố. Hãy liên lạc với nhóm hỗ trợ của chúng tôi, và chúng tôi sẽ cho khắc phục ngay cho bạn.",
"please_provide_following_text_to_suppport": "Vui lòng cung cấp tin nhắn sau khi liên lạc bộ phận hỗ trợ để được trợ giúp tốt hơn",
"seats_and_no_show_fee_error": "Hiện không thể kích hoạt chỗ ngồi và tính khoản phí vắng mặt",
"complete_your_booking": "Hoàn thành lịch hẹn của bạn",
"complete_your_booking_subject": "Hoàn thành lịch hẹn của bạn: {{title}} vào {{date}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "Mở hộp thoại Cal khi ai đó nhấp vào một phần tử.",
"need_help_embedding": "Cần trợ giúp? Xem hướng dẫn của chúng tôi dành cho việc nhúng Cal trên Wix, Squarespace hoặc WordPress, xem qua những câu hỏi thường gặp của chúng tôi, hoặc khám phá thêm các tuỳ chọn nhúng nâng cao.",
"book_my_cal": "Đặt lịch Cal của tôi",
"first_name": "Tên",
"last_name": "Họ",
"first_last_name": "Tên, Họ",
"invite_as": "Mời ở vai trò",
"form_updated_successfully": "Đã cập nhật biểu mẫu thành công.",
"disable_attendees_confirmation_emails": "Vô hiệu hoá những email xác nhận mặc định dành cho người tham dự",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "Tạo webhook đầu tiên của bạn cho loại sự kiện này",
"install_app_on": "Cài đặt ứng dụng cho",
"create_for": "Tạo cho",
"currency": "Tiền tệ",
"organization_banner_description": "Tạo môi trường tại đó các nhóm của bạn có thể tạo những ứng dụng, tiến độ công việc và loại sự kiện mà có thể chia sẻ được, với chức năng đặt lịch dạng round-robin và tập thể.",
"organization_banner_title": "Quản lý các tổ chức có nhiều nhóm",
"set_up_your_organization": "Thiết lập tổ chức của bạn",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "Nhóm: {{teamName}}",
"insights_user_filter": "Người dùng: {{userName}}",
"insights_subtitle": "Xem insights của đặt lịch ở mọi sự kiện của bạn",
"location_options": "{{locationCount}} lựa chọn vị trí",
"custom_plan": "Gói Tuỳ chỉnh",
"email_embed": "Email đã nhúng",
"add_times_to_your_email": "Chọn một số thời gian trống và nhúng chúng vào trong Email của bạn",
"select_time": "Chọn thời gian",
"select_date": "Chọn ngày",
"see_all_available_times": "Xem tất cả những thời gian trống",
"org_team_names_example": "ví dụ Nhóm Tiếp thị",
"org_team_names_example_1": "ví dụ Nhóm Tiếp thị",
"org_team_names_example_2": "ví dụ Nhóm Kinh doanh",
"org_team_names_example_3": "ví dụ Nhóm Thiết kế",
"org_team_names_example_4": "ví dụ Nhóm Kỹ thuật",
"org_team_names_example_5": "ví dụ Nhóm Phân tích dữ liệu",
"org_max_team_warnings": "Bạn sẽ có thể thêm vào nhiều nhóm nữa sau này.",
"what_is_this_meeting_about": "Cuộc họp này về điều gì?",
"add_to_team": "Thêm vào nhóm",
"remove_users_from_org": "Xoá bỏ người dùng khỏi tổ chức",
"remove_users_from_org_confirm": "Bạn có chắc chắn muốn xoá bỏ {{userCount}} người dùng khỏi tổ chức này?",
"user_has_no_schedules": "Người dùng này chưa thiết lập bất kỳ lịch nào",
"user_isnt_in_any_teams": "Người dùng này không nằm trong bất kì nhóm nào",
"requires_booker_email_verification": "Yêu cầu xác minh email của người đặt hẹn",
"description_requires_booker_email_verification": "Nhằm bảo đảm việc xác minh email của người đặt hẹn trước khi lên lịch sự kiện",
"requires_confirmation_mandatory": "Tin nhắn văn bản chỉ có thể được gửi đến người tham dự khi loại sự kiện cần thao tác xác nhận.",
"kyc_verification_information": "Nhằm bảo đảm về tính bảo mật, bạn phải xác minh {{teamOrAccount}} trước khi gửi tin nhắn văn bản đến người tham dự. Vui lòng liên lạc chúng tôi theo địa chỉ <a>{{supportEmail}}</a> và cung cấp thông tin sau:",
"kyc_verification_documents": "<ul><li>{{teamOrUser}} của bạn</li><li>Cho doanh nghiệp: Đính kèm giấy tờ xác minh doanh nghiệp</li><li>Cho cá nhân: Đính kèm thẻ căn cước do chính phủ cấp</li></ul>",
"verify_team_or_account": "Xác minh {{teamOrAccount}}",
"verify_account": "Xác minh tài khoản",
"kyc_verification": "Xác minh KYC",
"organizations": "Tổ chức",
"org_admin_other_teams": "Nhóm khác",
"org_admin_other_teams_description": "Tại đây bạn có thể thấy các nhóm trong tổ chức, những nhóm mà bạn không phải thành viên. Bạn có thể tự thêm mình vào những nhóm đó nếu cần.",
"no_other_teams_found": "Không tìm thấy những nhóm khác",
"no_other_teams_found_description": "Không có nhóm khác trong tổ chức này.",
"attendee_first_name_variable": "Tên người tham dự",
"attendee_last_name_variable": "Họ người tham dự",
"attendee_first_name_info": "Tên người tham gia lịch hẹn",
"attendee_last_name_info": "Họ người tham gia lịch hẹn",
"me": "Tôi",
"verify_team_tooltip": "Xác minh nhóm của bạn để kích hoạt chức năng gửi tin nhắn cho người tham dự",
"member_removed": "Thành xiên đã được xoá bỏ",
"my_availability": "Tình trạng trống lịch của tôi",
"team_availability": "Tình trạng trống lịch của nhóm",
"backup_code": "Mã sao lưu",
"backup_codes": "Mã sao lưu",
"backup_code_instructions": "Mỗi mã sao lưu có thể được dùng chính xác một lần để cấp quyền truy cập mà không cần bạn xác thực.",
"backup_codes_copied": "Đã sao chép mã sao lưu!",
"incorrect_backup_code": "Mã sao lưu không đúng.",
"lost_access": "Quyền truy cập bị mất",
"missing_backup_codes": "Không tìm thấy mã sao lưu. Vui lòng tạo mã này trong phần thiết lập.",
"admin_org_notification_email_subject": "Đã tạo tổ chức mới: hành động đang chờ xử lý",
"hi_admin": "Chào Quản trị viên",
"admin_org_notification_email_title": "Tổ chức cần phải thiết lập DNS",
"admin_org_notification_email_body_part1": "Một tổ chức kèm slug \"{{orgSlug}}\" đã được tạo.<br /><br />Hãy bảo đảm cấu hình registry DNS để cho tên miền phụ tương ứng với tổ chức mới được trỏ đến chỗ chạy ứng dụng chính. Không thì tổ chức sẽ không vận hành được.<br /><br />Đây chỉ là một số tuỳ chọn rất cơ bản để cấu hình tên miền phụ để trỏ đến ứng dụng của họ sao cho nó tải được trang hồ sơ của tổ chức.<br /><br />Bạn có thể làm việc này bằng A Record:",
"admin_org_notification_email_body_part2": "hoặc CNAME Record:",
"admin_org_notification_email_body_part3": "Sau khi bạn cấu hình tên miền phụ, vui lòng đánh dấu cấu hình DNS là xong trong phần Thiết lập quản trị tổ chức.",
"admin_org_notification_email_cta": "Đến phần Thiết lập quản trị tổ chức",
"org_has_been_processed": "Tổ chức đang được xử lý",
"org_error_processing": "Có lỗi khi xử lý tổ chức này",
"orgs_page_description": "Một danh sách chứa tất cả các tổ chức. Việc chấp thuận một tổ chức sẽ cho phép tất cả người dùng có tên miền email đó có thể đăng ký mà KHÔNG CẦN xác minh email.",
"unverified": "Chưa xác minh",
"dns_missing": "DNS bị thiếu",
"mark_dns_configured": "Đánh dấu khi DNS đã cấu hình",
"value": "Giá trị",
"your_organization_updated_sucessfully": "Tổ chức của bạn đã được cập nhật thành công",
"team_no_event_types": "Nhóm này không có loại sự kiện nào",
"seat_options_doesnt_multiple_durations": "Tuỳ chọn ghế ngồi không hỗ trợ nhiều khoảng thời gian",
"include_calendar_event": "Bao gồm sự kiện lịch",
"recently_added": "Đã thêm vào gần đây",
"no_members_found": "Không tìm thấy thành viên nào",
"event_setup_length_error": "Thiết lập sự kiện: Thời lượng phải ít nhất 1 phút.",
"availability_schedules": "Lịch trống",
"view_only_edit_availability_not_onboarded": "Người dùng chưa hoàn thành việc gia nhập. Bạn sẽ không thể đặt tình trạng lịch trống cho đến khi họ hoàn thành việc gia nhập.",
"view_only_edit_availability": "Bạn đang xem tình trạng trống lịch của người dùng này. Bạn chỉ có thể sửa tình trạng trống lịch của riêng bạn.",
"edit_users_availability": "Sửa tình trạng trống lịch của người dùng: {{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -19,8 +19,13 @@
"verify_email_email_button": "验证电子邮件",
"copy_somewhere_safe": "将此 API 密钥保存在安全的地方。您将无法再次查看它。",
"verify_email_email_body": "请点击下面的按钮来验证您的电子邮件地址。",
"verify_email_by_code_email_body": "请使用下面的代码验证您的电子邮件地址。",
"verify_email_email_link_text": "如果您不喜欢点击按钮,请点击以下链接:",
"email_verification_code": "输入验证码",
"email_verification_code_placeholder": "输入发送到您邮箱的验证码",
"incorrect_email_verification_code": "验证码不正确。",
"email_sent": "电子邮件已成功发送",
"email_not_sent": "发送电子邮件时出错",
"event_declined_subject": "拒绝:{{title}} 在 {{date}}",
"event_cancelled_subject": "已取消:{{date}} 的 {{title}}",
"event_request_declined": "您的活动预约请求已被拒绝",
@@ -79,6 +84,7 @@
"event_awaiting_approval_recurring": "有定期活动正在等待您的批准",
"someone_requested_an_event": "有人请求在您的日历上安排一个活动。",
"someone_requested_password_reset": "有人请求了更改密码链接。",
"password_reset_email_sent": "如果我们的系统中存在此邮箱,您应该会收到一封重置电子邮件。",
"password_reset_instructions": "如果您没有这样请求,您可以安全地忽略此邮件,您的密码将不会被更改。",
"event_awaiting_approval_subject": "等待批准:{{date}} 的 {{title}}",
"event_still_awaiting_approval": "有活动仍在等待您的批准",
@@ -218,6 +224,10 @@
"already_have_an_account": "已经有帐号?",
"create_account": "创建账户",
"confirm_password": "确认密码",
"confirm_auth_change": "这将更改您的登录方式",
"confirm_auth_email_change": "更改电子邮件地址将断开您当前登录 Cal.com 的身份验证方法。我们将要求您验证您的新电子邮件地址。接下来,在按照发送到您邮箱的说明设置密码后,您将被注销并使用新的电子邮件地址登录,而不是当前的身份验证方法。",
"reset_your_password": "按照发送到您的电子邮件地址的说明设置新密码。",
"email_change": "使用您的新电子邮件地址和密码重新登录。",
"create_your_account": "创建您的账户",
"sign_up": "注册",
"youve_been_logged_out": "您已登出",
@@ -246,6 +256,8 @@
"available_apps": "可用应用",
"available_apps_lower_case": "可用的应用",
"available_apps_desc": "您尚未安装任何应用。在我们的<1>应用商店</1>中查看热门应用,并探索更多内容。",
"fixed_host_helper": "添加任何需要参加活动的人。<1>了解更多</1>",
"round_robin_helper": "组中的人员轮流参加,只有一个人将出席活动。",
"check_email_reset_password": "请检查您的邮箱,我们向您发送了一个重置密码的链接。",
"finish": "完成",
"organization_general_description": "管理您的团队语言和时区的设置",
@@ -254,6 +266,7 @@
"nearly_there_instructions": "最后,您的个人简介和照片有助于您获得预约,并让人们了解他们的预约对象。",
"set_availability_instructions": "设置您通常可预约的时间范围。您可以稍后创建更多时间范围并将其分配到不同的日历。",
"set_availability": "设置您的可预约状态",
"availability_settings": "可预约时间设置",
"continue_without_calendar": "无日历继续",
"connect_your_calendar": "连接您的日历",
"connect_your_video_app": "连接您的视频应用",
@@ -395,6 +408,8 @@
"allow_dynamic_booking_tooltip": "可以动态创建组预约链接,方法为使用 '+' 来添加多个用户名。例如: '{{appName}}/bailey+peer'",
"allow_dynamic_booking": "允许参与者通过动态组预约来向您预约",
"dynamic_booking": "动态组链接",
"allow_seo_indexing": "允许搜索引擎访问您的公开内容",
"seo_indexing": "允许 SEO 索引",
"email": "邮箱地址",
"email_placeholder": "jdoe@example.com",
"full_name": "全名",
@@ -510,6 +525,7 @@
"your_name": "您的姓名",
"your_full_name": "您的全名",
"no_name": "无名称",
"enter_number_between_range": "请输入一个介于 1 和 {{maxOccurences}} 之间的数字",
"email_address": "邮箱地址",
"enter_valid_email": "请输入有效的电子邮件",
"location": "位置",
@@ -547,6 +563,7 @@
"leave": "退出",
"profile": "个人资料",
"my_team_url": "我的团队链接",
"my_teams": "我的团队",
"team_name": "团队名称",
"your_team_name": "您的团队名称",
"team_updated_successfully": "团队更新成功",
@@ -574,6 +591,8 @@
"invite_new_member": "邀请新的团队成员",
"invite_new_member_description": "注意:这将在您订阅的基础上<1>收取一个额外位置的费用(15 美元/月)</1>",
"invite_new_team_member": "邀请某人加入您的团队。",
"upload_csv_file": "上传 .csv 文件",
"invite_via_email": "通过电子邮件邀请",
"change_member_role": "更改团队成员角色",
"disable_cal_branding": "禁用 {{appName}} 品牌标志",
"disable_cal_branding_description": "隐藏您的公共页面中所有 {{appName}} 品牌标志。",
@@ -846,6 +865,7 @@
"team_view_user_availability_disabled": "用户需要接受邀请以查看可预约时间",
"set_as_away": "将自己设置为离开",
"set_as_free": "关闭离开状态",
"toggle_away_error": "更新离开状态时出错",
"user_away": "此用户目前处于离开状态。",
"user_away_description": "您试图预约的人已将自己置于离开状态,因此不接受新预约。",
"meet_people_with_the_same_tokens": "会见使用相同令牌的人",
@@ -855,6 +875,7 @@
"account_managed_by_identity_provider_description": "要更改您的电子邮件,密码,启用两步验证及更多功能,请访问您的 {{provider}} 账户设置。",
"signin_with_google": "使用Google登录",
"signin_with_saml": "使用 SAML 登录",
"signin_with_saml_oidc": "使用 SAML/OIDC 登录",
"you_will_need_to_generate": "您需要从从您的旧工具上生成访问令牌",
"import": "导入",
"import_from": "导入自",
@@ -954,6 +975,8 @@
"offer_seats_description": "提供位置以供预约 (这将自动禁止访客和选择加入预约)。",
"seats_available_one": "可用位置",
"seats_available_other": "可用位置",
"seats_nearly_full": "位置几乎已满",
"seats_half_full": "位置迅速填满",
"number_of_seats": "每个预约的位置数目",
"enter_number_of_seats": "输入位置数目",
"you_can_manage_your_schedules": "您可以在“可预约时间”页面管理您的时间表。",
@@ -1034,12 +1057,15 @@
"how_you_want_add_cal_site": "您希望如何将 {{appName}} 添加到您的网站?",
"choose_ways_put_cal_site": "选择下列方式之一将 {{appName}} 放到您的网站上。",
"setting_up_zapier": "设置您的 Zapier 集成",
"setting_up_make": "设置您的 Make 集成",
"generate_api_key": "生成 API 密钥",
"generate_api_key_description": "生成 API 密钥以将 {{appName}} 配合用于",
"your_unique_api_key": "您的唯一 API 密钥",
"copy_safe_api_key": "复制此 API 密钥并将其保存在安全的位置。如果丢失此密钥,则必须生成新的密钥。",
"zapier_setup_instructions": "<0>登录您的 Zapier 帐户并创建新的 Zap。</0><1>将 Cal.com 选择为 Trigger 应用。同时选择一个 Trigger 事件。</1><2>选择您的帐户,然后输入您的唯一 API 密钥。</2><3>测试您的 Trigger。</3><4>设置完毕!</4>",
"make_setup_instructions": "<0>转到 <1><0>Make 邀请链接</0></1>并安装 Cal.com 应用。</0><1>登录您的 Make 账户并创建一个新 Scenario。</1><2>选择 Cal.com 作为您的 Trigger 应用。同时选择一个 Trigger 事件。</2><3>选择您的账户,然后输入您的唯一 API 密钥。</3><4>测试您的 Trigger。</4><5>设置完毕!</5>",
"install_zapier_app": "请首先从 App Store 安装 Zapier 应用。",
"install_make_app": "请先在 App Store 安装 Make 应用。",
"connect_apple_server": "连接到 Apple 服务器",
"calendar_url": "日历链接",
"apple_server_generate_password": "生成应用特定的密码以将 {{appName}} 配合用于",
@@ -1089,6 +1115,7 @@
"email_attendee_action": "向参与者发送电子邮件",
"sms_attendee_action": "向参与者发送短信",
"sms_number_action": "向特定号码发送短信",
"send_reminder_sms": "通过短信轻松向参与者发送会议提醒",
"whatsapp_number_action": "向特定号码发送 Whatsapp",
"whatsapp_attendee_action": "向参与者发送 Whatsapp",
"workflows": "工作流程",
@@ -1248,6 +1275,7 @@
"error_updating_settings": "更新设置时出错",
"personal_cal_url": "我的个人 {{appName}} URL",
"bio_hint": "请写一段简单的自我介绍,该介绍将会展示在您的个人 url 页面上。",
"user_has_no_bio": "此用户尚未添加个人简历。",
"delete_account_modal_title": "删除账户",
"confirm_delete_account_modal": "您确定要删除您的 {{appName}} 账户吗?",
"delete_my_account": "删除我的账户",
@@ -1430,6 +1458,7 @@
"add_limit": "添加限制",
"team_name_required": "需要团队名称",
"show_attendees": "在访客之间共享参与者信息",
"show_available_seats_count": "显示可用位置数",
"how_booking_questions_as_variables": "如何将预约问题用作变量?",
"format": "格式",
"uppercase_for_letters": "所有字母均使用大写",
@@ -1663,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "确定要删除 {{connectionType}} 配置吗?使用 {{connectionType}} 登录的团队成员将无法再访问 Cal.com。",
"organizer_timezone": "组织者时区",
"email_user_cta": "查看邀请",
"email_no_user_invite_heading_team": "您已被邀请加入 {{appName}} 团队",
"email_no_user_invite_heading_org": "您已被邀请加入 {{appName}} 组织",
"email_no_user_invite_subheading": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的团队。{{appName}} 是一个活动安排调度程序,让您和您的团队无需通过电子邮件沟通即可安排会议。",
"email_user_invite_subheading_team": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的团队“{{teamName}}”。{{appName}} 是一个活动安排调度程序,让您和您的团队无需通过电子邮件沟通即可安排会议。",
"email_user_invite_subheading_org": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的组织“{{teamName}}”。{{appName}} 是一个活动日程安排程序,让您和您的组织无需通过电子邮件沟通即可安排会议。",
"email_no_user_invite_steps_intro": "我们将引导您完成几个简短步骤,您将立即与您的 {{entity}} 一起享受无压力的日程安排。",
"email_no_user_step_one": "选择您的用户名",
"email_no_user_step_two": "连接您的日历账户",
@@ -1835,6 +1867,8 @@
"insights_no_data_found_for_filter": "未找到所选筛选器或所选日期的数据。",
"acknowledge_booking_no_show_fee": "我同意,如果我不参加此活动,将从我的卡中收取 {{amount, currency}} 的失约费。",
"card_details": "卡详细信息",
"something_went_wrong_on_our_end": "我们这边出了点问题。请联系我们的支持团队,我们将立即为您解决。",
"please_provide_following_text_to_suppport": "联系支持时请提供以下文本,以便更好地帮助您",
"seats_and_no_show_fee_error": "当前无法启用位置和收取失约费",
"complete_your_booking": "完成您的预约",
"complete_your_booking_subject": "完成您的预约: {{date}} 的 {{title}}",
@@ -1868,6 +1902,9 @@
"open_dialog_with_element_click": "当有人点击某个元素时,打开您的 Cal 对话框。",
"need_help_embedding": "需要帮助?请参阅我们关于在 Wix、Squarespace 或 WordPress 上嵌入 Cal 的指南,请查看常见问题,或浏览高级嵌入选项。",
"book_my_cal": "预约我的 Cal",
"first_name": "名字",
"last_name": "姓氏",
"first_last_name": "名字,姓氏",
"invite_as": "邀请作为",
"form_updated_successfully": "成功更新表单。",
"disable_attendees_confirmation_emails": "禁用参与者的默认确认电子邮件",
@@ -1881,6 +1918,7 @@
"first_event_type_webhook_description": "为此活动类型创建第一个 Webhook",
"install_app_on": "安装应用的账户",
"create_for": "创建",
"currency": "货币",
"organization_banner_description": "创建环境,以便让您的团队可以在其中通过轮流和集体日程安排来创建共享的应用、工作流程和活动类型。",
"organization_banner_title": "管理具有多个团队的组织",
"set_up_your_organization": "设置您的组织",
@@ -1941,8 +1979,79 @@
"insights_team_filter": "团队:{{teamName}}",
"insights_user_filter": "用户:{{userName}}",
"insights_subtitle": "查看您活动的预约 insights",
"location_options": "{{locationCount}} 个位置选项",
"custom_plan": "自定义计划",
"email_embed": "电子邮件已嵌入",
"add_times_to_your_email": "选择几个可预约时间并将它们嵌入到您的电子邮件",
"select_time": "选择时间",
"select_date": "选择日期",
"see_all_available_times": "查看所有可预约时间",
"org_team_names_example": "例如,营销团队",
"org_team_names_example_1": "例如,营销团队",
"org_team_names_example_2": "例如,销售团队",
"org_team_names_example_3": "例如,设计团队",
"org_team_names_example_4": "例如,工程团队",
"org_team_names_example_5": "例如,数据分析团队",
"org_max_team_warnings": "您稍后将能够添加更多团队。",
"what_is_this_meeting_about": "此会议是关于什么的?",
"add_to_team": "添加到团队",
"remove_users_from_org": "从组织中移除用户",
"remove_users_from_org_confirm": "您确定要从该组织中移除 {{userCount}} 个用户吗?",
"user_has_no_schedules": "此用户尚未设置任何计划。",
"user_isnt_in_any_teams": "此用户不在任何团队中",
"requires_booker_email_verification": "需要预约者电子邮件验证",
"description_requires_booker_email_verification": "确保在安排活动前验证预约者的电子邮件",
"requires_confirmation_mandatory": "仅当活动类型需要确认时,才能向参与者发送短信。",
"kyc_verification_information": "为了确保安全,您在向参与者发送短信之前必须验证您的 {{teamOrAccount}}。请通过 <a>{{supportEmail}}</a> 联系我们并提供以下信息:",
"kyc_verification_documents": "<ul><li>您的 {{teamOrUser}}</li><li>对于企业:附上您的企业验证文件</li><li>对于个人:附上政府颁发的 ID</li></ul>",
"verify_team_or_account": "验证 {{teamOrAccount}}",
"verify_account": "验证账户",
"kyc_verification": "KYC 验证",
"organizations": "组织",
"org_admin_other_teams": "其他团队",
"org_admin_other_teams_description": "在此处可以看到您的组织内您不属于的团队。如果需要,您可以将自己添加到这些团队中。",
"no_other_teams_found": "未找到其他团队",
"no_other_teams_found_description": "该组织中没有其他团队。",
"attendee_first_name_variable": "参与者名字",
"attendee_last_name_variable": "参与者姓氏",
"attendee_first_name_info": "预约人的名字",
"attendee_last_name_info": "预约人的姓氏",
"me": "我",
"verify_team_tooltip": "验证您的团队以允许向参与者发送消息",
"member_removed": "成员已移除",
"my_availability": "我的可预约时间",
"team_availability": "团队可预约时间",
"backup_code": "备份代码",
"backup_codes": "备份代码",
"backup_code_instructions": "每个备份代码只能使用一次,用于在没有验证器的情况下授予访问权限。",
"backup_codes_copied": "备份代码已复制!",
"incorrect_backup_code": "备份代码不正确。",
"lost_access": "失去访问权限",
"missing_backup_codes": "未找到备份代码。请在您的设置中生成备份代码。",
"admin_org_notification_email_subject": "新组织已创建:待操作",
"hi_admin": "你好,管理员",
"admin_org_notification_email_title": "组织需要 DNS 设置",
"admin_org_notification_email_body_part1": "已创建一个具有“{{orgSlug}}”slug 的组织。<br /><br />请确保将 DNS 注册表配置为将与新组织对应的子域指向正在运行主应用的位置。否则组织将无法运作。<br /><br />以下是几个非常基本的选项,用于将一个子域配置为指向其应用,以便加载组织资料页面。<br /><br />您可以使用 A 记录执行此操作:",
"admin_org_notification_email_body_part2": "或者 CNAME 记录:",
"admin_org_notification_email_body_part3": "配置子域后,请在组织管理员设置中将 DNS 配置标记为已完成。",
"admin_org_notification_email_cta": "转到组织管理员设置",
"org_has_been_processed": "组织已处理",
"org_error_processing": "处理此组织时出错",
"orgs_page_description": "所有组织的列表。接受某个组织将允许拥有该电子邮件域的所有用户无需电子邮件验证即可注册。",
"unverified": "未验证",
"dns_missing": "DNS 缺失",
"mark_dns_configured": "标记为 DNS 已配置",
"value": "值",
"your_organization_updated_sucessfully": "您的组织已成功更新",
"team_no_event_types": "此团队没有任何活动类型",
"seat_options_doesnt_multiple_durations": "位置选项不支持多个持续时间",
"include_calendar_event": "包括日历活动",
"recently_added": "最近添加",
"no_members_found": "未找到成员",
"event_setup_length_error": "获得设置:持续时间必须至少为 1 分钟。",
"availability_schedules": "可预约时间表",
"view_only_edit_availability_not_onboarded": "此用户尚未完成入门流程。在他们完成入门流程之前,您将无法设置他们的可预约时间。",
"view_only_edit_availability": "您正在查看此用户的可预约时间。您只能编辑您自己的可预约时间。",
"edit_users_availability": "编辑用户的可预约时间:{{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 在此上方添加您的新字符串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,9 +17,15 @@
"verify_email_banner_body": "驗證您的電子郵件地址,以確保能準確收到遞送的電子郵件和行事曆",
"verify_email_email_header": "驗證您的電子郵件地址",
"verify_email_email_button": "驗證電子郵件",
"copy_somewhere_safe": "請將此 API 金鑰記在安全的地方。您之後將無法再次查看此金鑰。",
"verify_email_email_body": "請按一下下方的按鈕來驗證電子郵件地址。",
"verify_email_by_code_email_body": "請使用下方驗證碼來驗證電子郵件地址。",
"verify_email_email_link_text": "若您不喜歡點擊按鈕,也可以使用以下連結:",
"email_verification_code": "輸入驗證碼",
"email_verification_code_placeholder": "輸入傳送至您電子郵件地址的驗證碼",
"incorrect_email_verification_code": "驗證碼不正確。",
"email_sent": "電子郵件已成功傳送",
"email_not_sent": "傳送此電子郵件時發生錯誤",
"event_declined_subject": "已拒絕:{{date}} 與 {{title}}",
"event_cancelled_subject": "已取消:{{date}} 的 {{title}}",
"event_request_declined": "活動請求遭到拒絕",
@@ -78,6 +84,7 @@
"event_awaiting_approval_recurring": "定期活動正等待您的核准",
"someone_requested_an_event": "有人在行事曆上要求預定活動。",
"someone_requested_password_reset": "有人索取變更密碼的連結。",
"password_reset_email_sent": "若我們的系統也登錄了此電子郵件地址,您應該就會收到重設電子郵件。",
"password_reset_instructions": "如果沒有索取的話,忽略這封電子郵件是安全的,密碼也不會變更。",
"event_awaiting_approval_subject": "等待核准:{{date}} 與 {{title}}",
"event_still_awaiting_approval": "活動還在等待核准",
@@ -217,6 +224,10 @@
"already_have_an_account": "已經有帳號嗎?",
"create_account": "新增帳號",
"confirm_password": "確認密碼",
"confirm_auth_change": "這會變更您登入的方式",
"confirm_auth_email_change": "變更電子郵件地址會使您目前登入 Cal.com 的驗證方式斷線。我們會要求您驗證新的電子郵件地址。接下來系統會將重設密碼的指示傳送至您的電子郵件地址,按照相關指示操作後您就會登出並使用新的電子郵件地址登入,而不是目前的驗證方法。",
"reset_your_password": "按照傳送至您電子郵件地址的指示來重設密碼。",
"email_change": "使用您的新電子郵件地址和密碼重新登入。",
"create_your_account": "新增帳號",
"sign_up": "註冊",
"youve_been_logged_out": "已經登出",
@@ -243,6 +254,10 @@
"all": "所有應用程式",
"yours": "您的帳號",
"available_apps": "可用的應用程式",
"available_apps_lower_case": "可用的應用程式",
"available_apps_desc": "您尚未安裝任何應用程式。到我們的 <1>App Store</1> 查看以下的熱門應用程式,並探索更多內容",
"fixed_host_helper": "加入須參加此活動的所有人員。<1>深入瞭解</1>",
"round_robin_helper": "此群組成員將輪流出席,只有一人會出席此活動。",
"check_email_reset_password": "請檢查信箱。已經把重設密碼的連結寄出。",
"finish": "結束",
"organization_general_description": "管理團隊的語言和時區設定",
@@ -251,6 +266,7 @@
"nearly_there_instructions": "最後,簡單的個人簡介和照片能幫助您獲得預約,也能讓人們知道目前預約的對象是誰。",
"set_availability_instructions": "以定期的方式設定開放時間範圍。之後還可以繼續設定,並且歸類到各個行事曆。",
"set_availability": "設定開放時間",
"availability_settings": "可預約時間設定",
"continue_without_calendar": "在沒有行事曆的情況下繼續",
"connect_your_calendar": "連結行事曆",
"connect_your_video_app": "連接視訊應用程式",
@@ -392,6 +408,8 @@
"allow_dynamic_booking_tooltip": "使用 '+' 新增多個使用者名稱,以動態建立群組預約連結。例如:'{{appName}}/bailey+peer'",
"allow_dynamic_booking": "允許與會者透過動態群組向您預約",
"dynamic_booking": "動態群組連結",
"allow_seo_indexing": "允許搜尋引擎存取您的公開內容",
"seo_indexing": "允許 SEO 編纂索引",
"email": "電子郵件",
"email_placeholder": "jdoe@example.com",
"full_name": "完整姓名",
@@ -406,6 +424,7 @@
"booking_requested": "預約已提出",
"meeting_ended": "會議已結束",
"form_submitted": "表單已提交",
"booking_paid": "預約已付款",
"event_triggers": "事件發動條件",
"subscriber_url": "訂閱者網址",
"create_new_webhook": "建立新的 Webhook",
@@ -506,6 +525,7 @@
"your_name": "名字",
"your_full_name": "您的全名",
"no_name": "沒有名稱",
"enter_number_between_range": "請輸入介於 1 到 {{maxOccurences}} 的數字",
"email_address": "電子郵件位址",
"enter_valid_email": "請輸入有效的電子郵件",
"location": "地點",
@@ -543,6 +563,7 @@
"leave": "離開",
"profile": "個人資料",
"my_team_url": "團隊網址",
"my_teams": "我的團隊",
"team_name": "團隊名稱",
"your_team_name": "取團隊名稱",
"team_updated_successfully": "成功更新團隊",
@@ -570,6 +591,8 @@
"invite_new_member": "邀請新成員",
"invite_new_member_description": "注意:您的訂閱會因此<1>加收一個座位費 ($15 美元/月)</1>。",
"invite_new_team_member": "邀至團隊裡。",
"upload_csv_file": "上傳 .csv 檔案",
"invite_via_email": "透過電子郵件邀請",
"change_member_role": "改變團隊成員角色",
"disable_cal_branding": "關閉 {{appName}} 品牌識別",
"disable_cal_branding_description": "在公開頁面隱藏所有 {{appName}} 品牌識別。",
@@ -842,6 +865,7 @@
"team_view_user_availability_disabled": "使用者必須接受邀請,才可以查看開放的時間",
"set_as_away": "設定為離開狀態",
"set_as_free": "關閉離開狀態",
"toggle_away_error": "更新離開狀態時發生錯誤",
"user_away": "這位使用者目前是離開狀態。",
"user_away_description": "試圖預約的人已經設定為離開狀態,因此不接受新預約。",
"meet_people_with_the_same_tokens": "認識有相同 Token 的人",
@@ -851,6 +875,7 @@
"account_managed_by_identity_provider_description": "要更改電子郵件、密碼、兩階段認證⋯⋯等,請造訪 {{provider}} 的帳號設定。",
"signin_with_google": "透過 Google 登入",
"signin_with_saml": "透過 SAML 登入",
"signin_with_saml_oidc": "透過 SAML/OIDC 登入",
"you_will_need_to_generate": "得要從先前的預定工具產生連結 Token。",
"import": "輸入",
"import_from": "輸入自",
@@ -950,6 +975,8 @@
"offer_seats_description": "為預約提供座位 (這將停用賓客和選擇加入的預約)",
"seats_available_one": "可用座位",
"seats_available_other": "尚有座位",
"seats_nearly_full": "快額滿了",
"seats_half_full": "預約踴躍",
"number_of_seats": "每次預約的座位數",
"enter_number_of_seats": "輸入座位數",
"you_can_manage_your_schedules": "在開放時間頁面可以管理行程表。",
@@ -1030,12 +1057,15 @@
"how_you_want_add_cal_site": "您希望以何種方式將 {{appName}} 加入您的網站?",
"choose_ways_put_cal_site": "選擇下列其中一種方式將 {{appName}} 放到您的網站。",
"setting_up_zapier": "正在設定您的 Zapier 整合",
"setting_up_make": "正在設定您的 Make 整合",
"generate_api_key": "產生 API 金鑰",
"generate_api_key_description": "產生 API 金鑰以在下列位置使用 {{appName}}:",
"your_unique_api_key": "您的唯一 API 金鑰",
"copy_safe_api_key": "複製此 API 金鑰並存在安全的地方。如果您遺失此金鑰,就必須產生新的金鑰。",
"zapier_setup_instructions": "<0>登入您的 Zapier 帳號並建立新的 Zap。</0><1>選取 {{appName}} 作為您的 Trigger 應用程式,也請一併選擇 Trigger 事件。</1><2>選擇您的帳號,然後輸入您的唯一 API 金鑰。</2><3>測試您的 Trigger。</3><4>一切就大功告成了!</4>",
"make_setup_instructions": "<0>前往 <1><0>Make Invite Link</0></1>,然後安裝 Cal.com 應用程式。</0><1>登入您的 Make 帳號並建立新的 Scenario。</1><2>選取 Cal.com 作為您的 Trigger 應用程式,也請一併選擇 Trigger 事件。</2><3>選擇您的帳號,然後輸入您的唯一 API 金鑰。</3><4>測試您的 Trigger。</4><5>一切就大功告成了!</5>",
"install_zapier_app": "請先到 App Store 安裝 Zapier 應用程式。",
"install_make_app": "請先到 App Store 安裝 Make 應用程式。",
"connect_apple_server": "連結到 Apple 伺服器",
"calendar_url": "行事曆 URL",
"apple_server_generate_password": "請前往下列位置產生搭配 {{appName}} 使用的應用程式專用密碼",
@@ -1085,6 +1115,7 @@
"email_attendee_action": "傳送電子郵件給與會者",
"sms_attendee_action": "傳送簡訊給與會者",
"sms_number_action": "傳送簡訊至特定號碼",
"send_reminder_sms": "透過簡訊輕鬆傳送會議提醒給您的與會者",
"whatsapp_number_action": "傳送 Whatsapp 至特定號碼",
"whatsapp_attendee_action": "傳送 Whatsapp 給與會者",
"workflows": "工作流程",
@@ -1244,6 +1275,7 @@
"error_updating_settings": "更新設定時發生錯誤",
"personal_cal_url": "我的個人 {{appName}} 網址",
"bio_hint": "一些關於自己的句子,會顯示在個人網址頁面。",
"user_has_no_bio": "此使用者尚未新增個人資料。",
"delete_account_modal_title": "刪除帳號",
"confirm_delete_account_modal": "確定要刪除您的 {{appName}} 的帳號嗎?",
"delete_my_account": "刪除我的帳號",
@@ -1426,6 +1458,7 @@
"add_limit": "新增限制",
"team_name_required": "需提供團隊名稱",
"show_attendees": "和賓客分享與會者資訊",
"show_available_seats_count": "顯示可用座位的數量。",
"how_booking_questions_as_variables": "如何將預約問題當作變數?",
"format": "格式",
"uppercase_for_letters": "一律使用大寫字母",
@@ -1659,8 +1692,11 @@
"delete_sso_configuration_confirmation_description": "確定要刪除 {{connectionType}} 設定?使用 {{connectionType}} 登入的團隊成員將再也無法存取 Cal.com。",
"organizer_timezone": "主辦者時區",
"email_user_cta": "檢視邀請",
"email_no_user_invite_heading_team": "您已獲邀加入 {{appName}} 團隊",
"email_no_user_invite_heading_org": "您已獲邀加入 {{appName}} 組織",
"email_no_user_invite_subheading": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的團隊。{{appName}} 是活動多工排程工具,可讓您和您的團隊無須透過繁複的電子郵件往來就能輕鬆預定會議。",
"email_user_invite_subheading_team": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的「{{teamName}}」團隊。{{appName}} 為一款活動多功能排程工具,可讓您和團隊無須透過繁複的電子郵件往來,就能輕鬆預定會議。",
"email_user_invite_subheading_org": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的「{{teamName}}」團隊。{{appName}} 為一款活動多功能排程工具,可讓您和組織無須透過繁複的電子郵件往來,就能輕鬆預定會議。",
"email_no_user_invite_steps_intro": "我們會逐步引導您完成幾個簡短的步驟,然後您就能馬上與 {{entity}} 享受沒有壓力的排程預定功能。",
"email_no_user_step_one": "選擇使用者名稱",
"email_no_user_step_two": "連結行事曆帳號",
@@ -1831,6 +1867,8 @@
"insights_no_data_found_for_filter": "找不到所選篩選條件或日期的資料。",
"acknowledge_booking_no_show_fee": "我同意若我未出席此活動,將從我的卡片收取 {{amount, currency}} 的缺席費。",
"card_details": "卡片詳細資料",
"something_went_wrong_on_our_end": "我們的系統發生了一點問題。請與支援團隊聯絡,我們會盡快為您修復。",
"please_provide_following_text_to_suppport": "聯絡支援團隊時,請提供下列資訊,以便我們進一步協助您",
"seats_and_no_show_fee_error": "目前無法啟用座位並收取缺席費",
"complete_your_booking": "完成您的預約",
"complete_your_booking_subject": "完成您的預約:{{date}} 的 {{title}}",
@@ -1864,6 +1902,9 @@
"open_dialog_with_element_click": "有人按一下元素即開啟 Cal 對話方塊。",
"need_help_embedding": "需要協助嗎?歡迎查看我們的指南了解如何在 Wix、Squarespace 或 WordPress 上嵌入 Cal,也歡迎參閱我們的常見問題,或深入了解進階嵌入選項。",
"book_my_cal": "預約我的 Cal",
"first_name": "名字",
"last_name": "姓氏",
"first_last_name": "名字,姓氏",
"invite_as": "邀請為",
"form_updated_successfully": "表單更新成功。",
"disable_attendees_confirmation_emails": "為與會者停用預設確認電子郵件",
@@ -1877,6 +1918,7 @@
"first_event_type_webhook_description": "為此活動類型建立第一個 Webhook",
"install_app_on": "應用程式安裝帳號",
"create_for": "建立",
"currency": "貨幣",
"organization_banner_description": "建立環境,供團隊利用輪流制和全體預定功能建立共用的應用程式、工作流程和活動類型。",
"organization_banner_title": "管理有多個團隊的組織",
"set_up_your_organization": "設定組織",
@@ -1937,6 +1979,79 @@
"insights_team_filter": "團隊:{{teamName}}",
"insights_user_filter": "使用者:{{userName}}",
"insights_subtitle": "查看所有活動的預約 Insight",
"location_options": "{{locationCount}} 個地點選項",
"custom_plan": "自訂方案",
"email_embed": "嵌入的電子郵件",
"add_times_to_your_email": "選取幾個開放預約的時段,然後嵌入您的電子郵件",
"select_time": "選取時間",
"select_date": "選取日期",
"see_all_available_times": "查看所有可預約時段",
"org_team_names_example": "例如行銷團隊",
"org_team_names_example_1": "例如行銷團隊",
"org_team_names_example_2": "例如銷售團隊",
"org_team_names_example_3": "例如設計團隊",
"org_team_names_example_4": "例如工程團隊",
"org_team_names_example_5": "例如資料分析團隊",
"org_max_team_warnings": "您之後將可新增更多團隊。",
"what_is_this_meeting_about": "此會議的主題是什麼?",
"add_to_team": "新增至團隊",
"remove_users_from_org": "從組織中移除使用者",
"remove_users_from_org_confirm": "確定要從此組織移除 {{userCount}} 使用者嗎?",
"user_has_no_schedules": "此使用者尚未設定任何行程表。",
"user_isnt_in_any_teams": "此使用者未加入任何團隊",
"requires_booker_email_verification": "需要預約者電子郵件驗證",
"description_requires_booker_email_verification": "如要在預定活動之前先確保預約者的電子郵件驗證",
"requires_confirmation_mandatory": "簡訊只會在活動類型需要確認時傳送給與會者。",
"kyc_verification_information": "為確保安全,您必須先驗證您的 {{teamOrAccount}},再傳送簡訊給與會者。請透過 <a>{{supportEmail}}</a> 聯絡我們,並提供下列資訊:",
"kyc_verification_documents": "<ul><li>您的 {{teamOrUser}}</li><li>若是企業組織:請附上您的企業驗證文件</li><li>若是個人:請附上政府核發的身分證件</li></ul>",
"verify_team_or_account": "驗證 {{teamOrAccount}}",
"verify_account": "驗證帳號",
"kyc_verification": "KYC 驗證",
"organizations": "組織",
"org_admin_other_teams": "其他團隊",
"org_admin_other_teams_description": "您可查看貴組織內您未加入的團隊。您可視需要自行加入其中的團隊。",
"no_other_teams_found": "找不到其他團隊",
"no_other_teams_found_description": "此組織內沒有其他團隊。",
"attendee_first_name_variable": "與會者名字",
"attendee_last_name_variable": "與會者姓氏",
"attendee_first_name_info": "預約人名字",
"attendee_last_name_info": "預約人姓氏",
"me": "我",
"verify_team_tooltip": "驗證您的團隊,已啟用傳送訊息給與會者的訊息",
"member_removed": "成員已移除",
"my_availability": "我的可預約時間",
"team_availability": "團隊可預約時間",
"backup_code": "支援代碼",
"backup_codes": "支援代碼",
"backup_code_instructions": "每個支援代碼都只能用一次,以在未使用驗證者的情況下授予存取權。",
"backup_codes_copied": "已複製支援代碼!",
"incorrect_backup_code": "支援代碼不正確。",
"lost_access": "失去存取權",
"missing_backup_codes": "找不到支援代碼。請前往設定產生代碼。",
"admin_org_notification_email_subject": "已建立新的組織:待完成的動作",
"hi_admin": "管理員,您好",
"admin_org_notification_email_title": "組織需要設定 DNS",
"admin_org_notification_email_body_part1": "已建立 slug 為「{{orgSlug}}」的組織。<br /><br />請務必設定您的 DNS 登錄,以指向對應至主要應用程式運作位置的新組織子網域,否則組織將無法運作。<br /><br />以下是指向應用程式的子網域基本設定選項,如此一來系統才能載入組織設定檔案頁面。<br /><br />您可以也可以使用 A 記錄完成:",
"admin_org_notification_email_body_part2": "或 CNAME 記錄:",
"admin_org_notification_email_body_part3": "設定子網域後,請在組織管理設定中將 DNS 設定標記為已完成。",
"admin_org_notification_email_cta": "前往組織管理設定",
"org_has_been_processed": "已處理完成組織",
"org_error_processing": "處理此組織時發生錯誤",
"orgs_page_description": "所有組織的清單。接受組織可讓擁有該電子郵件網域的使用者無需電子郵件驗證就進行註冊。",
"unverified": "未經驗證",
"dns_missing": "DNS 遺失",
"mark_dns_configured": "標示為已設定 DNS",
"value": "價值",
"your_organization_updated_sucessfully": "您的組織成功更新",
"team_no_event_types": "此團隊沒有任何活動類型",
"seat_options_doesnt_multiple_durations": "座位選項不支援多個持續時間",
"include_calendar_event": "包含行事曆活動",
"recently_added": "最近新增",
"no_members_found": "找不到成員",
"event_setup_length_error": "活動設定:持續時間至少必須為 1 分鐘。",
"availability_schedules": "可預約時間行程表",
"view_only_edit_availability_not_onboarded": "此使用者尚未完成入門導覽。在對方完成入門導覽前,您將無法設定對方的可預約時間。",
"view_only_edit_availability": "您正在查看此使用者的可預約時間。您只能編輯自己的可預約時間。",
"edit_users_availability": "編輯使用者的可預約時間:{{username}}",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 請在此處新增您的字串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+4
View File
@@ -109,6 +109,10 @@
background: var(--cal-brand);
}
html {
scrollbar-gutter: stable;
}
body  {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
+17 -18
View File
@@ -11,18 +11,17 @@ it("correctly handles 1 day", async () => {
startTime: new Date(Date.UTC(1970, 1, 1, 9, 0, 0, 0)),
endTime: new Date(Date.UTC(1970, 1, 1, 17, 0, 0, 0)),
date: null,
scheduleId: 1
scheduleId: 1,
};
const result = availabilityAsString(availability, {
locale: 'en',
hour12: true
locale: "en",
hour12: true,
});
expect(replaceUnicodeSpace(result)).toBe("Mon, 9:00 AM - 5:00 PM");
});
it("correctly handles all days", async () => {
const availability = {
id: 1,
@@ -32,12 +31,12 @@ it("correctly handles all days", async () => {
startTime: new Date(Date.UTC(1970, 1, 1, 9, 0, 0, 0)),
endTime: new Date(Date.UTC(1970, 1, 1, 17, 0, 0, 0)),
date: null,
scheduleId: 1
scheduleId: 1,
};
const result = availabilityAsString(availability, {
locale: 'en',
hour12: true
locale: "en",
hour12: true,
});
expect(replaceUnicodeSpace(result)).toBe("Mon - Sun, 9:00 AM - 5:00 PM");
@@ -52,12 +51,12 @@ it("correctly handles staggered days", async () => {
startTime: new Date(Date.UTC(1970, 1, 1, 9, 0, 0, 0)),
endTime: new Date(Date.UTC(1970, 1, 1, 17, 0, 0, 0)),
date: null,
scheduleId: 1
scheduleId: 1,
};
const result = availabilityAsString(availability, {
locale: 'en',
hour12: true
locale: "en",
hour12: true,
});
expect(replaceUnicodeSpace(result)).toBe("Mon, Wed, Fri, Sun, 9:00 AM - 5:00 PM");
@@ -72,12 +71,12 @@ it("correctly produces days and times - 12 hours", async () => {
startTime: new Date(Date.UTC(1970, 1, 1, 9, 0, 0, 0)),
endTime: new Date(Date.UTC(1970, 1, 1, 17, 0, 0, 0)),
date: null,
scheduleId: 1
scheduleId: 1,
};
const result = availabilityAsString(availability, {
locale: 'en',
hour12: true
locale: "en",
hour12: true,
});
expect(replaceUnicodeSpace(result)).toBe("Mon - Wed, 9:00 AM - 5:00 PM");
@@ -92,12 +91,12 @@ it("correctly produces days and times - 24 hours", async () => {
startTime: new Date(Date.UTC(1970, 1, 1, 9, 0, 0, 0)),
endTime: new Date(Date.UTC(1970, 1, 1, 17, 0, 0, 0)),
date: null,
scheduleId: 1
scheduleId: 1,
};
const result = availabilityAsString(availability, {
locale: 'en',
hour12: false
locale: "en",
hour12: false,
});
expect(replaceUnicodeSpace(result)).toBe("Mon - Wed, 09:00 - 17:00");
@@ -107,5 +106,5 @@ it("correctly produces days and times - 24 hours", async () => {
// produces Unicode characters. Instead of using line for line code from the
// availability.ts file, opted for this instead.
const replaceUnicodeSpace = (string: string) => {
return string.replace(/\u202f/g, ' ');
}
return string.replace(/\u202f/g, " ");
};
+8 -1
View File
@@ -1,6 +1,7 @@
import { describe, expect, it } from "vitest";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
import { describe, expect, it } from "vitest";
import dayjs from "@calcom/dayjs";
import { validateIntervalLimitOrder } from "@calcom/lib";
import { checkBookingLimits, checkBookingLimit } from "@calcom/lib/server";
@@ -22,6 +23,7 @@ const MOCK_DATA: Mockdata = {
describe("Check Booking Limits Tests", () => {
it("Should return no errors", async () => {
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(0);
expect(
checkBookingLimits(MOCK_DATA.bookingLimits, MOCK_DATA.startDate, MOCK_DATA.id)
@@ -29,6 +31,7 @@ describe("Check Booking Limits Tests", () => {
});
it("Should throw an error", async () => {
// Mock there being two a day
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(2);
expect(
checkBookingLimits(MOCK_DATA.bookingLimits, MOCK_DATA.startDate, MOCK_DATA.id)
@@ -36,6 +39,7 @@ describe("Check Booking Limits Tests", () => {
});
it("Should pass with multiple booking limits", async () => {
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(0);
expect(
checkBookingLimits(
@@ -49,6 +53,7 @@ describe("Check Booking Limits Tests", () => {
).resolves.toBeTruthy();
});
it("Should pass with multiple booking limits with one undefined", async () => {
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(0);
expect(
checkBookingLimits(
@@ -62,6 +67,7 @@ describe("Check Booking Limits Tests", () => {
).resolves.toBeTruthy();
});
it("Should handle mutiple limits correctly", async () => {
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(1);
expect(
checkBookingLimit({
@@ -71,6 +77,7 @@ describe("Check Booking Limits Tests", () => {
eventId: MOCK_DATA.id,
})
).resolves.not.toThrow();
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.count.mockResolvedValue(3);
expect(
checkBookingLimit({
@@ -1,11 +1,11 @@
import { describe, expect, it } from "vitest";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
import { describe, expect, it } from "vitest";
import dayjs from "@calcom/dayjs";
import { validateIntervalLimitOrder } from "@calcom/lib";
import { checkDurationLimit, checkDurationLimits } from "@calcom/lib/server";
type MockData = {
id: number;
startDate: Date;
@@ -2,10 +2,9 @@ import { expect, it, beforeAll, vi } from "vitest";
import { getAggregateWorkingHours } from "@calcom/core/getAggregateWorkingHours";
beforeAll(() => {
vi.setSystemTime(new Date("2021-06-20T11:59:59Z"));
})
});
const HAWAII_AND_NEWYORK_TEAM = [
{
@@ -4,10 +4,9 @@ import { expect, it, beforeAll, vi } from "vitest";
import dayjs from "@calcom/dayjs";
import { getAvailabilityFromSchedule } from "@calcom/lib/availability";
beforeAll(() => {
vi.setSystemTime(new Date("2021-06-20T11:59:59Z"));
})
});
//parse "hh:mm-hh:mm" into <Availability> object
const parseWorkingHours = (workingHours: string) => {
+19 -19
View File
@@ -8,15 +8,17 @@ import prisma from "@calcom/prisma";
import type { BookingStatus } from "@calcom/prisma/enums";
import type { Slot } from "@calcom/trpc/server/routers/viewer/slots/types";
import { getAvailableSlots as getSchedule } from "@calcom/trpc/server/routers/viewer/slots/util";
import { getDate, getGoogleCalendarCredential, createBookingScenario} from "../utils/bookingScenario";
import { getDate, getGoogleCalendarCredential, createBookingScenario } from "../utils/bookingScenario";
// TODO: Mock properly
prismaMock.eventType.findUnique.mockResolvedValue(null);
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.user.findMany.mockResolvedValue([]);
vi.mock("@calcom/lib/constants", () => ({
IS_PRODUCTION: true,
WEBAPP_URL: "http://localhost:3000"
WEBAPP_URL: "http://localhost:3000",
}));
declare global {
@@ -143,7 +145,6 @@ const TestData = {
},
};
const cleanup = async () => {
await prisma.eventType.deleteMany();
await prisma.user.deleteMany();
@@ -296,7 +297,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
// getSchedule returns timeslots in GMT
@@ -328,7 +329,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForDayWithOneBooking).toHaveTimeSlots(
@@ -393,7 +394,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventWith30Length).toHaveTimeSlots(
@@ -429,7 +430,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
// `slotInterval` takes precedence over `length`
// 4:30 is utc so it is 10:00 in IST
@@ -493,7 +494,7 @@ describe("getSchedule", () => {
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventWithBookingNotice13Hrs).toHaveTimeSlots(
[
@@ -514,7 +515,7 @@ describe("getSchedule", () => {
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventWithBookingNotice10Hrs).toHaveTimeSlots(
[
@@ -578,7 +579,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventOnADayWithNonCalBooking).toHaveTimeSlots(
@@ -652,7 +653,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventOnADayWithCalBooking).toHaveTimeSlots(
@@ -710,7 +711,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(schedule).toHaveTimeSlots(
@@ -774,7 +775,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(scheduleForEventOnADayWithDateOverride).toHaveTimeSlots(
@@ -852,7 +853,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
},
});
expect(thisUserAvailability).toHaveTimeSlots(
@@ -950,7 +951,7 @@ describe("getSchedule", () => {
endTime: `${plus1DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
}
},
});
expect(scheduleForTeamEventOnADayWithNoBooking).toHaveTimeSlots(
@@ -980,7 +981,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
}
},
});
// A user with blocked time in another event, still affects Team Event availability
@@ -1088,7 +1089,7 @@ describe("getSchedule", () => {
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
}
},
});
// A user with blocked time in another event, still affects Team Event availability
expect(scheduleForTeamEventOnADayWithOneBookingForEachUserButOnDifferentTimeslots).toHaveTimeSlots(
@@ -1116,7 +1117,7 @@ describe("getSchedule", () => {
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
}
},
});
// A user with blocked time in another event, still affects Team Event availability
expect(scheduleForTeamEventOnADayWithOneBookingForEachUserOnSameTimeSlot).toHaveTimeSlots(
@@ -1139,4 +1140,3 @@ describe("getSchedule", () => {
});
});
});
+1 -1
View File
@@ -5,7 +5,7 @@ import { getWorkingHours } from "@calcom/lib/availability";
beforeAll(() => {
vi.setSystemTime(new Date("2021-06-20T11:59:59Z"));
})
});
it("correctly translates Availability (UTC+0) to UTC workingHours", async () => {
expect(
@@ -1,3 +1,5 @@
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
import type { EventType } from "@prisma/client";
import { describe, expect, it, vi } from "vitest";
@@ -6,10 +8,9 @@ import { buildEventType } from "@calcom/lib/test/builder";
import type { Prisma } from "@calcom/prisma/client";
import type { CompleteEventType, CompleteWorkflowsOnEventTypes } from "@calcom/prisma/zod";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
const mockFindFirstEventType = (data?: Partial<CompleteEventType>) => {
const eventType = buildEventType(data as Partial<EventType>);
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.eventType.findFirst.mockResolvedValue(eventType as EventType);
return eventType;
};
@@ -30,6 +31,7 @@ describe("handleChildrenEventTypes", () => {
describe("Shortcircuits", () => {
it("Returns message 'No managed event type'", async () => {
mockFindFirstEventType();
// @ts-expect-error Prisma v5 typings are not yet available
const result = await updateChildrenEventTypes({
eventTypeId: 1,
oldEventType: { children: [], team: { name: "" } },
@@ -38,6 +40,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(result.newUserIds).toEqual(undefined);
@@ -57,6 +60,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(result.newUserIds).toEqual(undefined);
@@ -82,6 +86,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(result.newUserIds).toEqual(undefined);
@@ -97,11 +102,12 @@ describe("handleChildrenEventTypes", () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// eslint-disable-next-line
const { schedulingType, id, teamId, timeZone, users,requiresBookerEmailVerification, ...evType } = mockFindFirstEventType({
id: 123,
metadata: { managedEventConfig: {} },
locations: [],
});
const { schedulingType, id, teamId, timeZone, users, requiresBookerEmailVerification, ...evType } =
mockFindFirstEventType({
id: 123,
metadata: { managedEventConfig: {} },
locations: [],
});
const result = await updateChildrenEventTypes({
eventTypeId: 1,
oldEventType: { children: [], team: { name: "" } },
@@ -110,6 +116,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(prismaMock.eventType.create).toHaveBeenCalledWith({
@@ -133,11 +140,21 @@ describe("handleChildrenEventTypes", () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// eslint-disable-next-line
const { schedulingType, id, teamId, timeZone, locations, parentId, userId, scheduleId,requiresBookerEmailVerification, ...evType } =
mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
});
const {
schedulingType,
id,
teamId,
timeZone,
locations,
parentId,
userId,
scheduleId,
requiresBookerEmailVerification,
...evType
} = mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
});
const result = await updateChildrenEventTypes({
eventTypeId: 1,
oldEventType: { children: [{ userId: 4 }], team: { name: "" } },
@@ -146,6 +163,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: "somestring",
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(prismaMock.eventType.update).toHaveBeenCalledWith({
@@ -179,6 +197,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(result.newUserIds).toEqual([]);
@@ -203,6 +222,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
// Have been called
@@ -218,11 +238,12 @@ describe("handleChildrenEventTypes", () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// eslint-disable-next-line
const { schedulingType, id, teamId, timeZone, users,requiresBookerEmailVerification, ...evType } = mockFindFirstEventType({
id: 123,
metadata: { managedEventConfig: {} },
locations: [],
});
const { schedulingType, id, teamId, timeZone, users, requiresBookerEmailVerification, ...evType } =
mockFindFirstEventType({
id: 123,
metadata: { managedEventConfig: {} },
locations: [],
});
prismaMock.eventType.deleteMany.mockResolvedValue([123] as unknown as Prisma.BatchPayload);
const result = await updateChildrenEventTypes({
eventTypeId: 1,
@@ -232,6 +253,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(prismaMock.eventType.create).toHaveBeenCalledWith({
@@ -255,11 +277,20 @@ describe("handleChildrenEventTypes", () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
// eslint-disable-next-line
const { schedulingType, id, teamId, timeZone, users, locations, parentId, userId,requiresBookerEmailVerification, ...evType } =
mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
});
const {
schedulingType,
id,
teamId,
timeZone,
locations,
parentId,
userId,
requiresBookerEmailVerification,
...evType
} = mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
});
prismaMock.eventType.deleteMany.mockResolvedValue([123] as unknown as Prisma.BatchPayload);
const result = await updateChildrenEventTypes({
eventTypeId: 1,
@@ -269,6 +300,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(prismaMock.eventType.update).toHaveBeenCalledWith({
@@ -327,6 +359,7 @@ describe("handleChildrenEventTypes", () => {
currentUserId: 1,
hashedLink: undefined,
connectedLink: null,
// @ts-expect-error Prisma v5 typings are not yet available
prisma: prismaMock,
});
expect(prismaMock.eventType.create).toHaveBeenCalledWith({
+21 -37
View File
@@ -1,4 +1,5 @@
import { it, expect, describe, beforeAll } from "vitest";
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { getSubdomainRegExp } = require("../../getSubdomainRegExp");
// eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -30,67 +31,50 @@ beforeAll(async () => {
describe("next.config.js - Org Rewrite", () => {
const orgHostRegExp = (subdomainRegExp: string) =>
// RegExp copied from pagesAndRewritePaths.js orgHostPath. Do make the change there as well.
// RegExp copied from pagesAndRewritePaths.js orgHostPath. Do make the change there as well.
new RegExp(`^(?<orgSlug>${subdomainRegExp})\\.(?!vercel\.app).*`);
describe("Host matching based on NEXT_PUBLIC_WEBAPP_URL", () => {
it("https://app.cal.com", () => {
const subdomainRegExp = getSubdomainRegExp("https://app.cal.com");
expect(orgHostRegExp(subdomainRegExp).exec("app.cal.com")).toEqual(null);
expect(
orgHostRegExp(subdomainRegExp).exec("company.app.cal.com")?.groups
?.orgSlug
).toEqual("company");
expect(
orgHostRegExp(subdomainRegExp).exec("org.cal.com")?.groups?.orgSlug
).toEqual("org");
expect(orgHostRegExp(subdomainRegExp).exec("company.app.cal.com")?.groups?.orgSlug).toEqual("company");
expect(orgHostRegExp(subdomainRegExp).exec("org.cal.com")?.groups?.orgSlug).toEqual("org");
expect(
orgHostRegExp(subdomainRegExp).exec("localhost:3000")
).toEqual(null);
expect(orgHostRegExp(subdomainRegExp).exec("localhost:3000")).toEqual(null);
});
it("app.cal.com", () => {
const subdomainRegExp = getSubdomainRegExp("app.cal.com");
expect(orgHostRegExp(subdomainRegExp).exec("app.cal.com")).toEqual(null);
expect(
orgHostRegExp(subdomainRegExp).exec("company.app.cal.com")?.groups
?.orgSlug
).toEqual("company");
expect(orgHostRegExp(subdomainRegExp).exec("company.app.cal.com")?.groups?.orgSlug).toEqual("company");
});
it("https://calcom.app.company.com", () => {
const subdomainRegExp = getSubdomainRegExp(
"https://calcom.app.company.com"
const subdomainRegExp = getSubdomainRegExp("https://calcom.app.company.com");
expect(orgHostRegExp(subdomainRegExp).exec("calcom.app.company.com")).toEqual(null);
expect(orgHostRegExp(subdomainRegExp).exec("acme.calcom.app.company.com")?.groups?.orgSlug).toEqual(
"acme"
);
expect(
orgHostRegExp(subdomainRegExp).exec("calcom.app.company.com")
).toEqual(null);
expect(
orgHostRegExp(subdomainRegExp).exec("acme.calcom.app.company.com")
?.groups?.orgSlug
).toEqual("acme");
});
it("https://calcom.example.com", () => {
const subdomainRegExp = getSubdomainRegExp("https://calcom.example.com");
expect(orgHostRegExp(subdomainRegExp).exec("calcom.example.com")).toEqual(
null
);
expect(
orgHostRegExp(subdomainRegExp).exec("acme.calcom.example.com")?.groups
?.orgSlug
).toEqual("acme");
expect(orgHostRegExp(subdomainRegExp).exec("calcom.example.com")).toEqual(null);
expect(orgHostRegExp(subdomainRegExp).exec("acme.calcom.example.com")?.groups?.orgSlug).toEqual("acme");
// The following also matches which causes anything other than the domain in NEXT_PUBLIC_WEBAPP_URL to give 404
expect(
orgHostRegExp(subdomainRegExp).exec("some-other.company.com")?.groups
?.orgSlug
).toEqual("some-other");
expect(orgHostRegExp(subdomainRegExp).exec("some-other.company.com")?.groups?.orgSlug).toEqual(
"some-other"
);
});
it("Should ignore Vercel preview URLs", () => {
const subdomainRegExp = getSubdomainRegExp("https://cal-xxxxxxxx-cal.vercel.app");
expect(orgHostRegExp(subdomainRegExp).exec("https://cal-xxxxxxxx-cal.vercel.app")).toMatchInlineSnapshot('null')
expect(orgHostRegExp(subdomainRegExp).exec("cal-xxxxxxxx-cal.vercel.app")).toMatchInlineSnapshot('null')
expect(
orgHostRegExp(subdomainRegExp).exec("https://cal-xxxxxxxx-cal.vercel.app")
).toMatchInlineSnapshot("null");
expect(orgHostRegExp(subdomainRegExp).exec("cal-xxxxxxxx-cal.vercel.app")).toMatchInlineSnapshot(
"null"
);
});
});
+3 -2
View File
@@ -1,7 +1,7 @@
import { expect, it } from "vitest";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
import { expect, it } from "vitest";
import { getLuckyUser } from "@calcom/lib/server";
import { buildUser } from "@calcom/lib/test/builder";
@@ -36,6 +36,7 @@ it("can find lucky user with maximize availability", async () => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
prismaMock.user.findMany.mockResolvedValue(users);
// @ts-expect-error Prisma v5 typings are not yet available
prismaMock.booking.findMany.mockResolvedValue([]);
await expect(
+21 -9
View File
@@ -1,3 +1,7 @@
import appStoreMock from "../../../../tests/libs/__mocks__/app-store";
import i18nMock from "../../../../tests/libs/__mocks__/libServerI18n";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
import type {
EventType as PrismaEventType,
User as PrismaUser,
@@ -17,10 +21,6 @@ import type { BookingStatus } from "@calcom/prisma/enums";
import type { EventBusyDate } from "@calcom/types/Calendar";
import type { Fixtures } from "@calcom/web/test/fixtures/fixtures";
import appStoreMock from "../../../../tests/libs/__mocks__/app-store";
import i18nMock from "../../../../tests/libs/__mocks__/libServerI18n";
import prismaMock from "../../../../tests/libs/__mocks__/prisma";
type App = {
slug: string;
dirName: string;
@@ -176,9 +176,11 @@ async function addBookings(bookings: InputBooking[], eventTypes: InputEventType[
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
prismaMock.booking.findMany.mockImplementation((findManyArg) => {
// @ts-expect-error Prisma v5 breaks this
const where = findManyArg?.where || {};
return new Promise((resolve) => {
resolve(
// @ts-expect-error Prisma v5 breaks this
bookings
// We can improve this filter to support the entire where clause but that isn't necessary yet. So, handle what we know we pass to `findMany` and is needed
.filter((booking) => {
@@ -194,10 +196,17 @@ async function addBookings(bookings: InputBooking[], eventTypes: InputEventType[
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const statusIn = where.OR[0].status?.in || [];
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const userIdIn = where.OR[0].userId?.in || [];
const firstConditionMatches =
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
statusIn.includes(booking.status) && booking.userId === where.OR[0].userId;
statusIn.includes(booking.status) &&
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
(booking.userId === where.OR[0].userId || userIdIn.includes(booking.userId));
// We return this booking if either condition is met
return firstConditionMatches;
@@ -215,6 +224,7 @@ async function addBookings(bookings: InputBooking[], eventTypes: InputEventType[
async function addWebhooks(webhooks: InputWebhook[]) {
prismaMock.webhook.findMany.mockResolvedValue(
// @ts-expect-error Prisma v5 breaks this
webhooks.map((webhook) => {
return {
...webhook,
@@ -235,13 +245,16 @@ function addUsers(users: InputUser[]) {
// @ts-ignore
prismaMock.user.findUniqueOrThrow.mockImplementation((findUniqueArgs) => {
return new Promise((resolve) => {
// @ts-expect-error Prisma v5 breaks this
resolve({
// @ts-expect-error Prisma v5 breaks this
email: `IntegrationTestUser${findUniqueArgs?.where.id}@example.com`,
} as unknown as PrismaUser);
});
});
prismaMock.user.findMany.mockResolvedValue(
// @ts-expect-error Prisma v5 breaks this
users.map((user) => {
return {
...user,
@@ -258,6 +271,7 @@ export async function createBookingScenario(data: ScenarioData) {
const eventType = addEventTypes(data.eventTypes, data.users);
if (data.apps) {
// @ts-expect-error Prisma v5 breaks this
prismaMock.app.findMany.mockResolvedValue(data.apps as PrismaApp[]);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
@@ -555,9 +569,8 @@ export function getScenarioData({
}
export function mockEnableEmailFeature() {
// @ts-expect-error Prisma v5 breaks this
prismaMock.feature.findMany.mockResolvedValue([
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
{
slug: "emails",
// It's a kill switch
@@ -567,8 +580,7 @@ export function mockEnableEmailFeature() {
}
export function mockNoTranslations() {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
// @ts-expect-error FIXME
i18nMock.getTranslation.mockImplementation(() => {
return new Promise((resolve) => {
const identityFn = (key: string) => key;
+8
View File
@@ -0,0 +1,8 @@
{
"crons": [
{
"path": "/api/cron/calendar-cache-cleanup",
"schedule": "0 5 * * *"
}
]
}
+1 -1
View File
@@ -8,4 +8,4 @@ Refer to https://developer.cal.com/guides/how-to-build-an-app
- An app created through CLI should be able to completely skip API validation for testing purposes. Credentials should be created with no API specified specific to the app. It would allow us to test any app end to end not worrying about the corresponding API endpoint.
- Someone can add wrong directory name(which doesn't satisfy slug requirements) manually. How to handle it.
- Allow editing and updating app from the cal app itself - including assets uploading when developing locally.
- Use AppDeclarativeHandler across all apps. Whatever isn't supported in it, support that.
- Follow the [App Contribution Guidelines](../app-store/CONTRIBUTING.md)
+22
View File
@@ -0,0 +1,22 @@
## App Contribution Guidelines
#### `DESCRIPTION.md`
1. images - include atleast 4 images (do we have a recommended size here?). Can show app in use and/or installation steps
2. add only file name for images, path not required. i.e. `1.jpeg`, not `/app-store/zohocalendar/1.jpeg`
3. description should include what the integration with Cal allows the user to do e.g. `Allows you to sync Cal bookings with your Zoho Calendar`
#### `README.md`
1. Include installation instructions and links to the app's website.
2. For url use `<baseUrl>/api/integrations`, rather than `<Cal.com>/api/integrations`
#### `config.json`
1. set `"logo": "icon.svg"` and save icon in `/static`. Don't use paths here.
2. description here should not exceed 10 words (this is arbitrary, but should not be long otherwise it's truncated in the app store)
#### Others
1. Add API documentation links in comments for files `api`, `lib` and `types`
2. Use [`AppDeclarativeHandler`](../types/AppHandler.d.ts) across all apps. Whatever isn't supported in it, support that.
3. README should be added in the respective app and can be linked in main README [like this](https://github.com/calcom/cal.com/pull/10429/files/155ac84537d12026f595551fe3542e810b029714#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R509)
4. Also, no env variables should be added by an app. They should be [added in `zod.ts`](https://github.com/calcom/cal.com/blob/main/packages/app-store/jitsivideo/zod.ts) and then they would be automatically available to be modified by the cal.com app admin.
@@ -3,8 +3,8 @@ import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
import prisma from "@calcom/prisma";
import { decodeOAuthState } from "./decodeOAuthState";
import { throwIfNotHaveAdminAccessToTeam } from "./throwIfNotHaveAdminAccessToTeam";
import { decodeOAuthState } from "../oauth/decodeOAuthState";
import { throwIfNotHaveAdminAccessToTeam } from "../throwIfNotHaveAdminAccessToTeam";
/**
* This function is used to create app credentials for either a user or a team
@@ -1,6 +1,6 @@
import type { NextApiRequest } from "next";
import type { IntegrationOAuthCallbackState } from "../types";
import type { IntegrationOAuthCallbackState } from "../../types";
export function decodeOAuthState(req: NextApiRequest) {
if (typeof req.query.state !== "string") {
@@ -1,6 +1,6 @@
import type { NextApiRequest } from "next";
import type { IntegrationOAuthCallbackState } from "../types";
import type { IntegrationOAuthCallbackState } from "../../types";
export function encodeOAuthState(req: NextApiRequest) {
if (typeof req.query.state !== "string") {
@@ -0,0 +1,32 @@
import { z } from "zod";
import { APP_CREDENTIAL_SHARING_ENABLED } from "@calcom/lib/constants";
const minimumTokenResponseSchema = z.object({
access_token: z.string(),
// Assume that any property with a number is the expiry
[z.string().toString()]: z.number(),
// Allow other properties in the token response
[z.string().optional().toString()]: z.unknown().optional(),
});
const parseRefreshTokenResponse = (response: any, schema: z.ZodTypeAny) => {
let refreshTokenResponse;
if (APP_CREDENTIAL_SHARING_ENABLED && process.env.CALCOM_CREDENTIAL_SYNC_ENDPOINT) {
refreshTokenResponse = minimumTokenResponseSchema.safeParse(response);
} else {
refreshTokenResponse = schema.safeParse(response);
}
if (!refreshTokenResponse.success) {
throw new Error("Invalid refreshed tokens were returned");
}
if (!refreshTokenResponse.data.refresh_token) {
refreshTokenResponse.data.refresh_token = "refresh_token";
}
return refreshTokenResponse;
};
export default parseRefreshTokenResponse;
@@ -0,0 +1,22 @@
import { APP_CREDENTIAL_SHARING_ENABLED } from "@calcom/lib/constants";
const refreshOAuthTokens = async (refreshFunction: () => any, appSlug: string, userId: number | null) => {
// Check that app syncing is enabled and that the credential belongs to a user
if (APP_CREDENTIAL_SHARING_ENABLED && process.env.CALCOM_CREDENTIAL_SYNC_ENDPOINT && userId) {
// Customize the payload based on what your endpoint requires
// The response should only contain the access token and expiry date
const response = await fetch(process.env.CALCOM_CREDENTIAL_SYNC_ENDPOINT, {
method: "POST",
body: new URLSearchParams({
calcomUserId: userId.toString(),
appSlug,
}),
});
return response;
} else {
const response = await refreshFunction();
return response;
}
};
export default refreshOAuthTokens;
+8
View File
@@ -0,0 +1,8 @@
---
items:
- iframe: { src: https://www.youtube.com/embed/tExtOJqnI0Q }
- 1.jpg
- 2.png
---
{DESCRIPTION}
+16
View File
@@ -0,0 +1,16 @@
import { createDefaultInstallation } from "@calcom/app-store/_utils/installation";
import type { AppDeclarativeHandler } from "@calcom/types/AppHandler";
import appConfig from "../config.json";
const handler: AppDeclarativeHandler = {
appType: appConfig.type,
variant: appConfig.variant,
slug: appConfig.slug,
supportsMultipleInstalls: false,
handlerType: "add",
createCredential: ({ appType, user, slug, teamId }) =>
createDefaultInstallation({ appType, userId: user.id, slug, key: {}, teamId }),
};
export default handler;
+1
View File
@@ -0,0 +1 @@
export { default as add } from "./add";
+17
View File
@@ -0,0 +1,17 @@
{
"/*": "Don't modify slug - If required, do it using cli edit command",
"name": "Alby",
"slug": "alby",
"type": "alby_payment",
"logo": "icon.svg",
"url": "https://example.com/link",
"variant": "payment",
"categories": ["payment"],
"publisher": "Alby",
"email": "support@getalby.com",
"description": "Your Bitcoin & Nostr companion for the web. Use Alby to charge Satoshi for your Cal.com meetings.\r",
"isTemplate": false,
"__createdUsingCli": true,
"__template": "basic",
"dirName": "alby"
}
+1
View File
@@ -0,0 +1 @@
export * as api from "./api";
+14
View File
@@ -0,0 +1,14 @@
{
"$schema": "https://json.schemastore.org/package.json",
"private": true,
"name": "@calcom/alby",
"version": "0.0.0",
"main": "./index.ts",
"dependencies": {
"@calcom/lib": "*"
},
"devDependencies": {
"@calcom/types": "*"
},
"description": "Your Bitcoin & Nostr companion for the web. Use Alby to charge Satoshi for your Cal.com meetings.\r"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

+12
View File
@@ -0,0 +1,12 @@
<svg width="554" height="554" viewBox="0 0 554 554" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="554" height="554" rx="64" fill="white"/>
<path d="M127.7 202.4C107.431 202.4 90.9999 185.969 90.9999 165.7C90.9999 145.431 107.431 129 127.7 129C147.969 129 164.4 145.431 164.4 165.7C164.4 185.969 147.969 202.4 127.7 202.4Z" fill="black"/>
<path d="M121.6 160.2L190.1 228.7" stroke="black" stroke-width="18.3"/>
<path d="M427.2 202.4C447.469 202.4 463.9 185.969 463.9 165.7C463.9 145.431 447.469 129 427.2 129C406.931 129 390.5 145.431 390.5 165.7C390.5 185.969 406.931 202.4 427.2 202.4Z" fill="black"/>
<path d="M434 160.2L365.5 228.7" stroke="black" stroke-width="18.3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M138.1 384.6C128.451 380.122 120.543 372.597 115.592 363.182C110.641 353.768 108.922 342.987 110.7 332.5C127.3 240 196.2 170.6 278.7 170.6C361.4 170.6 430.5 240.3 446.8 333.2C448.539 343.695 446.779 354.47 441.792 363.867C436.805 373.263 428.866 380.759 419.2 385.2C375.441 405.799 327.664 416.454 279.3 416.4C228.8 416.4 180.9 405 138.1 384.6Z" fill="#FFDF6F"/>
<path d="M119.8 334.2C135.8 244.7 201.8 179.8 278.8 179.8V161.5C190.6 161.5 118.8 235.3 101.7 330.9L119.7 334.1L119.8 334.2ZM278.8 179.8C355.8 179.8 422 245.1 437.8 334.8L455.8 331.6C439 235.6 367 161.5 278.8 161.5V179.8ZM415.3 376.9C372.76 396.917 326.314 407.265 279.3 407.2V425.5C330.7 425.5 379.4 414 423.1 393.5L415.3 376.9ZM279.3 407.2C230.2 407.2 183.7 396.1 142.1 376.3L134.2 392.9C178.2 413.9 227.4 425.5 279.3 425.5V407.2ZM437.8 334.8C440.8 352.1 431.6 369.3 415.3 376.9L423.1 393.5C446.5 382.5 460.4 357.5 455.8 331.5L437.8 334.8ZM101.7 330.8C99.5558 343.269 101.577 356.098 107.451 367.303C113.325 378.509 122.725 387.47 134.2 392.8L142.1 376.3C134.267 372.688 127.84 366.599 123.81 358.973C119.78 351.347 118.371 342.606 119.8 334.1L101.6 330.9L101.7 330.8Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M173.4 361.6C157.5 355.1 148.1 338.2 153.6 321.9C170.6 271.7 220.2 235.4 278.7 235.4C337.2 235.4 386.8 271.7 403.8 321.9C409.4 338.2 399.9 355.1 384 361.6C350.559 375.19 314.796 382.153 278.7 382.1C241.5 382.1 205.9 374.8 173.4 361.6Z" fill="black"/>
<path d="M320.9 338.1C337.8 338.1 351.5 327.176 351.5 313.7C351.5 300.224 337.8 289.3 320.9 289.3C304 289.3 290.3 300.224 290.3 313.7C290.3 327.176 304 338.1 320.9 338.1Z" fill="white"/>
<path d="M233.4 338.1C250.3 338.1 264 327.176 264 313.7C264 300.224 250.3 289.3 233.4 289.3C216.5 289.3 202.8 300.224 202.8 313.7C202.8 327.176 216.5 338.1 233.4 338.1Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -16,6 +16,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
id: req.session?.user?.id,
},
select: {
email: true,
id: true,
},
});
@@ -36,6 +37,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
const dav = new CalendarService({
id: 0,
...data,
user: { email: user.email },
});
await dav?.listCalendars();
await prisma.credential.create({

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