Compare commits

..
134 Commits
Author SHA1 Message Date
Alex van Andel a810a538e9 v3.2.5
release.yml / release (push) Canceled after 0s
2023-08-25 17:23:22 +01:00
sean-brydon 1cd0d7b5ca use team id :/ (#10957) 2023-08-25 16:14:28 +00:00
Alex van Andel 4540c79580 v3.2.4
release.yml / release (push) Canceled after 0s
2023-08-25 15:32:55 +01:00
Udit Takkar 00d01882d4 fix: private team regression (#10914)
Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-08-25 14:43:48 +01:00
Omar López 6ce4122528 fix: allows patching booking and period limits from API (#10935) 2023-08-25 14:29:04 +01:00
7ddbcfcdcf feat: Adds filter-by-email on /users/_get endpoint for admin calls (#10928)
* adds filter by email on users get for admins

* swagger update

* Update apps/api/pages/api/users/_get.ts

Co-authored-by: Omar López <zomars@me.com>

* .parse is required, also fixed some other issues

---------

Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
2023-08-25 14:15:13 +01:00
b1b01ed383 remove close button from TopBanner (#10705)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
2023-08-25 15:50:39 +03:00
6f5d9dc41f test: Create unit tests for react components in packages/ui/components/form/select (#10459)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-08-25 12:18:53 +00:00
GitStart-Cal.comandgitstart-calcom ac190b89dd chore: add UnpublishedEntity in storybook (CALCOM-10760) (#10864)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-08-25 15:12:19 +03:00
990441295c chore: add ImageUploader in storybook (CALCOM-10760) (#10865)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-08-25 15:06:55 +03:00
1e4c20073c chore: fix all @typescript-eslint/no-non-null-assertion warnings (#10635)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-08-25 14:56:20 +03:00
80353d67a0 chore: fix all @typescript-eslint/no-unused-vars warnings (#10645)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-08-25 11:48:24 +00:00
Keith Williams d55b4b051a perf: Fix slowest db query (again) (#10954) 2023-08-25 14:27:37 +03:00
Hariom Balhara 25d90e3e12 test: Upcoming bookings sorting order (#10950)
* Fix order by for bookings array
Fix orderBy for bookings

* Test

* Text change

* Add comments
2023-08-25 12:55:41 +03:00
Hariom Balhara 1727eb5625 fix: Unordered bookings (#10943) 2023-08-25 15:06:57 +05:30
sean-brydon 58f4224c66 Fix invite flow (#10951) 2023-08-25 09:19:03 +00:00
Udit Takkar 5d491e0a12 fix: unauthorized after email change (#10821) 2023-08-24 16:47:34 -07:00
alannncandOmar López 1eef5a56c3 fix: include orgs slug in getUserByUsername just like [user]/[type] page (#10723)
Co-authored-by: Omar López <zomars@me.com>
2023-08-24 16:41:06 -07:00
d6740503be feat: Column View Available Slots Fix (#9815)
Co-authored-by: Vinoth Kumar V <vinoth_kumar_v@Vinoths-MacBook-Pro.local>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
2023-08-24 16:39:45 -07:00
David Oksman 9f647ead46 fix: missing timezones in dropdown list (#10823) 2023-08-24 13:57:11 -07:00
Thibault Mathian f480afcace fix: caching and fetching of feature flags (#10837) 2023-08-24 13:43:52 -07:00
Hariom Balhara 8d73d15b8a perf: Lazy load framer motion stuff as much as we can (#10876) 2023-08-24 13:40:01 -07:00
Hariom Balhara e8370ef950 perf: Remove non booker apps from booker page (#10905) 2023-08-24 13:38:15 -07:00
Hariom Balhara e859c8dc58 test: Add attendee phone number test (#10932) 2023-08-24 11:21:49 -07:00
Keith Williams b4b38b9bc3 v3.2.3
release.yml / release (push) Canceled after 0s
2023-08-24 17:16:02 +03:00
Crowdin Bot d32719ad8b New Crowdin translations by Github Action 2023-08-24 12:47:12 +00:00
Hariom Balhara 99d0816d9f phoneSchema missing async parsing (#10929) 2023-08-24 12:43:52 +00:00
95f4b89fe8 fix: #10783 (UI updated on API Creation Form ) (#10786)
* Fix #10783

* Update the changes #10783

* Updated the changes on the another dialog footer

* Updated the changes

---------

Co-authored-by: Hem Pun <hemthegentlmen@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2023-08-24 11:20:48 +01:00
Abhijeet SinghandAbhijeet Singh 3e63c2b717 fix: Italics not being shown in the description after saving (#10848)
* added ignore rule for em tag in turndown

* added ignore rule for em tag in turndown

---------

Co-authored-by: Abhijeet Singh <asing9829@gmail.com>
2023-08-24 11:20:00 +01:00
Omar López 42cd56578d fix: Reduced boilerplate for publicViewer router (#10849) 2023-08-24 11:19:24 +01:00
Ujwal KumarandBailey Pumfleet 31d4cb4eb7 Transform # character to - in slug (#10896)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-08-24 11:19:10 +01:00
sean-brydonandBailey Pumfleet fde3e8bea9 Invalidate and add success message (#10907)
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-08-24 11:18:59 +01:00
GitStart-Cal.comandgitstart-calcom 874ad29676 chore: add Table in storybook (CALCOM-10760) (#10869)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-08-24 11:07:57 +01:00
Hariom Balhara 5503d9d432 perf: bookings query improvement (#10687) 2023-08-24 11:14:10 +02:00
Keith WilliamsandShivam Kalra 43b3d68447 chore: Don't render certain components when running meticulous tests (#10772)
* chore: Don't render credits when running meticulous tests

* fix: type window Meticulous

* fix: window reference error

* chore: window interface

* chore: disable tzdialog popup on meticulous

* chore: IS_VISUAL_REGRESSION_TESTING

* fix: constants

* fix: only run on preview builds

---------

Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
2023-08-24 13:42:53 +05:30
GitStart-Cal.comandgitstart-calcom e3c747a867 test: Create unit tests for react components is packages/ui/components/navigation (#10698)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-08-24 13:23:54 +05:30
sean-brydonandOmar López e020a2c9a4 feat: Availability Slider enabled for teams (#10902)
Co-authored-by: Omar López <zomars@me.com>
2023-08-23 21:23:24 +00:00
Leo Giovanetti e6e6f09547 feat: admin org list now shows all, dns check added (#10875)
* chore: admin org list now shows all, dns check added

* Updating email template

* type fixes
2023-08-23 21:01:12 +00:00
Leo GiovanettiandJoe Au-Yeung 68ec946c59 fix: add org avatar to org booking pages [CAL-2333] (#10847)
* Add org avatar to org booking pages

* Using web app url for org avatars + missing i18n string

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-08-23 20:10:02 +00:00
Omar López 5a6e5ce427 v3.2.2
release.yml / release (push) Canceled after 0s
2023-08-23 11:49:37 -07:00
Carina WollendorferandCarinaWolli b2382211db fix: adding a new workflow step that requires kyc verification (#10912)
* fix verificaiton check when step is added

* add verify badge with dialog also when adding action

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-08-23 20:32:14 +02:00
Joe Au-Yeung 12148506bd fix: Remove multiple durations for seated events (#10910)
* Remove multiple durations for seated events

* Clean up
2023-08-23 18:25:44 +00:00
MontoandSMLukwiya b5666fd4c3 fix: team availability shows only to the member owning it (#10738)
Co-authored-by: SMLukwiya <sundaymorganl@gmail.com>
2023-08-23 12:27:19 -04:00
Omar López bc7da563d8 fix: Prevents mixed server and client code (#10909) 2023-08-23 16:25:43 +00:00
d3acf4160d fix: data collection for headless router (#9183)
Co-authored-by: Wesley <100464352+ologbonowiwi@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
2023-08-23 11:12:51 -04:00
Crowdin Bot 65e0c0e4c5 New Crowdin translations by Github Action 2023-08-23 12:16:51 +00:00
nicktrn 2dda6a509b chore: cron workflow tidying (#10127) 2023-08-23 17:43:22 +05:30
Crowdin Bot 7238414864 New Crowdin translations by Github Action 2023-08-23 09:11:55 +00:00
Shivam Kalra bab41ca8a6 chore: expect emails e2e (#10881)
* refactor: emails e2e

* fix: email subject with nameless organizer

* fix: comment on NEXT_PUBLIC_IS_E2E

* chore: E2E_TEST_MAILHOG_ENABLED env

* feat: IS_MAILHOG_ENABLED

* doc: E2E_TEST_MAILHOG_ENABLED

* fix: comment

* fix: env order

* chore: add E2E_TEST_MAILHOG_ENABLED to e2e env
2023-08-23 11:08:14 +02:00
Carina WollendorferandCarinaWolli 376f023e0f fix: scheduling workflow emails (#10890)
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
2023-08-22 12:29:06 -07:00
zomars 0cbf525a78 fix: Disables es-419 until translated 2023-08-22 12:01:50 -07:00
zomars f56fefec4d fix: Disables es-419 until translated 2023-08-22 12:00:20 -07:00
Crowdin Bot 66eccd6dd8 New Crowdin translations by Github Action 2023-08-22 18:12:25 +00:00
Omar López c4b9a9e2f4 fix: client locale inference (#10893)
* fix: client locale inference

* Update I18nLanguageHandler.tsx

* More fixes

* Update I18nLanguageHandler.tsx

* Update I18nLanguageHandler.tsx

* Addressing feedback

* Fix: first render issues

* Update Credits.tsx

* Fixed tests

* fix: try without loose locale pick

* Revert "fix: try without loose locale pick"

This reverts commit 5ed649c13117fee8bc507098353de0f18e98d971.

* fix: sorts locales so specifics are chosen first

* fix: switches client locale matcher
2023-08-22 20:08:34 +02:00
Crowdin Bot 38921e58cd New Crowdin translations by Github Action 2023-08-22 13:46:36 +00:00
Crowdin Bot 2c9c6c77f7 New Crowdin translations by Github Action 2023-08-22 13:43:30 +00:00
Syed Ali Shahbaz 46605e049d fix: Improves the Login button for SAML/OIDC (#10885) 2023-08-22 15:39:50 +02:00
Crowdin Bot 01e1e82ced New Crowdin translations by Github Action 2023-08-22 13:20:24 +00:00
Crowdin Bot 8e17716094 New Crowdin translations by Github Action 2023-08-22 13:17:20 +00:00
Crowdin Bot 7c028b6479 New Crowdin translations by Github Action 2023-08-22 13:14:18 +00:00
Crowdin Bot cba4bae5cd New Crowdin translations by Github Action 2023-08-22 13:10:46 +00:00
Omar López 55046f3017 chore: add constant for production builds (#10762) 2023-08-22 13:07:32 +00:00
Crowdin Bot 4836621c31 New Crowdin translations by Github Action 2023-08-22 12:37:46 +00:00
Omar López 6743aa4609 fix: client locale inference (#10850) 2023-08-22 14:34:55 +02:00
Crowdin Bot bbad0fbc18 New Crowdin translations by Github Action 2023-08-22 12:32:40 +00:00
Crowdin Bot 8f6812ecb2 New Crowdin translations by Github Action 2023-08-22 12:30:01 +00:00
Crowdin Bot 303b09f341 New Crowdin translations by Github Action 2023-08-22 12:27:07 +00:00
Crowdin Bot 1f3ee41eb4 New Crowdin translations by Github Action 2023-08-22 12:24:09 +00:00
Crowdin Bot 01c711a81e New Crowdin translations by Github Action 2023-08-22 12:21:37 +00:00
Aswath SandHariom Balhara 16bb5c3384 feat: Added more query params to successRedirect page (#8271)
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
2023-08-22 12:18:36 +00:00
Crowdin Bot c55d97368e New Crowdin translations by Github Action 2023-08-22 11:09:29 +00:00
Crowdin Bot ef193aca31 New Crowdin translations by Github Action 2023-08-22 11:06:46 +00:00
Nate GriftandUdit Takkar c36a6797a9 test: added team & user having same name test (#10868)
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2023-08-22 13:03:00 +02:00
f393fd4ad4 fix: Resolved Typescript Error in PR #9598 created by @vijeet-shah. (#10871)
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: vijeet-shah <93502358+vijeet-shah@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-08-22 13:02:40 +02:00
Crowdin Bot 8987b9bdbc New Crowdin translations by Github Action 2023-08-22 10:33:33 +00:00
Crowdin Bot 68bf426af0 New Crowdin translations by Github Action 2023-08-22 10:30:43 +00:00
Crowdin Bot 1125900013 New Crowdin translations by Github Action 2023-08-22 10:27:47 +00:00
Crowdin Bot d272e823c3 New Crowdin translations by Github Action 2023-08-22 10:24:43 +00:00
Crowdin Bot 3ea11d4f38 New Crowdin translations by Github Action 2023-08-22 10:21:55 +00:00
Crowdin Bot b4dc64594c New Crowdin translations by Github Action 2023-08-22 10:19:05 +00:00
Crowdin Bot 6a763b3720 New Crowdin translations by Github Action 2023-08-22 10:16:14 +00:00
Crowdin Bot 252ac1c704 New Crowdin translations by Github Action 2023-08-22 10:13:06 +00:00
Crowdin Bot c51e42a061 New Crowdin translations by Github Action 2023-08-22 10:10:14 +00:00
Crowdin Bot e3f9e477fe New Crowdin translations by Github Action 2023-08-22 10:07:12 +00:00
Crowdin Bot b265970b01 New Crowdin translations by Github Action 2023-08-22 10:03:58 +00:00
Crowdin Bot 7b7b2ffc9a New Crowdin translations by Github Action 2023-08-22 10:00:41 +00:00
Crowdin Bot d019062709 New Crowdin translations by Github Action 2023-08-22 09:58:00 +00:00
Crowdin Bot ad9d728314 New Crowdin translations by Github Action 2023-08-22 09:55:10 +00:00
Crowdin Bot b564fb9a2f New Crowdin translations by Github Action 2023-08-22 09:52:15 +00:00
Crowdin Bot 9c05f6839c New Crowdin translations by Github Action 2023-08-22 09:49:20 +00:00
Crowdin Bot 4dea38f06d New Crowdin translations by Github Action 2023-08-22 09:46:30 +00:00
Crowdin Bot c4fc222204 New Crowdin translations by Github Action 2023-08-22 09:43:37 +00:00
Crowdin Bot 00c3a2dd80 New Crowdin translations by Github Action 2023-08-22 09:40:44 +00:00
Crowdin Bot 46fa0088f2 New Crowdin translations by Github Action 2023-08-22 09:37:44 +00:00
Crowdin Bot a19fd9b889 New Crowdin translations by Github Action 2023-08-22 09:34:39 +00:00
Crowdin Bot d379c10510 New Crowdin translations by Github Action 2023-08-22 09:31:11 +00:00
GitStart-Cal.comandgitstart-calcom f3a58145ee chore: add datePicker in storybook (CALCOM-10760) (#10784)
* Update datepicker.stories.mdx

* Update datepicker.stories.mdx

* Requested changes

---------

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-08-22 10:27:27 +01:00
Crowdin Bot e6125dc361 New Crowdin translations by Github Action 2023-08-21 23:15:41 +00:00
zomars b78f718e9e Update yarn.lock 2023-08-21 16:12:41 -07:00
zomars 53e87f7769 fix: Removes duplicate locale keys 2023-08-21 16:11:04 -07:00
Crowdin Bot 86eb40e0fd New Crowdin translations by Github Action 2023-08-21 17:15:42 +00:00
Hariom BalharaandUdit Takkar 51caa6834a fix: Make identifier conform to RHF field requirement (#10860)
Co-authored-by: Udit Takkar <udit.07814802719@cse.mait.ac.in>
2023-08-21 13:11:47 -04:00
7a7a5b5285 fix: Removing payment fee on stripe (#10652)
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-08-21 12:33:34 +02:00
f14ffb9e44 chore: add Dialog component in storybook (#10822)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
2023-08-21 09:58:26 +00:00
Harry Dobrev 001b524005 fix: icon in emails is considered a tracking pixel (#10807) 2023-08-21 11:48:06 +02:00
GitStart-Cal.comandgitstart-calcom a8cf4fb309 chore: add Editor in storybook (CALCOM-10760) (#10820)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
2023-08-21 11:45:30 +02:00
Joe Au-Yeung 155775556d perf: GCal reduce calendar payload (#10853) 2023-08-21 11:27:18 +02:00
d66095bf9c test: adding confirmed payment test cases on Stripe (#10243)
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2023-08-21 11:12:39 +02:00
0ddab30340 chore: fix all @typescript-eslint/no-explicit-any warnings (#10656)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Bailey Pumfleet <bailey@pumfleet.co.uk>
2023-08-21 11:01:56 +02:00
Moon Patel 2a9e061575 fix: Next/previous buttons on week view move 8 instead of 7 days (#10742) 2023-08-21 11:01:27 +02:00
Crowdin Bot 351dce5cfd New Crowdin translations by Github Action 2023-08-21 08:31:02 +00:00
Koushik Sai 3255d9012c fix: missing border-subtle class (#10838) 2023-08-21 09:28:34 +01:00
Crowdin Bot 226dcb3fcf New Crowdin translations by Github Action 2023-08-19 20:07:17 +00:00
Jon@1599andLeo Giovanetti f80e9b2558 feat: add basecamp integration to cal.com (#9195)
* feat: installing the app works

* Update yarn.lock

* feat: /api/callback now gets user auth info from basecamp

* feat: updated basecamp logo

* feat: added project dropdown on event apps page

* feat: basecamp event creation and deletion working

* feat: basecamp event rescheduling now works

* refactor(CalendarService): basecamp CaldendarService code clean up

* refactor: code cleanup for basecamp app API

* feat: updated event summary text sent to basecamp

* chore: updated basecamp images and contact info

* fix: fixed typescript errors and added logic to refresh tokens on event settings

* refactor(CaldendarService): used refreshAccessToken from helpers.ts instead

* chore: updated basecamp description

* fix: fixed incorrect import

* fix: accidentally deleted props to toggle app for event

* chore: updated .env.appStore.example and added README for app

* Update .env.appStore.example

Co-authored-by: Leo Giovanetti <hello@leog.me>

* feat: added basecamp userAgent in env instead of hardcoded value

* feat: updated README to include how to set basecamp user agent env

* fix: removed unused import

* feat: used URLSearchParams to construct url params

* fix: fixed typescript errors

* chore: updated README to include an example on how to set basecamp user-agent

* feat: using TRPC instead of REST

* chore: removed old projects REST code

---------

Co-authored-by: Leo Giovanetti <hello@leog.me>
2023-08-19 17:04:56 -03:00
Keith Williamsandzomars 3f273235a6 perf: Cache translations per language/per release (#10843)
Co-authored-by: zomars <zomars@me.com>
2023-08-18 17:46:17 -07:00
zomars e8554ed5c5 fix: key warning 2023-08-18 15:50:44 -07:00
zomars a03744008c chore: Update orgs README 2023-08-18 14:26:33 -07:00
Leo GiovanettiandOmar López fe8b13885c fix: org admin has team member privileges [CAL-2338] (#10809)
Co-authored-by: Omar López <zomars@me.com>
2023-08-18 14:10:17 -07:00
Leo Giovanettiandzomars 8995dcc82a fix: org username check [CAL-2352] (#10773)
Co-authored-by: zomars <zomars@me.com>
2023-08-18 14:03:55 -07:00
zomars e8e0d03265 chore: Adds basic README for orgs 2023-08-18 12:26:59 -07:00
Crowdin Bot 56031f0358 New Crowdin translations by Github Action 2023-08-18 18:19:11 +00:00
Joe Au-Yeung 1ef0f830d3 fix: Username suffix on production [CAL-2262] (#10825) 2023-08-18 11:15:58 -07:00
Hariom Balhara 59e2f6e4a7 perf: Booker-Bundle Size Improvement - Lazy load react-select, remove lodash and Dom Purify (#10814) 2023-08-18 11:13:21 -07:00
+15 67bb2ed798 feat: Availability slider for orgs (#10740)
* Init + get timezone + offset data agh

* Add 12/24h mode - style correctly

* User users timezone + working hours. Still some stuff to figure out

* Multiple working hours

* move calc to once per day

* Demo with two users and differnt timezones

* availabillity control tab via search params

* WIP hover overlay

* THIS WORKS ISH

* fix: multiple duration getSchedule calls [CAL-2336] (#10709)

Co-authored-by: Omar López <zomars@me.com>

* New Crowdin translations by Github Action

* fix: If the input type "Name" is selected, the label can't be changed from our default label "Your Name" (#10618)

Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>

* New Crowdin translations by Github Action

* test: Create unit tests for react components in packages/ui/components/form/step (#10442)

Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>

* feat: element call app added (#10585)

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

* New Crowdin translations by Github Action

* New Crowdin translations by Github Action

* fix: e2e test for rescheduling overlapping time (#10721)

Co-authored-by: CarinaWolli <wollencarina@gmail.com>

* feat: mailhog fixture (#10606)

* feat: mailhog fixture

* fix: nodemailer to dispatch emails with e2e env

* fix: remove space from email subject

* feat: fixture getFirstEventAsOwner

* feat: assert email subjects

* fix: and enable dynamic booking test (#10642)

* fix and enable dynamic booking test

* remove page pause

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* fix: Broken team events if a user with the same name exists (#10724)

* fix: Broken team events if a user with the same name exists

* Fix tests + fix usernameList optionality

* Try to list calendars, if not continue (#10720)

Co-authored-by: Omar López <zomars@me.com>

* v3.1.9

* link to org settings (#10718)

* feat: app paypal payment (#8797)

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>

* fix: RTL issues on booking pages + email confirmation (#10526)

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

* fix: merge conflict

* Fixing org slug (#10538)

* fix: paypal build fixes

* Fix avatar for org in Shell top (#10712)

* feat: add range of dates for availability over-ride (#10462)

* feat: add range of dates for availability over-ride

* chore: changed range select to multiple select

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>

* fix: border issue for time slots (#10577)

Co-authored-by: Raghul D <v-raghuld@microsoft.com>

* style: Fix text wrapping issue in button (#10725)

Co-authored-by: Omar López <zomars@me.com>

* New Crowdin translations by Github Action

* fix: App Install Dropdown Sort Properly [CAL-2285] (#10672)

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

* fix: link escaping in booking page (#10360)

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

* chore: fix refund i18n message (#10731)

* chore: remove tailwind-scrollbar warning (#10523)

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

* New Crowdin translations by Github Action

* chore: Simplified date overrides (#10728)

* chore: Simplified date overrides

* Fixed a test that had a date override that wasn't at midnight utc

* Wrote test that showed a fixed Europe/Brussels

* Lint fix

* New Crowdin translations by Github Action

* Fix offset time + fetching correct dates

* Deal with awkward minute offsets

* remove store overhead

* Format H based on tz

* Cleanup store logic

* Cleanup

* Remove comments

* Remove comments

* Remove yarn.lock

* Dark mode & v-align text fixes

* Move ButtonGroup to the left to prevent chevron from jumping

* Shift based on timezone (non-hour) and have 15min granularity in hour display background color

---------

Co-authored-by: Leo Giovanetti <hello@leog.me>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: Zain Gulbaz <zaingulbaz8@gmail.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.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: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Suyash Srivastava <suyashsrivastava5053@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: Pradumn Kumar <pradumn@tealfeed.com>
Co-authored-by: Raghul <123321540+Raghul18@users.noreply.github.com>
Co-authored-by: Raghul D <v-raghuld@microsoft.com>
Co-authored-by: ABDERRAHMANI IDRISSI HAMZA <97639117+idrissi-hamza@users.noreply.github.com>
Co-authored-by: Nafees Nazik <84864519+G3root@users.noreply.github.com>
Co-authored-by: Danila <daniil.demidovich@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2023-08-18 16:32:24 +00:00
Crowdin Bot ea4618a244 New Crowdin translations by Github Action 2023-08-18 15:39:49 +00:00
Keith Williams 201a9d9356 perf: Fix slowest db query (#10842) 2023-08-18 17:36:57 +02:00
Crowdin Bot 40b0d57024 New Crowdin translations by Github Action 2023-08-18 11:01:22 +00:00
761f66fc5a Create RTL tests for Meta component (#10478)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
2023-08-18 16:28:30 +05:30
2403d77166 test: Create unit tests for react components in packages/ui/components/createButton (#10644)
Co-authored-by: gitstart-calcom <gitstart@users.noreply.github.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
2023-08-18 14:22:14 +05:30
Anik Dhabal Babu b44f4d66f9 fix text align (#10799) 2023-08-18 12:03:04 +05:30
Joe Au-Yeung d178962c37 Fix readonly check (#10824) 2023-08-18 06:30:59 +02:00
Crowdin Bot cf4d2b4ef5 New Crowdin translations by Github Action 2023-08-17 18:00:26 +00:00
Hariom Balhara 3e4139ac23 perf: Lazy load libphonenumber-js only when validation is needed. (#10812) 2023-08-17 10:57:30 -07:00
Crowdin Bot 9fb736f67a New Crowdin translations by Github Action 2023-08-17 16:57:12 +00:00
361 changed files with 7600 additions and 2845 deletions
+9
View File
@@ -1,6 +1,7 @@
# ********** INDEX **********
#
# - APP STORE
# - BASECAMP
# - DAILY.CO VIDEO
# - GOOGLE CALENDAR/MEET/LOGIN
# - HUBSPOT
@@ -20,6 +21,14 @@
# - APP STORE **********************************************************************************************
# ⚠️ ⚠️ ⚠️ THESE WILL BE MIGRATED TO THE DATABASE TO PREVENT AWS's 4KB ENV QUOTA ⚠️ ⚠️ ⚠️
# - BASECAMP
# Used to enable Basecamp integration with Cal.com
# @see https://github.com/calcom/cal.com#obtaining-basecamp-client-id-and-secret
BASECAMP3_CLIENT_ID=
BASECAMP3_CLIENT_SECRET=
BASECAMP3_USER_AGENT=
# - DAILY.CO VIDEO
# Enables Cal Video. to get your key
# 1. Visit our [Daily.co Partnership Form](https://go.cal.com/daily) and enter your information
+7 -2
View File
@@ -126,8 +126,7 @@ TWILIO_WHATSAPP_PHONE_NUMBER=
NEXT_PUBLIC_SENDER_ID=
TWILIO_VERIFY_SID=
# This is used so we can bypass emails in auth flows for E2E testing
# Set it to "1" if you need to run E2E tests locally
# Set it to "1" if you need to run E2E tests locally.
NEXT_PUBLIC_IS_E2E=
# Used for internal billing system
@@ -172,6 +171,12 @@ EMAIL_SERVER_PORT=1025
## You will need to provision an App Password.
## @see https://support.google.com/accounts/answer/185833
# EMAIL_SERVER_PASSWORD='<gmail_app_password>'
# Used for E2E for email testing
# Set it to "1" if you need to email checks in E2E tests locally
# Make sure to run mailhog container manually or with `yarn dx`
E2E_TEST_MAILHOG_ENABLED=
# **********************************************************************************************************
# Set the following value to true if you wish to enable Team Impersonation
+3 -3
View File
@@ -4,8 +4,8 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
- cron: "0,15,30,45 * * * *"
# Runs "At every 15th minute." (see https://crontab.guru)
- cron: "*/15 * * * *"
jobs:
cron-bookingReminder:
env:
@@ -20,4 +20,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
+2 -2
View File
@@ -5,7 +5,7 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “Every month at 1st (see https://crontab.guru)
# Runs "At 00:00 on day-of-month 1." (see https://crontab.guru)
- cron: "0 0 1 * *"
jobs:
cron-downgradeUsers:
@@ -21,4 +21,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
@@ -4,8 +4,8 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
- cron: "0,15,30,45 * * * *"
# Runs "At every 15th minute." (see https://crontab.guru)
- cron: "*/15 * * * *"
jobs:
cron-scheduleEmailReminders:
env:
@@ -20,4 +20,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
@@ -4,8 +4,8 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
- cron: "0,15,30,45 * * * *"
# Runs "At every 15th minute." (see https://crontab.guru)
- cron: "*/15 * * * *"
jobs:
cron-scheduleSMSReminders:
env:
@@ -20,4 +20,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
@@ -4,8 +4,8 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “At minute 0, 15, 30, and 45.” (see https://crontab.guru)
- cron: "0,15,30,45 * * * *"
# Runs "At every 15th minute." (see https://crontab.guru)
- cron: "*/15 * * * *"
jobs:
cron-scheduleWhatsappReminders:
env:
@@ -20,4 +20,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
+1 -1
View File
@@ -8,7 +8,7 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs every day (see https://crontab.guru)
# Runs "At 00:00." every day (see https://crontab.guru)
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
+2 -2
View File
@@ -5,7 +5,7 @@ on:
# "Scheduled workflows run on the latest commit on the default or base branch."
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
schedule:
# Runs “Every month at 1st (see https://crontab.guru)
# Runs "At 00:00 on day-of-month 1." (see https://crontab.guru)
- cron: "0 0 1 * *"
jobs:
cron-syncAppMeta:
@@ -21,4 +21,4 @@ jobs:
-X POST \
-H 'content-type: application/json' \
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
--fail
-sSf
+1
View File
@@ -43,6 +43,7 @@ jobs:
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
+1
View File
@@ -43,6 +43,7 @@ jobs:
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
+1
View File
@@ -42,6 +42,7 @@ jobs:
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
E2E_TEST_MAILHOG_ENABLED: ${{ vars.E2E_TEST_MAILHOG_ENABLED }}
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
EMAIL_SERVER_HOST: ${{ secrets.CI_EMAIL_SERVER_HOST }}
EMAIL_SERVER_PORT: ${{ secrets.CI_EMAIL_SERVER_PORT }}
+1
View File
@@ -1,6 +1,7 @@
name: Submodule Sync
on:
schedule:
# Runs "At minute 15 past every 4th hour." (see https://crontab.guru)
- cron: "15 */4 * * *"
workflow_dispatch: ~
jobs:
+13
View File
@@ -221,6 +221,7 @@ echo 'NEXT_PUBLIC_DEBUG=1' >> .env
```
1. Run [mailhog](https://github.com/mailhog/MailHog) to view emails sent during development
> **_NOTE:_** Required when `E2E_TEST_MAILHOG_ENABLED` is "1"
```sh
docker pull mailhog/mailhog
@@ -461,6 +462,18 @@ following
4. Now paste the API key to your `.env` file into the `DAILY_API_KEY` field in your `.env` file.
5. If you have the [Daily Scale Plan](https://daily.co/pricing) set the `DAILY_SCALE_PLAN` variable to `true` in order to use features like video recording.
### Obtaining Basecamp Client ID and Secret
1. Visit the [37 Signals Integrations Dashboard](launchpad.37signals.com/integrations) and sign in.
2. Register a new application by clicking the Register one now link.
3. Fill in your company details.
4. Select Basecamp 4 as the product to integrate with.
5. Set the Redirect URL for OAuth `<Cal.com URL>/api/integrations/basecamp3/callback` replacing Cal.com URL with the URI at which your application runs.
6. Click on done and copy the Client ID and secret into the `BASECAMP3_CLIENT_ID` and `BASECAMP3_CLIENT_SECRET` fields.
7. Set the `BASECAMP3_CLIENT_SECRET` env variable to `{your_domain} ({support_email})`.
For example, `Cal.com (support@cal.com)`.
### Obtaining HubSpot Client ID and Secret
1. Open [HubSpot Developer](https://developer.hubspot.com/) and sign into your account, or create a new one.
+7 -1
View File
@@ -33,12 +33,14 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({
position: true,
eventName: true,
timeZone: true,
schedulingType: true,
// START Limit future bookings
periodType: true,
periodStartDate: true,
schedulingType: true,
periodEndDate: true,
periodDays: true,
periodCountCalendarDays: true,
// END Limit future bookings
requiresConfirmation: true,
disableGuests: true,
hideCalendarNotes: true,
@@ -51,6 +53,8 @@ export const schemaEventTypeBaseBodyParams = EventType.pick({
slotInterval: true,
successRedirectUrl: true,
locations: true,
bookingLimits: true,
durationLimits: true,
})
.merge(z.object({ hosts: z.array(hostSchema).optional().default([]) }))
.partial()
@@ -126,6 +130,8 @@ export const schemaEventTypeReadPublic = EventType.pick({
seatsPerTimeSlot: true,
seatsShowAttendees: true,
bookingFields: true,
bookingLimits: true,
durationLimits: true,
}).merge(
z.object({
locations: z
@@ -0,0 +1,20 @@
import { withValidation } from "next-validations";
import { z } from "zod";
import { baseApiParams } from "./baseApiParams";
// Extracted out as utility function so can be reused
// at different endpoints that require this validation.
export const schemaQueryUserEmail = baseApiParams.extend({
email: z.string().email(),
});
export const schemaQuerySingleOrMultipleUserEmails = z.object({
email: z.union([z.string().email(), z.array(z.string().email())]),
});
export const withValidQueryUserEmail = withValidation({
schema: schemaQueryUserEmail,
type: "Zod",
mode: "query",
});
+1 -1
View File
@@ -29,7 +29,7 @@ enum locales {
RO = "ro",
NL = "nl",
PT_BR = "pt-BR",
ES_419 = "es-419",
// ES_419 = "es-419", // Disabled until Crowdin reaches at least 80% completion
KO = "ko",
JA = "ja",
PL = "pl",
@@ -1,4 +1,4 @@
import type { Prisma } from "@prisma/client";
import { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import type { z } from "zod";
@@ -202,10 +202,17 @@ import checkTeamEventEditPermission from "../_utils/checkTeamEventEditPermission
export async function patchHandler(req: NextApiRequest) {
const { prisma, query, body } = req;
const { id } = schemaQueryIdParseInt.parse(query);
const { hosts = [], ...parsedBody } = schemaEventTypeEditBodyParams.parse(body);
const {
hosts = [],
bookingLimits,
durationLimits,
...parsedBody
} = schemaEventTypeEditBodyParams.parse(body);
const data: Prisma.EventTypeUpdateArgs["data"] = {
...parsedBody,
bookingLimits: bookingLimits === null ? Prisma.DbNull : bookingLimits,
durationLimits: durationLimits === null ? Prisma.DbNull : durationLimits,
};
if (hosts) {
+9 -2
View File
@@ -1,4 +1,4 @@
import type { Prisma } from "@prisma/client";
import { Prisma } from "@prisma/client";
import type { NextApiRequest } from "next";
import { HttpError } from "@calcom/lib/http-error";
@@ -259,12 +259,19 @@ import ensureOnlyMembersAsHosts from "./_utils/ensureOnlyMembersAsHosts";
async function postHandler(req: NextApiRequest) {
const { userId, isAdmin, prisma, body } = req;
const { hosts = [], ...parsedBody } = schemaEventTypeCreateBodyParams.parse(body || {});
const {
hosts = [],
bookingLimits,
durationLimits,
...parsedBody
} = schemaEventTypeCreateBodyParams.parse(body || {});
let data: Prisma.EventTypeCreateArgs["data"] = {
...parsedBody,
userId,
users: { connect: { id: userId } },
bookingLimits: bookingLimits === null ? Prisma.DbNull : bookingLimits,
durationLimits: durationLimits === null ? Prisma.DbNull : durationLimits,
};
await checkPermissions(req);
+20
View File
@@ -4,6 +4,7 @@ import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
import { withMiddleware } from "~/lib/helpers/withMiddleware";
import { schemaQuerySingleOrMultipleUserEmails } from "~/lib/validations/shared/queryUserEmail";
import { schemaUsersReadPublic } from "~/lib/validations/user";
/**
@@ -19,6 +20,17 @@ import { schemaUsersReadPublic } from "~/lib/validations/user";
* schema:
* type: string
* description: Your API key
* - in: query
* name: email
* required: false
* schema:
* type: array
* items:
* type: string
* format: email
* style: form
* explode: true
* description: The email address or an array of email addresses to filter by
* tags:
* - users
* responses:
@@ -39,6 +51,14 @@ export async function getHandler(req: NextApiRequest) {
const where: Prisma.UserWhereInput = {};
// If user is not ADMIN, return only his data.
if (!isAdmin) where.id = userId;
if (req.query.email) {
const validationResult = schemaQuerySingleOrMultipleUserEmails.parse(req.query);
where.email = {
in: Array.isArray(validationResult.email) ? validationResult.email : [validationResult.email],
};
}
const [total, data] = await prisma.$transaction([
prisma.user.count({ where }),
prisma.user.findMany({ where, take, skip }),
+21 -1
View File
@@ -1,9 +1,29 @@
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
const ns = ["common"];
const supportedLngs = ["en", "fr"];
const resources = ns.reduce((acc, n) => {
supportedLngs.forEach((lng) => {
if (!acc[lng]) acc[lng] = {};
acc[lng] = {
...acc[lng],
[n]: require(`../../web/public/static/locales/${lng}/${n}.json`),
};
});
return acc;
}, {});
i18n.use(initReactI18next).init({
resources: [],
debug: true,
fallbackLng: "en",
defaultNS: "common",
ns,
interpolation: {
escapeValue: false,
},
react: { useSuspense: true },
resources,
});
export default i18n;
+8
View File
@@ -21,6 +21,14 @@ export const parameters = {
push() {},
Provider: AppRouterContext.Provider,
},
globals: {
locale: "en",
locales: {
en: "English",
fr: "Français",
},
},
i18n,
};
addDecorator((storyFn) => (
+2 -1
View File
@@ -18,6 +18,7 @@ export function VariantsTable({
const columns = React.Children.toArray(children) as ReactElement<RowProps>[];
return (
<div
id="light-variant"
className={classNames(
isDark &&
"relative py-8 before:absolute before:left-0 before:top-0 before:block before:h-full before:w-screen before:bg-[#1C1C1C]"
@@ -43,7 +44,7 @@ export function VariantsTable({
</table>
</div>
{!isDark && (
<div data-mode="dark" className="dark">
<div id="dark-variant" data-mode="dark" className="dark">
<VariantsTable titles={titles} isDark columnMinWidth={columnMinWidth}>
{children}
</VariantsTable>
+37 -13
View File
@@ -1,27 +1,51 @@
import { lookup } from "bcp-47-match";
import { useSession } from "next-auth/react";
import { useTranslation } from "next-i18next";
import { useEffect } from "react";
import { CALCOM_VERSION } from "@calcom/lib/constants";
import { trpc } from "@calcom/trpc/react";
export function useViewerI18n() {
return trpc.viewer.public.i18n.useQuery(undefined, {
staleTime: Infinity,
/**
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
* We intend to not cache i18n query
**/
trpc: {
context: { skipBatch: true },
},
});
function useViewerI18n(locale: string) {
return trpc.viewer.public.i18n.useQuery(
{ locale, CalComVersion: CALCOM_VERSION },
{
/**
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
**/
trpc: {
context: { skipBatch: true },
},
}
);
}
function useClientLocale(locales: string[]) {
const session = useSession();
// If the user is logged in, use their locale
if (session.data?.user.locale) return session.data.user.locale;
// If the user is not logged in, use the browser locale
if (typeof window !== "undefined") {
// This is the only way I found to ensure the prefetched locale is used on first render
// FIXME: Find a better way to pick the best matching locale from the browser
return lookup(locales, window.navigator.language) || window.navigator.language;
}
// If the browser is not available, use English
return "en";
}
export function useClientViewerI18n(locales: string[]) {
const clientLocale = useClientLocale(locales);
return useViewerI18n(clientLocale);
}
/**
* Auto-switches locale client-side to the logged in user's preference
*/
const I18nLanguageHandler = () => {
const I18nLanguageHandler = (props: { locales: string[] }) => {
const { locales } = props;
const { i18n } = useTranslation("common");
const locale = useViewerI18n().data?.locale || i18n.language;
const locale = useClientViewerI18n(locales).data?.locale || i18n.language;
useEffect(() => {
// bail early when i18n = {}
+2 -2
View File
@@ -6,7 +6,7 @@ import Script from "next/script";
import "@calcom/embed-core/src/embed-iframe";
import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired";
import { WEBAPP_URL, IS_CALCOM } from "@calcom/lib/constants";
import { IS_CALCOM, WEBAPP_URL } from "@calcom/lib/constants";
import { buildCanonical } from "@calcom/lib/next-seo.config";
import type { AppProps } from "@lib/app-providers";
@@ -72,7 +72,7 @@ function PageWrapper(props: AppProps) {
}
{...seoConfig.defaultNextSeo}
/>
<I18nLanguageHandler />
<I18nLanguageHandler locales={props.router.locales || []} />
<Script
nonce={nonce}
id="page-status"
@@ -336,7 +336,7 @@ function BookingListItem(booking: BookingItemProps) {
</DialogContent>
</Dialog>
<tr className="hover:bg-muted group flex flex-col sm:flex-row">
<tr data-testid="booking-item" className="hover:bg-muted group flex flex-col sm:flex-row">
<td
className="hidden align-top ltr:pl-6 rtl:pr-6 sm:table-cell sm:min-w-[12rem]"
onClick={onClickTableData}>
@@ -368,7 +368,7 @@ function BookingListItem(booking: BookingItemProps) {
{t("error_collecting_card")}
</Badge>
) : booking.paid ? (
<Badge className="ltr:mr-2 rtl:ml-2" variant="green">
<Badge className="ltr:mr-2 rtl:ml-2" variant="green" data-testid="paid_badge">
{booking.payment[0].paymentOption === "HOLD" ? t("card_held") : t("paid")}
</Badge>
) : null}
@@ -35,6 +35,7 @@ import {
Tooltip,
} from "@calcom/ui";
import { Copy, Edit } from "@calcom/ui/components/icon";
import { IS_VISUAL_REGRESSION_TESTING } from "@calcom/web/constants";
import RequiresConfirmationController from "./RequiresConfirmationController";
@@ -286,36 +287,38 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
}}>
{/* Textfield has some margin by default we remove that so we can keep consitant aligment */}
<div className="lg:-ml-2">
<TextField
disabled
name="hashedLink"
label={t("private_link_label")}
data-testid="generated-hash-url"
labelSrOnly
type="text"
hint={t("private_link_hint")}
defaultValue={placeholderHashedLink}
addOnSuffix={
<Tooltip content={eventType.hashedLink ? t("copy_to_clipboard") : t("enabled_after_update")}>
<Button
color="minimal"
size="sm"
type="button"
className="hover:stroke-3 hover:text-emphasis min-w-fit !py-0 px-0 hover:bg-transparent"
aria-label="copy link"
onClick={() => {
navigator.clipboard.writeText(placeholderHashedLink);
if (eventType.hashedLink) {
showToast(t("private_link_copied"), "success");
} else {
showToast(t("enabled_after_update_description"), "warning");
}
}}>
<Copy className="h-4 w-4" />
</Button>
</Tooltip>
}
/>
{!IS_VISUAL_REGRESSION_TESTING && (
<TextField
disabled
name="hashedLink"
label={t("private_link_label")}
data-testid="generated-hash-url"
labelSrOnly
type="text"
hint={t("private_link_hint")}
defaultValue={placeholderHashedLink}
addOnSuffix={
<Tooltip content={eventType.hashedLink ? t("copy_to_clipboard") : t("enabled_after_update")}>
<Button
color="minimal"
size="sm"
type="button"
className="hover:stroke-3 hover:text-emphasis min-w-fit !py-0 px-0 hover:bg-transparent"
aria-label="copy link"
onClick={() => {
navigator.clipboard.writeText(placeholderHashedLink);
if (eventType.hashedLink) {
showToast(t("private_link_copied"), "success");
} else {
showToast(t("enabled_after_update_description"), "warning");
}
}}>
<Copy className="h-4 w-4" />
</Button>
</Tooltip>
}
/>
)}
</div>
</SettingsToggle>
<hr className="border-subtle" />
@@ -338,6 +341,7 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
toggleGuests(false);
formMethods.setValue("requiresConfirmation", false);
setRequiresConfirmation(false);
formMethods.setValue("metadata.multipleDuration", undefined);
formMethods.setValue("seatsPerTimeSlot", 2);
} else {
formMethods.setValue("seatsPerTimeSlot", null);
@@ -138,7 +138,7 @@ const EventTypeScheduleDetails = memo(
<Globe className="h-3.5 w-3.5 ltr:mr-2 rtl:ml-2" />
{schedule?.timeZone || <SkeletonText className="block h-5 w-32" />}
</span>
{!!schedule?.id && !schedule.isManaged && (
{!!schedule?.id && !schedule.isManaged && !schedule.readOnly && (
<Button
href={`/availability/${schedule.id}`}
disabled={isLoading}
@@ -202,6 +202,15 @@ const EventTypeSchedule = ({ eventType }: { eventType: EventTypeSetup }) => {
isManaged: false,
});
}
// We push the selected schedule from the event type if it's not part of the list response. This happens if the user is an admin but not the schedule owner.
else if (eventType.schedule && !schedules.find((schedule) => schedule.id === eventType.schedule)) {
options.push({
value: eventType.schedule,
label: eventType.scheduleName ?? t("default_schedule_name"),
isDefault: false,
isManaged: false,
});
}
setOptions(options);
@@ -118,6 +118,7 @@ export const EventSetupTab = (
const [selectedLocation, setSelectedLocation] = useState<LocationOption | undefined>(undefined);
const [multipleDuration, setMultipleDuration] = useState(eventType.metadata?.multipleDuration);
const orgBranding = useOrgBranding();
const seatsEnabled = formMethods.watch("seatsPerTimeSlotEnabled");
const locationOptions = props.locationOptions.map((locationOption) => {
const options = locationOption.options.filter((option) => {
@@ -508,6 +509,8 @@ export const EventSetupTab = (
<SettingsToggle
title={t("allow_booker_to_select_duration")}
checked={multipleDuration !== undefined}
disabled={seatsEnabled}
tooltip={seatsEnabled ? t("seat_options_doesnt_multiple_durations") : undefined}
onCheckedChange={() => {
if (multipleDuration !== undefined) {
setMultipleDuration(undefined);
@@ -20,10 +20,11 @@ const SetupAvailability = (props: ISetupAvailabilityProps) => {
const { t } = useLocale();
const { nextStep } = props;
const scheduleId = defaultScheduleId === null ? undefined : defaultScheduleId;
const queryAvailability = trpc.viewer.availability.schedule.get.useQuery(
{ scheduleId: defaultScheduleId! },
{ scheduleId: defaultScheduleId ?? undefined },
{
enabled: !!defaultScheduleId,
enabled: !!scheduleId,
}
);
@@ -12,9 +12,6 @@ const DisableUserImpersonation = ({ disableImpersonation }: { disableImpersonati
showToast(t("your_user_profile_updated_successfully"), "success");
await utils.viewer.me.invalidate();
},
async onSettled() {
await utils.viewer.public.i18n.invalidate();
},
});
return (
@@ -1,4 +1,5 @@
import { zodResolver } from "@hookform/resolvers/zod";
// eslint-disable-next-line no-restricted-imports
import { noop } from "lodash";
import { useCallback, useState } from "react";
import { Controller, FormProvider, useForm, useFormState } from "react-hook-form";
@@ -1,4 +1,5 @@
import classNames from "classnames";
// eslint-disable-next-line no-restricted-imports
import { debounce, noop } from "lodash";
import { useSession } from "next-auth/react";
import { usePathname, useRouter, useSearchParams } from "next/navigation";
@@ -50,7 +51,7 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
const pathname = usePathname();
const router = useRouter();
const { t } = useLocale();
const { data: session, update } = useSession();
const { update } = useSession();
const {
currentUsername,
setCurrentUsername = noop,
@@ -94,7 +95,6 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
debouncedApiCall(inputUsernameValue);
}, [debouncedApiCall, inputUsernameValue]);
const utils = trpc.useContext();
const updateUsername = trpc.viewer.updateProfile.useMutation({
onSuccess: async () => {
onSuccessMutation && (await onSuccessMutation());
@@ -104,9 +104,6 @@ const PremiumTextfield = (props: ICustomUsernameProps) => {
onError: (error) => {
onErrorMutation && onErrorMutation(error);
},
async onSettled() {
await utils.viewer.public.i18n.invalidate();
},
});
// when current username isn't set - Go to stripe to check what username he wanted to buy and was it a premium and was it paid for
@@ -1,4 +1,5 @@
import classNames from "classnames";
// eslint-disable-next-line no-restricted-imports
import { debounce, noop } from "lodash";
import { useSession } from "next-auth/react";
import type { RefCallback } from "react";
@@ -24,7 +25,7 @@ interface ICustomUsernameProps {
const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.ComponentProps<typeof TextField>>) => {
const { t } = useLocale();
const { data: session, update } = useSession();
const { update } = useSession();
const {
currentUsername,
@@ -65,8 +66,6 @@ const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.Component
}
}, [inputUsernameValue, debouncedApiCall, currentUsername]);
const utils = trpc.useContext();
const updateUsernameMutation = trpc.viewer.updateProfile.useMutation({
onSuccess: async () => {
onSuccessMutation && (await onSuccessMutation());
@@ -77,9 +76,6 @@ const UsernameTextfield = (props: ICustomUsernameProps & Partial<React.Component
onError: (error) => {
onErrorMutation && onErrorMutation(error);
},
async onSettled() {
await utils.viewer.public.i18n.invalidate();
},
});
const ActionButtons = () => {
@@ -1,35 +1,26 @@
import dynamic from "next/dynamic";
import { useSearchParams } from "next/navigation";
import { useState } from "react";
import { Controller, useForm } from "react-hook-form";
import { getOrgFullDomain } from "@calcom/features/ee/organizations/lib/orgDomains";
import { IS_SELF_HOSTED } from "@calcom/lib/constants";
import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider";
import { CAL_URL, IS_SELF_HOSTED } from "@calcom/lib/constants";
import type { TRPCClientErrorLike } from "@calcom/trpc/client";
import type { RouterOutputs } from "@calcom/trpc/react";
import { trpc } from "@calcom/trpc/react";
import type { AppRouter } from "@calcom/trpc/server/routers/_app";
import useRouterQuery from "@lib/hooks/useRouterQuery";
import { PremiumTextfield } from "./PremiumTextfield";
import { UsernameTextfield } from "./UsernameTextfield";
export const UsernameAvailability = IS_SELF_HOSTED ? UsernameTextfield : PremiumTextfield;
interface UsernameAvailabilityFieldProps {
onSuccessMutation?: () => void;
onErrorMutation?: (error: TRPCClientErrorLike<AppRouter>) => void;
}
function useUserNamePrefix(organization: RouterOutputs["viewer"]["me"]["organization"]): string {
return organization
? organization.slug
? getOrgFullDomain(organization.slug, { protocol: false })
: organization.metadata && organization.metadata.requestedSlug
? getOrgFullDomain(organization.metadata.requestedSlug, { protocol: false })
: process.env.NEXT_PUBLIC_WEBSITE_URL.replace("https://", "").replace("http://", "")
: process.env.NEXT_PUBLIC_WEBSITE_URL.replace("https://", "").replace("http://", "");
}
export const getUsernameAvailabilityComponent = (isPremium: boolean) => {
if (isPremium)
return dynamic(() => import("./PremiumTextfield").then((m) => m.PremiumTextfield), { ssr: false });
return dynamic(() => import("./UsernameTextfield").then((m) => m.UsernameTextfield), { ssr: false });
};
export const UsernameAvailabilityField = ({
onSuccessMutation,
@@ -49,7 +40,12 @@ export const UsernameAvailabilityField = ({
},
});
const usernamePrefix = useUserNamePrefix(user.organization);
const UsernameAvailability = getUsernameAvailabilityComponent(!IS_SELF_HOSTED && !user.organization?.id);
const orgBranding = useOrgBranding();
const usernamePrefix = orgBranding
? orgBranding?.fullDomain.replace(/^(https?:|)\/\//, "")
: `${CAL_URL?.replace(/^(https?:|)\/\//, "")}`;
return (
<Controller
@@ -65,6 +61,7 @@ export const UsernameAvailabilityField = ({
setInputUsernameValue={onChange}
onSuccessMutation={onSuccessMutation}
onErrorMutation={onErrorMutation}
disabled={!!user.organization?.id}
addOnLeading={`${usernamePrefix}/`}
/>
);
+1
View File
@@ -0,0 +1 @@
export const IS_VISUAL_REGRESSION_TESTING = Boolean(globalThis.window?.Meticulous?.isRunningAsTest);
+4 -7
View File
@@ -1,7 +1,6 @@
import { TooltipProvider } from "@radix-ui/react-tooltip";
import type { Session } from "next-auth";
import { SessionProvider } from "next-auth/react";
import { useSession } from "next-auth/react";
import { SessionProvider, useSession } from "next-auth/react";
import { EventCollectionProvider } from "next-collect/client";
import type { SSRConfig } from "next-i18next";
import { appWithTranslation } from "next-i18next";
@@ -21,7 +20,7 @@ import { MetaProvider } from "@calcom/ui";
import useIsBookingPage from "@lib/hooks/useIsBookingPage";
import type { WithNonceProps } from "@lib/withNonce";
import { useViewerI18n } from "@components/I18nLanguageHandler";
import { useClientViewerI18n } from "@components/I18nLanguageHandler";
const I18nextAdapter = appWithTranslation<
NextJsAppProps<SSRConfig> & {
@@ -69,11 +68,9 @@ type AppPropsWithoutNonce = Omit<AppPropsWithChildren, "pageProps"> & {
const CustomI18nextProvider = (props: AppPropsWithoutNonce) => {
/**
* i18n should never be clubbed with other queries, so that it's caching can be managed independently.
* We intend to not cache i18n query
**/
const { i18n, locale } = useViewerI18n().data ?? {
locale: "en",
};
const clientViewerI18n = useClientViewerI18n(props.router.locales || []);
const { i18n, locale } = clientViewerI18n.data || {};
const passedProps = {
...props,
-53
View File
@@ -1,53 +0,0 @@
import parser from "accept-language-parser";
import type { IncomingMessage } from "http";
import type { GetServerSidePropsContext } from "next";
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import type { Maybe } from "@calcom/trpc/server";
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { i18n } = require("@calcom/config/next-i18next.config");
export function getLocaleFromHeaders(req: IncomingMessage): string {
let preferredLocale: string | null | undefined;
if (req.headers["accept-language"]) {
preferredLocale = parser.pick(i18n.locales, req.headers["accept-language"]) as Maybe<string>;
}
return preferredLocale ?? i18n.defaultLocale;
}
export const getOrSetUserLocaleFromHeaders = async (
req: GetServerSidePropsContext["req"],
res: GetServerSidePropsContext["res"]
): Promise<string> => {
const { default: prisma } = await import("@calcom/prisma");
const session = await getServerSession({ req, res });
const preferredLocale = getLocaleFromHeaders(req);
if (session?.user?.id) {
const user = await prisma.user.findUnique({
where: {
id: session.user.id,
},
select: {
locale: true,
},
});
if (user?.locale) {
return user.locale;
}
await prisma.user.update({
where: {
id: session.user.id,
},
data: {
locale: preferredLocale,
},
});
}
return preferredLocale;
};
+4
View File
@@ -3,6 +3,7 @@ const CopyWebpackPlugin = require("copy-webpack-plugin");
const os = require("os");
const englishTranslation = require("./public/static/locales/en/common.json");
const { withAxiom } = require("next-axiom");
const { version } = require("./package.json");
const { i18n } = require("./next-i18next.config");
const {
orgHostPath,
@@ -14,6 +15,9 @@ const {
if (!process.env.NEXTAUTH_SECRET) throw new Error("Please set NEXTAUTH_SECRET");
if (!process.env.CALENDSO_ENCRYPTION_KEY) throw new Error("Please set CALENDSO_ENCRYPTION_KEY");
// To be able to use the version in the app without having to import package.json
process.env.NEXT_PUBLIC_CALCOM_VERSION = version;
// So we can test deploy previews preview
if (process.env.VERCEL_URL && !process.env.NEXT_PUBLIC_WEBAPP_URL) {
process.env.NEXT_PUBLIC_WEBAPP_URL = "https://" + process.env.VERCEL_URL;
+2 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@calcom/web",
"version": "3.2.1",
"version": "3.2.5",
"private": true,
"scripts": {
"analyze": "ANALYZE=true next build",
@@ -68,6 +68,7 @@
"@vercel/og": "^0.5.0",
"accept-language-parser": "^1.5.0",
"async": "^3.2.4",
"bcp-47-match": "^2.0.3",
"bcryptjs": "^2.4.3",
"classnames": "^2.3.1",
"dotenv-cli": "^6.0.0",
+1
View File
@@ -75,6 +75,7 @@ export default function Custom404() {
)}`
);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const isSuccessPage = pathname?.startsWith("/booking");
+1 -2
View File
@@ -53,7 +53,6 @@ export function UserPage(props: InferGetServerSidePropsType<typeof getServerSide
orgSlug: _orgSlug,
...query
} = useRouterQuery();
const nameOrUsername = user.name || user.username || "";
/*
const telemetry = useTelemetry();
@@ -98,7 +97,7 @@ export function UserPage(props: InferGetServerSidePropsType<typeof getServerSide
)}>
<div className="mb-8 text-center">
<Avatar imageSrc={profile.image} size="xl" alt={profile.name} />
<h1 className="font-cal text-emphasis mb-1 text-3xl">
<h1 className="font-cal text-emphasis mb-1 text-3xl" data-testid="name-title">
{profile.name}
{user.verified && (
<Verified className=" mx-1 -mt-1 inline h-6 w-6 fill-blue-500 text-white dark:text-black" />
+1 -1
View File
@@ -51,7 +51,7 @@ class MyDocument extends Document<Props> {
<meta name="msapplication-TileColor" content="#ff0000" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f9fafb" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#1C1C1C" />
{(!IS_PRODUCTION || process.env.VERCEL_ENV === "preview") && (
{!IS_PRODUCTION && process.env.VERCEL_ENV === "preview" && (
// eslint-disable-next-line @next/next/no-sync-scripts
<script
data-project-id="KjpMrKTnXquJVKfeqmjdTffVPf1a6Unw2LZ58iE4"
+7 -34
View File
@@ -8,7 +8,7 @@ import { sendEmailVerification } from "@calcom/features/auth/lib/verifyEmail";
import { IS_CALCOM } from "@calcom/lib/constants";
import slugify from "@calcom/lib/slugify";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { validateUsernameInOrg } from "@calcom/lib/validateUsernameInOrg";
import { validateUsernameInTeam, validateUsername } from "@calcom/lib/validateUsername";
import prisma from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -65,41 +65,15 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
return res.status(401).json({ message: "Token expired" });
}
if (foundToken?.teamId) {
const isValidUsername = await validateUsernameInOrg(username, foundToken?.teamId);
if (!isValidUsername) {
return res.status(409).json({ message: "Username already taken" });
const teamUserValidation = await validateUsernameInTeam(username, userEmail, foundToken?.teamId);
if (!teamUserValidation.isValid) {
return res.status(409).json({ message: "Username or email is already taken" });
}
}
} else {
// There is an existingUser if the username matches
// OR if the email matches AND either the email is verified
// or both username and password are set
const existingUser = await prisma.user.findFirst({
where: {
OR: [
{ username },
{
AND: [
{ email: userEmail },
{
OR: [
{ emailVerified: { not: null } },
{
AND: [{ password: { not: null } }, { username: { not: null } }],
},
],
},
],
},
],
},
});
if (existingUser) {
const message: string =
existingUser.email !== userEmail ? "Username already taken" : "Email address is already registered";
return res.status(409).json({ message });
const userValidation = await validateUsername(username, userEmail);
if (!userValidation.isValid) {
return res.status(409).json({ message: "Username or email is already taken" });
}
}
@@ -111,7 +85,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
id: foundToken.teamId,
},
});
if (team) {
const teamMetadata = teamMetadataSchema.parse(team?.metadata);
-48
View File
@@ -7,54 +7,6 @@ import { getTranslation } from "@calcom/lib/server/i18n";
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
if (IS_PRODUCTION) return res.write("Only for development purposes"), res.end();
const t = await getTranslation("en", "common");
const language = { translate: t, locale: "en" };
const evt = {
type: "30min",
title: "30min between Pro Example and pro@example.com",
description: null,
additionalNotes: "asdasdas",
startTime: "2022-06-03T09:00:00-06:00",
endTime: "2022-06-03T09:30:00-06:00",
organizer: {
name: "Pro Example",
email: "pro@example.com",
timeZone: "Europe/London",
language,
},
attendees: [
{
email: "pro@example.com",
name: "pro@example.com",
timeZone: "America/Chihuahua",
language,
},
],
location: "Zoom video",
destinationCalendar: null,
hideCalendarNotes: false,
uid: "xxyPr4cg2xx4XoS2KeMEQy",
metadata: {},
recurringEvent: null,
appsStatus: [
{
appName: "Outlook Calendar",
type: "office365_calendar",
success: 1,
failures: 0,
errors: [],
warnings: [],
},
{
appName: "Google Meet",
type: "conferencing",
success: 0,
failures: 1,
errors: [],
warnings: ["In order to use Google Meet you must set your destination calendar to a Google Calendar"],
},
],
};
res.statusCode = 200;
@@ -0,0 +1,4 @@
import appBasecamp3 from "@calcom/app-store/basecamp3/trpc-router";
import { createNextApiHandler } from "@calcom/trpc/server/createNextApiHandler";
export default createNextApiHandler(appBasecamp3);
@@ -1,3 +1,4 @@
// eslint-disable-next-line no-restricted-imports
import { debounce } from "lodash";
import type { GetServerSidePropsContext } from "next";
import { getCsrfToken } from "next-auth/react";
+44 -4
View File
@@ -1,14 +1,16 @@
import { useAutoAnimate } from "@formkit/auto-animate/react";
import { useRouter } from "next/navigation";
import { useRouter, useSearchParams, usePathname } from "next/navigation";
import { useCallback } from "react";
import { getLayout } from "@calcom/features/MainLayout";
import { NewScheduleButton, ScheduleListItem } from "@calcom/features/schedules";
import { ShellMain } from "@calcom/features/shell/Shell";
import { AvailabilitySliderTable } from "@calcom/features/timezone-buddy/components/AvailabilitySliderTable";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { HttpError } from "@calcom/lib/http-error";
import type { RouterOutputs } from "@calcom/trpc/react";
import { trpc } from "@calcom/trpc/react";
import { EmptyScreen, showToast } from "@calcom/ui";
import { EmptyScreen, showToast, ToggleGroup } from "@calcom/ui";
import { Clock } from "@calcom/ui/components/icon";
import { withQuery } from "@lib/QueryCell";
@@ -129,14 +131,52 @@ const WithQuery = withQuery(trpc.viewer.availability.list as any);
export default function AvailabilityPage() {
const { t } = useLocale();
const searchParams = useSearchParams();
const router = useRouter();
const pathname = usePathname();
// Get a new searchParams string by merging the current
// searchParams with a provided key/value pair
const createQueryString = useCallback(
(name: string, value: string) => {
const params = new URLSearchParams(searchParams ?? undefined);
params.set(name, value);
return params.toString();
},
[searchParams]
);
return (
<div>
<ShellMain
heading={t("availability")}
hideHeadingOnMobile
subtitle={t("configure_availability")}
CTA={<NewScheduleButton />}>
<WithQuery success={({ data }) => <AvailabilityList {...data} />} customLoader={<SkeletonLoader />} />
CTA={
<div className="flex gap-2">
<ToggleGroup
className="hidden md:block"
defaultValue={searchParams?.get("type") ?? "mine"}
onValueChange={(value) => {
if (!value) return;
router.push(`${pathname}?${createQueryString("type", value)}`);
}}
options={[
{ value: "mine", label: t("my_availability") },
{ value: "team", label: t("team_availability") },
]}
/>
<NewScheduleButton />
</div>
}>
{searchParams?.get("type") === "team" ? (
<AvailabilitySliderTable />
) : (
<WithQuery
success={({ data }) => <AvailabilityList {...data} />}
customLoader={<SkeletonLoader />}
/>
)}
</ShellMain>
</div>
);
+1 -1
View File
@@ -728,7 +728,7 @@ export default function Success(props: SuccessProps) {
</div>
{isGmail && (
<Alert
className="main -mb-20 mt-4 inline-block ltr:text-right rtl:text-right sm:-mt-4 sm:mb-4 sm:w-full sm:max-w-xl sm:align-middle"
className="main -mb-20 mt-4 inline-block ltr:text-left rtl:text-right sm:-mt-4 sm:mb-4 sm:w-full sm:max-w-xl sm:align-middle"
severity="warning"
message={
<div>
+1 -1
View File
@@ -179,7 +179,7 @@ export default function Bookings() {
)}
<div className="pt-2 xl:pt-0">
<div className="border-subtle overflow-hidden rounded-md border">
<table className="w-full max-w-full table-fixed">
<table data-testid={`${status}-bookings`} className="w-full max-w-full table-fixed">
<tbody className="bg-default divide-subtle divide-y" data-testid="bookings">
{query.data.pages.map((page, index) => (
<Fragment key={index}>
@@ -132,6 +132,7 @@ export type FormValues = {
bookingFields: z.infer<typeof eventTypeBookingFields>;
availability?: AvailabilityOption;
bookerLayouts: BookerLayoutSettings;
multipleDurationEnabled: boolean;
};
export type CustomInputParsed = typeof customInputSchema._output;
@@ -278,6 +279,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
.filter((slug) => slug !== eventType.slug) ?? [],
},
})),
seatsPerTimeSlotEnabled: eventType.seatsPerTimeSlot,
};
}, [eventType, periodDates, metadata]);
@@ -375,7 +377,10 @@ const EventTypePage = (props: EventTypeSetupProps) => {
seatsPerTimeSlotEnabled,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
minimumBookingNoticeInDurationType,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
bookerLayouts,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
multipleDurationEnabled,
...input
} = values;
@@ -406,6 +411,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
throw new Error(t("seats_and_no_show_fee_error"));
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { availability, ...rest } = input;
updateMutation.mutate({
...rest,
@@ -463,6 +469,8 @@ const EventTypePage = (props: EventTypeSetupProps) => {
// We don't need to send send these values to the backend
// eslint-disable-next-line @typescript-eslint/no-unused-vars
seatsPerTimeSlotEnabled,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
multipleDurationEnabled,
...input
} = values;
@@ -488,6 +496,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
}
}
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { availability, ...rest } = input;
updateMutation.mutate({
...rest,
+4 -4
View File
@@ -832,13 +832,13 @@ const SetupProfileBanner = ({ closeAction }: { closeAction: () => void }) => {
const Main = ({
status,
error,
errorMessage,
data,
filters,
}: {
status: string;
data: GetByViewerResponse;
error: any;
errorMessage?: string;
filters: ReturnType<typeof getTeamsFiltersFromQuery>;
}) => {
const isMobile = useMediaQuery("(max-width: 768px)");
@@ -850,7 +850,7 @@ const Main = ({
}
if (status === "error") {
return <Alert severity="error" title="Something went wrong" message={error.message} />;
return <Alert severity="error" title="Something went wrong" message={errorMessage} />;
}
const isFilteredByOnlyOneItem =
@@ -947,7 +947,7 @@ const EventTypesPage = () => {
title="Event Types"
description="Create events to share for people to book on your calendar."
/>
<Main data={data} status={status} error={error} filters={filters} />
<Main data={data} status={status} errorMessage={error?.message} filters={filters} />
</ShellMain>
);
};
@@ -1,9 +1,9 @@
import UnverifiedOrgsPage from "@calcom/features/ee/organizations/pages/settings/admin/unverifiedOrgPage";
import AdminOrgsPage from "@calcom/features/ee/organizations/pages/settings/admin/AdminOrgPage";
import type { CalPageWrapper } from "@components/PageWrapper";
import PageWrapper from "@components/PageWrapper";
const Page = UnverifiedOrgsPage as CalPageWrapper;
const Page = AdminOrgsPage as CalPageWrapper;
Page.PageWrapper = PageWrapper;
export default Page;
@@ -57,7 +57,7 @@ const ApiKeysView = () => {
<div>
{isLoading ? null : data?.length ? (
<>
<div className="mb-8 mt-6 rounded-md border">
<div className="border-subtle mb-8 mt-6 rounded-md border">
{data.map((apiKey, index) => (
<ApiKeyListItem
key={apiKey.id}
+7 -17
View File
@@ -1,3 +1,4 @@
import { useSession } from "next-auth/react";
import { Controller, useForm } from "react-hook-form";
import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout";
@@ -20,8 +21,6 @@ import {
TimezoneSelect,
} from "@calcom/ui";
import { withQuery } from "@lib/QueryCell";
import PageWrapper from "@components/PageWrapper";
const SkeletonLoader = ({ title, description }: { title: string; description: string }) => {
@@ -45,11 +44,6 @@ interface GeneralViewProps {
user: RouterOutputs["viewer"]["me"];
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const WithQuery = withQuery(trpc.viewer.public.i18n as any, undefined, {
trpc: { context: { skipBatch: true } },
});
const GeneralQueryView = () => {
const { t } = useLocale();
@@ -58,30 +52,26 @@ const GeneralQueryView = () => {
if (!user) {
throw new Error(t("something_went_wrong"));
}
return (
<WithQuery
success={({ data }) => <GeneralView user={user} localeProp={data.locale} />}
customLoader={<SkeletonLoader title={t("general")} description={t("general_description")} />}
/>
);
return <GeneralView user={user} localeProp={user.locale} />;
};
const GeneralView = ({ localeProp, user }: GeneralViewProps) => {
const utils = trpc.useContext();
const { t } = useLocale();
const { update } = useSession();
const mutation = trpc.viewer.updateProfile.useMutation({
onSuccess: async () => {
// Invalidate our previous i18n cache
await utils.viewer.public.i18n.invalidate();
onSuccess: async (res) => {
await utils.viewer.me.invalidate();
reset(getValues());
showToast(t("settings_updated_successfully"), "success");
update(res);
},
onError: () => {
showToast(t("error_updating_settings"), "error");
},
onSettled: async () => {
await utils.viewer.public.i18n.invalidate();
await utils.viewer.me.invalidate();
},
});
+17 -15
View File
@@ -77,26 +77,25 @@ type FormValues = {
const ProfileView = () => {
const { t } = useLocale();
const utils = trpc.useContext();
const { data: _session, update } = useSession();
const { update } = useSession();
const { data: user, isLoading } = trpc.viewer.me.useQuery();
const updateProfileMutation = trpc.viewer.updateProfile.useMutation({
onSuccess: async (res) => {
await update(res);
showToast(t("settings_updated_successfully"), "success");
if (res.signOutUser && tempFormValues) {
if (res.passwordReset) {
showToast(t("password_reset_email", { email: tempFormValues.email }), "success");
// sign out the user to avoid unauthorized access error
await signOut({ callbackUrl: "/auth/logout?passReset=true" });
} else {
// sign out the user to avoid unauthorized access error
await signOut({ callbackUrl: "/auth/logout?emailChange=true" });
}
// signout user only in case of password reset
if (res.signOutUser && tempFormValues && res.passwordReset) {
showToast(t("password_reset_email", { email: tempFormValues.email }), "success");
await signOut({ callbackUrl: "/auth/logout?passReset=true" });
} else {
utils.viewer.me.invalidate();
utils.viewer.avatar.invalidate();
utils.viewer.shouldVerifyEmail.invalidate();
}
utils.viewer.me.invalidate();
utils.viewer.avatar.invalidate();
setConfirmAuthEmailChangeWarningDialogOpen(false);
update(res);
setTempFormValues(null);
},
onError: () => {
@@ -325,7 +324,10 @@ const ProfileView = () => {
{confirmPasswordErrorMessage && <Alert severity="error" title={confirmPasswordErrorMessage} />}
</div>
<DialogFooter showDivider>
<Button color="primary" onClick={(e) => onConfirmPassword(e)}>
<Button
color="primary"
loading={confirmPasswordMutation.isLoading}
onClick={(e) => onConfirmPassword(e)}>
{t("confirm")}
</Button>
<DialogClose />
@@ -345,7 +347,7 @@ const ProfileView = () => {
<DialogFooter>
<Button
color="primary"
disabled={updateProfileMutation.isLoading}
loading={updateProfileMutation.isLoading}
onClick={(e) => onConfirmAuthEmailChange(e)}>
{t("confirm")}
</Button>
+31 -23
View File
@@ -14,6 +14,7 @@ import { useFlagMap } from "@calcom/features/flags/context/provider";
import { getFeatureFlagMap } from "@calcom/features/flags/server/utils";
import { IS_SELF_HOSTED, WEBAPP_URL } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import slugify from "@calcom/lib/slugify";
import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
import type { inferSSRProps } from "@calcom/types/inferSSRProps";
@@ -130,10 +131,11 @@ export default function Signup({ prepopulateFormValues, token, orgSlug }: Signup
<TextField
addOnLeading={
orgSlug
? getOrgFullDomain(orgSlug, { protocol: false })
? getOrgFullDomain(orgSlug, { protocol: true })
: `${process.env.NEXT_PUBLIC_WEBSITE_URL}/`
}
{...register("username")}
disabled={!!orgSlug}
required
/>
<EmailField
@@ -192,8 +194,6 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
};
if (process.env.NEXT_PUBLIC_DISABLE_SIGNUP === "true" || flags["disable-signup"]) {
console.log({ flag: flags["disable-signup"] });
return {
notFound: true,
};
@@ -210,6 +210,20 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
where: {
token,
},
include: {
team: {
select: {
metadata: true,
parentId: true,
parent: {
select: {
slug: true,
},
},
slug: true,
},
},
},
});
if (!verificationToken || verificationToken.expires < new Date()) {
@@ -249,41 +263,35 @@ export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
let username = guessUsernameFromEmail(verificationToken.identifier);
const orgInfo = await prisma.user.findFirst({
where: {
email: verificationToken?.identifier,
},
select: {
organization: {
select: {
slug: true,
metadata: true,
},
},
},
});
const tokenTeam = {
...verificationToken?.team,
metadata: teamMetadataSchema.parse(verificationToken?.team?.metadata),
};
const userOrgMetadata = teamMetadataSchema.parse(orgInfo?.organization?.metadata ?? {});
// Detect if the team is an org by either the metadata flag or if it has a parent team
const isOrganization = tokenTeam.metadata?.isOrganization || tokenTeam?.parentId !== null;
// If we are dealing with an org, the slug may come from the team itself or its parent
const orgSlug = isOrganization
? tokenTeam.slug || tokenTeam.metadata?.requestedSlug || tokenTeam.parent?.slug
: null;
if (!IS_SELF_HOSTED) {
// Org context shouldn't check if a username is premium
if (!IS_SELF_HOSTED && !isOrganization) {
// Im not sure we actually hit this because of next redirects signup to website repo - but just in case this is pretty cool :)
const { available, suggestion } = await checkPremiumUsername(username);
username = available ? username : suggestion || username;
}
// Transform all + to - in username
username = username.replace(/\+/g, "-");
return {
props: {
...props,
token,
prepopulateFormValues: {
email: verificationToken.identifier,
username,
username: slugify(username),
},
orgSlug: (orgInfo?.organization?.slug || userOrgMetadata?.requestedSlug) ?? null,
orgSlug,
},
};
};
+12 -4
View File
@@ -182,7 +182,7 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio, isValidOrgDomain }
size="lg"
/>
</div>
<p className="font-cal text-emphasis mb-2 text-2xl tracking-wider">
<p className="font-cal text-emphasis mb-2 text-2xl tracking-wider" data-testid="team-name">
{team.parent && `${team.parent.name} `}
{teamName}
</p>
@@ -199,19 +199,27 @@ function TeamPage({ team, isUnpublished, markdownStrippedBio, isValidOrgDomain }
<SubTeams />
) : (
<>
{(showMembers.isOn || !team.eventTypes.length) && <Team team={team} />}
{(showMembers.isOn || !team.eventTypes.length) &&
(team.isPrivate ? (
<div className="w-full text-center">
<h2 className="text-emphasis font-semibold">{t("you_cannot_see_team_members")}</h2>
</div>
) : (
<Team team={team} />
))}
{!showMembers.isOn && team.eventTypes.length > 0 && (
<div className="mx-auto max-w-3xl ">
<EventTypes />
{!team.hideBookATeamMember && (
{/* Hide "Book a team member button when team is private or hideBookATeamMember is true" */}
{(!team.hideBookATeamMember || team.isPrivate) && (
<div>
<div className="relative mt-12">
<div className="absolute inset-0 flex items-center" aria-hidden="true">
<div className="border-subtle w-full border-t" />
</div>
<div className="relative flex justify-center">
<span className="dark:bg-darkgray-50 bg-subtle text-subtle dark:text-inverted px-2 text-sm">
<span className="dark:bg-darkgray-50 bg-subtle text-subtle px-2 text-sm">
{t("or")}
</span>
</div>
+7 -13
View File
@@ -1,5 +1,4 @@
import { expect } from "@playwright/test";
import type { Messages } from "mailhog";
import { randomString } from "@calcom/lib/random";
@@ -8,6 +7,7 @@ import {
bookFirstEvent,
bookOptinEvent,
bookTimeSlot,
expectEmailsToHaveSubject,
selectFirstAvailableTimeSlotNextMonth,
testEmail,
testName,
@@ -41,19 +41,13 @@ test.describe("free user", () => {
// Make sure we're navigated to the success page
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
const { title: eventTitle } = await user.getFirstEventAsOwner();
// TODO: follow DRY
const emailsOrganiserReceived = await emails.search(user.email, "to");
const emailsBookerReceived = await emails.search(bookerObj.email, "to");
expect(emailsOrganiserReceived?.total).toBe(1);
expect(emailsBookerReceived?.total).toBe(1);
const [organizerFirstEmail] = (emailsOrganiserReceived as Messages).items;
const [bookerFirstEmail] = (emailsBookerReceived as Messages).items;
const emailSubject = `${eventTitle} between ${user.name} and ${bookerObj.name}`;
expect(organizerFirstEmail.subject).toBe(emailSubject);
expect(bookerFirstEmail.subject).toBe(emailSubject);
await expectEmailsToHaveSubject({
emails,
organizer: user,
booker: bookerObj,
eventTitle,
});
await page.goto(bookingUrl);
// book same time spot again
+113
View File
@@ -0,0 +1,113 @@
import { expect } from "@playwright/test";
import { BookingStatus } from "@calcom/prisma/client";
import type { Fixtures } from "./lib/fixtures";
import { test } from "./lib/fixtures";
test.afterEach(({ users }) => users.deleteAll());
test.describe("Bookings", () => {
test.describe("Upcoming bookings", () => {
test("show attendee bookings and organizer bookings in asc order by startDate", async ({
page,
users,
bookings,
}) => {
const firstUser = await users.create();
const secondUser = await users.create();
const bookingWhereFirstUserIsOrganizerFixture = await createBooking({
title: "Booking as organizer",
bookingsFixture: bookings,
// Create a booking 3 days from today
relativeDate: 3,
organizer: firstUser,
organizerEventType: firstUser.eventTypes[0],
attendees: [
{ name: "First", email: "first@cal.com", timeZone: "Europe/Berlin" },
{ name: "Second", email: "second@cal.com", timeZone: "Europe/Berlin" },
{ name: "Third", email: "third@cal.com", timeZone: "Europe/Berlin" },
],
});
const bookingWhereFirstUserIsOrganizer = await bookingWhereFirstUserIsOrganizerFixture.self();
const bookingWhereFirstUserIsAttendeeFixture = await createBooking({
title: "Booking as attendee",
bookingsFixture: bookings,
organizer: secondUser,
// Booking created 2 days from today
relativeDate: 2,
organizerEventType: secondUser.eventTypes[0],
attendees: [
{ name: "OrganizerAsBooker", email: firstUser.email, timeZone: "Europe/Berlin" },
{ name: "Second", email: "second@cal.com", timeZone: "Europe/Berlin" },
{ name: "Third", email: "third@cal.com", timeZone: "Europe/Berlin" },
],
});
const bookingWhereFirstUserIsAttendee = await bookingWhereFirstUserIsAttendeeFixture.self();
await firstUser.apiLogin();
await page.goto(`/bookings/upcoming`);
const upcomingBookings = page.locator('[data-testid="upcoming-bookings"]');
const firstUpcomingBooking = upcomingBookings.locator('[data-testid="booking-item"]').nth(0);
const secondUpcomingBooking = upcomingBookings.locator('[data-testid="booking-item"]').nth(1);
await expect(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
firstUpcomingBooking.locator(`text=${bookingWhereFirstUserIsAttendee!.title}`)
).toBeVisible();
await expect(
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
secondUpcomingBooking.locator(`text=${bookingWhereFirstUserIsOrganizer!.title}`)
).toBeVisible();
});
});
});
async function createBooking({
bookingsFixture,
organizer,
organizerEventType,
attendees,
/**
* Relative date from today
* 0 means today
* 1 means tomorrow
*/
relativeDate = 0,
durationMins = 30,
title,
}: {
bookingsFixture: Fixtures["bookings"];
organizer: {
id: number;
username: string | null;
};
organizerEventType: {
id: number;
};
attendees: {
name: string;
email: string;
timeZone: string;
}[];
relativeDate?: number;
durationMins?: number;
title: string;
}) {
const DAY_MS = 24 * 60 * 60 * 1000;
const bookingDurationMs = durationMins * 60 * 1000;
const startTime = new Date(Date.now() + relativeDate * DAY_MS);
const endTime = new Date(Date.now() + relativeDate * DAY_MS + bookingDurationMs);
return await bookingsFixture.create(organizer.id, organizer.username, organizerEventType.id, {
title,
status: BookingStatus.ACCEPTED,
startTime,
endTime,
attendees: {
createMany: {
data: [...attendees],
},
},
});
}
+43
View File
@@ -1,3 +1,4 @@
import type { Page } from "@playwright/test";
import { expect } from "@playwright/test";
import { WEBAPP_URL } from "@calcom/lib/constants";
@@ -91,6 +92,7 @@ test.describe("Event Types tests", () => {
expect(formTitle).toBe(firstTitle);
expect(formSlug).toContain(firstSlug);
});
test("edit first event", async ({ page }) => {
const $eventTypes = page.locator("[data-testid=event-types] > li a");
const firstEventTypeElement = $eventTypes.first();
@@ -152,5 +154,46 @@ test.describe("Event Types tests", () => {
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
});
test.describe("Different Locations Tests", () => {
test("can add Attendee Phone Number location and book with it", async ({ page }) => {
await gotoFirstEventType(page);
await selectAttendeePhoneNumber(page);
await saveEventType(page);
await gotoBookingPage(page);
await selectFirstAvailableTimeSlotNextMonth(page);
await page.locator(`[data-fob-field-name="location"] input`).fill("9199999999");
await bookTimeSlot(page);
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
await expect(page.locator("text=+19199999999")).toBeVisible();
});
});
});
});
const selectAttendeePhoneNumber = async (page: Page) => {
const locationOptionText = "Attendee Phone Number";
await page.locator("#location-select").click();
await page.locator(`text=${locationOptionText}`).click();
};
async function gotoFirstEventType(page: Page) {
const $eventTypes = page.locator("[data-testid=event-types] > li a");
const firstEventTypeElement = $eventTypes.first();
await firstEventTypeElement.click();
await page.waitForURL((url) => {
return !!url.pathname.match(/\/event-types\/.+/);
});
}
async function saveEventType(page: Page) {
await page.locator("[data-testid=update-eventtype]").click();
}
async function gotoBookingPage(page: Page) {
const previewLink = await page.locator("[data-testid=preview-button]").getAttribute("href");
await page.goto(previewLink ?? "");
}
+6 -3
View File
@@ -19,9 +19,12 @@ export const createBookingsFixture = (page: Page) => {
username: string | null,
eventTypeId = -1,
{
title = "",
rescheduled = false,
paid = false,
status = "ACCEPTED",
startTime,
endTime,
attendees = {
create: {
email: "attendee@example.com",
@@ -39,9 +42,9 @@ export const createBookingsFixture = (page: Page) => {
const booking = await prisma.booking.create({
data: {
uid: uid,
title: "30min",
startTime: startDate,
endTime: endDateParam || dayjs().add(1, "day").add(30, "minutes").toDate(),
title: title || "30min",
startTime: startTime || startDate,
endTime: endTime || endDateParam || dayjs().add(1, "day").add(30, "minutes").toDate(),
user: {
connect: {
id: userId,
+57 -16
View File
@@ -5,6 +5,7 @@ import { hashSync as hash } from "bcryptjs";
import type { API } from "mailhog";
import dayjs from "@calcom/dayjs";
import stripe from "@calcom/features/ee/payments/server/stripe";
import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability";
import { prisma } from "@calcom/prisma";
import { MembershipRole, SchedulingType } from "@calcom/prisma/enums";
@@ -117,7 +118,7 @@ const createTeamAndAddUser = async (
};
// creates a user fixture instance and stores the collection
export const createUsersFixture = (page: Page, emails: API, workerInfo: WorkerInfo) => {
export const createUsersFixture = (page: Page, emails: API | undefined, workerInfo: WorkerInfo) => {
const store = { users: [], page } as { users: UserFixture[]; page: typeof page };
return {
create: async (
@@ -331,19 +332,22 @@ export const createUsersFixture = (page: Page, emails: API, workerInfo: WorkerIn
await page.goto("/auth/logout");
},
deleteAll: async () => {
const emailMessageIds: string[] = [];
const ids = store.users.map((u) => u.id);
for (const user of store.users) {
const emailMessages = await emails.search(user.email);
if (emailMessages && emailMessages.count > 0) {
emailMessages.items.forEach((item) => {
emailMessageIds.push(item.ID);
});
if (emails) {
const emailMessageIds: string[] = [];
for (const user of store.users) {
const emailMessages = await emails.search(user.email);
if (emailMessages && emailMessages.count > 0) {
emailMessages.items.forEach((item) => {
emailMessageIds.push(item.ID);
});
}
}
for (const id of emailMessageIds) {
await emails.deleteMessage(id);
}
}
for (const id of emailMessageIds) {
await emails.deleteMessage(id);
}
await prisma.user.deleteMany({ where: { id: { in: ids } } });
store.users = [];
},
@@ -416,8 +420,8 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
getPaymentCredential: async () => getPaymentCredential(store.page),
setupEventWithPrice: async (eventType: Pick<Prisma.EventType, "id">) =>
setupEventWithPrice(eventType, store.page),
bookAndPaidEvent: async (eventType: Pick<Prisma.EventType, "slug">) =>
bookAndPaidEvent(user, eventType, store.page),
bookAndPayEvent: async (eventType: Pick<Prisma.EventType, "slug">) =>
bookAndPayEvent(user, eventType, store.page),
makePaymentUsingStripe: async () => makePaymentUsingStripe(store.page),
// ths is for developemnt only aimed to inject debugging messages in the metadata field of the user
debug: async (message: string | Record<string, JSONValue>) => {
@@ -427,6 +431,7 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
});
},
delete: async () => await prisma.user.delete({ where: { id: store.user.id } }),
confirmPendingPayment: async () => confirmPendingPayment(store.page),
};
};
@@ -437,12 +442,18 @@ type CustomUserOptsKeys = "username" | "password" | "completedOnboarding" | "loc
type CustomUserOpts = Partial<Pick<Prisma.User, CustomUserOptsKeys>> & {
timeZone?: TimeZoneEnum;
eventTypes?: SupportedTestEventTypes[];
// ignores adding the worker-index after username
useExactUsername?: boolean;
};
// creates the actual user in the db.
const createUser = (workerInfo: WorkerInfo, opts?: CustomUserOpts | null): PrismaType.UserCreateInput => {
// build a unique name for our user
const uname = `${opts?.username || "user"}-${workerInfo.workerIndex}-${Date.now()}`;
const uname =
opts?.useExactUsername && opts?.username
? opts.username
: `${opts?.username || "user"}-${workerInfo.workerIndex}-${Date.now()}`;
return {
username: uname,
name: opts?.name,
@@ -468,6 +479,36 @@ const createUser = (workerInfo: WorkerInfo, opts?: CustomUserOpts | null): Prism
};
};
async function confirmPendingPayment(page: Page) {
await page.waitForURL(new RegExp("/booking/*"));
const url = page.url();
const params = new URLSearchParams(url.split("?")[1]);
const id = params.get("payment_intent");
if (!id) throw new Error(`Payment intent not found in url ${url}`);
const payload = JSON.stringify(
{ type: "payment_intent.succeeded", data: { object: { id } }, account: "e2e_test" },
null,
2
);
const signature = stripe.webhooks.generateTestHeaderString({
payload,
secret: process.env.STRIPE_WEBHOOK_SECRET as string,
});
const response = await page.request.post("/api/integrations/stripepayment/webhook", {
data: payload,
headers: { "stripe-signature": signature },
});
if (response.status() !== 200) throw new Error(`Failed to confirm payment. Response: ${response.text()}`);
}
// login using a replay of an E2E routine.
export async function login(
user: Pick<Prisma.User, "username"> & Partial<Pick<Prisma.User, "password" | "email">>,
@@ -501,7 +542,7 @@ export async function apiLogin(
.then((json) => json.csrfToken);
const data = {
email: user.email ?? `${user.username}@example.com`,
password: user.password ?? user.username!,
password: user.password ?? user.username,
callbackURL: "http://localhost:3000/",
redirect: "false",
json: "true",
@@ -519,7 +560,7 @@ export async function setupEventWithPrice(eventType: Pick<Prisma.EventType, "id"
await page.getByTestId("update-eventtype").click();
}
export async function bookAndPaidEvent(
export async function bookAndPayEvent(
user: Pick<Prisma.User, "username">,
eventType: Pick<Prisma.EventType, "slug">,
page: Page
+56 -6
View File
@@ -1,6 +1,7 @@
import { expect } from "@playwright/test";
import type Prisma from "@prisma/client";
import type { Fixtures } from "./lib/fixtures";
import { test } from "./lib/fixtures";
import { todo, selectFirstAvailableTimeSlotNextMonth } from "./lib/testUtils";
@@ -41,7 +42,7 @@ test.describe("Stripe integration", () => {
await user.getPaymentCredential();
await user.setupEventWithPrice(eventType);
await user.bookAndPaidEvent(eventType);
await user.bookAndPayEvent(eventType);
// success
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
});
@@ -78,7 +79,7 @@ test.describe("Stripe integration", () => {
await user.getPaymentCredential();
await user.setupEventWithPrice(eventType);
await user.bookAndPaidEvent(eventType);
await user.bookAndPayEvent(eventType);
// Rescheduling the event
await Promise.all([page.waitForURL("/booking/*"), page.click('[data-testid="reschedule-link"]')]);
@@ -92,8 +93,57 @@ test.describe("Stripe integration", () => {
await user.makePaymentUsingStripe();
});
todo("Payment should confirm pending payment booking");
todo("Payment should trigger a BOOKING_PAID webhook");
todo("Paid booking should be able to be cancelled");
todo("Cancelled paid booking should be refunded");
test("Paid booking should be able to be cancelled", async ({ page, users }) => {
const user = await users.create();
const eventType = user.eventTypes.find((e) => e.slug === "paid") as Prisma.EventType;
await user.apiLogin();
await page.goto("/apps/installed");
await user.getPaymentCredential();
await user.setupEventWithPrice(eventType);
await user.bookAndPayEvent(eventType);
await page.click('[data-testid="cancel"]');
await page.click('[data-testid="confirm_cancel"]');
await expect(await page.locator('[data-testid="cancelled-headline"]').first()).toBeVisible();
});
test.describe("When event is paid and confirmed", () => {
let user: Awaited<ReturnType<Fixtures["users"]["create"]>>;
let eventType: Prisma.EventType;
test.beforeEach(async ({ page, users }) => {
user = await users.create();
eventType = user.eventTypes.find((e) => e.slug === "paid") as Prisma.EventType;
await user.apiLogin();
await page.goto("/apps/installed");
await user.getPaymentCredential();
await user.setupEventWithPrice(eventType);
await user.bookAndPayEvent(eventType);
await user.confirmPendingPayment();
});
test("Cancelled paid booking should be refunded", async ({ page, users, request }) => {
await page.click('[data-testid="cancel"]');
await page.click('[data-testid="confirm_cancel"]');
await expect(await page.locator('[data-testid="cancelled-headline"]').first()).toBeVisible();
await expect(page.getByText("This booking payment has been refunded")).toBeVisible();
});
test("Payment should confirm pending payment booking", async ({ page, users }) => {
await page.goto("/bookings/upcoming");
const paidBadge = page.locator('[data-testid="paid_badge"]').first();
await expect(paidBadge).toBeVisible();
expect(await paidBadge.innerText()).toBe("Paid");
});
todo("Payment should trigger a BOOKING_PAID webhook");
todo("Paid and confirmed booking should be able to be rescheduled");
});
});
+8 -3
View File
@@ -3,6 +3,7 @@ import { test as base } from "@playwright/test";
import type { API } from "mailhog";
import mailhog from "mailhog";
import { IS_MAILHOG_ENABLED } from "@calcom/lib/constants";
import prisma from "@calcom/prisma";
import type { ExpectedUrlDetails } from "../../../../playwright.config";
@@ -21,7 +22,7 @@ export interface Fixtures {
getActionFiredDetails: ReturnType<typeof createGetActionFiredDetails>;
servers: ReturnType<typeof createServersFixture>;
prisma: typeof prisma;
emails: API;
emails?: API;
}
declare global {
@@ -71,7 +72,11 @@ export const test = base.extend<Fixtures>({
await use(prisma);
},
emails: async ({}, use) => {
const mailhogAPI = mailhog();
await use(mailhogAPI);
if (IS_MAILHOG_ENABLED) {
const mailhogAPI = mailhog();
await use(mailhogAPI);
} else {
await use(undefined);
}
},
});
+38
View File
@@ -2,7 +2,9 @@ import type { Page } from "@playwright/test";
import { expect } from "@playwright/test";
import type { IncomingMessage, ServerResponse } from "http";
import { createServer } from "http";
// eslint-disable-next-line no-restricted-imports
import { noop } from "lodash";
import type { API, Messages } from "mailhog";
import { test } from "./fixtures";
@@ -190,3 +192,39 @@ export async function installAppleCalendar(page: Page) {
await page.waitForURL("/apps/apple-calendar");
await page.click('[data-testid="install-app-button"]');
}
export async function getEmailsReceivedByUser({
emails,
userEmail,
}: {
emails?: API;
userEmail: string;
}): Promise<Messages | null> {
if (!emails) return null;
return emails.search(userEmail, "to");
}
export async function expectEmailsToHaveSubject({
emails,
organizer,
booker,
eventTitle,
}: {
emails?: API;
organizer: { name?: string | null; email: string };
booker: { name: string; email: string };
eventTitle: string;
}) {
if (!emails) return null;
const emailsOrganizerReceived = await getEmailsReceivedByUser({ emails, userEmail: organizer.email });
const emailsBookerReceived = await getEmailsReceivedByUser({ emails, userEmail: booker.email });
expect(emailsOrganizerReceived?.total).toBe(1);
expect(emailsBookerReceived?.total).toBe(1);
const [organizerFirstEmail] = (emailsOrganizerReceived as Messages).items;
const [bookerFirstEmail] = (emailsBookerReceived as Messages).items;
const emailSubject = `${eventTitle} between ${organizer.name ?? "Nameless"} and ${booker.name}`;
expect(organizerFirstEmail.subject).toBe(emailSubject);
expect(bookerFirstEmail.subject).toBe(emailSubject);
}
@@ -202,7 +202,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
await addQuestionAndSave({
page,
question: {
name: "how_are_you",
name: "how-are-you",
type: "Address",
label: "How are you?",
placeholder: "I'm fine, thanks",
@@ -214,7 +214,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
const allFieldsLocator = await expectSystemFieldsToBeThereOnBookingPage({ page });
const userFieldLocator = allFieldsLocator.nth(5);
await expect(userFieldLocator.locator('[name="how_are_you"]')).toBeVisible();
await expect(userFieldLocator.locator('[name="how-are-you"]')).toBeVisible();
// There are 2 labels right now. Will be one in future. The second one is hidden
expect(await getLabelText(userFieldLocator)).toBe("How are you?");
await expect(userFieldLocator.locator("input")).toBeVisible();
@@ -223,18 +223,18 @@ async function runTestStepsCommonForTeamAndUserEventType(
await test.step("Hide Question and see that it's not shown on Booking Page", async () => {
await toggleQuestionAndSave({
name: "how_are_you",
name: "how-are-you",
page,
});
await doOnFreshPreview(page, context, async (page) => {
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how_are_you"]');
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how-are-you"]');
await expect(formBuilderFieldLocator).toBeHidden();
});
});
await test.step("Show Question Again", async () => {
await toggleQuestionAndSave({
name: "how_are_you",
name: "how-are-you",
page,
});
});
@@ -242,7 +242,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
await test.step('Try to book without providing "How are you?" response', async () => {
await doOnFreshPreview(page, context, async (page) => {
await bookTimeSlot({ page, name: "Booker", email: "booker@example.com" });
await expectErrorToBeThereFor({ page, name: "how_are_you" });
await expectErrorToBeThereFor({ page, name: "how-are-you" });
});
});
@@ -260,18 +260,18 @@ async function runTestStepsCommonForTeamAndUserEventType(
page,
context,
async (page) => {
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how_are_you"]');
const formBuilderFieldLocator = page.locator('[data-fob-field-name="how-are-you"]');
await expect(formBuilderFieldLocator).toBeVisible();
expect(
await formBuilderFieldLocator.locator('[name="how_are_you"]').getAttribute("placeholder")
await formBuilderFieldLocator.locator('[name="how-are-you"]').getAttribute("placeholder")
).toBe("I'm fine, thanks");
expect(await getLabelText(formBuilderFieldLocator)).toBe("How are you?");
await formBuilderFieldLocator.locator('[name="how_are_you"]').fill("I am great!");
await formBuilderFieldLocator.locator('[name="how-are-you"]').fill("I am great!");
await bookTimeSlot({ page, name: "Booker", email: "booker@example.com" });
await expect(page.locator("[data-testid=success-page]")).toBeVisible();
expect(
await page.locator('[data-testid="field-response"][data-fob-field="how_are_you"]').innerText()
await page.locator('[data-testid="field-response"][data-fob-field="how-are-you"]').innerText()
).toBe("I am great!");
await waitFor(() => {
@@ -287,7 +287,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
label: "email_address",
value: "booker@example.com",
},
how_are_you: {
"how-are-you": {
label: "How are you?",
value: "I am great!",
},
@@ -303,7 +303,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
});
expect(payload.userFieldsResponses).toMatchObject({
how_are_you: {
"how-are-you": {
label: "How are you?",
value: "I am great!",
},
+42
View File
@@ -135,6 +135,48 @@ test.describe("Teams", () => {
expect(teamMatesObj.some(({ name }) => name === chosenUser)).toBe(true);
// TODO: Assert whether the user received an email
});
test("Can create team with same name as user", async ({ page, users }) => {
// Name to be used for both user and team
const uniqueName = "test-unique-name";
const ownerObj = { username: uniqueName, name: uniqueName, useExactUsername: true };
const user = await users.create(ownerObj);
await user.apiLogin();
await page.goto("/teams");
await test.step("Can create team with same name", async () => {
// Click text=Create Team
await page.locator("text=Create Team").click();
await page.waitForURL("/settings/teams/new");
// Fill input[name="name"]
await page.locator('input[name="name"]').fill(uniqueName);
// Click text=Continue
await page.locator("text=Continue").click();
await page.waitForURL(/\/settings\/teams\/(\d+)\/onboard-members$/i);
// Click text=Continue
await page.locator("text=Publish team").click();
await page.waitForURL(/\/settings\/teams\/(\d+)\/profile$/i);
});
await test.step("Can access user and team with same slug", async () => {
// Go to team page and confirm name
const teamUrl = `/team/${uniqueName}`;
await page.goto(teamUrl);
await page.waitForURL(teamUrl);
await expect(page.locator("[data-testid=team-name]")).toHaveText(uniqueName);
// Go to user page and confirm name
const userUrl = `/${uniqueName}`;
await page.goto(userUrl);
await page.waitForURL(userUrl);
await expect(page.locator("[data-testid=name-title]")).toHaveText(uniqueName);
// cleanup team
const team = await prisma.team.findFirst({ where: { slug: uniqueName } });
await prisma.team.delete({ where: { id: team?.id } });
});
});
todo("Create a Round Robin with different leastRecentlyBooked hosts");
todo("Reschedule a Collective EventType booking");
todo("Reschedule a Round Robin EventType booking");
+1
View File
@@ -184,6 +184,7 @@ test.describe("BOOKING_REJECTED", async () => {
expect(webhookReceiver.requestList.length).toBe(1);
});
const [request] = webhookReceiver.requestList;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const body = request.body as any;
// remove dynamic properties that differs depending on where you run the tests
+82 -82
View File
@@ -13,15 +13,15 @@
"reset_password_subject": "{{appName}}: إرشادات إعادة تعيين كلمة المرور",
"verify_email_subject": "{{appName}}: تأكيد حسابك",
"check_your_email": "تحقق من بريدك الإلكتروني",
"verify_email_page_body": "أرسلنا رسالة إلكترونية إلى {{email}}. من المهم تأكيد عنوان بريدك الإلكتروني لضمان أفضل قابلية تسليم للبريد الإلكتروني والرزنامة من {{appName}}.",
"verify_email_banner_body": "قم بتأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والرزنامة",
"verify_email_page_body": "أرسلنا رسالة إلكترونية إلى {{email}}. من المهم تأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والتقويم من {{appName}}.",
"verify_email_banner_body": "قم بتأكيد عنوان بريدك الإلكتروني لضمان أفضل تسليم للبريد الإلكتروني والتقويم",
"verify_email_email_header": "تأكيد عنوان بريدك الإلكتروني",
"verify_email_email_button": "تأكيد البريد الإلكتروني",
"verify_email_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني بالنقر على الزر أدناه.",
"verify_email_email_link_text": "إليك الرابط في حال لم تكن ترغب بالنقر على أي أزرار:",
"verify_email_email_body": "الرجاء تأكيد عنوان بريدك الإلكتروني بالنقر فوق الزر أدناه.",
"verify_email_email_link_text": "إليك الرابط في حال لم تكن ترغب بالنقر فوق أي أزرار:",
"email_sent": "تم إرسال الرسالة الإلكترونية بنجاح",
"event_declined_subject": "تم الرفض: {{title}} في {{date}}",
"event_cancelled_subject": "تم إلغاء: {{title}} في {{date}}",
"event_cancelled_subject": "تم الإلغاء: {{title}} في {{date}}",
"event_request_declined": "تم رفض طلب الحدث الخاص بك",
"event_request_declined_recurring": "تم رفض طلب الحدث المتكرر الخاص بك",
"event_request_cancelled": "تم إلغاء حدثك المُجَدْوَل",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "تم التحديث - تم إعادة جدولة الحدث الخاص بك",
"request_reschedule_subtitle": "ألغى {{organizer}} الحجز وطلب منك اختيار حجز في وقت آخر.",
"request_reschedule_title_organizer": "لقد طلبت من {{attendee}} إعادة جدولة موعد",
"request_reschedule_subtitle_organizer": "لقد ألغيت الحجز، ويجب أن يختار {{attendee}} وقتًا جديداً للحجز معك.",
"request_reschedule_subtitle_organizer": "لقد ألغيت الحجز، ويجب أن يختار {{attendee}} وقتًا جديدًا للحجز معك.",
"rescheduled_event_type_subject": "تم إرسال طلب لإعادة الجدولة: {{eventType}} مع {{name}} في {{date}}",
"requested_to_reschedule_subject_attendee": "الإجراء المطلوب إعادة الجدولة: يُرجى حجز وقت جديد لمدة {{eventType}} مع {{name}}",
"hi_user_name": "مرحبا {{name}}",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "شكراً لك على تجربة خطة الفريق الجديدة التي نقدمها. لقد لاحظنا أن فريقك \"{{teamName}}\" بحاجة إلى الترقية.",
"upgrade_banner_action": "قم بالترقية هنا",
"team_upgraded_successfully": "تمت ترقية فريقك بنجاح!",
"org_upgrade_banner_description": "شكراً لك على تجربة الخطة الجديدة لمؤسستنا التي نقدمها. لقد لاحظنا أن مؤسستك \"{{teamName}}\" بحاجة إلى الترقية.",
"org_upgraded_successfully": "تمت ترقية مؤسستك بنجاح!",
"org_upgrade_banner_description": "شكرًا لك على تجربة خطة Organization الجديدة التي نقدمها. لقد لاحظنا أن منظمتك \"{{teamName}}\" بحاجة إلى الترقية.",
"org_upgraded_successfully": "تمت ترقية منظمتك بنجاح!",
"use_link_to_reset_password": "استخدم الرابط أدناه لإعادة تعيين كلمة المرور",
"hey_there": "مرحبًا،",
"forgot_your_password_calcom": "نسيت كلمة المرور الخاصة بك؟ - {{appName}}",
@@ -248,7 +248,7 @@
"organization_general_description": "إدارة الإعدادات للغة فريقك ومنطقته الزمنية",
"few_sentences_about_yourself": "اكتب بضع جمل عن نفسك. سيظهر هذا على صفحة عنوان URL الشخصية لديك.",
"nearly_there": "أوشكت على الانتهاء!",
"nearly_there_instructions": "وفي نهاية المطاف: يساعدك كتابة وصف موجز عنك ووضع صورة في الحصول على عمليات حجز وأن يعرف الأشخاص مع من سيحجزون حقًا.",
"nearly_there_instructions": "وأخيرًا، يساعدك الوصف الموجز عنك والصورة في الحصول على الحجوزات والسماح للأشخاص بمعرفة الشخص الذين يحجزون معه.",
"set_availability_instructions": "حدد الفترات الزمنية التي تكون متاحًا فيها بشكل متكرر. يمكنك لاحقًا تحديد المزيد منها وربطها مع تقاويم مختلفة.",
"set_availability": "تحديد الوقت الذي تكون فيه متاحًا",
"continue_without_calendar": "المتابعة من دون تقويم",
@@ -304,18 +304,18 @@
"success": "تم بنجاح",
"failed": "فشل",
"password_has_been_reset_login": "تمت إعادة تعيين كلمة المرور الخاصة بك. يمكنك الآن تسجيل الدخول باستخدام كلمة المرور التي تم إنشاؤها حديثًا.",
"layout": "تخطيط",
"layout": "التخطيط",
"bookerlayout_default_title": "العرض الافتراضي",
"bookerlayout_description": "يمكنك اختيار خيارات متعددة، ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض.",
"bookerlayout_user_settings_title": "تخطيط الحجز",
"bookerlayout_user_settings_description": "يمكنك تحديد خيارات متعددة ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض. يمكن إبطال هذا بحسب وضع كل فعالية.",
"bookerlayout_user_settings_description": "يمكنك تحديد خيارات متعددة ويمكن لمن يقومون بالحجز لديك تبديل طرق العرض. يمكن تجاوز هذا على أساس كل حدث.",
"bookerlayout_month_view": "شهر",
"bookerlayout_week_view": "أسبوعياً",
"bookerlayout_week_view": "أسبوعيًا",
"bookerlayout_column_view": "عمود",
"bookerlayout_error_min_one_enabled": "يجب تمكين تخطيط واحد على الأقل.",
"bookerlayout_error_default_not_enabled": "التخطيط الذي حددته كطريقة عرض افتراضية ليس جزءاً من التخطيطات التي تم تمكينها.",
"bookerlayout_error_unknown_layout": "التخطيط الذي اخترته ليس تخطيطاً صالحاً.",
"bookerlayout_override_global_settings": "يمكنك إدارة هذا لجميع أنواع فعالياتك في <2>إعدادات/المظهر</2> أو <6>إبطال لهذا الحدث فقط</6>.",
"bookerlayout_error_default_not_enabled": "التخطيط الذي حددته كطريقة عرض افتراضية ليس جزءًا من التخطيطات التي تم تمكينها.",
"bookerlayout_error_unknown_layout": "التخطيط الذي اخترته ليس تخطيطًا صالحًا.",
"bookerlayout_override_global_settings": "يمكنك إدارة هذا لجميع أنواع الأحداث لديك في <2>الإعدادات/المظهر</2> أو <6>التجاوز لهذا الحدث فقط</6>.",
"unexpected_error_try_again": "حدث خطأ غير متوقع. حاول مجددًا.",
"sunday_time_error": "وقت غير صالح يوم الأحد",
"monday_time_error": "وقت غير صالح يوم الاثنين",
@@ -337,9 +337,9 @@
"cancelling_event_recurring": "إن هذا الحدث أحد الأمثلة على حدث متكرر.",
"cancelling_all_recurring": "هذه هي كل الأمثلة المتبقية في الحدث المتكرر.",
"error_with_status_code_occured": "حدث خطأ برمز الحالة {{status}}.",
"error_event_type_url_duplicate": "يوجد بالفعل نوع فعالية مع هذا الرابط.",
"error_event_type_unauthorized_create": "أنت غير قادر على إنشاء هذه الفعالية",
"error_event_type_unauthorized_update": "أنت غير قادر على تعديل هذه الفعالية",
"error_event_type_url_duplicate": "يوجد بالفعل نوع حدث بهذا الرابط.",
"error_event_type_unauthorized_create": "أنت غير قادر على إنشاء هذا الحدث",
"error_event_type_unauthorized_update": "أنت غير قادر على تعديل هذا الحدث",
"error_workflow_unauthorized_create": "أنت غير قادر على إنشاء سير العمل هذا",
"error_schedule_unauthorized_create": "أنت غير قادر على إنشاء هذا الجدول الزمني",
"booking_already_cancelled": "تم إلغاء هذا الحجز بالفعل",
@@ -352,7 +352,7 @@
"no_status_bookings_yet_description": "ليست لديك عمليات حجز في حالة {{status}}.‏ {{description}}",
"event_between_users": "{{eventName}} بين {{host}} و{{attendeeName}}",
"bookings": "عمليات الحجز",
"booking_not_found": "الحجز غير موجود",
"booking_not_found": "لم يتم العثور على الحجز",
"bookings_description": "اطلع على الأحداث القادمة والسابقة المحجوزة لديك من خلال روابط أنواع الحدث.",
"upcoming_bookings": "بمجرد أن يحجز شخص ما موعدًا معك، سيظهر هنا.",
"recurring_bookings": "بمجرد أن يحجز شخص ما اجتماعًا متكررًا معك، سيظهر هنا.",
@@ -413,8 +413,8 @@
"team_webhooks": "فريق ويبهوكس",
"create_new_webhook_to_account": "إنشاء ويب هوك جديد لحسابك",
"new_webhook": "ويب هوك جديد",
"receive_cal_meeting_data": "تلقَّ بيانات اجتماعات {{appName}} على عنوان URL محدد، وفي الوقت الفعلي، عندما تتم جدولة حدث ما أو يتم إلغاؤه.",
"receive_cal_event_meeting_data": "تلقي بيانات اجتماعات {{appName}} على عنوان URL محدد، وفي الوقت الحقيقي، عندما تتم جدولة حدث ما أو إلغاؤه.",
"receive_cal_meeting_data": "احصل على بيانات اجتماع {{appName}} على رابط محدد، في الوقت الفعلي، عند جدولة حدث أو إلغائه.",
"receive_cal_event_meeting_data": "احصل على بيانات اجتماع {{appName}} على رابط محدد، في الوقت الفعلي، عند جدولة حدث أو إلغائه.",
"responsive_fullscreen_iframe": "إطار iframe سريع الاستجابة بكامل الشاشة",
"loading": "يجري التحميل...",
"deleting": "جارٍ الحذف...",
@@ -554,7 +554,7 @@
"member": "العضو",
"number_member_one": "{{count}} عضو",
"number_member_other": "{{count}} من الأعضاء",
"number_selected": "{{count}} تم اختيارها",
"number_selected": "تم تحديد {{count}}",
"owner": "المالك",
"admin": "المشرف",
"administrator_user": "المستخدم المسؤول",
@@ -872,16 +872,16 @@
"no_category_apps_description_automation": "إضافة تطبيق أتمتة لاستخدامه",
"no_category_apps_description_other": "أضف أي نوع آخر من التطبيقات للقيام بأي شيء",
"no_category_apps_description_web3": "إضافة تطبيق web3 لصفحات الحجز لديك",
"no_category_apps_description_messaging": "إضافة تطبيق مراسلة لإعداد التنبيهات والمذكرات المخصصة",
"no_category_apps_description_messaging": "إضافة تطبيق مراسلة لإعداد الإشعارات والتذكيرات المخصصة",
"no_category_apps_description_crm": "إضافة تطبيق CRM لتتبع من قابلته",
"installed_app_calendar_description": "قم بتعيين التقويمات للتحقق من وجود تعارضات لمنع الحجوزات المزدوجة.",
"installed_app_payment_description": "قم بإعداد أي خدمات معالجة دفع تود استخدامها عند التحصيل من العملاء.",
"installed_app_analytics_description": "تهيئة أي تطبيقات تستخدم لصفحات الحجز الخاصة بك",
"installed_app_other_description": "جميع تطبيقاتك المثبتة من الفئات الأخرى.",
"installed_app_conferencing_description": "تهيئة أي تطبيقات المؤتمرات لاستخدامها",
"installed_app_conferencing_description": "تكوين تطبيقات المؤتمرات المراد استخدامها",
"installed_app_automation_description": "تهيئة تطبيقات الأتمتة التي سيتم استخدامها",
"installed_app_web3_description": "تهيئة تطبيقات web3 التي يمكن استخدامها لصفحات الحجز لديك",
"installed_app_messaging_description": "تكوين أي تطبيقات الرسائل لاستخدامها لإعداد الإشعارات والمذكرات المخصصة",
"installed_app_messaging_description": "تكوين تطبيقات المراسلة المراد استخدامها لإعداد الإشعارات والتذكيرات المخصصة",
"installed_app_crm_description": "تهيئة تطبيقات CRM التي يمكن استخدامها لتتبع من قابلته",
"analytics": "التحليلات",
"empty_installed_apps_headline": "لم يتم تثبيت أي تطبيق",
@@ -908,7 +908,7 @@
"create_events_on": "إنشاء أحداث في",
"enterprise_license": "هذه هي ميزة للمؤسسات",
"enterprise_license_description": "لتمكين هذه الميزة، احصل على مفتاح نشر في وحدة التحكم {{consoleUrl}} وأضفه إلى وحدة التحكم الخاصة بك. nv باسم CALCOM_LICENSE_KEY. إذا كان لدى فريقك بالفعل ترخيص، يرجى الاتصال بـ {{supportMail}} للحصول على المساعدة.",
"enterprise_license_development": "يمكنك اختبار هذه الميزة في وضع التطوير. لاستخدام الإنتاج يرجى جعل المسؤول يذهب إلى <2>/auth/setup</2> لإدخال مفتاح الترخيص.",
"enterprise_license_development": "يمكنك اختبار هذه الميزة في وضع التطوير. لاستخدام الإنتاج، يرجى مطالبة المسؤول بالذهاب إلى <2>/auth/setup</2> لإدخال مفتاح الترخيص.",
"missing_license": "الترخيص مفقود",
"signup_requires": "يلزم ترخيص تجاري",
"signup_requires_description": "لا تقدم شركة {{companyName}} حاليًا إصدارًا مجانيًا مفتوح المصدر لصفحة التسجيل. للحصول على حق الوصول الكامل إلى مكونات التسجيل، يجب أن تحصل على ترخيص تجاري. للاستخدام الشخصي، نوصي باستخدام منصة Prisma Data أو أي واجهة أخرى من واجهات Postgres لإنشاء الحسابات.",
@@ -1001,9 +1001,9 @@
"user_impersonation_heading": "انتحال شخصية مستخدم",
"user_impersonation_description": "يسمح لفريق الدعم الخاص بنا بتسجيل الدخول مؤقتًا نيابة عنك لمساعدتنا على حل أي مشاكل تبلغ عنها بسرعة.",
"team_impersonation_description": "يسمح لمالكي/مشرفي فريقك بتسجيل الدخول مؤقتًا نيابة عنك.",
"make_team_private": "اجعل الفريق سري",
"make_team_private_description": "لن يتمكن أعضاء فريقك من رؤية أعضاء الفريق الآخرين عند تشغيل هذا.",
"you_cannot_see_team_members": "لا يمكنك رؤية جميع أعضاء فريق سري.",
"make_team_private": "اجعل الفريق خاصًا",
"make_team_private_description": "لن يتمكن أعضاء فريقك من رؤية أعضاء الفريق الآخرين عند تشغيل هذا الإعداد.",
"you_cannot_see_team_members": "لا يمكنك رؤية جميع أعضاء الفريق السري.",
"allow_booker_to_select_duration": "السماح لمن يقوم بالحجز بتحديد المدة",
"impersonate_user_tip": "يتم مراجعة جميع استخدامات هذه الميزة.",
"impersonating_user_warning": "انتحال اسم مستخدم \"{{user}}\".",
@@ -1071,18 +1071,18 @@
"event_location": "موقع الحدث",
"reschedule_optional": "سبب إعادة الجدولة (اختياري)",
"reschedule_placeholder": "أخبر الآخرين لماذا تحتاج إلى إعادة جدولة",
"event_cancelled": "تم إلغاء هذه الفعالية",
"event_cancelled": "تم إلغاء هذا الحدث",
"emailed_information_about_cancelled_event": "لقد أرسلنا إليك وإلى الحاضرين الآخرين بريداً إلكترونياً لإعلامهم.",
"this_input_will_shown_booking_this_event": "سيُعرَض هذا المُدخَل عند حجز هذا الحدث",
"meeting_url_in_conformation_email": "عنوان رابط الاجتماع موجود في رسالة التأكيد الإلكترونية",
"url_start_with_https": "يجب أن يبدأ العنوان بـ http:// أو https://",
"number_provided": "سيتم توفير رقم الهاتف",
"before_event_trigger": "قبل بدء الحدث",
"event_cancelled_trigger": "متى تم إلغاء هذه الفعالية",
"event_cancelled_trigger": "متى تم إلغاء هذا الحدث",
"new_event_trigger": "متى تم حجز الحدث الجديد",
"email_host_action": "إرسال رسالة إلكترونية إلى المضيف",
"email_attendee_action": "إرسال رسالة إلكترونية إلى الحضور",
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى واحد من الحضور",
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى أحد الحضور",
"sms_number_action": "إرسال رسالة نصية قصيرة إلى رقم محدد",
"workflows": "سير العمل",
"new_workflow_btn": "سير عمل جديد",
@@ -1331,9 +1331,9 @@
"event_one": "حدث",
"event_other": "أحداث",
"profile_team_description": "إدارة إعدادات الملف الشخصي لفريقك",
"profile_org_description": "إدارة الإعدادات لملف مؤسستك",
"profile_org_description": "إدارة الإعدادات لملف منظمتك",
"members_team_description": "المستخدمين الموجودين في المجموعة",
"organization_description": "إدارة المشرفين والأعضاء في مؤسستك",
"organization_description": "إدارة المسؤولين والأعضاء في منظمتك",
"team_url": "رابط الفريق",
"team_members": "أعضاء الفريق",
"more": "المزيد",
@@ -1479,10 +1479,10 @@
"yearly": "سنويًا",
"checkout": "الدفع",
"your_team_disbanded_successfully": "تم حل فريقك بنجاح",
"your_org_disbanded_successfully": "تم حل مؤسستك بنجاح",
"your_org_disbanded_successfully": "تم حل منظمتك بنجاح",
"error_creating_team": "خطأ في إنشاء فريق",
"you": "أنت",
"resend_email": "إعادة إرسال رسالة إلكترونية",
"resend_email": "إعادة إرسال رسالة البريد الإلكتروني",
"member_already_invited": "تمت دعوة العضو بالفعل",
"enter_email_or_username": "أدخل بريد إلكتروني أو اسم مستخدم",
"team_name_taken": "هذا الاسم مأخوذ بالفعل",
@@ -1548,7 +1548,7 @@
"no_apps": "لا توجد تطبيقات مفعلة لهذا المثال من Cal",
"no_apps_configured": "لم يتم تكوين أي تطبيق بعد",
"enable_in_settings": "يمكنك تمكين التطبيقات في الإعدادات",
"please_contact_admin": "الرجاء الاتصال بالمشرف",
"please_contact_admin": "يرجى الاتصال بالمسؤول",
"apps_settings": "إعدادات التطبيقات",
"fill_this_field": "يرجى ملء هذا الحقل",
"options": "خيارات",
@@ -1652,10 +1652,10 @@
"delete_sso_configuration_confirmation_description": "هل تريد بالتأكيد حذف تكوين {{connectionType}}؟ لن يتمكن أعضاء فريقك الذين يستخدمون معلومات تسجيل الدخول إلى {{connectionType}} من الوصول إلى Cal.com بعد الآن.",
"organizer_timezone": "منظم المناطق الزمنية",
"email_user_cta": "عرض الدعوة",
"email_no_user_invite_heading": "تم دعوتك للانضمام إلى {{appName}} {{entity}}",
"email_no_user_invite_heading": "تمت دعوتك للانضمام إلى {{appName}} {{entity}}",
"email_no_user_invite_subheading": "دعاك {{invitedBy}} للانضمام إلى فريقه على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت وفريقك من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
"email_user_invite_subheading": "دعاك {{invitedBy}} للانضمام إلى فريقه {{teamName}} لدى {{entity}} على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت و{{entity}} من جدولة الاجتماعات من دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
"email_no_user_invite_steps_intro": "سنرشدك خلال بضع خطوات قصيرة وستستمتع بجدولة سريعة خالية من الإجهاد مع {{entity}}.",
"email_user_invite_subheading": "لقد دعاك {{invitedBy}} للانضمام إلى {{entity}} `{{teamName}}` على {{appName}}. إن {{appName}} هو برنامج جدولة الأحداث الذي يمكّنك أنت و{{entity}} من جدولة الاجتماعات دون الحاجة إلى المراسلة عبر البريد الإلكتروني.",
"email_no_user_invite_steps_intro": "سنرشدك خلال بضع خطوات قصيرة وستستمتع بجدول زمني خالٍ من التوتر مع {{entity}} في لمح البصر.",
"email_no_user_step_one": "اختر اسم المستخدم الخاص بك",
"email_no_user_step_two": "ربط حساب التقويم الخاص بك",
"email_no_user_step_three": "تعيين أوقاتك المتاحة",
@@ -1666,8 +1666,8 @@
"scheduler": "{Scheduler}",
"no_workflows": "لا يوجد أي سير عمل",
"change_filter": "قم بتغيير عامل التصفية لمشاهدة سير العمل الشخصي وفريقك.",
"change_filter_common": "تغيير عامل الفرز لرؤية النتائج.",
"no_results_for_filter": "لا توجد نتائج لعامل الفرز",
"change_filter_common": "تغيير عامل التصفية لرؤية النتائج.",
"no_results_for_filter": "لا توجد نتائج لعامل التصفية",
"recommended_next_steps": "الخطوات التالية الموصى بها",
"create_a_managed_event": "إنشاء نوع من الأحداث المُدارة",
"meetings_are_better_with_the_right": "الاجتماعات أفضل مع وجود أعضاء الفريق المناسبين. قم بدعوتهم الآن.",
@@ -1678,7 +1678,7 @@
"no_longer_attending": "لن تحضر هذا الحدث",
"attendee_no_longer_attending_subject": "أحد الحضور لن يحضر {{title}} في {{date}}",
"attendee_no_longer_attending": "أحد الحضور لن يحضر الحدث الخاص بك",
"attendee_no_longer_attending_subtitle": "تم إلغاء الحدث {{name}}، وهو ما يعني توافر معقد شاغر في هذا التوقيت",
"attendee_no_longer_attending_subtitle": "تم إلغاء {{name}}. هذا يعني أنه تم فتح مقعد لهذه الفترة الزمنية",
"create_event_on": "إنشاء حدث في",
"create_routing_form_on": "إنشاء نموذج توجيه على",
"default_app_link_title": "تعيين رابط تطبيق افتراضي",
@@ -1690,7 +1690,7 @@
"booking_questions_title": "أسئلة حول الحجز",
"booking_questions_description": "يمكنك تخصيص الأسئلة المطروحة في صفحة الحجز",
"add_a_booking_question": "اطرح سؤالاً",
"identifier": "مُعرِّف",
"identifier": "المُعرِّف",
"duplicate_email": "البريد الإلكتروني مكرر",
"booking_with_payment_cancelled": "لم يعد الدفع لهذا الحدث ممكنًا",
"booking_with_payment_cancelled_already_paid": "استرداد المبلغ المدفوع لهذا الحجز قيد التنفيذ.",
@@ -1733,14 +1733,14 @@
"no_responses_yet": "لا توجد ردود بعد",
"no_routes_defined": "لا توجد مسارات محددة",
"this_will_be_the_placeholder": "سيكون هذا هو العنصر النائب",
"error_booking_event": "حدث خطأ عند حجز الفعالية، الرجاء تحديث الصفحة والمحاولة ثانيةً",
"error_booking_event": "حدث خطأ عند حجز الحدث، يرجى تحديث الصفحة والمحاولة ثانيةً",
"timeslot_missing_title": "لم يتم تحديد فترة زمنية",
"timeslot_missing_description": "يرجى تحديد فترة زمنية لحجز الحدث.",
"timeslot_missing_cta": "حدد فترة زمنية",
"switch_monthly": "التبديل إلى العرض الشهري",
"switch_weekly": "التبديل إلى العرض الأسبوعي",
"switch_multiday": "التبديل إلى العرض اليومي",
"switch_columnview": "التبديل إلى العرض العمود",
"switch_columnview": "التبديل إلى عرض العمود",
"num_locations": "{{num}} من خيارات الموقع",
"select_on_next_step": "حدد في الخطوة التالية",
"this_meeting_has_not_started_yet": "لم يبدأ هذا الاجتماع بعد",
@@ -1795,7 +1795,7 @@
"least_booked_members": "الأعضاء الأقل حجزًا",
"events_created": "تم إنشاء الأحداث",
"events_completed": "تم اكتمال الأحداث",
"events_cancelled": "تم إلغاء الفعاليات",
"events_cancelled": "تم إلغاء الأحداث",
"events_rescheduled": "تمت إعادة جدولة الأحداث",
"from_last_period": "من آخر فترة",
"from_to_date_period": "من: {{startDate}} إلى: {{endDate}}",
@@ -1834,13 +1834,13 @@
"invite_link_copied": "تم نسخ رابط الدعوة",
"invite_link_deleted": "تم حذف رابط الدعوة",
"invite_link_updated": "تم حفظ إعدادات رابط الدعوة",
"link_expires_after": "روابط تم تعيينها للانتهاء بعد...",
"link_expires_after": "تم تعيين الروابط للانتهاء بعد...",
"one_day": "1 يوم",
"seven_days": "7 أيام",
"thirty_days": "30 يوم",
"thirty_days": "30 يومًا",
"three_months": "3 أشهر",
"one_year": "1 سنة",
"team_invite_received": "تم دعوتك للانضمام إلى {{teamName}}",
"team_invite_received": "تمت دعوتك للانضمام إلى {{teamName}}",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "أنت على وشك تحصيل مبلغ {{amount, currency}} من أحد الحضور. هل أنت متأكد من أنك تريد المتابعة؟",
"charge_attendee": "تحصيل مبلغ {{amount, currency}} من أحد الحضور",
@@ -1849,7 +1849,7 @@
"email_invite_team_bulk": "تم دعوة {{userCount}} من المستخدمين",
"error_collecting_card": "خطأ في التحصيل من البطاقة",
"image_size_limit_exceed": "يجب ألا يتجاوز حجم الصورة التي تم تحميلها 5 ميغابايت",
"unauthorized_workflow_error_message": "{{errorCode}}: أنت غير مخوّل لك بتمكين أو تعطيل سير العمل هذا",
"unauthorized_workflow_error_message": "{{errorCode}}: غير مصرح لك بتمكين سير العمل هذا أو تعطيله",
"inline_embed": "التضمين",
"load_inline_content": "تحميل نوع الحدث مع محتوى آخر من موقعكبشكل مباشر.",
"floating_pop_up_button": "زر منبثق عائم",
@@ -1871,66 +1871,66 @@
"first_event_type_webhook_description": "قم بإنشاء أول شبكة ويب هوك لهذا النوع من الأحداث",
"install_app_on": "تثبيت التطبيق على",
"create_for": "إنشاء من أجل",
"setup_organization": "إعداد مؤسسة",
"organization_banner_description": "إنشاء بيئات حيث يمكن لفرقك إنشاء تطبيقات مشتركة، ومسارات عمل وأنواع فعاليات مع جدولة دورية وجماعية.",
"organization_banner_title": "إدارة المنظمات مع فرق متعددة",
"setup_organization": "إعداد منظمة",
"organization_banner_description": "إنشاء بيئات حيث يمكن لفرقك إنشاء تطبيقات مشتركة ومهام سير العمل وأنواع الأحداث باستخدام الجدولة الدوارة والجماعية.",
"organization_banner_title": "إدارة المنظمات ذات الفرق المتعددة",
"set_up_your_organization": "إعداد منظمتك",
"organizations_description": "المنظمات هي بيئات مشتركة حيث يمكن للفرق إنشاء أنواع الفعاليات المشتركة والتطبيقات ومسارات العمل والمزيد.",
"organizations_description": "المنظمات هي بيئات مشتركة حيث يمكن للفرق إنشاء أنواع الأحداث المشتركة والتطبيقات ومهام سير العمل والمزيد.",
"must_enter_organization_name": "يجب إدخال اسم المنظمة",
"must_enter_organization_admin_email": "يجب إدخال عنوان البريد الإلكتروني لمؤسستك",
"admin_email": "عنوان البريد الإلكتروني لمؤسستك",
"must_enter_organization_admin_email": "يجب إدخال عنوان البريد الإلكتروني لمنظمتك",
"admin_email": "عنوان البريد الإلكتروني لمنظمتك",
"admin_username": "اسم المستخدم للمسؤول",
"organization_name": "اسم المنظمة",
"organization_url": "رابط المنظمة",
"organization_verify_header": "تأكيد البريد الإلكتروني لمؤسستك",
"organization_verify_email_body": "الرجاء استخدام الرمز أدناه لتأكيد عنوان بريدك الإلكتروني لمواصلة إعداد مؤسستك.",
"additional_url_parameters": "مقاييس URL إضافية",
"about_your_organization": "حول مؤسستك",
"about_your_organization_description": "المنظمات هي بيئات مشتركة فيها يمكنك إنشاء فرق متعدد مع أعضاء مشتركين، وأنواع الفعاليات، والتطبيقات، ومسارات العمل والمزيد.",
"organization_verify_header": "تأكيد البريد الإلكتروني لمنظمتك",
"organization_verify_email_body": "الرجاء استخدام الرمز أدناه لتأكيد عنوان بريدك الإلكتروني لمواصلة إعداد منظمتك.",
"additional_url_parameters": "معلمات الرابط الإضافية",
"about_your_organization": "حول منظمتك",
"about_your_organization_description": "المنظمات هي بيئات مشتركة حيث يمكنك إنشاء فرق متعددة مع أعضاء مشتركين وأنواع الأحداث والتطبيقات ومهام سير العمل والمزيد.",
"create_your_teams": "إنشاء فرقك",
"create_your_teams_description": "البدء في الجدولة معاً بإضافة أعضاء فريقك إلى مؤسستك",
"invite_organization_admins": "قم بدعوة مشرفي مؤسستك",
"invite_organization_admins_description": "سيتمكن هؤلاء المشرفون من الوصول إلى جميع الفرق في مؤسستك. يمكنك إضافة مشرفين وأعضاء في وقت لاحق.",
"create_your_teams_description": "ابدأوا الجدولة معًا عن طريق إضافة أعضاء فريقك إلى منظمتك",
"invite_organization_admins": "دعوة مشرفي منظمتك",
"invite_organization_admins_description": "سيتمكن هؤلاء المسؤولون من الوصول إلى جميع الفرق في منظمتك. يمكنك إضافة مسؤولي الفريق والأعضاء لاحقًا.",
"set_a_password": "تعيين كلمة مرور",
"set_a_password_description": "سيؤدي هذا إلى إنشاء حساب مستخدم جديد مع البريد الإلكتروني لمؤسستك وكلمة المرور هذه.",
"set_a_password_description": "سيؤدي هذا إلى إنشاء حساب مستخدم جديد بالبريد الإلكتروني لمنظمتك وكلمة المرور هذه.",
"organization_logo": "شعار المنظمة",
"organization_about_description": "بضع جمل عن منظمتك. ستظهر على الصفحة المتاحجة للعموم لمنظمتك.",
"ill_do_this_later": "سأفعل هذا لاحقاً",
"organization_about_description": "بضع جمل عن منطمتك. سيظهر هذا في صفحة الملف الشخصي العامة لمنظمتك.",
"ill_do_this_later": "سأفعل هذا لاحقًا",
"verify_your_email": "تأكيد بريدك الإلكتروني",
"enter_digit_code": "أدخل الرمز المكون من 6 أرقام الذي أرسلناه إلى {{email}}",
"verify_email_organization": "تأكيد بريدك الإلكتروني لإنشاء مؤسسة",
"verify_email_organization": "أكد بريدك الإلكتروني لإنشاء منظمة",
"code_provided_invalid": "الرمز المقدم غير صالح، حاول ثانيةً",
"email_already_used": "البريد الإلكتروني مستخدم بالفعل",
"organization_admin_invited_heading": "تم دعوتك للانضمام إلى {{orgName}}",
"organization_admin_invited_body": "انضم إلى فريقك في {{orgName}} وابدأ بالتركيز على الاجتماع، وليس عقد الاجتماعات!",
"duplicated_slugs_warning": "لا يمكن إنشاء الفرق التالية بسبب التكرار: {{slugs}}",
"organization_admin_invited_heading": "تمت دعوتك للانضمام إلى {{orgName}}",
"organization_admin_invited_body": "انضم إلى فريقك في {{orgName}} وابدأ الانشغال بالاجتماعاتك، وليس بكيفية الإعداد لها!",
"duplicated_slugs_warning": "لا يمكن إنشاء الفرق التالية بسبب تكرار الكلمات اللطيفة (Slug): {{slugs}}",
"team_names_empty": "لا يمكن أن تكون أسماء الفرق فارغة",
"team_names_repeated": "لا يمكن تكرار أسماء الفرق",
"user_belongs_organization": "المستخدم ينتمي إلى منظمة",
"org_no_teams_yet": "هذه المنظمة ليس لديها فرق بعد",
"org_no_teams_yet_description": "إذا كنت مسؤول، تأكد من إنشاء فرق لعرضها هنا.",
"set_up": "إعداد",
"set_up_your_profile": "إعداد ملفك التعريفي",
"set_up": "الإعداد",
"set_up_your_profile": "إعداد ملفك الشخصي",
"set_up_your_profile_description": "دع الناس يعرفون من أنت داخل {{orgName}}، ومتى يتعاملون مع الرابط العام الخاص بك.",
"my_profile": "ملفي التعريفي",
"my_settings": "إعداداتي",
"my_profile": "الملف الشخصي",
"my_settings": "الإعدادات",
"crm": "CRM",
"messaging": "المراسلة",
"sender_id_info": "الاسم أو الرقم المبين كمرسل لرسالة نصية قصيرة (بعض البلدان لا تسمح بأن تكون هويات المرسل أبجدية رقمية)",
"org_admins_can_create_new_teams": "يمكن فقط لمشرف مؤسستك إنشاء فرق جديدة",
"sender_id_info": "الاسم أو الرقم الظاهر على أنه مرسل الرسالة النصية القصيرة (بعض البلدان لا تسمح بمعرفات المرسل الأبجدية الرقمية)",
"org_admins_can_create_new_teams": "يمكن فقط لمسؤول منظمتك إنشاء فرق جديدة",
"google_new_spam_policy": "يمكن أن تمنعك سياسة Google الجديدة للرسائل غير المرغوب فيها من تلقي أي إشعارات بالبريد الإلكتروني والتقويم حول هذا الحجز.",
"resolve": "حل",
"no_organization_slug": "حدث خطأ أثناء إنشاء فرق لهذه المؤسسة. ربط الرابط مفقود.",
"no_organization_slug": "حدث خطأ أثناء إنشاء فرق لهذه المنظمة. الكلمة اللطيفة للرابط مفقودة.",
"org_name": "اسم المنظمة",
"org_url": "رابط المنظمة",
"copy_link_org": "نسخ الرابط إلى المنظمة",
"404_the_org": "المنظمة",
"404_the_team": "الفريق",
"404_claim_entity_org": "المطالبة بنطاقك الفرعي لمؤسستك",
"404_claim_entity_org": "المطالبة بنطاقك الفرعي لمنظمتك",
"404_claim_entity_team": "المطالبة بهذا الفريق والبدء في إدارة الجداول الزمنية بشكل جماعي",
"insights_all_org_filter": "الكل",
"insights_team_filter": "الفريق: {{teamName}}",
"insights_user_filter": "المستخدم: {{userName}}",
"insights_subtitle": "عرض رؤى الحجز عبر فعالياتك",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف خيوطك الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"insights_subtitle": "عرض Insights الحجز عبر أحداثك",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ أضف السلاسل الجديدة أعلاه هنا ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+27 -27
View File
@@ -21,7 +21,7 @@
"verify_email_email_link_text": "Zde je odkaz pro případ, že nemáte rádi klikání na tlačítka:",
"email_sent": "E-mail byl odeslán",
"event_declined_subject": "Odmítnuto: {{title}} v {{date}}",
"event_cancelled_subject": "Zrušeno: {{title}} ({{date}})",
"event_cancelled_subject": "Zrušeno: {{title}} dne {{date}}",
"event_request_declined": "Žádost o událost byla zamítnuta",
"event_request_declined_recurring": "Žádost o opakovanou událost byla zamítnuta",
"event_request_cancelled": "Vaše plánovaná událost byla zrušena",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "Změna - Vaše událost byla přesunuta na jindy",
"request_reschedule_subtitle": "{{organizer}} zrušil rezervaci a požádal vás, abyste si vybrali jiný termín.",
"request_reschedule_title_organizer": "Požádali jste uživatele {{attendee}} o změnu časového plánu",
"request_reschedule_subtitle_organizer": "Zrušili jste rezervaci a účastník {{attendee}} by si s vámi měl rezervovat nový čas.",
"request_reschedule_subtitle_organizer": "Zrušili jste rezervaci a účastník {{attendee}} by si s vámi měl zarezervovat nový čas.",
"rescheduled_event_type_subject": "Žádost o přesunutí schůzky: {{eventType}} s {{name}} dne {{date}}",
"requested_to_reschedule_subject_attendee": "Akce vyžadovaná k přeplánování: zarezervujte si nový čas pro událost {{eventType}} s osobou {{name}}",
"hi_user_name": "Hezký den, {{name}}",
@@ -129,7 +129,7 @@
"team_upgrade_banner_description": "Děkujeme vám za vyzkoušení našeho nového týmového plánu. Všimli jsme si, že váš tým „{{teamName}}“ je nutné upgradovat.",
"upgrade_banner_action": "Upgradovat zde",
"team_upgraded_successfully": "Váš tým byl úspěšně přešel na vyšší verzi!",
"org_upgrade_banner_description": "Děkujeme, že jste vyzkoušeli tarif naší organizace. Všimli jsme si, že vaše organizace „{{teamName}}“ vyžaduje upgrade.",
"org_upgrade_banner_description": "Děkujeme, že jste vyzkoušeli náš tarif Organizace. Všimli jsme si, že vaše organizace „{{teamName}}“ vyžaduje upgrade.",
"org_upgraded_successfully": "Vaše organizace byla upgradována!",
"use_link_to_reset_password": "Pro obnovení hesla použijte odkaz níž",
"hey_there": "Zdravíme,",
@@ -248,7 +248,7 @@
"organization_general_description": "Správa nastavení jazyka a časového pásma vašeho týmu",
"few_sentences_about_yourself": "Pár vět o vás. Budou se zobrazovat na URL vaší osobní stránky.",
"nearly_there": "Téměř hotovo!",
"nearly_there_instructions": "Poslední věc... stručný popis o vás a fotografie vám pomůžou získat rezervace a lidi aspoň budou vědět, koho si rezervují.",
"nearly_there_instructions": "Poslední věc... pár slov o vás a fotografie vám pomůžou získat rezervace a lidi aspoň budou vědět, koho si rezervují.",
"set_availability_instructions": "Určete si časové intervaly, kdy jste pravidelně dostupní. Později můžete vytvořit další a přiřadit je různým kalendářům.",
"set_availability": "Nastavte, jak jste dostupní",
"continue_without_calendar": "Pokračovat bez kalendáře",
@@ -314,8 +314,8 @@
"bookerlayout_column_view": "Sloupec",
"bookerlayout_error_min_one_enabled": "Musí být povoleno alespoň jedno rozvržení.",
"bookerlayout_error_default_not_enabled": "Rozvržení, které jste vybrali jako výchozí zobrazení, není součástí povolených rozvržení.",
"bookerlayout_error_unknown_layout": "Vámi vybrané rozvržení není platné rozvržení.",
"bookerlayout_override_global_settings": "Tohle lze nastavit pro všechny typy událostí v <2>nastavení / vzhledu</2> nebo <6>nadefinovat pouze pro tuto událost</6>.",
"bookerlayout_error_unknown_layout": "Vámi vybrané rozvržení není platné.",
"bookerlayout_override_global_settings": "Toto lze nastavit pro všechny typy událostí v <2>nastavení / vzhled</2> nebo <6>nadefinovat pouze pro tuto událost</6>.",
"unexpected_error_try_again": "Došlo k neočekávané chybě. Zkuste to znovu.",
"sunday_time_error": "Neplatný čas v neděli",
"monday_time_error": "Neplatný čas v pondělí",
@@ -341,7 +341,7 @@
"error_event_type_unauthorized_create": "Tuto událost nelze vytvořit",
"error_event_type_unauthorized_update": "Tuto událost nelze upravit",
"error_workflow_unauthorized_create": "Tento pracovní postup nelze vytvořit",
"error_schedule_unauthorized_create": "Nejste schopni vytvořit tento plán",
"error_schedule_unauthorized_create": "Tento plán nelze vytvořit",
"booking_already_cancelled": "Tato rezervace již byla zrušena",
"booking_already_accepted_rejected": "Tato rezervace již byla přijata nebo zamítnuta",
"go_back_home": "Přejít na úvod",
@@ -352,7 +352,7 @@
"no_status_bookings_yet_description": "Nemáte žádné {{status}} rezervace. {{description}}",
"event_between_users": "{{eventName}} mezi {{host}} a {{attendeeName}}",
"bookings": "Rezervace",
"booking_not_found": "Rezervace nenalezena",
"booking_not_found": "Rezervace nebyla nalezena",
"bookings_description": "Zobrazte si nadcházející a proběhlé události rezervovaní prostřednictvím odkazu na typ události.",
"upcoming_bookings": "Jakmile si někdo rezervuje váš čas, zobrazí se to zde.",
"recurring_bookings": "Jakmile si někdo s vámi zarezervuje opakovanou schůzku, zobrazí se to zde.",
@@ -398,12 +398,12 @@
"browse_api_documentation": "Procházejte naši API dokumentaci",
"leverage_our_api": "Pro plnou kontrolu a přizpůsobení využijte naše API.",
"create_webhook": "Vytvořit webhook",
"booking_cancelled": "Rezervace zrušena",
"booking_cancelled": "Rezervace byla zrušena",
"booking_rescheduled": "Rezervace přesunuta",
"recording_ready": "Odkaz ke stažení záznamu je připraven",
"booking_created": "Rezervace vytvořena",
"booking_rejected": "Rezervace zamítnuta",
"booking_requested": "Rezervace vyžádána",
"booking_rejected": "Rezervace byla zamítnuta",
"booking_requested": "Byla vyžádána rezervace",
"meeting_ended": "Schůzka skončila",
"form_submitted": "Formulář byl odeslán",
"event_triggers": "Eventy na základě akce",
@@ -867,7 +867,7 @@
"no_category_apps": "Žádné aplikace v kategorii {{category}}",
"all_apps": "Všechny aplikace",
"no_category_apps_description_calendar": "Přidejte aplikaci kalendáře, ať máte přehled v zájmu prevence dvojích rezervací",
"no_category_apps_description_conferencing": "Zkuste přidat aplikaci pro videokonference s klienty.",
"no_category_apps_description_conferencing": "Zkuste přidat aplikaci pro videokonference s klienty",
"no_category_apps_description_payment": "Přidejte platební aplikaci, která usnadní provádění transakcí mezi vámi a vašimi klienty",
"no_category_apps_description_analytics": "Přidejte analytickou aplikaci pro vaše rezervační stránky",
"no_category_apps_description_automation": "Přidejte aplikaci pro automatizaci",
@@ -1002,8 +1002,8 @@
"user_impersonation_heading": "Přizpůsobení uživatele",
"user_impersonation_description": "Náš tým podpory se bude moci dočasně přihlásit místo vás, aby nám pomohl rychle vyřešit jakékoli problémy, které nám nahlásíte.",
"team_impersonation_description": "Umožňuje vašim vlastníkům/správcům týmu dočasně se přihlásit jako vy.",
"make_team_private": "Soukromý tým",
"make_team_private_description": "Po zapnutí této funkce nebudou členové vašeho týmu vidět ostatní členy týmu.",
"make_team_private": "Nastavit tým jako soukromý",
"make_team_private_description": "Po zapnutí této funkce neuvidí členové vašeho týmu ostatní členy týmu.",
"you_cannot_see_team_members": "V soukromém týmu nelze vidět všechny členy týmu.",
"allow_booker_to_select_duration": "Umožnit rezervující osobě vybrat dobu trvání",
"impersonate_user_tip": "Všechna použití této funkce jsou kontrolována.",
@@ -1327,7 +1327,7 @@
"download_responses_description": "Stáhněte si všechny odpovědi do formuláře ve formátu CSV.",
"download": "Stáhnout",
"download_recording": "Stáhnout nahrávku",
"recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru v {{appName}} je připravena ke stažení.",
"recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru v {{appName}} je připravena ke stažení",
"create_your_first_form": "Vytvořte svůj první formulář",
"create_your_first_form_description": "Pomocí adresných formulářů můžete klást kvalifikační otázky a adresovat je správné osobě nebo typu události.",
"create_your_first_webhook": "Vytvořte svůj první webhook",
@@ -1659,10 +1659,10 @@
"delete_sso_configuration_confirmation_description": "Opravdu chcete odstranit konfiguraci {{connectionType}}? Členové vašeho týmu, kteří používají přihlášení {{connectionType}}, ztratí přístup k webu Cal.com.",
"organizer_timezone": "Časové pásmo organizátora",
"email_user_cta": "Zobrazit pozvánku",
"email_no_user_invite_heading": "Byli jste pozváni, abyste se připojili k subjektu {{{entity}} v aplikaci {{appName}}",
"email_no_user_invite_heading": "Byli jste pozváni, abyste se připojili k subjektu {{entity}} v aplikaci {{appName}}",
"email_no_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez e-mailového ping-pongu.",
"email_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} subjektu ({{entity}}) v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu subjektu ({{entity}}) umožňuje plánovat schůzky bez e-mailového pingpongu.",
"email_no_user_invite_steps_intro": "Provedeme vás několika krátkými kroky a za malou chvíli si budete se svým subjektem ({{entity}}) užívat plánování bez stresu.",
"email_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} subjektu {{entity}} v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu subjektu {{entity}} umožňuje plánovat schůzky bez e-mailového pingpongu.",
"email_no_user_invite_steps_intro": "Provedeme vás několika krátkými kroky a za malou chvíli si budete se svým subjektem {{entity}} užívat plánování bez stresu.",
"email_no_user_step_one": "Vyberte si uživatelské jméno",
"email_no_user_step_two": "Připojte svůj účet kalendáře",
"email_no_user_step_three": "Nastavte si dostupnost",
@@ -1740,7 +1740,7 @@
"no_responses_yet": "Zatím žádné odpovědi",
"no_routes_defined": "Není definováno žádné směrování",
"this_will_be_the_placeholder": "Toto bude zástupný znak",
"error_booking_event": "Při rezervaci události došlo k chybě, obnovte prosím stránku a zkuste to znovu.",
"error_booking_event": "Při rezervaci události došlo k chybě, obnovte prosím stránku a zkuste to znovu",
"timeslot_missing_title": "Nebyl vybrán žádný časový slot",
"timeslot_missing_description": "Vyberte časový slot, aby mohla být událost zaregistrována.",
"timeslot_missing_cta": "Vybrat časový slot",
@@ -1802,7 +1802,7 @@
"least_booked_members": "Nejméně rezervovaných členů",
"events_created": "Události vytvořeny",
"events_completed": "Události dokončeny",
"events_cancelled": "Události zrušeny",
"events_cancelled": "Zrušené události",
"events_rescheduled": "Události přesunuty",
"from_last_period": "z posledního období",
"from_to_date_period": "Od: {{startDate}} do: {{endDate}}",
@@ -1838,9 +1838,9 @@
"confirm_your_details": "Potvrďte své údaje",
"copy_invite_link": "Zkopírovat odkaz pozvánky",
"edit_invite_link": "Upravit nastavení odkazu",
"invite_link_copied": "Odkaz pozvánky zkopírován",
"invite_link_deleted": "Odkaz pozvánky odstraněn",
"invite_link_updated": "Nastavení odkazu pozvánky uloženo",
"invite_link_copied": "Odkaz pozvánky byl zkopírován",
"invite_link_deleted": "Odkaz pozvánky byl odstraněn",
"invite_link_updated": "Nastavení odkazu pozvánky bylo uloženo",
"link_expires_after": "Platnost odkazů vyprší za...",
"one_day": "1 den",
"seven_days": "7 dní",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "Počet pozvaných uživatelů: {{userCount}}",
"error_collecting_card": "Chyba při výběru karty",
"image_size_limit_exceed": "Velikost nahraného obrázku by neměla překročit limit 5 MB",
"unauthorized_workflow_error_message": "{{errorCode}}: Nejste oprávněni zapnout nebo vypnout tento pracovní postup.",
"unauthorized_workflow_error_message": "{{errorCode}}: Nejste oprávněni zapnout nebo vypnout tento pracovní postup",
"inline_embed": "Vložit na řádek",
"load_inline_content": "Načte váš typ události přímo do řádků s ostatním obsahem webu.",
"floating_pop_up_button": "Plovoucí překryvné tlačítko",
@@ -1895,10 +1895,10 @@
"about_your_organization": "Informace o vaší organizaci",
"about_your_organization_description": "Organizace jsou sdílená prostředí, ve kterých můžete vytvořit několik týmů se sdílenými členy, typy událostí, aplikacemi, pracovními postupy a mnoha dalšími věcmi.",
"create_your_teams": "Vytvoření týmů",
"create_your_teams_description": "Přidejte do své organizace členy a pusťte se do společného plánování.",
"create_your_teams_description": "Přidejte do své organizace členy a pusťte se do společného plánování",
"invite_organization_admins": "Pozvěte správce své organizace",
"invite_organization_admins_description": "Tito správci budou mít přístup ke všem týmům ve vaší organizaci. Správce a členy týmů můžete přidat později.",
"set_a_password": "Nastavte heslo",
"set_a_password": "Nastavte si heslo",
"set_a_password_description": "Tím se vytvoří nový uživatelský účet s e-mailem vaší organizace a tímto heslem.",
"organization_logo": "Logo organizace",
"organization_about_description": "Několik vět o vaší organizaci. Objeví se na veřejné stránce profilu vaší organizace.",
@@ -1923,7 +1923,7 @@
"my_settings": "Moje nastavení",
"crm": "CRM",
"messaging": "Zasílání zpráv",
"sender_id_info": "Jméno nebo číslo zobrazené jako odesílatel SMS (některé země nepovolují alfanumerické ID odesílatele).",
"sender_id_info": "Jméno nebo číslo zobrazené jako odesílatel SMS (některé země nepovolují alfanumerické ID odesílatele)",
"org_admins_can_create_new_teams": "Nové týmy může vytvářet pouze správce vaší organizace",
"google_new_spam_policy": "Nové zásady společnosti Google týkající se nevyžádané pošty by mohly zabránit tomu, abyste dostávali e-mailová oznámení a oznámení kalendáře o této rezervaci.",
"resolve": "Vyřešit",
+28 -26
View File
@@ -13,8 +13,8 @@
"reset_password_subject": "{{appName}}: Anleitung zum Zurücksetzen des Passworts",
"verify_email_subject": "{{appName}}: Bestätigen Sie Ihr Konto",
"check_your_email": "Schauen Sie in Ihrem E-Mail-Postfach nach",
"verify_email_page_body": "Wir haben eine E-Mail an {{email}} gesendet. Es ist wichtig, Ihre E-Mail-Adresse zu bestätigen, um die beste Zustellbarkeit für E-Mails und Kalender von {{appName}} zu gewährleisten.",
"verify_email_banner_body": "Bestätigen Sie Ihre E-Mail-Adresse, um die beste Zustellbarkeit von E-Mails und Kalenderdaten zu gewährleisten",
"verify_email_page_body": "Wir haben eine E-Mail an {{email}} gesendet. Es ist wichtig, Ihre E-Mail-Adresse zu bestätigen, um die Zustellbarkeit für E-Mails und Kalenderbenachrichtigungen von {{appName}} zu gewährleisten.",
"verify_email_banner_body": "Bestätigen Sie Ihre E-Mail-Adresse, um die Zustellbarkeit von E-Mails und Kalenderbenachrichtigungen zu gewährleisten",
"verify_email_email_header": "Bestätigen Sie Ihre E-Mail-Adresse",
"verify_email_email_button": "E-Mail bestätigen",
"copy_somewhere_safe": "Speichern Sie diesen API-Schlüssel an einem sicheren Ort. Sie können ihn nicht erneut ansehen.",
@@ -137,11 +137,11 @@
"upgrade_banner_action": "Hier aufrüsten",
"team_upgraded_successfully": "Das Update für Ihr Team war erfolgreich!",
"org_upgrade_banner_description": "Vielen Dank, dass Sie unseren neuen Organisationsplan getestet haben. Wir haben festgestellt, dass Ihre Organisation „{{teamName}}“ ein Upgrade benötigt.",
"org_upgraded_successfully": "Das Update für Ihre Organization war erfolgreich!",
"org_upgraded_successfully": "Das Upgrade für Ihre Organization war erfolgreich!",
"use_link_to_reset_password": "Benutzen Sie den Link, um Ihr Passwort zurückzusetzen",
"hey_there": "Hallo,",
"forgot_your_password_calcom": "Passwort vergessen? - {{appName}}",
"delete_webhook_confirmation_message": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten? Sie werden keine {{appName}} Meetingdaten mehr unter einer bestimmten URL, in Echtzeit erhalten, wenn ein Ereignis geplant oder abgesagt wird.",
"delete_webhook_confirmation_message": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten? Sie werden keine {{appName}}-Meetingdaten mehr unter einer bestimmten URL, in Echtzeit erhalten, wenn ein Ereignis geplant oder abgesagt wird.",
"confirm_delete_webhook": "Ja, Webhook löschen",
"edit_webhook": "Webhook bearbeiten",
"delete_webhook": "Webhook löschen",
@@ -260,7 +260,7 @@
"organization_general_description": "Einstellungen für die Sprache und Zeitzone Ihres Teams verwalten",
"few_sentences_about_yourself": "Schreiben Sie eine kurze Beschreibung, welche auf Ihrer persönlichen URL-Seite erscheinen wird.",
"nearly_there": "Fast fertig",
"nearly_there_instructions": "Zu guter Letzt: Ein Foto und eine Kurzbeschreibung zu Ihnen helfen, öfter gebucht zu werden, da Kunden dann besser wissen, wen sie buchen.",
"nearly_there_instructions": "Zu guter Letzt: Ein Foto und eine Kurzbeschreibung zu Ihnen helfen, öfter gebucht zu werden, da Kunden dann genauer wissen, bei wem sie einen Termin buchen.",
"set_availability_instructions": "Definieren Sie Zeiträume, wenn Sie wiederkehrend verfügbar sind. Sie können später weitere Zeiträume erstellen und verschiedenen Kalendern zuordnen.",
"set_availability": "Verfügbarkeit festlegen",
"continue_without_calendar": "Ohne Kalender fortfahren",
@@ -318,9 +318,9 @@
"password_has_been_reset_login": "Ihr Passwort wurde zurückgesetzt. Sie können sich jetzt mit Ihrem neu erstellten Passwort anmelden.",
"layout": "Layout",
"bookerlayout_default_title": "Standardansicht",
"bookerlayout_description": "Sie können mehrere auswählen und Ihre Bucher können die Ansicht wechseln.",
"bookerlayout_description": "Sie können mehrere auswählen und Ihre Bucher können anschließend die Ansicht wechseln.",
"bookerlayout_user_settings_title": "Buchungslayout",
"bookerlayout_user_settings_description": "Sie können mehrere auswählen und Bucher können die Ansicht wechseln. Dies kann pro Termin überschrieben werden.",
"bookerlayout_user_settings_description": "Sie können mehrere auswählen und Bucher können anschließend die Ansicht wechseln. Dies kann pro Termin überschrieben werden.",
"bookerlayout_month_view": "Monat",
"bookerlayout_week_view": "Wöchentlich",
"bookerlayout_column_view": "Spalte",
@@ -428,8 +428,8 @@
"team_webhooks": "Team-Webhooks",
"create_new_webhook_to_account": "Erstellen Sie einen neuen Webhook in Ihrem Account",
"new_webhook": "Neuer Webhook",
"receive_cal_meeting_data": "Erhalten Sie {{appName}} Termindaten unter einer bestimmten URL in Echtzeit, wenn ein Termin geplant oder abgesagt wird.",
"receive_cal_event_meeting_data": "Erhalten Sie {{appName}} Termindaten unter einer bestimmten URL in Echtzeit, wenn dieser Termin geplant oder abgesagt wird.",
"receive_cal_meeting_data": "Erhalten Sie in Echtzeit {{appName}}-Termindaten unter einer bestimmten URL, wenn ein Termin geplant oder abgesagt wird.",
"receive_cal_event_meeting_data": "Erhalten Sie in Echtzeit {{appName}}-Termindaten unter einer bestimmten URL, wenn dieser Termin geplant oder abgesagt wird.",
"responsive_fullscreen_iframe": "Responsives Vollbild-iFrame",
"loading": "Wird geladen...",
"deleting": "Lösche...",
@@ -926,7 +926,7 @@
"create_events_on": "Erstelle Termine in:",
"enterprise_license": "Das ist eine Enterprise-Funktion",
"enterprise_license_description": "Um diese Funktion zu aktivieren, holen Sie sich einen Deployment-Schlüssel von der {{consoleUrl}}-Konsole und fügen Sie ihn als CALCOM_LICENSE_KEY zu Ihrer .env hinzu. Wenn Ihr Team bereits eine Lizenz hat, wenden Sie sich bitte an {{supportMail}} für Hilfe.",
"enterprise_license_development": "Sie können diese Funktion im Entwicklungsmodus testen. Zur Nutzung im Produktionsmodus, besuchen Sie bitte <2>/auth/setup</2>, um einen Lizenzschlüssel einzugeben.",
"enterprise_license_development": "Sie können diese Funktion im Entwicklungsmodus testen. Zur Nutzung im regulären Arbeitsumfeld, besuchen Sie bitte <2>/auth/setup</2>, um einen Lizenzschlüssel einzugeben.",
"missing_license": "Lizenz fehlt",
"signup_requires": "Kommerzielle Lizenz erforderlich",
"signup_requires_description": "{{companyName}} bietet zur Zeit keine kostenlose Open-Source-Version der Anmeldeseite an. Um vollen Zugriff auf die Registrierungskomponenten zu erhalten, müssen Sie eine kommerzielle Lizenz erwerben. Für den persönlichen Gebrauch empfehlen wir die Prisma Data Platform oder jede andere Postgres-Schnittstelle zur Erstellung von Accounts.",
@@ -1020,7 +1020,7 @@
"user_impersonation_description": "Erlaubt es unserem Support-Team, sich vorübergehend mit Ihrem Konto anzumelden, um jegliche Probleme, die Sie gemeldet haben, schneller zu lösen.",
"team_impersonation_description": "Ermöglicht den Team-Administratoren, sich vorübergehend als Sie einzuloggen.",
"make_team_private": "Team privat stellen",
"make_team_private_description": "Deine Teammitglieder können keine anderen Teammitglieder sehen, wenn dies aktiviert ist.",
"make_team_private_description": "Wenn diese Einstellung aktiv ist, können deine Teammitglieder keine anderen Teammitglieder sehen.",
"you_cannot_see_team_members": "Sie können nicht alle Teammitglieder eines privaten Teams sehen.",
"allow_booker_to_select_duration": "Bucher erlauben, die Länge zu wählen",
"impersonate_user_tip": "Alle Verwendungen dieser Funktion werden geprüft.",
@@ -1513,7 +1513,7 @@
"url_taken": "Diese URL ist bereits vergeben",
"problem_registering_domain": "Es gab ein Problem bei der Registrierung der Subdomain, bitte versuchen Sie es erneut oder kontaktieren Sie einen Administrator",
"team_publish": "Team veröffentlichen",
"number_text_notifications": "Telefonnummer (Text-Benachrichtigungen)",
"number_text_notifications": "Telefonnummer (Textbenachrichtigungen)",
"attendee_email_variable": "Teilnehmer E-Mail",
"attendee_email_info": "Die E-Mail-Adresse der buchenden Person",
"kbar_search_placeholder": "Geben Sie einen Befehl ein oder suchen Sie ...",
@@ -1536,8 +1536,8 @@
"find_the_best_person": "Finden Sie die beste verfügbare Person und rotieren Sie durch Ihr Team.",
"fixed_round_robin": "Festgelegter Round Robin",
"add_one_fixed_attendee": "Fügen Sie einen festen Teilnehmer und einen Round Robin mit einer Reihe von Teilnehmern hinzu.",
"calcom_is_better_with_team": "{{appName}} ist mit Teams besser",
"the_calcom_team": "Das {{companyName}} Team",
"calcom_is_better_with_team": "{{appName}} ist mit Teams noch besser",
"the_calcom_team": "Das {{companyName}}-Team",
"add_your_team_members": "Fügen Sie Ihre Teammitglieder zu Ihren Termintypen hinzu. Nutzen Sie kollektive Planung, um alle einzubinden oder finden Sie die geeignetste Person mit der Round Robin Planung.",
"booking_limit_reached": "Das Buchungslimit für diesen Termintyp wurde erreicht",
"duration_limit_reached": "Das Zeitlimit für diesen Termintyp wurde erreicht",
@@ -1690,7 +1690,7 @@
"scheduler": "{Scheduler}",
"no_workflows": "Keine Workflows",
"change_filter": "Ändern Sie den Filter, um Ihre eigenen und Ihre Team-Workflows anzuzeigen.",
"change_filter_common": "Ändern Sie Ihre Filteroptionen um die Ergebnisse zu sehen.",
"change_filter_common": "Passen Sie Ihre Filteroptionen an, um die Ergebnisse zu sehen.",
"no_results_for_filter": "Keine Ergebnisse für diesen Filter",
"recommended_next_steps": "Empfohlene nächste Schritte",
"create_a_managed_event": "Einen verwalteten Ereignistyp erstellen",
@@ -1702,7 +1702,7 @@
"no_longer_attending": "Sie nehmen an diesem Termin nicht mehr teil",
"attendee_no_longer_attending_subject": "Ein Teilnehmer nimmt nicht mehr an {{title}} am {{date}} teil",
"attendee_no_longer_attending": "Ein Teilnehmer nimmt nicht mehr an Ihrem Termin teil",
"attendee_no_longer_attending_subtitle": "{{name}} hat abgesagt. Das bedeutet, dass ein Platz für dieses Zeitfenster geöffnet wurde",
"attendee_no_longer_attending_subtitle": "{{name}} hat abgesagt. Dies bedeutet, dass ein Platz in diesem Zeitfenster frei wurde",
"create_event_on": "Erstelle Termin am",
"create_routing_form_on": "Weiterleitungsformular erstellen am",
"default_app_link_title": "Standard-App-Link festlegen",
@@ -1755,7 +1755,7 @@
"spot_popular_event_types": "Machen Sie beliebte Ereignistypen ausfindig",
"spot_popular_event_types_description": "Sehen Sie, welche Ihrer Ereignistypen die meisten Klicks und Buchungen erhalten",
"no_responses_yet": "Noch keine Antworten",
"no_routes_defined": "Keine Routen definiert",
"no_routes_defined": "Keine Weiterleitungsrouten definiert",
"this_will_be_the_placeholder": "Dies wird der Platzhalter sein",
"error_booking_event": "Bei der Buchung dieses Termins ist ein Fehler aufgetreten, bitte aktualisieren Sie die Seite und versuchen Sie es erneut",
"timeslot_missing_title": "Kein Zeitfenster ausgewählt",
@@ -1924,22 +1924,22 @@
"organization_logo": "Logo der Organization",
"organization_about_description": "Ein paar Sätze zu Ihrer Organization. Dies wird auf der öffentlichen Profilseite Ihrer Organization erscheinen.",
"ill_do_this_later": "Ich werde das später tun",
"verify_your_email": "Bestätigen Sie Ihre E-Mail",
"verify_your_email": "Bestätigen Sie Ihre E-Mail-Adresse",
"enter_digit_code": "Geben Sie den 6-stelligen Code ein, den wir an {{email}} gesendet haben",
"verify_email_organization": "Bestätigen Sie Ihre E-Mail, um eine Organization zu erstellen",
"verify_email_organization": "Bestätigen Sie Ihre E-Mail-Adresse, um eine Organization zu erstellen",
"code_provided_invalid": "Der eingegebene Code ist ungültig, versuchen Sie es erneut",
"email_already_used": "Die E-Mail-Adresse wird bereits verwendet",
"organization_admin_invited_heading": "Sie wurden eingeladen, ein Mitglied von {{orgName}} zu werden",
"organization_admin_invited_body": "Schließen Sie sich Ihrem Team bei {{orgName}} an und konzentrieren Sie sich auf Ihre Meetings, nicht auf das Planen von Meetings!",
"duplicated_slugs_warning": "Die folgenden Teams konnten aufgrund von doppelten Slugs nicht erstellt werden: {{slugs}}",
"team_names_empty": "Teamnamen dürfen nicht leer sein",
"team_names_repeated": "Teamnamen dürfen nicht wiederholt vorkommen",
"team_names_repeated": "Teamnamen dürfen nicht bereits verwendet werden",
"user_belongs_organization": "Der Benutzer gehört einer Organization an",
"org_no_teams_yet": "Diese Organization hat noch keine Teams",
"org_no_teams_yet_description": "Falls Sie ein Administrator sind, sollten Sie unbedingt Teams erstellen, welche hier angezeigt werden können.",
"set_up": "Einrichten",
"set_up_your_profile": "Richten Sie Ihr Profil ein",
"set_up_your_profile_description": "Lassen Sie Leute wissen, wer Sie innerhalb von {{orgName}} sind und wann sie mit Ihrem öffentlichen Link arbeiten.",
"set_up_your_profile_description": "Lassen Sie Leute beim Klicken auf Ihren öffentlichen Link wissen, welche Funktion Sie innerhalb von {{orgName}} haben.",
"my_profile": "Mein Profil",
"my_settings": "Meine Einstellungen",
"crm": "CRM",
@@ -1947,8 +1947,8 @@
"sender_id_info": "Name oder Nummer, welcher bzw. welche als Absender einer SMS angezeigt wird (einige Länder erlauben keine alphanumerischen Absender-IDs)",
"org_admins_can_create_new_teams": "Nur der Administrator Ihrer Organization kann neue Teams erstellen",
"google_new_spam_policy": "Die neuen Spam-Richtlinien von Google könnten verhindern, dass Sie E-Mail- und Kalenderbenachrichtigungen zu dieser Buchung erhalten.",
"resolve": "Beheben",
"no_organization_slug": "Beim Erstellen von Teams für diese Organization ist ein Fehler aufgetreten. URL Slug fehlt.",
"resolve": "Problem lösen",
"no_organization_slug": "Beim Erstellen von Teams für diese Organization ist ein Fehler aufgetreten. URL-Slug fehlt.",
"org_name": "Name der Organization",
"org_url": "URL der Organization",
"copy_link_org": "Link zur Organization kopieren",
@@ -1959,8 +1959,8 @@
"insights_all_org_filter": "Alle Apps",
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Benutzer: {{userName}}",
"insights_subtitle": "Sehen Sie sich Buchungs-Insights über Ihre Termine an",
"custom_plan": "Benutzerdefinierter Plan",
"insights_subtitle": "Sehen Sie sich Buchungs-Insights zu Ihren Termine an",
"custom_plan": "Maßgeschneiderter Tarif",
"email_embed": "E-Mail Einbettung",
"add_times_to_your_email": "Zeiten zur E-Mail hinzufügen",
"select_time": "Zeit auswählen",
@@ -1980,5 +1980,7 @@
"no_other_teams_found_description": "Es gibt keine weiteren Teams in dieser Organisation.",
"attendee_first_name_variable": "Vorname des Teilnehmers",
"attendee_last_name_variable": "Nachname des Teilnehmers",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Zeichenketten über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"my_availability": "Meine Verfügbarkeit",
"team_availability": "Teamverfügbarkeit",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Code-Zeilen über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+23 -4
View File
@@ -562,6 +562,7 @@
"leave": "Leave",
"profile": "Profile",
"my_team_url": "My team URL",
"my_teams": "My teams",
"team_name": "Team Name",
"your_team_name": "Your team name",
"team_updated_successfully": "Team updated successfully",
@@ -808,7 +809,6 @@
"add_new_event_type": "Add a new event type",
"new_event_type_to_book_description": "Create a new event type for people to book times with.",
"length": "Length",
"people":"People",
"minimum_booking_notice": "Minimum Notice",
"offset_toggle": "Offset start times",
"offset_toggle_description": "Offset timeslots shown to bookers by a specified number of minutes",
@@ -872,6 +872,7 @@
"account_managed_by_identity_provider_description": "To change your email, password, enable two-factor authentication and more, please visit your {{provider}} account settings.",
"signin_with_google": "Sign in with Google",
"signin_with_saml": "Sign in with SAML",
"signin_with_saml_oidc": "Sign in with SAML/OIDC",
"you_will_need_to_generate": "You will need to generate an access token from your old scheduling tool.",
"import": "Import",
"import_from": "Import from",
@@ -929,7 +930,7 @@
"verify_wallet": "Verify Wallet",
"create_events_on": "Create events on",
"enterprise_license": "This is an enterprise feature",
"enterprise_license_description": "To enable this feature, have an administrator go to {{setupUrl}} to enter a license key. If a license key is already in place, please contact {{supportMail}} for help.",
"enterprise_license_description": "To enable this feature, have an administrator go to <2>/auth/setup</2> to enter a license key. If a license key is already in place, please contact <5>{{SUPPORT_MAIL_ADDRESS}}</5> for help.",
"enterprise_license_development": "You can test this feature on development mode. For production usage please have an administrator go to <2>/auth/setup</2> to enter a license key.",
"missing_license": "Missing License",
"signup_requires": "Commercial license required",
@@ -1581,7 +1582,6 @@
"apps_settings": "Apps settings",
"fill_this_field": "Please fill in this field",
"options": "Options",
"no_options_available":"No options available",
"enter_option": "Enter Option {{index}}",
"add_an_option": "Add an option",
"radio": "Radio",
@@ -1998,7 +1998,7 @@
"kyc_verification": "KYC Verification",
"organizations": "Organizations",
"org_admin_other_teams": "Other teams",
"org_admin_other_teams_description": "Here you can see teams inside your organization but that you are not part of. You can add yourself to them if needed.",
"org_admin_other_teams_description": "Here you can see teams inside your organization that you are not part of. You can add yourself to them if needed.",
"no_other_teams_found": "No other teams found",
"no_other_teams_found_description": "There are no other teams in this organization.",
"attendee_first_name_variable": "Attendee first name",
@@ -2007,5 +2007,24 @@
"attendee_last_name_info": "The person booking's last name",
"me": "Me",
"verify_team_tooltip": "Verify your team to enable sending messages to attendees",
"member_removed": "Member removed",
"my_availability": "My Availability",
"team_availability": "Team Availability",
"admin_org_notification_email_subject": "New organization created: pending action",
"hi_admin": "Hi Administrator",
"admin_org_notification_email_title": "An organization requires DNS setup",
"admin_org_notification_email_body_part1": "An organization with slug \"{{orgSlug}}\" was created.<br /><br />Please be sure to configure your DNS registry to point the subdomain corresponding to the new organization to where the main app is running. Otherwise the organization will not work.<br /><br />Here are just the very basic options to configure a subdomain to point to their app so it loads the organization profile page.<br /><br />You can do it either with the A Record:",
"admin_org_notification_email_body_part2": "Or the CNAME record:",
"admin_org_notification_email_body_part3": "Once you configure the subdomain, please mark the DNS configuration as done in Organizations Admin Settings.",
"admin_org_notification_email_cta": "Go to Organizations Admin Settings",
"org_has_been_processed": "Org has been processed",
"org_error_processing": "There has been an error processing this organization",
"orgs_page_description": "A list of all organizations. Accepting an organization will allow all users with that email domain to sign up WITHOUT email verifciation.",
"unverified": "Unverified",
"dns_missing": "DNS Missing",
"mark_dns_configured": "Mark as DNS configured",
"value": "Value",
"your_organization_updated_sucessfully": "Your organization updated successfully",
"seat_options_doesnt_multiple_durations": "Seat option doesn't support multiple durations",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+10 -10
View File
@@ -11,14 +11,14 @@
"calcom_explained_new_user": "¡Termine de configurar su cuenta de {{appName}}! Solo le faltan unos pasos para resolver todos sus problemas de programación.",
"have_any_questions": "¿Tienes preguntas? Estamos aquí para ayudar.",
"reset_password_subject": "{{appName}}: Instrucciones para restablecer la contraseña",
"verify_email_subject": "{{appName}}: verifique su cuenta",
"verify_email_subject": "{{appName}}: Verifique su cuenta",
"check_your_email": "Revise su correo electrónico",
"verify_email_page_body": "Enviamos un correo electrónico a {{email}}. Es importante que verifique su dirección de correo electrónico para garantizar que {{appName}} le ofrezca el mejor servicio de entrega de correos y calendarios.",
"verify_email_banner_body": "Verifique su dirección de correo electrónico para garantizar la mejor entrega de correo electrónico y calendario",
"verify_email_email_header": "Verifique su dirección de correo electrónico",
"verify_email_email_button": "Verificar correo electrónico",
"verify_email_email_body": "Verifique su dirección de correo electrónico al hacer clic en el botón a continuación.",
"verify_email_email_link_text": "Este es el enlace en caso de que no le guste hacer clic en los botones:",
"verify_email_email_link_text": "Este es el enlace en caso de que no prefiera hacer clic en los botones:",
"email_sent": "Correo electrónico enviado correctamente",
"event_declined_subject": "Rechazado: {{title}} en {{date}}",
"event_cancelled_subject": "Cancelado: {{title}} el {{date}}",
@@ -130,7 +130,7 @@
"upgrade_banner_action": "Actualizar aquí",
"team_upgraded_successfully": "¡Tu equipo se actualizó con éxito!",
"org_upgrade_banner_description": "Gracias por probar nuestro nuevo plan de equipo. Notamos que su equipo \"{{teamName}}\" necesita actualizarse.",
"org_upgraded_successfully": "Su organización se actualizó con éxito.",
"org_upgraded_successfully": "Su Organization se actualizó con éxito.",
"use_link_to_reset_password": "Utilice el enlace de abajo para restablecer su contraseña",
"hey_there": "Hola,",
"forgot_your_password_calcom": "¿Olvidaste tu contraseña? - {{appName}}",
@@ -248,7 +248,7 @@
"organization_general_description": "Administre los ajustes para el idioma y la zona horaria de su equipo",
"few_sentences_about_yourself": "Unas pocas frases sobre ti mismo. Esto aparecerá en tu página de url personal.",
"nearly_there": "¡Ya casi está!",
"nearly_there_instructions": "Lo último, una breve descripción sobre usted y una foto realmente lo ayudan a obtener reservas y a que las personas sepan con quién están reservando.",
"nearly_there_instructions": "Lo último, una breve descripción sobre usted y una foto lo ayudan a obtener reservas y a que las personas sepan con quién están reservando.",
"set_availability_instructions": "Defina los intervalos de tiempo cuando esté disponible de forma recurrente. Puede crear más tarde y asignarlos a diferentes calendarios.",
"set_availability": "Establecer Disponibilidad",
"continue_without_calendar": "Continuar sin calendario",
@@ -306,9 +306,9 @@
"password_has_been_reset_login": "Su contraseña ha sido restablecida. Ahora puede iniciar sesión con su nueva contraseña.",
"layout": "Diseño",
"bookerlayout_default_title": "Vista predeterminada",
"bookerlayout_description": "Puede seleccionar varios y sus reservadores pueden cambiar de vista.",
"bookerlayout_description": "Puede seleccionar varios y quienes le reserven pueden cambiar de vista.",
"bookerlayout_user_settings_title": "Diseño de reserva",
"bookerlayout_user_settings_description": "Puede seleccionar varios y los reservadores pueden cambiar de vista. Esto se puede anular por evento.",
"bookerlayout_user_settings_description": "Puede seleccionar varios y quienes le reservan pueden cambiar de vista. Esto se puede anular por evento.",
"bookerlayout_month_view": "Mes",
"bookerlayout_week_view": "Semanal",
"bookerlayout_column_view": "Columna",
@@ -1327,7 +1327,7 @@
"download_responses_description": "Descargue todas las respuestas de su formulario en formato CSV.",
"download": "Descargar",
"download_recording": "Descargar grabación",
"recording_from_your_recent_call": "Una grabación de su llamada reciente en {{appName}} está lista para descargarla",
"recording_from_your_recent_call": "Una grabación de su llamada reciente en {{appName}} está lista para descargar",
"create_your_first_form": "Crea tu primer formulario",
"create_your_first_form_description": "Con los formularios de orientación puedes hacer preguntas calificadoras y encaminarte hacia la persona o tipo de evento correctos.",
"create_your_first_webhook": "Crea tu primer Webhook",
@@ -1661,7 +1661,7 @@
"email_user_cta": "Ver la invitación",
"email_no_user_invite_heading": "Lo invitaron a unirse a {{appName}} {{entity}}",
"email_no_user_invite_subheading": "{{invitedBy}} lo invitó a unirse a su equipo en {{appName}}. {{appName}} es el programador de eventos que les permite a usted y a su equipo programar reuniones sin necesidad de enviar correos electrónicos.",
"email_user_invite_subheading": "{{invitedBy}} lo ha invitado a unirse a su {{entity}} \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su {{entity}} programar reuniones sin correos electrónicos de ida y vuelta.",
"email_user_invite_subheading": "{{invitedBy}} lo ha invitado a unirse a su {{entity}} \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su {{entity}} programar reuniones sin necesidad de correos electrónicos.",
"email_no_user_invite_steps_intro": "Lo guiaremos a través de unos pocos pasos y disfrutará de una programación sin estrés con su {{entity}} en muy poco tiempo.",
"email_no_user_step_one": "Elija su nombre de usuario",
"email_no_user_step_two": "Conecte su cuenta de calendario",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "Un asistente ya no asistirá a su evento",
"attendee_no_longer_attending_subtitle": "{{name}} ha cancelado. Esto significa que está disponible una plaza para esta franja horaria",
"create_event_on": "Crear evento en",
"create_routing_form_on": "Crear formulario de enrutamiento el",
"create_routing_form_on": "Crear formulario de enrutamiento en",
"default_app_link_title": "Establecer un enlace de aplicación predeterminado",
"default_app_link_description": "Establecer un enlace de aplicación predeterminado permite que todos los tipos de eventos recién creados utilicen el enlace de aplicación que establezca.",
"organizer_default_conferencing_app": "Aplicación por defecto del organizador",
@@ -1934,7 +1934,7 @@
"404_the_org": "La organización",
"404_the_team": "El equipo",
"404_claim_entity_org": "Reclame su subdominio para su organización",
"404_claim_entity_team": "Reclama este equipo y empiece a gestionar los horarios de forma colectiva",
"404_claim_entity_team": "Reclame este equipo y empiece a gestionar los horarios de forma colectiva",
"insights_all_org_filter": "Todas las aplicaciones",
"insights_team_filter": "Equipo: {{teamName}}",
"insights_user_filter": "Usuario: {{userName}}",
+27 -2
View File
@@ -407,6 +407,8 @@
"allow_dynamic_booking_tooltip": "Les liens de réservation de groupe peuvent être créés dynamiquement en ajoutant plusieurs noms d'utilisateur séparés par un « + ». Exemple : « {{appName}}/bailey+peer ».",
"allow_dynamic_booking": "Autoriser les participants à prendre rendez-vous avec vous via des réservations de groupe dynamiques",
"dynamic_booking": "Liens de groupe dynamiques",
"allow_seo_indexing": "Autorisez les moteurs de recherche à accéder à votre contenu public.",
"seo_indexing": "Autoriser l'indexation SEO",
"email": "E-mail",
"email_placeholder": "jdoe@exemple.com",
"full_name": "Nom complet",
@@ -560,6 +562,7 @@
"leave": "Quitter",
"profile": "Profil",
"my_team_url": "Lien de mon équipe",
"my_teams": "Mes équipes",
"team_name": "Nom de l'équipe",
"your_team_name": "Nom de votre équipe",
"team_updated_successfully": "Équipe mise à jour avec succès",
@@ -607,7 +610,7 @@
"disband_org_confirmation_message": "Voulez-vous vraiment dissoudre cette organisation ? Toutes les équipes et tous les membres seront supprimés.",
"remove_member_confirmation_message": "Voulez-vous vraiment supprimer ce membre de l'équipe ?",
"confirm_disband_team": "Oui, dissoudre l'équipe",
"confirm_remove_member": "Oui, retirer le membre",
"confirm_remove_member": "Oui, supprimer le membre",
"remove_member": "Supprimer le membre",
"manage_your_team": "Gérez votre équipe",
"no_teams": "Vous n'avez pas encore d'équipe.",
@@ -869,6 +872,7 @@
"account_managed_by_identity_provider_description": "Pour modifier votre adresse e-mail et/ou votre mot de passe, activez l'authentification à deux facteurs et plus, veuillez consulter les paramètres de votre compte {{provider}}.",
"signin_with_google": "Se connecter avec Google",
"signin_with_saml": "Se connecter avec SAML",
"signin_with_saml_oidc": "Se connecter avec SAML/OIDC",
"you_will_need_to_generate": "Vous devrez générer un token d'accès à partir de votre ancien outil de planification.",
"import": "Importer",
"import_from": "Importer depuis",
@@ -926,7 +930,7 @@
"verify_wallet": "Vérifier le portefeuille",
"create_events_on": "Créer des événements dans :",
"enterprise_license": "Il s'agit d'une fonctionnalité d'entreprise",
"enterprise_license_description": "Pour activer cette fonctionnalité, demandez à un administrateur d'accéder à {{setupUrl}} pour saisir une clé de licence. Si une clé de licence est déjà en place, veuillez contacter {{supportMail}} pour obtenir de l'aide.",
"enterprise_license_description": "Pour activer cette fonctionnalité, demandez à un administrateur d'accéder à <2>/auth/setup</2> pour saisir une clé de licence. Si une clé de licence est déjà en place, veuillez contacter <5>{{SUPPORT_MAIL_ADDRESS}}</5> pour obtenir de l'aide.",
"enterprise_license_development": "Vous pouvez tester cette fonctionnalité en mode développement. Pour une utilisation en production, veuillez demander à un administrateur d'aller à <2>/auth/setup</2> pour entrer une clé de licence.",
"missing_license": "Licence manquante",
"signup_requires": "Licence commerciale requise",
@@ -1262,6 +1266,7 @@
"error_updating_settings": "Erreur lors de la mise à jour des paramètres",
"personal_cal_url": "Mon lien {{appName}} personnel",
"bio_hint": "Quelques mots à propos de vous. Ces informations apparaîtront sur votre page publique.",
"user_has_no_bio": "Cet utilisateur n'a pas encore ajouté de description.",
"delete_account_modal_title": "Supprimer le compte",
"confirm_delete_account_modal": "Voulez-vous vraiment supprimer votre compte {{appName}} ?",
"delete_my_account": "Supprimer mon compte",
@@ -1978,6 +1983,11 @@
"org_team_names_example_5": "p. ex. Équipe d'analyse de données",
"org_max_team_warnings": "Vous pourrez ajouter plus d'équipes plus tard.",
"what_is_this_meeting_about": "En quoi consiste ce rendez-vous ?",
"add_to_team": "Ajouter à l'équipe",
"remove_users_from_org": "Supprimer des utilisateurs de l'organisation",
"remove_users_from_org_confirm": "Voulez-vous vraiment supprimer {{userCount}} utilisateurs de cette organisation ?",
"user_has_no_schedules": "Cet utilisateur n'a pas encore configuré de planning",
"user_isnt_in_any_teams": "Cet utilisateur n'est dans aucune équipe",
"requires_confirmation_mandatory": "Les messages ne peuvent être envoyés aux participants que lorsque le type d'événement nécessite une confirmation.",
"kyc_verification_information": "Pour garantir la sécurité, vous devez vérifier votre {{teamOrAccount}} avant d'envoyer des messages aux participants. Veuillez nous contacter à <a>{{supportEmail}}</a> et fournir les informations suivantes :",
"kyc_verification_documents": "<ul><li>Votre {{teamOrUser}}</li><li>Pour les entreprises : Joignez votre document de vérification d'entreprise</li><li>Pour les particuliers : Joignez une pièce d'identité</li></ul>",
@@ -1993,5 +2003,20 @@
"attendee_last_name_variable": "Nom du participant",
"me": "Moi",
"verify_team_tooltip": "Vérifiez votre équipe pour activer l'envoi de messages aux participants",
"member_removed": "Membre supprimé",
"my_availability": "Mes disponibilités",
"team_availability": "Disponibilités de l'équipe",
"admin_org_notification_email_subject": "Nouvelle organisation créée : action en attente",
"admin_org_notification_email_title": "Une organisation nécessite une configuration DNS",
"admin_org_notification_email_body_part2": "Ou l'enregistrement CNAME :",
"admin_org_notification_email_body_part3": "Une fois le sous-domaine configuré, veuillez marquer la configuration DNS comme terminée dans les paramètres d'administration des organisations.",
"admin_org_notification_email_cta": "Accéder aux paramètres d'administration des organisations",
"org_error_processing": "Une erreur s'est produite lors du traitement de cette organisation",
"orgs_page_description": "Une liste de toutes les organisations. Accepter une organisation permettra à tous les utilisateurs avec ce domaine de messagerie de s'inscrire SANS vérification d'e-mail.",
"unverified": "Non vérifié",
"dns_missing": "DNS manquant",
"mark_dns_configured": "Marquer comme DNS configuré",
"value": "Valeur",
"your_organization_updated_sucessfully": "Votre organisation a été mise à jour avec succès",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Ajoutez vos nouvelles chaînes ci-dessus ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+68 -68
View File
@@ -11,15 +11,15 @@
"calcom_explained_new_user": "סיים להגדיר את החשבון של {{appName}}! אתה רק מספר צעדים מפתרון כל בעיות התזמון שלך.",
"have_any_questions": "יש לך שאלות? אנחנו כאן כדי לעזור.",
"reset_password_subject": "{{appName}}: הנחיות לאיפוס סיסמה",
"verify_email_subject": "{{appName}}: אמת את החשבון",
"check_your_email": "בדוק את הדוא״ל שלך",
"verify_email_page_body": "שלחנו מייל ל- {{email}}. חשוב שתאמת את כתובת הדוא״ל שלך כדי להבטיח את תעבורת הדוא״ל והיומן מ- {{appName}}.",
"verify_email_banner_body": "יש לאמת את כתובת הדוא״ל כדי להבטיח תעבורת דוא\"ל ולוחות שנה מיטבית",
"verify_email_email_header": "אמת את חשבון הדוא״ל שלך",
"verify_email_email_button": "אמת דוא״ל",
"verify_email_email_body": "אנא אמת את חשבון הדוא״ל שלך על ידי לחיצה על הכפתור מטה.",
"verify_email_subject": "{{appName}}: יש לאמת את החשבון",
"check_your_email": "בדוק/בדקי את הדוא״ל שלך",
"verify_email_page_body": "שלחנו הודעת דוא״ל לכתובת {{email}}. חשוב שתאמת/י את כתובת הדוא״ל שלך כדי להבטיח שתוכל/י לקבל הודעות מ-{{appName}} לכתובת הדוא״ל וללוח השנה שלך.",
"verify_email_banner_body": "יש לאמת את כתובת הדוא״ל כדי להבטיח שתוכל/י לקבל הודעות לכתובת הדוא״ל וללוח השנה בצורה הטובה ביותר",
"verify_email_email_header": "יש לאמת את כתובת הדוא״ל שלך",
"verify_email_email_button": "אימות כתובת דוא״ל",
"verify_email_email_body": "נא לאמת את כתובת הדוא״ל שלך על ידי לחיצה על הכפתור להלן.",
"verify_email_email_link_text": "הנה הקישור, למקרה שאינך אוהב/ת ללחוץ על כפתורים:",
"email_sent": "מייל נשלח בהצלחה",
"email_sent": "הודעת הדוא״ל נשלחה בהצלחה",
"event_declined_subject": "נדחה: {{title}} ב- {{date}}",
"event_cancelled_subject": "בוטל: {{title}} ב-{{date}}",
"event_request_declined": "בקשת האירוע שלך נדחתה",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את החבילה החדשה שלנו לצוותים. שמנו לב שהצוות שלך, \"{{teamName}}\", זקוק לשדרוג.",
"upgrade_banner_action": "כאן משדרגים",
"team_upgraded_successfully": "הצוות שלך שודרג בהצלחה!",
"org_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את החבילה החדשה שלנו לארגונים. שמנו לב שה-Organization שלך, \"{{teamName}}\", זקוק לשדרוג.",
"org_upgraded_successfully": "השדרוג של הארגון שלך בוצע בהצלחה!",
"org_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את חבילת Organization החדשה שלנו. שמנו לב שה-Organization שלך, ״{{teamName}}״, זקוק לשדרוג.",
"org_upgraded_successfully": "ה-Organization שלך שודרג בהצלחה!",
"use_link_to_reset_password": "נא להשתמש בקישור הבא כדי לאפס את הסיסמה",
"hey_there": "שלום,",
"forgot_your_password_calcom": "שכחתה את הסיסמה? - {{appName}}",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "דף זה אינו קיים.",
"check_spelling_mistakes_or_go_back": "ודא כי שאין שגיאות איות או חזור/י לדף הקודם.",
"404_page_not_found": "404: לא ניתן למצוא את הדף הזה.",
"booker_event_not_found": "לא מצאנו את הארוע שניסית להזמין.",
"booker_event_not_found": "לא מצאנו את האירוע שניסית להזמין.",
"getting_started": "תחילת העבודה",
"15min_meeting": "פגישה של 15 דקות",
"30min_meeting": "פגישה של 30 דקות",
@@ -248,7 +248,7 @@
"organization_general_description": "ניהול הגדרות השפה ואזור הזמן של הצוות",
"few_sentences_about_yourself": "מספר משפטים אודותיך. המידע הזה יופיע בדף ה-URL האישי שלך.",
"nearly_there": "כמעט סיימנו!",
"nearly_there_instructions": "דבר אחרון: תיאור קצר אודותיך בתוספת תמונה ממש עוזרים להשיג הזמנות ומאפשרים לאנשים לדעת עם מי הם עומדים להיפגש.",
"nearly_there_instructions": "דבר אחרון: תיאור קצר אודותיך/ייך בתוספת תמונה עוזרים מאוד להשיג הזמנות ומאפשרים לאנשים לדעת עם מי הם עומדים להיפגש.",
"set_availability_instructions": "הגדר טווחי זמן שבהם אתה זמין באופן קבוע. ניתן יהיה ליצור טווחי זמן נוספים מאוחר יותר ולהקצות אותם ללוחות שנה אחרים.",
"set_availability": "ציין את הזמינות שלך",
"continue_without_calendar": "להמשיך בלי לוח שנה",
@@ -306,11 +306,11 @@
"password_has_been_reset_login": "הסיסמה שלך אופסה. עכשיו ניתן להיכנס עם הסיסמה החדשה.",
"layout": "פריסה",
"bookerlayout_default_title": "תצוגת ברירת מחדל",
"bookerlayout_description": "אתה יכול לבחור כמה והמתזמנים שלך יכולים לשנות תצוגות.",
"bookerlayout_user_settings_title": "פריסת תזמון",
"bookerlayout_user_settings_description": "אפשר לבחור מזמינים מרובים והמזמינים יכולים לשנות תצוגות. ניתן לעקוף זאת על בסיס כל אירוע לחוד.",
"bookerlayout_description": "אפשר לבחור מספר אפשרויות תצוגה והמזמינים שלך יוכלו להחליף ביניהן.",
"bookerlayout_user_settings_title": "פריסת הזמנות",
"bookerlayout_user_settings_description": "אפשר לבחור אפשרויות תצוגה מרובות והמזמינים יוכלו להחליף ביניהן. ניתן לעקוף זאת עבור כל אירוע נפרד.",
"bookerlayout_month_view": "חודש",
"bookerlayout_week_view": "אחת לשבוע",
"bookerlayout_week_view": "שבועית",
"bookerlayout_column_view": "עמודה",
"bookerlayout_error_min_one_enabled": "יש להפעיל לפחות פריסה אחת.",
"bookerlayout_error_default_not_enabled": "הפריסה שבחרת כתצוגת ברירת המחדל לא שייכת לפריסות המופעלות.",
@@ -328,7 +328,7 @@
"error_end_time_next_day": "שעת הסיום לא יכולה לחרוג מ-24 שעות",
"back_to_bookings": "בחזרה להזמנות",
"free_to_pick_another_event_type": "ניתן לבחור אירוע אחר בכל עת.",
"cancelled": "בוטל",
"cancelled": "בוטלה",
"cancellation_successful": "פעולת הביטול בוצעה בהצלחה",
"really_cancel_booking": "בטוח שברצונך לבטל את ההזמנה?",
"cannot_cancel_booking": "לא ניתן לבטל את ההזמנה הזו",
@@ -403,7 +403,7 @@
"recording_ready": "הקישור להורדת ההקלטה מוכן",
"booking_created": "ההזמנה נוצרה",
"booking_rejected": "ההזמנה נדחתה",
"booking_requested": "ההזמנה התבקשה",
"booking_requested": "התקבלה בקשת הזמנה",
"meeting_ended": "הפגישה הסתיימה",
"form_submitted": "הטופס נשלח",
"event_triggers": "גורמים מפעילים של אירועים",
@@ -413,8 +413,8 @@
"team_webhooks": "רכיבי Webhook של הצוות",
"create_new_webhook_to_account": "יצירת Webhook חדש לחשבון",
"new_webhook": "Webhook חדש",
"receive_cal_meeting_data": "קבל/י נתוני פגישות מ-{{appName}} בכתובת URL שציינת ובזמן אמת, כאשר נקבע מועד לאירוע או כאשר אירוע מבוטל.",
"receive_cal_event_meeting_data": "קבל/י נתוני פגישות מ-{{appName}} בכתובת URL שציינת ובזמן אמת, כאשר נקבע מועד לאירוע זה או כאשר הוא מבוטל.",
"receive_cal_meeting_data": "קבל/י נתוני פגישות בזמן אמת מ-{{appName}} בכתובת URL שציינת, כאשר נקבע מועד לאירוע או כאשר אירוע מבוטל.",
"receive_cal_event_meeting_data": "קבל/י נתוני פגישות בזמן אמת מ-{{appName}} בכתובת URL שציינת, כאשר נקבע מועד לאירוע הזה או כאשר הוא מבוטל.",
"responsive_fullscreen_iframe": "iframe רספונסיבי על מסך מלא",
"loading": "טוען...",
"deleting": "מתבצעת מחיקה...",
@@ -477,7 +477,7 @@
"max_limit_allowed_hint": "חייב להיות באורך של עד {{limit}} תווים",
"invalid_password_hint": "הסיסמה חייבת להיות באורך של {{passwordLength}} תווים לפחות ולכלול לפחות ספרה אחת ושילוב של אותיות רישיות וקטנות",
"incorrect_password": "הסיסמה שגויה.",
"incorrect_email_password": "כתובת הדוא\"ל או הסיסמה שגויות.",
"incorrect_email_password": "כתובת הדוא״ל או הסיסמה שגויות.",
"use_setting": "השתמש בהגדרה",
"am_pm": "לפנה\"צ/אחה\"צ",
"time_options": "אפשרויות זמן",
@@ -586,8 +586,8 @@
"confirm_all": "לאשר הכל",
"disband_team": "פיזור הצוות",
"disband_team_confirmation_message": "בטוח שברצונך לפזר את הצוות הזה? כל מי ששיתפת איתו את הקישור לצוות לא יוכל להזמין יותר באמצעותו.",
"disband_org": "פיזור הארגון",
"disband_org_confirmation_message": "בטוח שברצונך לפזר את הארגון הזה? כל הצוותים והחברים יימחקו.",
"disband_org": "פירוק Organization",
"disband_org_confirmation_message": "בטוח/ה שברצונך לפרק את הארגון הזה? כל הצוותים והחברים יימחקו.",
"remove_member_confirmation_message": "בטוח שברצונך להסיר חבר/ה זה/ו מהצוות?",
"confirm_disband_team": "כן, לפזר את הצוות",
"confirm_remove_member": "כן, להסיר את החבר/ה",
@@ -699,7 +699,7 @@
"create_team_to_get_started": "צור צוות כדי להתחיל",
"teams": "צוותים",
"team": "צוות",
"organization": "Organization",
"organization": "ארגון",
"team_billing": "חיוב צוותים",
"team_billing_description": "ניהול החיוב עבור הצוות",
"upgrade_to_flexible_pro_title": "שינינו את החיוב בעבור צוותים",
@@ -867,23 +867,23 @@
"no_category_apps": "אין אפליקציות בקטגוריה {{category}}",
"all_apps": "כל האפליקציות",
"no_category_apps_description_calendar": "הוסף/י אפליקציית לוח שנה כדי לבדוק אם יש התנגשויות על מנת למנוע כפל הזמנות",
"no_category_apps_description_conferencing": "נסה/י להוסיף אפליקציית שיחות ועידה לצורך שיחות וידאו עם הלקוחות",
"no_category_apps_description_conferencing": "נסה/י להוסיף אפליקציית שיחות ועידה לצורך ביצוע שיחות וידאו עם הלקוחות",
"no_category_apps_description_payment": "הוסף/י אפליקציית תשלומים על מנת להפוך את ביצוע העסקאות בינך לבין הלקוחות לפשוט יותר",
"no_category_apps_description_analytics": "להוסיף אפליקציה לניתוח נתונים עבור דפי ההזמנות שלך",
"no_category_apps_description_automation": "להוסיף אפליקציית אוטומציה שברצונך להשתמש בה",
"no_category_apps_description_other": "הוסף/הוסיפי אפליקציה מכל סוג אחר לביצוע פעולות שונות",
"no_category_apps_description_web3": "הוסף אפליקצית web3 לעמודי תזמון הפגישות שלך",
"no_category_apps_description_messaging": "הוסף/י אפליקציה להעברת הודעות כדי להגדיר עדכונים ותזכורות בהתאמה אישית",
"no_category_apps_description_messaging": "הוסף/הוסיפי אפליקציית מסרים מידיים כדי להגדיר התראות ותזכורות בהתאמה אישית",
"no_category_apps_description_crm": "הוסף/י אפליקציית CRM כדי לנהל מעקב אחר האנשים שנפגשת איתם",
"installed_app_calendar_description": "הגדר/הגדירח את לוחות השנה כדי לבדוק אם יש התנגשויות על מנת למנוע כפל הזמנות.",
"installed_app_payment_description": "הגדר/הגידירי את השירותים לעיבוד תשלומים שבהם יש להשתמש לחיוב הלקוחות.",
"installed_app_analytics_description": "הגדרת האפליקציות לניתוח נתונים שבהן יש להשתמש עבור דפי ההזמנות שלך",
"installed_app_other_description": "כל האפליקציות המותקנות שלך מקטגוריות אחרות.",
"installed_app_conferencing_description": "הגדר/י את האפליקציות לשיחות ועידה שבהן ברצונך להשתמש",
"installed_app_conferencing_description": "הגדר/הגדירי את האפליקציות לשיחות ועידה שבהן ברצונך להשתמש",
"installed_app_automation_description": "הגדרת אפליקציות האוטומציה שבהן ברצונך להשתמש",
"installed_app_web3_description": "הגדר באיזה אפליקציות web3 להשתמש בעמודי תזמון הפגישות שלך",
"installed_app_messaging_description": "הגדר/י את האפליקציות להעברת הודעות שבהן ברצונך להשתמש להגדרת עדכונים ותזכורות",
"installed_app_crm_description": "הגדר/י את אפליקציות ה-CRM שבהן ברצונך להשתמש לניהול מעקב אחר האנשים שנפגשת איתם",
"installed_app_messaging_description": "הגדר/הגדירי את אפליקציות המסרים המידיים שבהן ברצונך להשתמש להגדרת עדכונים ותזכורות",
"installed_app_crm_description": "הגדר/הגדירי את אפליקציות ה-CRM שבהן ברצונך להשתמש לניהול מעקב אחר האנשים שנפגשת איתם",
"analytics": "ניתוח נתונים",
"empty_installed_apps_headline": "אין אפליקציות מותקנות",
"empty_installed_apps_description": "יישומים מאפשרים לך לשפר את תהליכי העבודה שלך ואת פשטות ניהול התזמונים שלך משמעותית.",
@@ -909,7 +909,7 @@
"create_events_on": "ליצור אירועים ב-",
"enterprise_license": "תכונה זו זמינה רק במינוי Enterprise",
"enterprise_license_description": "כדי להפעיל את יכולת זו, בקש ממנהל לגשת אל הקישור {{setupUrl}} והקלדת הרישיון. אם כבר יש רישיון מוגדר, צור קשר עם {{supportMail}} לעזרה.",
"enterprise_license_development": "ניתן לבדוק את התכונה הזו בשלב פיתוח. לשימוש בשלב הייצור, מנהל/ת מערכת צריך/ה לעבור אל <2>‎/auth/setup</2> ולהזין מפתח רישיון.",
"enterprise_license_development": "ניתן לבדוק את התכונה הזו במצב פיתוח. לשימוש מצב הייצור, מנהל/ת מערכת צריך/ה לעבור אל <2>/auth/setup</2> ולהזין מפתח רישיון.",
"missing_license": "חסר רישיון",
"signup_requires": "נדרש רישיון לשימוש מסחרי",
"signup_requires_description": "בשלב זה, {{companyName}} אינה מציעה גרסת קוד פתוח חינמית של דף ההרשמה. לקבלת גישה מלאה לרכיבי ההרשמה, תצטרך לקנות רישיון לשימוש מסחרי. לצרכים אישיים אנו ממליצים על Prisma Data Platform או כל ממשק Postgres אחר ליצירת חשבונות.",
@@ -1003,7 +1003,7 @@
"user_impersonation_description": "מצב זה מאפשר לצוות התמיכה שלנו להתחבר באופן זמני לחשבונך כדי שנוכל לפתור במהירות את הבעיות שתדווח/י לנו עליהם.",
"team_impersonation_description": "מאפשר לבעלים של הצוות/מנהלים להיכנס זמנית בשמך.",
"make_team_private": "להגדיר את הצוות כפרטי",
"make_team_private_description": "כשההגדרה הזו מופעלת, חברי הצוות לא יוכלו לראות חברי צוות אחרים.",
"make_team_private_description": "כשההגדרה הזו מופעלת, חברי הצוות שלך לא יוכלו לראות חברי צוות אחרים.",
"you_cannot_see_team_members": "אין לך אפשרות לראות את כל חברי הצוות של צוות פרטי.",
"allow_booker_to_select_duration": "אפשר למזמין לבחור את משך הזמן",
"impersonate_user_tip": "כל השימושים בתכונה זו נבדקים.",
@@ -1072,7 +1072,7 @@
"event_location": "מיקום האירוע",
"reschedule_optional": "הסיבה לשינוי המועד (לא חובה)",
"reschedule_placeholder": "אפשר לאחרים לדעת מדוע עליך לשנות את המועד",
"event_cancelled": "אירוע זה מבוטל",
"event_cancelled": "האירוע בוטל",
"emailed_information_about_cancelled_event": "שלחנו לך ולשאר המשתתפים הודעת דוא״ל כדי ליידע אותם על כך.",
"this_input_will_shown_booking_this_event": "הקלט יוצג בעת הזמנת אירוע זה",
"meeting_url_in_conformation_email": "כתובת ה-URL של הפגישה נמצאת בהודעת הדוא״ל שנשלחה לאישור הפגישה",
@@ -1306,7 +1306,7 @@
"connect_analytics_apps": "קישור אפליקציות ניתוח נתונים",
"connect_other_apps": "חיבור אפליקציות אחרות",
"connect_web3_apps": "חבר אפליקציות web3",
"connect_messaging_apps": "קישור אפליקציות להעברת הודעות",
"connect_messaging_apps": "קישור אפליקציות מסרים מידיים",
"connect_crm_apps": "קישור אפליקציות CRM",
"current_step_of_total": "שלב {{currentStep}} מתוך {{maxSteps}}",
"add_variable": "להוסיף משתנה",
@@ -1336,7 +1336,7 @@
"event_one": "אירוע",
"event_other": "אירועים",
"profile_team_description": "ניהול ההגדרות של פרופיל הצוות",
"profile_org_description": "ניהול הגדרות עבור הפרופיל שלך בארגון",
"profile_org_description": "ניהול הגדרות עבור פרופיל הארגון שלך",
"members_team_description": "משתמשים שמשתייכים לקבוצה",
"organization_description": "ניהול מנהלי המערכת והחברים בארגון",
"team_url": "כתובת ה-URL של הצוות",
@@ -1484,17 +1484,17 @@
"yearly": "אחת לשנה",
"checkout": "תשלום",
"your_team_disbanded_successfully": "פיזור הצוות שלך בוצע בהצלחה",
"your_org_disbanded_successfully": "פיזור הארגון שלך בוצע בהצלחה",
"your_org_disbanded_successfully": "פירוק הארגון שלך בוצע בהצלחה",
"error_creating_team": "אירעה שגיאה במהלך יצירת הצוות",
"you": "את/ה",
"resend_email": "שליחה חוזרת של הדוא\"ל",
"resend_email": "לשלוח שוב את הדוא״ל",
"member_already_invited": "החבר כבר הוזמן",
"enter_email_or_username": "יש להזין כתובת דוא\"ל או שם משתמש",
"team_name_taken": "השם הזה כבר תפוס",
"must_enter_team_name": "יש להזין שם צוות",
"team_url_required": "יש להזין כתובת URL של הצוות",
"url_taken": "כתובת ה-URL הזו כבר תפוסה",
"problem_registering_domain": "היתה בעיה ברישום תת-הדומיין; אפשר לנסות שוב או לפנות למנהל/ת מערכת",
"problem_registering_domain": "הייתה בעיה ברישום תת-הדומיין; אפשר לנסות שוב או לפנות למנהל/ת מערכת",
"team_publish": "פרסום צוות",
"number_text_notifications": "מספר טלפון (להודעות טקסט)",
"attendee_email_variable": "כתובת הדוא\"ל של המשתתף",
@@ -1519,7 +1519,7 @@
"find_the_best_person": "למצוא את האדם הכי מתאים שגם זמין לפגישה, ולעבור בסבב דרך כל חברי הצוות.",
"fixed_round_robin": "סבב קבוע",
"add_one_fixed_attendee": "הוסף/י משתתף/ת קבוע/ה אחד/ת ועבור/י בסבב בין מספר משתתפים.",
"calcom_is_better_with_team": "{{appName}} טוב יותר לשימוש עם צוותים",
"calcom_is_better_with_team": "{{appName}} טובה יותר לשימוש עם צוותים",
"the_calcom_team": "הצוות של {{companyName}}",
"add_your_team_members": "הוסף/י את חברי הצוות לסוגי האירועים שלך. השתמש/י בתזמון שיתופי כדי לכלול את כולם או מצא/י את האדם הכי מתאים בעזרת תזמון בסבב.",
"booking_limit_reached": "הגעת להגבלת ההזמנות עבור סוג אירוע זה",
@@ -1539,7 +1539,7 @@
"navigate_installed_apps": "מעבר לאפליקציות המותקנות",
"disabled_calendar": "אם התקנת לוח שנה אחר, ההזמנות החדשות יתווספו אליו. אם לא, קשר/י לוח שנה חדש כדי לא להחמיץ הזמנות חדשות.",
"enable_apps": "הפעלת אפליקציות",
"enable_apps_description": "הפעל/י אפליקציות שמשתמשים יכולים לשלב עם {{appName}}",
"enable_apps_description": "הפעל/הפעילי אפליקציות שמשתמשים יוכלו לשלב עם {{appName}}",
"purchase_license": "רכוש רישיון",
"already_have_key": "כבר יש לי מפתח:",
"already_have_key_suggestion": "אנא העתק את משתנה הסביבה CALCOM_LICENSE_KEY הקיים שלך לכאן.",
@@ -1554,8 +1554,8 @@
"no_available_apps_description": "ודא/י שיש אפליקציות בפריסה שלך בנתיב 'packages/app-store'",
"no_apps": "אף אפליקציה לא מופעלת במופע הזה של Cal",
"no_apps_configured": "עוד לא הוגדרה אף אפליקציה",
"enable_in_settings": "ניתן להפעיל אפליקציות ב'הגדרות'",
"please_contact_admin": "יש לפנות אל מנהל/ת המערכת",
"enable_in_settings": "ניתן להפעיל אפליקציות ב״הגדרות״",
"please_contact_admin": "יש לפנות למנהל/ת המערכת שלך",
"apps_settings": "הגדרות אפליקציות",
"fill_this_field": "נא מלא שדה זה",
"options": "אפשרויות",
@@ -1661,8 +1661,8 @@
"email_user_cta": "צפה בהזמנה",
"email_no_user_invite_heading": "הוזמנת להצטרף ל{{entity}} של {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} הזמין אותך להצטרף לצוות שלו ב- {{appName}}. {{appName}} הינה מתזמן זימונים שמאפשר לך ולצוות שלך לזמן פגישות בלי כל הפינג פונג במיילים.",
"email_user_invite_subheading": "{{invitedBy}} הזמין/ה אותך להצטרף ל-{{entity}} שלו/ה בשם '{{teamName}}' באפליקציה {{appName}}. אפליקציית {{appName}} היא כלי לקביעת מועדים לאירועים שמאפשר לך ול-{{entity}} שלך לתזמן פגישות בלי כל הפינג פונג במיילים.",
"email_no_user_invite_steps_intro": "נדריך אותך במספר קטן של צעדים ותוכל/י להתחיל ליהנות מקביעת מועדים עם ה-{{entity}} שלך בלי בעיות.",
"email_user_invite_subheading": "{{invitedBy}} הזמין/ה אותך להצטרף ל-{{entity}} שלו/ה בשם ״{{teamName}}״ באפליקציה {{appName}}. אפליקציית {{appName}} היא כלי לקביעת מועדים לאירועים שמאפשר לך ול-{{entity}} שלך לתזמן פגישות בלי הצורך לנהל התכתבויות ארוכות בדוא״ל.",
"email_no_user_invite_steps_intro": "נדריך אותך במספר קטן של צעדים ותוכל/י להתחיל ליהנות מקביעת מועדים עם ה-{{entity}} שלך במהירות ובלי בעיות.",
"email_no_user_step_one": "בחר שם משתמש",
"email_no_user_step_two": "קשר את לוח השנה שלך",
"email_no_user_step_three": "הגדר את הזמינות שלך",
@@ -1738,9 +1738,9 @@
"spot_popular_event_types": "זהה ארועים פופולרים",
"spot_popular_event_types_description": "צפה איזה ארועים מקבלים הכי הרבה גישות ותזמונים",
"no_responses_yet": "אין עדיין תגובות",
"no_routes_defined": "לא הוגדר אף נתיב",
"no_routes_defined": "לא הוגדרו נתיבים",
"this_will_be_the_placeholder": "זה יהיה הממלא מקום",
"error_booking_event": "אירעה שגיאה בעת הזמנת האירוע, רענן/י את הדף ונסה/י שוב",
"error_booking_event": "אירעה שגיאה בעת הזמנת האירוע. רענן/י את הדף ונסה/י שוב",
"timeslot_missing_title": "לא נבחר חלון זמן",
"timeslot_missing_description": "כדי להזמין את האירוע, יש לבחור חלון זמן.",
"timeslot_missing_cta": "בחר/י חלון זמן",
@@ -1809,7 +1809,7 @@
"redirect_url_warning": "הוספת כתובת URL להפניה אוטומטית תגרום להשבתת הדף \"הפעולה הצליחה\". חשוב להוסיף את ההודעה \"ההזמנה אושרה בהצלחה'\"בדף המותאם אישית לציון שהפעולה הצליחה.",
"event_trends": "מגמות ארוע",
"clear_filters": "ניקוי המסננים",
"clear": "נקה",
"clear": "ניקוי",
"hold": "החזקה",
"on_booking_option": "גביית תשלום בעת ההזמנה",
"hold_option": "חיוב דמי אי-הגעה",
@@ -1878,41 +1878,41 @@
"first_event_type_webhook_description": "צור/צרי את ה-Webhook הראשון שלך עבור סוג האירוע הזה",
"install_app_on": "התקנת האפליקציה ב-",
"create_for": "צור/צרי עבור",
"setup_organization": "הגדרת ארגון",
"organization_banner_description": "צור/י סביבות שבהן הצוותים שלך יכולים ליצור אפליקציות, תהליכי עבודה וסוגי אירועים משותפים, עם תכונות כמו סבב וקביעת מועדים שיתופית.",
"setup_organization": "הגדרת Organization",
"organization_banner_description": "צור/צרי סביבות שבהן הצוותים שלך יוכלו ליצור אפליקציות, תהליכי עבודה וסוגי אירועים משותפים, עם תכונות כמו סבב וקביעת מועדים שיתופית.",
"organization_banner_title": "ניהול ארגונים עם צוותים מרובים",
"set_up_your_organization": "הגדרת הארגון",
"set_up_your_organization": "הגדרת הארגון שלך",
"organizations_description": "ארגונים הם סביבות משותפות שבהן צוותים יכולים ליצור משאבים משותפים, כמו סוגי אירועים, אפליקציות, תהליכי עבודה ועוד.",
"must_enter_organization_name": "יש להזין את שם הארגון",
"must_enter_organization_admin_email": "יש להזין את כתובת הדוא\"ל של הארגון",
"admin_email": "כתובת הדוא\"ל של הארגון",
"must_enter_organization_name": "יש להזין שם ארגון",
"must_enter_organization_admin_email": "יש להזין את כתובת הדוא״ל של הארגון",
"admin_email": "כתובת הדוא״ל של הארגון",
"admin_username": "שם המשתמש/ת המוגדר/ת כמנהל/ת מערכת",
"organization_name": "שם הארגון",
"organization_url": "כתובת ה-URL של הארגון",
"organization_verify_header": "אימות כתובת הדוא\"ל של הארגון",
"organization_verify_email_body": "השתמש/י בקוד הבא כדי לאמת את כתובת הדוא\"ל שלך לצורך המשך הגדרת הארגון.",
"organization_verify_header": "אימות כתובת הדוא״ל של הארגון",
"organization_verify_email_body": "השתמש/י בקוד שלהלן כדי לאמת את כתובת הדוא״ל שלך לצורך המשך הגדרת הארגון.",
"additional_url_parameters": "פרמטרי URL נוספים",
"about_your_organization": "מידע על הארגון",
"about_your_organization_description": "ארגונים הם סביבות משותפות שבהן ניתן ליצור צוותים מרובים עם משאבים משותפים, כמו חברים, סוגי אירועים, אפליקציות, תהליכי עבודה ועוד.",
"create_your_teams": "יצירת הצוותים שלך",
"create_your_teams_description": "מוסיפים את חברי הצוות לארגון ומתחילים לקבוע מועדים לפגישות ביחד",
"invite_organization_admins": "הזמנת מנהלי המערכת בארגון",
"invite_organization_admins_description": "למנהלי המערכת האלה תהיה גישה לכל הצוותים בארגון. ניתן להוסיף לצוותים מנהלי מערכת וחברים מאוחר יותר.",
"create_your_teams_description": "מוסיפים את חברי הצוות לארגון ומתחילים לקבוע מועדים ביחד",
"invite_organization_admins": "הזמנת מנהלי המערכת של הארגון שלך",
"invite_organization_admins_description": "למנהלי המערכת האלה תהיה גישה לכל הצוותים בארגון. ניתן יהיה להוסיף לצוותים מנהלי מערכת וחברים מאוחר יותר.",
"set_a_password": "הגדרת סיסמה",
"set_a_password_description": "פעולה זו תיצור חשבון משתמש חדש עם כתובת הדוא\"ל של הארגון ועם הסיסמה הזו.",
"organization_logo": "הסמל של הארגון",
"set_a_password_description": "פעולה זו תיצור חשבון משתמש חדש עם כתובת הדוא״ל של הארגון ועם הסיסמה הזו.",
"organization_logo": "הלוגו של הארגון",
"organization_about_description": "מספר משפטים אודות הארגון. הם יופיעו בדף הפרופיל הציבורי של הארגון.",
"ill_do_this_later": "אעשה זאת מאוחר יותר",
"verify_your_email": "אימות כתובת הדוא״ל",
"enter_digit_code": "הזן/י את הקוד בן 6 הספרות ששלחנו לכתובת {{email}}",
"verify_email_organization": "אמת/י את כתובת הדוא\"ל שלך כדי ליצור ארגון",
"enter_digit_code": "הזן/הזיני את הקוד בן 6 הספרות ששלחנו לכתובת {{email}}",
"verify_email_organization": "אמת/י את כתובת הדוא״ל שלך כדי ליצור ארגון",
"code_provided_invalid": "הקוד לא תקין, נסה/י שוב",
"email_already_used": "כתובת הדוא\"ל הזו כבר בשימוש",
"email_already_used": "כתובת הדוא״ל הזו כבר נמצאת בשימוש",
"organization_admin_invited_heading": "הוזמנת להצטרף אל {{orgName}}",
"organization_admin_invited_body": "מצטרפים לצוות ב-{{orgName}} ומתחילים להתמקד בפגישות, ולא בפרטים הטכניים שלהן!",
"duplicated_slugs_warning": "לא ניתן היה ליצור את הצוותים הבאים עקב רכיבי slug כפולים: {{slugs}}",
"team_names_empty": "שמות צוותים לא יכולים להיות ריקים",
"team_names_repeated": "אי אפשר לעשות שימוש חוזר בשמות צוותים",
"team_names_repeated": "שמות הצוותים צריכים להיות ייחודיים",
"user_belongs_organization": "המשתמש/ת שייך/ת לארגון",
"org_no_teams_yet": "בארגון הזה עדיין אין צוותים",
"org_no_teams_yet_description": "אם את/ה מנהל/ת מערכת, צור/צרי צוותים שיוצגו כאן.",
@@ -1925,20 +1925,20 @@
"messaging": "העברת הודעות",
"sender_id_info": "השם או המספר שמוצגים כשולח של הודעת SMS (חלק מהמדינות אינן מתירות שימוש במזהי שולח אלפאנומריים)",
"org_admins_can_create_new_teams": "רק מנהל/ת המערכת בארגון יכול/ה ליצור צוותים חדשים",
"google_new_spam_policy": "מדיניות הספאם החדשה של Google עלולה לגרום לך שלא תקבל/י עדכונים בדוא\"ל ובלוח השנה לגבי הפגישה הזו.",
"google_new_spam_policy": "מדיניות הספאם החדשה של Google עלולה לגרום לכך שלא תקבל/י עדכונים בדוא״ל ובלוח השנה לגבי הפגישה הזו.",
"resolve": "פתרון",
"no_organization_slug": "היתה שגיאה במהלך ניסיון ליצור צוותים עבור הארגון הזה. חסר רכיב slug של URL.",
"no_organization_slug": "אירעה שגיאה במהלך הניסיון ליצור צוותים עבור הארגון הזה. חסר רכיב slug של URL.",
"org_name": "שם הארגון",
"org_url": "כתובת ה-URL של הארגון",
"copy_link_org": "העתקת הקישור לארגון",
"404_the_org": "הארגון",
"404_the_team": "הצוות",
"404_claim_entity_org": "תבע/י את תת-הדומיין עבור הארגון שלך",
"404_claim_entity_team": "תבע/י את הצוות הזה והתחל/י לנהל קביעת מועדים ביחד",
"404_claim_entity_org": "קבל/י את תת-הדומיין עבור הארגון שלך",
"404_claim_entity_team": "הצטרף/י לצוות הזה והתחל/התחילי לנהל קביעת מועדים ביחד",
"insights_all_org_filter": "כל האפליקציות",
"insights_team_filter": "צוות: {{teamName}}",
"insights_user_filter": "משתמש: {{userName}}",
"insights_subtitle": "הצגת insights לגבי הזמנות מתוך האירועים שלך",
"insights_subtitle": "הצגת insights לגבי ההזמנות באירועים שלך",
"custom_plan": "חבילה בהתאמה אישית",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+42 -42
View File
@@ -13,13 +13,13 @@
"reset_password_subject": "{{appName}}: istruzioni per reimpostare la password",
"verify_email_subject": "{{appName}}: verifica il tuo account",
"check_your_email": "Controlla la tua e-mail",
"verify_email_page_body": "Abbiamo inviato un'e-mail a {{email}}. È importante verificare il tuo indirizzo e-mail per garantire un migliore funzionamento dell'e-mail e del calendario {{appName}}.",
"verify_email_banner_body": "Verifica il tuo indirizzo e-mail per garantire un migliore funzionamento dell'e-mail e del calendario",
"verify_email_page_body": "Abbiamo inviato un'e-mail a {{email}}. È importante verificare il tuo indirizzo e-mail per garantire la consegna delle e-mail e delle notifiche del calendario {{appName}}.",
"verify_email_banner_body": "Verifica il tuo indirizzo e-mail per garantire la consegna delle e-mail e delle notifiche del calendario",
"verify_email_email_header": "Verifica il tuo indirizzo e-mail",
"verify_email_email_button": "Verifica l'e-mail",
"verify_email_email_body": "Verifica il tuo indirizzo e-mail cliccando sul pulsante qui in basso.",
"verify_email_email_link_text": "Ecco il link nel caso tu non voglia fare clic su pulsanti:",
"email_sent": "Email inviata con successo",
"verify_email_email_body": "Verifica il tuo indirizzo e-mail facendo clic sul pulsante qui sotto.",
"verify_email_email_link_text": "Se non ti piacciono i pulsanti, puoi usare questo link:",
"email_sent": "Email inviata",
"event_declined_subject": "Rifiutato: {{title}} il {{date}}",
"event_cancelled_subject": "Cancellato: {{title}} il {{date}}",
"event_request_declined": "La tua richiesta per l'evento è stata rifiutata",
@@ -197,7 +197,7 @@
"blog": "Blog",
"blog_description": "Leggi le nostre ultime notizie e articoli",
"join_our_community": "Unisciti alla nostra community",
"join_our_discord": "Unisciti al nostro Discord",
"join_our_discord": "Partecipa al nostro Discord",
"404_claim_entity_user": "Richiedi il tuo nome utente e pianifica eventi",
"popular_pages": "Pagine popolari",
"register_now": "Registrati ora",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "Questa pagina non esiste.",
"check_spelling_mistakes_or_go_back": "Controlla gli errori di ortografia o torna alla pagina precedente.",
"404_page_not_found": "404: Questa pagina non è stata trovata.",
"booker_event_not_found": "Non siamo riusciti a trovare l'evento che stai cercando di fissare.",
"booker_event_not_found": "Non siamo riusciti a trovare l'evento che stai cercando di prenotare.",
"getting_started": "Stiamo iniziando",
"15min_meeting": "Meeting di 15 minuti",
"30min_meeting": "Meeting di 30 minuti",
@@ -245,10 +245,10 @@
"available_apps": "Applicazioni disponibili",
"check_email_reset_password": "Controlla la tua email. Ti abbiamo inviato un link per reimpostare la password.",
"finish": "Fine",
"organization_general_description": "Gestisci le impostazioni di lingua e fuso orario del tuo team",
"organization_general_description": "Gestisci le impostazioni della lingua e del fuso orario per il tuo team",
"few_sentences_about_yourself": "Alcune frasi su di te. Questo apparirà sulla tua pagina url personale.",
"nearly_there": "Ci siamo quasi",
"nearly_there_instructions": "Ultima cosa, un po' di informazioni su di te e una foto sono utili per ottenere prenotazioni e far sapere alle persone con chi stanno prenotando.",
"nearly_there_instructions": "Infine: qualche informazione su di te e una foto sono utili per ottenere prenotazioni e per far capire alle persone con chi stanno prenotando.",
"set_availability_instructions": "Definisci intervalli di tempo di quando sei disponibile su una base ricorrente. Puoi crearne di più in seguito e assegnarli a calendari diversi.",
"set_availability": "Imposta la tua disponibilità",
"continue_without_calendar": "Continua senza calendario",
@@ -306,16 +306,16 @@
"password_has_been_reset_login": "La tua password è stata reimpostata. Ora puoi accedere con la tua password appena creata.",
"layout": "Layout",
"bookerlayout_default_title": "Vista predefinita",
"bookerlayout_description": "È possibile selezionarne vari e chi fissa gli appuntamenti può cambiare visualizzazione.",
"bookerlayout_user_settings_title": "Layout di programmazione appuntamenti",
"bookerlayout_user_settings_description": "È possibile selezionare più librerie e chi fissa gli appuntamenti può cambiare vista. Il tutto può poi essere cambiato in base agli eventi.",
"bookerlayout_description": "Puoi selezionarne diverse e le persone che prenotano possono cambiare visualizzazione.",
"bookerlayout_user_settings_title": "Layout prenotazioni",
"bookerlayout_user_settings_description": "Puoi selezionarne diverse e le persone che prenotano possono cambiare visualizzazione. È possibile definire impostazioni specifiche per ciascun evento.",
"bookerlayout_month_view": "Mese",
"bookerlayout_week_view": "Settimanale",
"bookerlayout_column_view": "Colonna",
"bookerlayout_error_min_one_enabled": "Deve essere abilitato almeno un layout.",
"bookerlayout_error_default_not_enabled": "Il layout selezionato come vista predefinita non fa parte dei layout abilitati.",
"bookerlayout_error_default_not_enabled": "Il layout selezionato come vista predefinita non è tra quelli abilitati.",
"bookerlayout_error_unknown_layout": "Il layout selezionato non è un layout valido.",
"bookerlayout_override_global_settings": "Puoi gestirlo per tutti i tipi di eventi in <2>impostazioni / aspetto</2> o <6>sostituire solo per questo evento</6>.",
"bookerlayout_override_global_settings": "Puoi definire questa impostazione per tutti i tipi di evento in <2>impostazioni / aspetto</2> oppure <6>solo per questo evento</6>.",
"unexpected_error_try_again": "Si è verificato un errore imprevisto. Riprova.",
"sunday_time_error": "Ora non valida la domenica",
"monday_time_error": "Ora non valida il lunedì",
@@ -357,7 +357,7 @@
"upcoming_bookings": "Non appena qualcuno prenota una riunione con voi apparirà qui.",
"recurring_bookings": "Quando qualcuno prenoterà una riunione ricorrente con te, la riunione apparirà qui.",
"past_bookings": "Le tue prenotazioni passate appariranno qui.",
"cancelled_bookings": "Le tue prenotazioni cancellate compariranno qui.",
"cancelled_bookings": "Le prenotazioni cancellate appariranno qui.",
"unconfirmed_bookings": "Le tue prenotazioni non confermate appariranno qui.",
"unconfirmed_bookings_tooltip": "Prenotazioni non confermate",
"on": "su",
@@ -774,7 +774,7 @@
"cal_provide_huddle01_meeting_url": "{{appName}} fornirà un URL di riunione Huddle01 web3 video.",
"cal_provide_teams_meeting_url": "{{appName}} fornirà un URL per la riunione MS Teams. NOTA: È NECESSARIO POSSEDERE UN ACCOUNT LAVORATIVO O SCOLASTICO",
"require_payment": "Richiedi Pagamento",
"you_need_to_add_a_name": "Aggiungere un nome",
"you_need_to_add_a_name": "Indica un nome",
"commission_per_transaction": "commissione per transazione",
"event_type_updated_successfully_description": "Il tuo team è stato aggiornato con successo.",
"hide_event_type": "Nascondi tipo evento",
@@ -867,23 +867,23 @@
"no_category_apps": "Nessuna app {{category}}",
"all_apps": "Tutte le app",
"no_category_apps_description_calendar": "Aggiungi un'app di calendario per controllare i conflitti ed evitare doppie prenotazioni",
"no_category_apps_description_conferencing": "Prova ad aggiungere un'app di conferenza per effettuare le videochiamate con i clienti",
"no_category_apps_description_conferencing": "Prova ad aggiungere un'app di conferenza per effettuare videochiamate con i clienti",
"no_category_apps_description_payment": "Aggiungi un'app di pagamento per facilitare le transazioni con i clienti",
"no_category_apps_description_analytics": "Aggiungi un'app di analisi per le tue pagine di prenotazione",
"no_category_apps_description_automation": "Aggiungi un'app di automazione da usare",
"no_category_apps_description_other": "Aggiungi qualsiasi altra app per fare altre attività",
"no_category_apps_description_web3": "Aggiungi un'app Web3 per le tue pagine di prenotazione",
"no_category_apps_description_messaging": "Aggiungi un'app di messaggistica per impostare notifiche e promemoria personalizzati",
"no_category_apps_description_crm": "Aggiungi un'app CRM per tenere traccia degli utenti che hai incontrato",
"no_category_apps_description_crm": "Aggiungi un'app CRM per tenere traccia delle persone che hai incontrato",
"installed_app_calendar_description": "Imposta uno o più calendari per controllare i conflitti ed evitare doppie prenotazioni.",
"installed_app_payment_description": "Configura quale servizio di elaborazione dei pagamenti usare per addebitare i clienti.",
"installed_app_analytics_description": "Imposta quali app di analisi usare per le tue pagine di prenotazione",
"installed_app_other_description": "Tutte le app installate appartenenti ad altre categorie.",
"installed_app_conferencing_description": "Configura quali app di conferenza utilizzare",
"installed_app_conferencing_description": "Scegli quali app di conferenza utilizzare",
"installed_app_automation_description": "Imposta quali app di automazione usare",
"installed_app_web3_description": "Imposta quali app Web3 usare per le tue pagine di prenotazione",
"installed_app_messaging_description": "Configura le app di messaggistica da usare per impostare notifiche e promemoria personalizzati",
"installed_app_crm_description": "Configura le app CRM per tenere traccia degli utenti che hai incontrato",
"installed_app_messaging_description": "Scegli le app di messaggistica da usare per impostare notifiche e promemoria personalizzati",
"installed_app_crm_description": "Scegli quali app CRM utilizzare per tenere traccia delle persone che hai incontrato",
"analytics": "Analisi",
"empty_installed_apps_headline": "Nessuna app installata",
"empty_installed_apps_description": "Le app consentono di ottimizzare il flusso di lavoro e di migliorare significativamente la pianificazione.",
@@ -1327,7 +1327,7 @@
"download_responses_description": "Scarica tutte le risposte al tuo modulo in formato CSV.",
"download": "Scarica",
"download_recording": "Scarica registrazione",
"recording_from_your_recent_call": "Una registrazione della tua recente chiamata su {{appName}} è pronta per il download",
"recording_from_your_recent_call": "La registrazione della tua recente chiamata su {{appName}} è pronta per il download",
"create_your_first_form": "Crea il tuo primo modulo",
"create_your_first_form_description": "I Moduli di instradamento consentono di porre domande qualificanti agli utenti per indirizzarli a persone o eventi pertinenti.",
"create_your_first_webhook": "Crea il tuo primo Webhook",
@@ -1659,10 +1659,10 @@
"delete_sso_configuration_confirmation_description": "Eliminare la configurazione {{connectionType}}? I membri del tuo team che utilizzano l'accesso {{connectionType}} non saranno più in grado di accedere a Cal.com.",
"organizer_timezone": "Fuso orario organizzatore",
"email_user_cta": "Visualizza invito",
"email_no_user_invite_heading": "Hai ricevuto un invito a unirti a {{entity}} di {{appName}}",
"email_no_user_invite_heading": "Hai ricevuto un invito a partecipare a un/una {{entity}} di {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} ti ha invitato a unirti al suo team su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette al tuo team di pianificare le riunioni senza scambiare decine di e-mail.",
"email_user_invite_subheading": "{{invitedBy}} ti ha invitato a unirti a {{entity}} `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e al tuo {{entity}} di pianificare le riunioni senza scambiare decine di e-mail.",
"email_no_user_invite_steps_intro": "Ti assisteremo nei passaggi iniziali in modo che tu possa pianificare eventi per il tuo {{entity}} senza stress e in pochissimo tempo.",
"email_user_invite_subheading": "{{invitedBy}} ti ha invitato a partecipare al/alla {{entity}} `{{teamName}}` su {{appName}}. {{appName}} è uno strumento di pianificazione di eventi che permette a te e al tuo/tua {{entity}} di pianificare le riunioni senza scambiarvi decine di e-mail.",
"email_no_user_invite_steps_intro": "Ti assisteremo nei passaggi iniziali e potrai rapidamente pianificare eventi per il/la {{entity}} senza fatica.",
"email_no_user_step_one": "Scegli il tuo nome utente",
"email_no_user_step_two": "Collega il tuo account di calendario",
"email_no_user_step_three": "Imposta la tua disponibilità",
@@ -1879,42 +1879,42 @@
"install_app_on": "Installa l'app su",
"create_for": "Crea per",
"setup_organization": "Imposta un'organizzazione",
"organization_banner_description": "Crea un ambiente dove i tuoi team potranno creare applicazioni condivise, flussi di lavoro e tipi di eventi con pianificazioni di gruppo e round robin.",
"organization_banner_description": "Crea ambienti dove i tuoi team potranno creare e condividere applicazioni, flussi di lavoro e tipi di eventi con pianificazioni di gruppo e round robin.",
"organization_banner_title": "Gestisci organizzazioni con più team",
"set_up_your_organization": "Imposta la tua organizzazione",
"organizations_description": "Le organizzazioni sono ambienti condivisi dove i team possono creare tipi di eventi, applicazioni, flussi di lavoro condivisi e tanto altro.",
"must_enter_organization_name": "È necessario inserire un nome di organizzazione",
"organizations_description": "Le organizzazioni sono ambienti condivisi dove i team possono creare e condividere tipi di eventi, applicazioni, flussi di lavoro e altro ancora.",
"must_enter_organization_name": "È necessario inserire il nome dell'organizzazione",
"must_enter_organization_admin_email": "È necessario inserire l'indirizzo e-mail dell'organizzazione",
"admin_email": "Indirizzo e-mail dell'organizzazione",
"admin_email": "Il tuo indirizzo e-mail nell'organizzazione",
"admin_username": "Nome utente dell'amministratore",
"organization_name": "Nome dell'organizzazione",
"organization_url": "URL dell'organizzazione",
"organization_verify_header": "Verifica l'e-mail della tua organizzazione",
"organization_verify_email_body": "Usa il codice sottostante per verificare il tuo indirizzo e-mail e continuare a impostare l'organizzazione.",
"additional_url_parameters": "Parametri URL aggiuntivi",
"organization_verify_email_body": "Usa il codice sottostante per verificare il tuo indirizzo e-mail e proseguire la configurazione dell'organizzazione.",
"additional_url_parameters": "Parametri aggiuntivi dell'URL",
"about_your_organization": "Informazioni sulla tua organizzazione",
"about_your_organization_description": "Le organizzazioni sono ambienti condivisi dove è possibile creare più team con membri, tipi di eventi, applicazioni, flussi di lavoro condivisi e tanto altro.",
"about_your_organization_description": "Le organizzazioni sono ambienti condivisi dove è possibile creare dei team con condivisione di membri, tipi di eventi, applicazioni, flussi di lavoro e altro ancora.",
"create_your_teams": "Crea i tuoi team",
"create_your_teams_description": "Inizia la pianificazione condivisa aggiungendo i membri del tuo team alla tua organizzazione",
"invite_organization_admins": "Invita gli amministratori dell'organizzazione",
"invite_organization_admins_description": "Gli amministratori avranno l'accesso a tutti i team della tua organizzazione. Puoi aggiungere amministratori e membri dei team in un secondo tempo.",
"invite_organization_admins_description": "Gli amministratori avranno accesso a tutti i team della tua organizzazione. Puoi aggiungere amministratori e membri dei team in un secondo tempo.",
"set_a_password": "Imposta una password",
"set_a_password_description": "Verrà creato un nuovo account utente con l'indirizzo e-mail della tua organizzazione e questa password.",
"organization_logo": "Logo dell'organizzazione",
"organization_about_description": "Qualche informazione sulla tua organizzazione. Le informazioni appariranno nella pagina di profilo dell'organizzazione.",
"organization_about_description": "Qualche informazione sulla tua organizzazione. Le informazioni appariranno nella pagina del profilo pubblico dell'organizzazione.",
"ill_do_this_later": "Lo farò più tardi",
"verify_your_email": "Verifica l'e-mail",
"enter_digit_code": "Immetti il codice di 6 cifre che ti è stato inviato a {{email}}",
"verify_email_organization": "Verifica il tuo indirizzo email per creare un'organizzazione",
"enter_digit_code": "Immetti il codice di 6 cifre che è stato inviato a {{email}}",
"verify_email_organization": "Verifica il tuo indirizzo e-mail per creare un'organizzazione",
"code_provided_invalid": "Il codice immesso non è valido, riprova",
"email_already_used": "Indirizzo email già in uso",
"email_already_used": "Indirizzo e-mail già in uso",
"organization_admin_invited_heading": "Hai ricevuto un invito a unirti a {{orgName}}",
"organization_admin_invited_body": "Unisciti al tuo team su {{orgName}} per concentrarti sulle riunioni, non sulla loro pianificazione!",
"organization_admin_invited_body": "Unisciti al tuo team su {{orgName}}, per concentrarti sulle riunioni e non sulla loro pianificazione!",
"duplicated_slugs_warning": "Non è stato possibile creare i seguenti team a causa di slug duplicati: {{slugs}}",
"team_names_empty": "I nomi di team non possono essere vuoti",
"team_names_repeated": "I nomi di team devono essere unici",
"user_belongs_organization": "L'utente appartiene a un'organizzazione",
"org_no_teams_yet": "Questa organizzazione non ha ancora nessun team",
"org_no_teams_yet": "Questa organizzazione non ha ancora alcun team",
"org_no_teams_yet_description": "Se sei un amministratore, assicurati di creare dei team da mostrare qui.",
"set_up": "Imposta",
"set_up_your_profile": "Imposta il tuo profilo",
@@ -1927,7 +1927,7 @@
"org_admins_can_create_new_teams": "Solo l'amministratore della tua organizzazione può creare nuovi team",
"google_new_spam_policy": "Le nuove norme sullo spam di Google potrebbero impedirti di ricevere email e notifiche di calendario in merito a questa prenotazione.",
"resolve": "Risolvi",
"no_organization_slug": "Si è verificato un errore durante la creazione di team per questa organizzazione. Slug di URL mancante.",
"no_organization_slug": "Si è verificato un errore durante la creazione dei team per questa organizzazione. Slug URL mancante.",
"org_name": "Nome dell'organizzazione",
"org_url": "URL dell'organizzazione",
"copy_link_org": "Copia link all'organizzazione",
@@ -1938,7 +1938,7 @@
"insights_all_org_filter": "Tutte le app",
"insights_team_filter": "Team: {{teamName}}",
"insights_user_filter": "Utente: {{userName}}",
"insights_subtitle": "Visualizza le informazioni sulle prenotazioni per tutti i tuoi eventi",
"insights_subtitle": "Visualizza insight sulle prenotazioni per tutti i tuoi eventi",
"custom_plan": "Piano personalizzato",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi qui le tue nuove stringhe al di sopra di questa riga ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑"
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi le tue nuove stringhe qui sopra ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+116 -116
View File
@@ -11,23 +11,23 @@
"calcom_explained_new_user": "{{appName}} アカウントのセットアップを完了してください。あと数ステップでスケジューリングの問題をすべて解決できます。",
"have_any_questions": "ご不明な点があれば、お気軽にお問い合わせください。",
"reset_password_subject": "{{appName}}: パスワードのリセット手順",
"verify_email_subject": "{{appName}}:アカウントを確認",
"check_your_email": "メールを確認してください",
"verify_email_page_body": "{{email}} にメールを送信しました。{{appName}} からのメール配信とカレンダー通知が確実に連携するようにするには、メールアドレスの確認が重要です。",
"verify_email_banner_body": "メール配信とカレンダー通知が確実に連携するようにするには、メールアドレスを確認してください。",
"verify_email_email_header": "メールアドレスの確認",
"verify_email_email_button": "メールを確認",
"verify_email_email_body": "以下のボタンをクリックして、メールアドレスを確認してください。",
"verify_email_email_link_text": "ボタンをクリックしたくない場合は、こちらにリンクがあります:",
"verify_email_subject": "{{appName}}: アカウントをご確認ください",
"check_your_email": "メールをご確認ください",
"verify_email_page_body": "{{email}} にメールを送信しました。{{appName}} からのメール配信とカレンダー通知が確実に機能するようにするには、メールアドレスの確認が重要です。",
"verify_email_banner_body": "メール配信とカレンダー通知が確実に機能するようにするには、メールアドレスをご確認ください。",
"verify_email_email_header": "メールアドレスをご確認ください",
"verify_email_email_button": "メールを確認する",
"verify_email_email_body": "以下のボタンをクリックして、メールアドレスをご確認ください。",
"verify_email_email_link_text": "ボタンをクリックしたくない場合には、こちらのリンクをご利用ください。",
"email_sent": "メールが正常に送信されました",
"event_declined_subject": "却下: {{title}} {{date}}",
"event_cancelled_subject": "キャンセル済み:{{date}} の{{title}}",
"event_cancelled_subject": "{{date}} に {{title}} がキャンセルされました",
"event_request_declined": "イベントのリクエストが拒否されました",
"event_request_declined_recurring": "繰り返しイベントのリクエストが拒否されました",
"event_request_cancelled": "予定されたイベントがキャンセルされました",
"event_request_cancelled": "スケジュール設定済みのイベントがキャンセルされました",
"organizer": "主催者",
"need_to_reschedule_or_cancel": "再スケジュールまたはキャンセルが必要ですか?",
"no_options_available": "利用できるオプションがありません",
"no_options_available": "利用可能なオプションがありません",
"cancellation_reason": "キャンセルの理由 (オプション)",
"cancellation_reason_placeholder": "キャンセルが必要な理由をお教えください",
"rejection_reason": "拒否の理由",
@@ -87,9 +87,9 @@
"your_meeting_has_been_booked": "ミーティングが予約されました",
"event_type_has_been_rescheduled_on_time_date": "あなたの {{title}} は {{date}} に再スケジュールされました。",
"event_has_been_rescheduled": "更新 - イベントのスケジュールが変更されました",
"request_reschedule_subtitle": "{{organizer}}が予約をキャンセルし、別の時間帯を選ぶようにあなたにリクエストしました。",
"request_reschedule_subtitle": "{{organizer}} が予約をキャンセルし、別の時間帯を選ぶようにリクエストしています。",
"request_reschedule_title_organizer": "{{attendee}} にスケジュールの変更をリクエストしました",
"request_reschedule_subtitle_organizer": "あなたが予約をキャンセルしたので、{{attendee}}とあなたは新しい予約の時間帯を選ぶ必要があります。",
"request_reschedule_subtitle_organizer": "予約をキャンセルしたので、{{attendee}} はあなたと共に新しい予約時間を選ぶ必要があります。",
"rescheduled_event_type_subject": "スケジュール変更のリクエストを送信しました: {{date}} の {{name}} との {{eventType}}",
"requested_to_reschedule_subject_attendee": "スケジュール変更のアクションが必要です: {{name}} との {{eventType}} に新しい時間を予約してください",
"hi_user_name": "こんにちは、{{name}} さん",
@@ -118,7 +118,7 @@
"team_info": "チームの情報",
"request_another_invitation_email": "{{toEmail}} を {{appName}} のメールアドレスとして使用しない場合、または {{appName}} アカウントをすでに持っている場合は、そのメールへの招待を別にリクエストしてください。",
"you_have_been_invited": "チーム {{teamName}} への参加を招待されました。",
"user_invited_you": "{{entity}}の{{team}}に参加するよう、{{user}}が {{appName}} であなたを招待しました",
"user_invited_you": "{{entity}} の {{team}} に参加するよう、{{user}} が {{appName}} であなたを招待しました",
"hidden_team_member_title": "あなたはこのチームで非表示にされています",
"hidden_team_member_message": "座席料の支払いが完了していません。Pro へとアップグレードするか、チームのオーナーにあなたの座席料の支払いをご依頼ください。",
"hidden_team_owner_message": "チームをご利用いただくためには、Pro アカウントが必要です。アップグレードするまでは非表示となります。",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "新しいチームプランをお試しいただき、ありがとうございます。あなたのチーム「{{teamName}}」には、アップグレードが必要なようです。",
"upgrade_banner_action": "アップグレードはこちら",
"team_upgraded_successfully": "チームのアップグレードが正常に完了しました!",
"org_upgrade_banner_description": "Organization プランをお試しいただきありがとうございます。Organization「{{teamName}}」はアップグレードが必要です。",
"org_upgraded_successfully": "あなたのOrganizationは正常にアップグレードされました!",
"org_upgrade_banner_description": "Organization プランをお試しいただきありがとうございます。ご利用の「{{teamName}}」の Organization プランには、アップグレードが必要です。",
"org_upgraded_successfully": "あなたの Organization プランは正常にアップグレードされました!",
"use_link_to_reset_password": "以下のリンクを使用してパスワードをリセットしてください",
"hey_there": "こんにちは!",
"forgot_your_password_calcom": "パスワードをお忘れですか? - {{appName}}",
@@ -197,7 +197,7 @@
"blog": "ブログ",
"blog_description": "最新のニュースや記事を読む",
"join_our_community": "コミュニティーに参加する",
"join_our_discord": "私たちのDiscordに参加する",
"join_our_discord": "私たちの Discord に参加する",
"404_claim_entity_user": "ユーザー名を獲得してイベントをスケジュールする",
"popular_pages": "人気のページ",
"register_now": "今すぐ登録",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "このページは存在しません。",
"check_spelling_mistakes_or_go_back": "スペルミスを確認するか、前のページに戻ってください。",
"404_page_not_found": "404: このページは見つかりませんでした。",
"booker_event_not_found": "予約しようとしているイベントは見つかりませんでした。",
"booker_event_not_found": "あなたが予約を試みているイベントは見つかりませんでした。",
"getting_started": "はじめに",
"15min_meeting": "15 分間のミーティング",
"30min_meeting": "30 分間のミーティング",
@@ -241,7 +241,7 @@
"done": "完了",
"all_done": "すべて完了!",
"all": "すべて",
"yours": "アカウント",
"yours": "ご利用のアカウント",
"available_apps": "利用可能なアプリ",
"check_email_reset_password": "メールをご確認ください。パスワードをリセットするためのリンクを送信しました。",
"finish": "完了",
@@ -306,16 +306,16 @@
"password_has_been_reset_login": "パスワードがリセットされました。新しく作成したパスワードでログインできるようになりました。",
"layout": "レイアウト",
"bookerlayout_default_title": "デフォルトの表示",
"bookerlayout_description": "複数を選択することができ、予約者は表示を切り替えることができます。",
"bookerlayout_description": "複数のものを選択することができ、予約者は表示を切り替えることができます。",
"bookerlayout_user_settings_title": "予約のレイアウト",
"bookerlayout_user_settings_description": "複数を選択することができ、予約者は表示を切り替えられます。これはイベントごとに上書きできます。",
"bookerlayout_user_settings_description": "複数のものを選択することができ、予約者は表示を切り替えることができます。これはイベントごとに上書きが可能です。",
"bookerlayout_month_view": "月",
"bookerlayout_week_view": "週",
"bookerlayout_column_view": "カラム",
"bookerlayout_column_view": "列",
"bookerlayout_error_min_one_enabled": "少なくとも 1 つのレイアウトを有効にする必要があります。",
"bookerlayout_error_default_not_enabled": "デフォルト表示として選択したレイアウトは、有効なレイアウトに含まれていません。",
"bookerlayout_error_unknown_layout": "選択したレイアウトは有効なレイアウトではありません。",
"bookerlayout_override_global_settings": "<2>設定 / 外観</2>または<6>このイベントのみ上書き</6>ですべてのイベントの種類を管理できます。",
"bookerlayout_error_default_not_enabled": "デフォルト表示として選択したレイアウトが、有効なレイアウトに含まれていません。",
"bookerlayout_error_unknown_layout": "選択したレイアウトが有効なレイアウトではありません。",
"bookerlayout_override_global_settings": "「<2>設定/外観</2>」または「<6>このイベントのみ上書き</6>」で、すべてのイベントの種類を管理できます。",
"unexpected_error_try_again": "予期しないエラーが発生しました。もう一度お試しください。",
"sunday_time_error": "日曜日の時間が無効です",
"monday_time_error": "月曜日の時間が無効です",
@@ -337,11 +337,11 @@
"cancelling_event_recurring": "このイベントは、繰り返しイベントに含まれている 1 つのインスタンスです。",
"cancelling_all_recurring": "これらはすべて、繰り返しイベントに含まれているインスタンスの残りです。",
"error_with_status_code_occured": "ステータスコード {{status}} に関するエラーが発生しました。",
"error_event_type_url_duplicate": "この URL のイベントの種類はすでに存在します。",
"error_event_type_unauthorized_create": "このイベントを作成することができません",
"error_event_type_unauthorized_update": "このイベントを編集することができません",
"error_workflow_unauthorized_create": "このワークフローを作成することができません",
"error_schedule_unauthorized_create": "このスケジュールを作成することができません",
"error_event_type_url_duplicate": "この URL を持つイベントの種類はすでに存在します。",
"error_event_type_unauthorized_create": "このイベントを作成することはできません",
"error_event_type_unauthorized_update": "このイベントを編集することはできません",
"error_workflow_unauthorized_create": "このワークフローを作成することはできません",
"error_schedule_unauthorized_create": "このスケジュールを作成することはできません",
"booking_already_cancelled": "この予約はすでにキャンセルされています",
"booking_already_accepted_rejected": "この予約はすでに承認または拒否が行われています。",
"go_back_home": "ホームに戻る",
@@ -357,7 +357,7 @@
"upcoming_bookings": "誰かがあなたとの時間を予約すると、すぐにここに表示されます。",
"recurring_bookings": "別のユーザーがあなたとの繰り返しイベントを予約すると、ここに表示されます。",
"past_bookings": "過去の予約はここに表示されます。",
"cancelled_bookings": "キャンセルされた予約はここに表示されます",
"cancelled_bookings": "キャンセルされた予約はこちらに表示されます。",
"unconfirmed_bookings": "未確認の予約はここに表示されます。",
"unconfirmed_bookings_tooltip": "未確認の予約",
"on": "上",
@@ -398,12 +398,12 @@
"browse_api_documentation": "APIドキュメントを参照する",
"leverage_our_api": "APIを活用して、完全な制御とカスタマイズが可能です。",
"create_webhook": "Webhook を作成",
"booking_cancelled": "キャンセルされた予約",
"booking_cancelled": "予約がキャンセルされました",
"booking_rescheduled": "予約の再スケジュール済",
"recording_ready": "録音をダウンロードするためのリンクが準備できています",
"booking_created": "予約を作成しました",
"booking_rejected": "拒否された予約",
"booking_requested": "リクエストされた予約",
"booking_rejected": "予約が拒否されました",
"booking_requested": "予約がリクエストされました",
"meeting_ended": "ミーティングが終了しました",
"form_submitted": "フォームが送信されました",
"event_triggers": "イベントトリガー",
@@ -413,8 +413,8 @@
"team_webhooks": "チームのウェブフック",
"create_new_webhook_to_account": "アカウントに新しいウェブフックを作成します",
"new_webhook": "新しいウェブフック",
"receive_cal_meeting_data": "イベントが予定またはキャンセルされた場合、特定の URL で開かれる {{appName}} ミーティングデータをリアルタイムに受信する。",
"receive_cal_event_meeting_data": "このイベントが予定またはキャンセルされた場合、特定の URL で開かれる {{appName}} ミーティングデータをリアルタイムに受信する。",
"receive_cal_meeting_data": "イベントのスケジュール設定またはキャンセルが行われた際に、特定の URL にある {{appName}} のミーティングデータをリアルタイムに受信します。",
"receive_cal_event_meeting_data": "このイベントのスケジュール設定またはキャンセルが行われた際に、特定の URL にある {{appName}} のミーティングデータをリアルタイムに受信します。",
"responsive_fullscreen_iframe": "レスポンシブフルスクリーン iframe",
"loading": "読み込み中...",
"deleting": "削除中...",
@@ -477,7 +477,7 @@
"max_limit_allowed_hint": "{{limit}} 文字以下で入力してください",
"invalid_password_hint": "パスワードには少なくとも 1 文字以上数字を含め、アルファベットの大文字と小文字を両方使用した上で {{passwordLength}} 文字以上の長さに設定してください",
"incorrect_password": "パスワードが正しくありません。",
"incorrect_email_password": "ユーザー名またはパスワードが正しくありません。",
"incorrect_email_password": "メールまたはパスワードが正しくありません。",
"use_setting": "設定を使用",
"am_pm": "午前/午後",
"time_options": "時刻オプション",
@@ -586,8 +586,8 @@
"confirm_all": "すべて確認",
"disband_team": "チームを解散する",
"disband_team_confirmation_message": "このチームを解散しますか? あなたがこのチームのリンクを共有した人は、それを使って予約することができなくなります。",
"disband_org": "Organization を解散する",
"disband_org_confirmation_message": "この Organization を解散しますか?すべてのチームとメンバーが削除されます。",
"disband_org": "組織を解散する",
"disband_org_confirmation_message": "この組織を解散しますか?すべてのチームとメンバーが削除されます。",
"remove_member_confirmation_message": "このメンバーをチームから削除してもよろしいですか?",
"confirm_disband_team": "はい、チームを解散します。",
"confirm_remove_member": "はい、メンバーを削除します",
@@ -695,11 +695,11 @@
"create_new_team": "新しいチームを作成",
"open_invitations": "招待状を開く",
"new_team": "新しいチーム",
"create_first_team_and_invite_others": "最初のチームを作成し、一緒に仕事をするために他のユーザーを招待してください。",
"create_first_team_and_invite_others": "最初のチームを作成し、一緒に仕事をする他のユーザーを招待してください。",
"create_team_to_get_started": "始めるためにチームを作成",
"teams": "チーム",
"team": "チーム",
"organization": "Organization",
"organization": "組織",
"team_billing": "チームの請求",
"team_billing_description": "チームの請求情報を管理します",
"upgrade_to_flexible_pro_title": "チームへの請求内容を変更しました",
@@ -867,14 +867,14 @@
"no_category_apps": "{{category}} アプリはありません",
"all_apps": "すべてのアプリ",
"no_category_apps_description_calendar": "ダブルブッキングを防ぐために、スケジュールの重複をチェックするカレンダーアプリを追加しましょう",
"no_category_apps_description_conferencing": "顧客とのビデオ通話には会議アプリを追加します",
"no_category_apps_description_conferencing": "顧客とのビデオ通話には会議アプリを追加しましょう",
"no_category_apps_description_payment": "決済アプリを追加して、顧客との取引を容易にしましょう",
"no_category_apps_description_analytics": "予約ページに分析アプリを追加する",
"no_category_apps_description_automation": "使用する自動化アプリを追加する",
"no_category_apps_description_other": "その他のアプリを追加して、様々なことを実現しましょう",
"no_category_apps_description_web3": "予約ページに Web3 アプリを追加",
"no_category_apps_description_messaging": "カスタム通知とリマインダーを設定するにはメッセージングアプリを追加します",
"no_category_apps_description_crm": "会った人を記録するには CRM アプリを追加します",
"no_category_apps_description_messaging": "カスタム通知とリマインダーを設定するには、メッセージングアプリを追加します",
"no_category_apps_description_crm": "会った人を記録するには、CRM アプリを追加します",
"installed_app_calendar_description": "ダブルブッキングを防ぐために、カレンダーの重複をチェックするように設定します。",
"installed_app_payment_description": "顧客に請求をする際に使用する決済処理サービスを設定しましょう。",
"installed_app_analytics_description": "予約ページでどの分析アプリを使用するかを構成する",
@@ -883,7 +883,7 @@
"installed_app_automation_description": "どの自動化アプリを使用するかを構成する",
"installed_app_web3_description": "予約ページでどの Web3 アプリを使用するかを構成します",
"installed_app_messaging_description": "カスタム通知とリマインダーの設定にどのメッセージングアプリを使用するかを設定します",
"installed_app_crm_description": "会った人の記録にどの CRM アプリを使用するかを設定します",
"installed_app_crm_description": "会った人を記録するのにどの CRM アプリを使用するかを設定します",
"analytics": "分析",
"empty_installed_apps_headline": "アプリがインストールされていません",
"empty_installed_apps_description": "アプリを使えば、ワークフローの質を高め、スケジュールライフを大幅に改善することができます。",
@@ -909,7 +909,7 @@
"create_events_on": "以下にイベントを作成する:",
"enterprise_license": "これは企業向けの機能です",
"enterprise_license_description": "この機能を有効にするには、{{consoleUrl}} コンソールでデプロイメントキーを入手して .env に CALCOM_LICENSE_KEY として追加してください。既にチームがライセンスを持っている場合は {{supportMail}} にお問い合わせください。",
"enterprise_license_development": "この機能は開発モードでテストできます。本番環境で使用するには管理者に<2>/権限/設定</2>に行ってライセンスキーを入力してもらってください。",
"enterprise_license_development": "この機能は開発モードでテストできます。本番環境で使用するには、管理者に <2>/auth/setup</2> にアクセスするよう依頼し、ライセンスキーを入力してもらってください。",
"missing_license": "ライセンスが見つかりません",
"signup_requires": "商用ライセンスが必要です",
"signup_requires_description": "{{companyName}} は、現時点ではサインアップページの無料のオープンソース版を提供しておりません。サインアップコンポーネントへのフルアクセスをご利用いただくためには、商用ライセンスを取得する必要があります。個人での利用につきましては、Prisma Data Platform またはその他の Postgres インターフェースを使用してアカウントの作成を行うことをお勧めしております。",
@@ -979,7 +979,7 @@
"confirm_delete_api_key": "この API キーを取り消す",
"revoke_api_key": "API キーの取り消し",
"api_key_copied": "API キーをコピーしました!",
"api_key_expires_on": "APIキーの期限が切れるのは",
"api_key_expires_on": "API キーの期限:",
"delete_api_key_confirm_title": "この API キーをご利用のアカウントから完全に削除しますか?",
"copy": "コピー",
"expire_date": "有効期限",
@@ -1004,7 +1004,7 @@
"team_impersonation_description": "チームの所有者/管理者が一時的にあなたとしてサインインできるようにします。",
"make_team_private": "チームを非公開にする",
"make_team_private_description": "これをオンにすると、チームメンバーは他のチームメンバーを確認することができなくなります。",
"you_cannot_see_team_members": "非公開チームではすべてのチームメンバーを確認できません。",
"you_cannot_see_team_members": "非公開チームでは、チームメンバーを確認することができません。",
"allow_booker_to_select_duration": "予約者が時間を選択できるようにする",
"impersonate_user_tip": "この機能の使用はすべて監査されています。",
"impersonating_user_warning": "ユーザー名 \"{{user}}\" になりすましています。",
@@ -1079,11 +1079,11 @@
"url_start_with_https": "URLは、http://またはhttps://で始まる必要があります",
"number_provided": "電話番号が提供されます",
"before_event_trigger": "イベント開始前に",
"event_cancelled_trigger": "イベントキャンセル時に",
"event_cancelled_trigger": "イベントキャンセル時",
"new_event_trigger": "新しいイベント予約時に",
"email_host_action": "ホストにメールを送信",
"email_attendee_action": "出席者にメールを送る",
"sms_attendee_action": "出席者に SMS を送信",
"sms_attendee_action": "出席者に SMS を送信する",
"sms_number_action": "特定の番号に SMS を送信",
"whatsapp_number_action": "特定の番号に Whatsapp メッセージを送信",
"whatsapp_attendee_action": "出席者に Whatsapp メッセージを送信",
@@ -1150,8 +1150,8 @@
"choose_template": "テンプレートを選択する",
"custom": "カスタム",
"reminder": "リマインダー",
"rescheduled": "スケジュールを変更済み",
"completed": "完了済み",
"rescheduled": "スケジュール変更済み",
"completed": "完了",
"reminder_email": "リマインダー:{{date}} の {{name}} との {{eventType}}",
"not_triggering_existing_bookings": "イベントの予約時に電話番号の入力を求められるため、すでにある予約はトリガーされません。",
"minute_one": "{{count}} 分",
@@ -1306,8 +1306,8 @@
"connect_analytics_apps": "分析アプリを接続する",
"connect_other_apps": "その他のアプリを接続",
"connect_web3_apps": "Web3 アプリを接続",
"connect_messaging_apps": "メッセージングアプリを接続",
"connect_crm_apps": "CRM アプリを接続",
"connect_messaging_apps": "メッセージングアプリを接続する",
"connect_crm_apps": "CRM アプリを接続する",
"current_step_of_total": "ステップ {{currentStep}}/{{maxSteps}}",
"add_variable": "変数を追加",
"custom_phone_number": "カスタム電話番号",
@@ -1379,7 +1379,7 @@
"routing_forms_send_email_owner": "所有者にメールを送信",
"routing_forms_send_email_owner_description": "フォームの送信時に所有者にメールを送信します",
"add_new_form": "新しいフォームを追加",
"add_new_team_form": "新しいフォームをチームに追加",
"add_new_team_form": "新しいフォームをチームに追加する",
"create_your_first_route": "最初のルートを作成",
"route_to_the_right_person": "フォームへの回答に基づいて適切なユーザーにルーティングする",
"form_description": "予約者をルーティングするフォームを作成します",
@@ -1487,16 +1487,16 @@
"your_org_disbanded_successfully": "組織は正常に解散されました",
"error_creating_team": "チームの作成中にエラーが発生しました",
"you": "あなた",
"resend_email": "メールを再送信",
"resend_email": "メールを再送する",
"member_already_invited": "メンバーは既に招待されています",
"enter_email_or_username": "メールアドレスまたはユーザー名を入力してください",
"team_name_taken": "この名前は既に使用されています",
"must_enter_team_name": "チーム名の入力は必須です",
"team_url_required": "チームの URL の入力は必須です",
"url_taken": "この URL は既に使用されています",
"problem_registering_domain": "サブドメインの登録に問題がありました。もう一度やり直すか、管理者にお問い合せください",
"problem_registering_domain": "サブドメインの登録時に問題が発生しました。もう一度お試しいただくか、管理者までお問い合せください",
"team_publish": "チームを公開",
"number_text_notifications": "電話番号(テキスト通知)",
"number_text_notifications": "電話番号 (テキスト通知)",
"attendee_email_variable": "出席者のメールアドレス",
"attendee_email_info": "予約者のメールアドレス",
"kbar_search_placeholder": "コマンドを入力するか、検索してください...",
@@ -1555,7 +1555,7 @@
"no_apps": "Cal のこのインスタンスで有効化されているアプリはありません",
"no_apps_configured": "まだアプリが設定されていません",
"enable_in_settings": "設定でアプリを有効にできます",
"please_contact_admin": "管理者に連絡してください",
"please_contact_admin": "管理者までお問い合わせください",
"apps_settings": "アプリ設定",
"fill_this_field": "このフィールドに入力してください",
"options": "オプション",
@@ -1659,10 +1659,10 @@
"delete_sso_configuration_confirmation_description": "{{connectionType}} の構成を削除してもよろしいですか?{{connectionType}} でのログインを使用しているチームメンバーは、Cal.com にアクセスできなくなります。",
"organizer_timezone": "主催者のタイムゾーン",
"email_user_cta": "招待を表示",
"email_no_user_invite_heading": "{{appName}} の {{entity}} に参加するよう招待されました",
"email_no_user_invite_heading": "{{appName}} の {{entity}} への参加に招待されました",
"email_no_user_invite_subheading": "{{invitedBy}} は {{appName}} のチームに参加するようあなたを招待しました。{{appName}} は、イベント調整スケジューラーです。チームと延々とメールのやりとりをすることなくミーティングのスケジュール設定を行うことができます。",
"email_user_invite_subheading": "{{invitedBy}}から {{entity}} の「{{teamName}}」に参加するよう招待されました。{{appName}} はイベント調整スケジューラーで、{{entity}} 内で延々とメールのやりとりをすることなく、ミーティングのスケジュールを設定できます。",
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐに {{entity}} とのストレスフリーなスケジュール設定をお楽しみいただけます。",
"email_user_invite_subheading": "{{invitedBy}} から {{appName}} の {{entity}} \"{{teamName}}\" に参加するよう招待されました。{{appName}} はイベント調整スケジューラーであり、{{entity}} 内で延々とメールのやりとりを続けることなくミーティングのスケジュールを設定できます。",
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐに {{entity}} のストレスフリーなスケジュール設定をお楽しみいただけます。",
"email_no_user_step_one": "ユーザー名を選択",
"email_no_user_step_two": "カレンダーアカウントを接続",
"email_no_user_step_three": "空き状況を設定する",
@@ -1674,7 +1674,7 @@
"no_workflows": "ワークフローがありません",
"change_filter": "個人やチームのワークフローを表示するためのフィルターを変更します。",
"change_filter_common": "結果を表示するフィルターを変更します。",
"no_results_for_filter": "このフィルターの結果はありません",
"no_results_for_filter": "このフィルターに該当する結果はありません",
"recommended_next_steps": "推奨される次のステップ",
"create_a_managed_event": "管理されたイベントの種類を作成",
"meetings_are_better_with_the_right": "ミーティングは適切なチームメンバーの参加によってより良いものになります。今すぐ彼らを招待しましょう。",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "出席者はあなたのイベントに出席しなくなりました",
"attendee_no_longer_attending_subtitle": "{{name}} がキャンセルしました。これにより、この時間帯の座席が 1 つ利用可能になりました",
"create_event_on": "次のカレンダーにイベントを作成",
"create_routing_form_on": "次のことについてルーティングフォームを作成",
"create_routing_form_on": "以下についてルーティングフォームを作成する",
"default_app_link_title": "デフォルトのアプリリンクを設定",
"default_app_link_description": "デフォルトのアプリリンクを設定することで、新たに作成するすべてのイベントの種類が設定したアプリリンクを使用できるようになります。",
"organizer_default_conferencing_app": "主催者のデフォルトのアプリ",
@@ -1738,16 +1738,16 @@
"spot_popular_event_types": "人気のあるイベントの種類を見つける",
"spot_popular_event_types_description": "どのイベントの種類が最もクリックされ、予約されているのかを確認します",
"no_responses_yet": "回答はまだありません",
"no_routes_defined": "ルーティングが定義されていません",
"no_routes_defined": "ルートが定義されていません",
"this_will_be_the_placeholder": "これがプレースホルダーになります",
"error_booking_event": "イベントを予約する際にエラーが発生しました。ページを再読み込みして、もう一度お試しください",
"error_booking_event": "イベントを予約する際にエラーが発生しました。ページを更新してからもう一度お試しください",
"timeslot_missing_title": "時間帯が選択されていません",
"timeslot_missing_description": "イベントを予約するには時間帯を選択してください。",
"timeslot_missing_cta": "時間帯を選択",
"switch_monthly": "月単位の表示に切り替える",
"switch_weekly": "週単位の表示に切り替える",
"switch_multiday": "1 日単位の表示に切り替える",
"switch_columnview": "カラム表示に切り替える",
"switch_columnview": "列表示に切り替える",
"num_locations": "{{num}} か所の場所のオプション",
"select_on_next_step": "次のステップで選択",
"this_meeting_has_not_started_yet": "このミーティングはまだ開始されていません",
@@ -1786,7 +1786,7 @@
"managed_event_dialog_title_one": "{{count}} 人のメンバーがすでに URL /{{slug}} を使用しています。置き換えますか?",
"managed_event_dialog_title_other": "{{count}} 人のメンバーがすでに URL /{{slug}} を使用しています。置き換えますか?",
"managed_event_dialog_information_one": "<strong>{{names}}</strong> がすでに URL <strong>/{{slug}}</strong> を使用しています。",
"managed_event_dialog_information_other": "<strong>{{names}}</strong>はすでに<strong>/{{slug}}</strong>の URL を使用しています。",
"managed_event_dialog_information_other": "<strong>{{names}}</strong> はすでに <strong>/{{slug}}</strong> の URL を使用しています。",
"managed_event_dialog_clarification": "置き換えを選択すると、通知が送られます。上書きしたくない場合には、戻って削除してください。",
"review_event_type": "イベントの種類を確認",
"looking_for_more_analytics": "詳しい分析情報をお探しですか?",
@@ -1837,7 +1837,7 @@
"complete_your_booking_subject": "次の予約を完了する: {{date}} の {{title}}",
"confirm_your_details": "詳細を確認",
"copy_invite_link": "招待リンクをコピー",
"edit_invite_link": "リンクの設定を編集",
"edit_invite_link": "リンクの設定を編集する",
"invite_link_copied": "招待リンクをコピーしました",
"invite_link_deleted": "招待リンクを削除しました",
"invite_link_updated": "招待リンクの設定を保存しました",
@@ -1845,9 +1845,9 @@
"one_day": "1 日",
"seven_days": "7 日",
"thirty_days": "30 日",
"three_months": "3 ヶ月",
"three_months": "3 か月",
"one_year": "1 年",
"team_invite_received": "{{teamName}} に参加するよう招待されました",
"team_invite_received": "{{teamName}} への参加に招待されています",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "出席者に {{amount, currency}} を請求しようとしています。続けてもよろしいですか?",
"charge_attendee": "出席者に {{amount, currency}} を請求",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "{{userCount}} 人のユーザーが招待されました",
"error_collecting_card": "カードの収集中にエラーが発生しました",
"image_size_limit_exceed": "アップロードする画像のサイズは 5 MB 以下にする必要があります",
"unauthorized_workflow_error_message": "{{errorCode}}:このワークフローを有効または無効にする権限がありません",
"unauthorized_workflow_error_message": "{{errorCode}}: このワークフローの有効/無効を切り替える権限がありません",
"inline_embed": "インライン埋め込み",
"load_inline_content": "イベントの種類を他のウェブサイト内コンテンツにインラインで直接読み込みます。",
"floating_pop_up_button": "フローティングポップアップボタン",
@@ -1876,69 +1876,69 @@
"connect_google_workspace": "Google Workspace を接続",
"google_workspace_admin_tooltip": "この機能を使うには Workspace の管理者になる必要があります",
"first_event_type_webhook_description": "このイベントの種類の最初の Webhook を作成",
"install_app_on": "次にアプリをインストール",
"install_app_on": "次のアカウントにアプリをインストール",
"create_for": "作成対象",
"setup_organization": "Organization をセットアップ",
"organization_banner_description": "チームがラウンドロビンスケジューリングや一括スケジューリングで、共有アプリ、ワークフロー、イベントの種類を作成できる環境を作成します。",
"organization_banner_title": "複数のチームを持つ組織を管理",
"set_up_your_organization": "組織をセットアップ",
"organizations_description": "組織はチームが共有するイベントの種類、アプリ、ワークフローなどを作成できる共有環境です。",
"must_enter_organization_name": "組織の名前の入力は必須です",
"must_enter_organization_admin_email": "組織のメールアドレスの入力は必須です",
"setup_organization": "組織をセットアップする",
"organization_banner_description": "チームがラウンドロビンスケジューリングや一括スケジューリングを活用して、共有アプリ、ワークフロー、イベントの種類を作成できる環境を作成します。",
"organization_banner_title": "複数のチームを持つ組織を管理する",
"set_up_your_organization": "組織をセットアップする",
"organizations_description": "組織は、チームが共有するイベントの種類、アプリ、ワークフローなどが作成可能な共有環境です。",
"must_enter_organization_name": "組織名は必須項目です",
"must_enter_organization_admin_email": "組織のメールアドレスは必須項目です",
"admin_email": "組織のメールアドレス",
"admin_username": "管理者のユーザー名",
"organization_name": "組織の名前",
"organization_url": "Organization の URL",
"organization_verify_header": "組織のメールアドレスを確認してください",
"organization_verify_email_body": "組織のセットアップを続行するには、以下のコードを使ってメールアドレスを確認してください。",
"organization_name": "組織名",
"organization_url": "組織の URL",
"organization_verify_header": "組織のメールアドレスをご確認ください",
"organization_verify_email_body": "組織のセットアップを続行するには、以下のコードを使用してメールアドレスを確認してください。",
"additional_url_parameters": "追加の URL パラメータ",
"about_your_organization": "あなたの組織について",
"about_your_organization_description": "組織は共有するメンバー、イベントの種類、アプリ、ワークフローなどを含む複数のチームを作成できる共有環境です。",
"create_your_teams": "チームを作成",
"create_your_teams_description": "組織にチームメンバーを追加して、共同のスケジューリングを開始します",
"invite_organization_admins": "組織の管理者を招待",
"invite_organization_admins_description": "これらの管理者は組織のすべてのチームにアクセスできます。チームの管理者とメンバーは後で追加できます。",
"set_a_password": "パスワードを設定",
"set_a_password_description": "これにより、組織のメールアドレスとこのパスワードを使って、新規ユーザーアカウントが作成されます。",
"organization_logo": "Organization のロゴ",
"organization_about_description": "あなたの組織についての簡単な説明文です。あなたの組織の公開 プロフィールページに表示されます。",
"ill_do_this_later": "これは後でする",
"verify_your_email": "メールを確認",
"enter_digit_code": "{{email}} に送信した6桁のコードを入力してください",
"about_your_organization_description": "組織は、共有メンバー、イベントの種類、アプリ、ワークフローなどを含む複数のチームを作成可能な共有環境です。",
"create_your_teams": "チームを作成する",
"create_your_teams_description": "組織にチームメンバーを追加して、一緒にスケジュール設定を開始しましょう",
"invite_organization_admins": "組織の管理者を招待する",
"invite_organization_admins_description": "これらの管理者は組織内のすべてのチームにアクセスできます。チームの管理者とメンバーは、後から追加することが可能です。",
"set_a_password": "パスワードを設定する",
"set_a_password_description": "これにより、組織のメールアドレスとこのパスワードを用いて新しいユーザーアカウントが作成されます。",
"organization_logo": "組織のロゴ",
"organization_about_description": "あなたの組織についての簡単な説明文です。あなたの組織の公開プロフィールページに表示されます。",
"ill_do_this_later": "後で行う",
"verify_your_email": "メールを確認する",
"enter_digit_code": "{{email}} に送信した 6 桁のコードを入力してください",
"verify_email_organization": "組織を作成するには、メールを確認してください",
"code_provided_invalid": "提供されたコードは有効ではありません。もう一度お試しください",
"code_provided_invalid": "提供されたコードは無効です。もう一度お試しください",
"email_already_used": "メールはすでに使用されています",
"organization_admin_invited_heading": "{{orgName}} に参加するよう招待されました",
"organization_admin_invited_body": "{{orgName}} のチームに参加して、これからはスケジューリングではなくミーティングに集中しましょう!",
"duplicated_slugs_warning": "次のチームはスラッグが重複しているため作成できませんでした:{{slugs}}",
"organization_admin_invited_heading": "{{orgName}} への参加に招待されました",
"organization_admin_invited_body": "{{orgName}} のチームに参加し、ミーティングの手配ではなくミーティングそのものに集中しましょう!",
"duplicated_slugs_warning": "以下のチームについては、スラッグ {{slugs}} が重複しているため作成できませんでした。",
"team_names_empty": "チーム名は空欄にできません",
"team_names_repeated": "チーム名を繰り返し使用することはできません",
"user_belongs_organization": "ユーザーは組織の一員です",
"user_belongs_organization": "ユーザーは組織に属しています",
"org_no_teams_yet": "この組織にはまだチームがありません",
"org_no_teams_yet_description": "管理者である場合は、必ずここに表示されるチームを作成してください。",
"org_no_teams_yet_description": "管理者である場合には、ここに表示されるチームを必ず作成してください。",
"set_up": "設定",
"set_up_your_profile": "プロフィールを設定",
"set_up_your_profile_description": "あなたのことを {{orgName}} 内、そして公開リンクを見る人に知ってもらいます。",
"set_up_your_profile": "プロフィールを設定する",
"set_up_your_profile_description": "{{orgName}} 内で、公開リンクを使用するユーザーにあなたのことを知ってもらいましょう。",
"my_profile": "プロフィール",
"my_settings": "設定",
"crm": "CRM",
"messaging": "メッセージング",
"sender_id_info": "SMS の送信者として表示される名前または番号(国によっては英数字の送信者 ID を許可しない場合があります)",
"org_admins_can_create_new_teams": "組織の管理者のみが新規チームを作成できます",
"google_new_spam_policy": "Goggleのスパムに関する新しいポリシーにより、この予約についてのメールやカレンダー通知を受け取れなくなる可能性があります。",
"sender_id_info": "SMS の送信者として表示される名前または番号 (国によっては英数字の送信者 ID が許可されない場合もあります)",
"org_admins_can_create_new_teams": "組織の管理者のみが新しいチームを作成できます",
"google_new_spam_policy": "Google の新しい迷惑メールポリシーにより、この予約に関するメールやカレンダー通知を受け取れなくなる可能性があります。",
"resolve": "解決する",
"no_organization_slug": "この組織のチームの作成中にエラーが発生しました。URL スラッグがありません。",
"org_name": "組織の名前",
"no_organization_slug": "この組織でチームを作成する際にエラーが発生しました。URL スラッグがありません。",
"org_name": "組織名",
"org_url": "組織の URL",
"copy_link_org": "組織へのリンクをコピー",
"copy_link_org": "組織へのリンクをコピーする",
"404_the_org": "組織",
"404_the_team": "チーム",
"404_claim_entity_org": "組織のサブドメインを取得",
"404_claim_entity_team": "このチームの一員になって、これからはスケジュールをまとめて管理しましょう",
"404_claim_entity_org": "組織のサブドメインを取得する",
"404_claim_entity_team": "このチームの一員になって、今後はスケジュールをまとめて管理しましょう",
"insights_all_org_filter": "すべて",
"insights_team_filter": "チーム:{{teamName}}",
"insights_user_filter": "ユーザー:{{userName}}",
"insights_subtitle": "イベント全体の予約 Insights を表示",
"insights_team_filter": "チーム: {{teamName}}",
"insights_user_filter": "ユーザー: {{userName}}",
"insights_subtitle": "イベント全体での予約に関する分析情報を表示する",
"custom_plan": "カスタムプラン",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ この上に新しい文字列を追加 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ この上に新しい文字列を追加してください ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+46 -46
View File
@@ -13,18 +13,18 @@
"reset_password_subject": "{{appName}}: 비밀번호 재설정 방법",
"verify_email_subject": "{{appName}}: 계정 인증",
"check_your_email": "이메일 확인",
"verify_email_page_body": "{{email}}에 이메일을 발송했습니다. {{appName}}에서 최상의 이메일 및 캘린더 전송 가능성을 보장하려면 이메일 주소를 인증하는 것이 중요합니다.",
"verify_email_banner_body": "최상의 이메일 및 일정 전달 가능성을 보장하려면 이메일 주소를 인증하십시오.",
"verify_email_page_body": "{{email}}에 이메일을 발송했습니다. {{appName}}에서 이메일과 캘린더를 가능한 한 차질 없이 보내드리려면 이메일 주소를 인증하는 것이 중요합니다.",
"verify_email_banner_body": "이메일 및 일정을 가능한 한 차질 없이 보내드릴 수 있도록 이메일 주소를 인증하세요.",
"verify_email_email_header": "이메일 주소 인증",
"verify_email_email_button": "이메일 인증",
"verify_email_email_body": "아래 버튼을 클릭하여 이메일 주소를 인증하십시오.",
"verify_email_email_link_text": "버튼 클릭이 마음에 들지 않는 경우 링크는 다음과 같습니다.",
"verify_email_email_body": "아래 버튼을 클릭하여 이메일 주소를 인증하세요.",
"verify_email_email_link_text": "버튼 클릭이 마음에 들지 않는 경우 다음 링크를 사용하세요.",
"email_sent": "이메일이 성공적으로 전송되었습니다",
"event_declined_subject": "거절됨: {{date}} {{title}}",
"event_cancelled_subject": "취소됨: {{title}} 날짜 {{date}}",
"event_request_declined": "회의 요청이 거절되었습니다.",
"event_request_declined_recurring": "되풀이 이벤트 요청이 거부되었습니다",
"event_request_cancelled": "회의 일정이 취소되었습니다",
"event_request_cancelled": "예약된 일정이 취소되었습니다",
"organizer": "주최자",
"need_to_reschedule_or_cancel": "다시 일정을 잡거나 취소하시겠습니까?",
"no_options_available": "사용 가능한 옵션 없음",
@@ -87,7 +87,7 @@
"your_meeting_has_been_booked": "회의가 예약되었습니다.",
"event_type_has_been_rescheduled_on_time_date": "귀하의 {{title}} 일정이 {{date}}로 변경되었습니다.",
"event_has_been_rescheduled": "업데이트 - 이벤트 일정이 변경되었습니다.",
"request_reschedule_subtitle": "{{organizer}}에서 예약을 취소했고 다른 시간을 선택할 것을 요청했습니다.",
"request_reschedule_subtitle": "{{organizer}}에서 예약을 취소하고 다른 시간을 선택할 것을 요청했습니다.",
"request_reschedule_title_organizer": "{{attendee}}에게 일정 변경을 요청하셨습니다",
"request_reschedule_subtitle_organizer": "예약을 취소하셨기 때문에 {{attendee}} 님이 새 예약 시간을 선택해야 합니다.",
"rescheduled_event_type_subject": "일정 변경 요청이 보내짐: {{date}}에 {{name}}(으)로 {{eventType}}",
@@ -118,7 +118,7 @@
"team_info": "팀 정보",
"request_another_invitation_email": "{{toEmail}} 을 {{appName}} 계정에 사용하고 싶지 않거나 이미 {{appName}} 계정이 있는 경우, 그 메일로 초대를 요청하세요.",
"you_have_been_invited": "{{teamName}} 팀에 초대되셨습니다.",
"user_invited_you": "{{user}} 님께서 {{appName}}의 {{entity}} {{team}}에 초대하셨습니다.",
"user_invited_you": "{{user}} 님께서 {{appName}}의 {{entity}} {{team}}에 귀하를 초대하셨습니다.",
"hidden_team_member_title": "귀하는 이 팀에서 숨겨졌습니다",
"hidden_team_member_message": "귀하의 시트 비용은 Pro로 업그레이드하거나 팀 소유자에게 그들이 귀하의 시트 비용을 지불할 수 있다고 알리는 어떤 경우에도 지불되지 않습니다.",
"hidden_team_owner_message": "팀을 사용하려면 Pro 계정이 필요합니다. 귀하의 계정은 업그레이드할 때까지 숨겨졌습니다.",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "당사의 새로운 팀 플랜을 사용해 주셔서 감사합니다. 귀하의 \"{{teamName}}\" 팀에 업그레이드가 필요한 것으로 확인되었습니다.",
"upgrade_banner_action": "여기서 업그레이드",
"team_upgraded_successfully": "팀이 성공적으로 업그레이드되었습니다!",
"org_upgrade_banner_description": "당사의 조직 플랜을 사용해 주셔서 감사합니다. 귀하의 \"{{teamName}}\" 조직에 업그레이드가 필요한 것으로 확인되었습니다.",
"org_upgraded_successfully": "조직이 성공적으로 업그레이드되었습니다!",
"org_upgrade_banner_description": "당사의 Organization 플랜 체험을 선택해 주셔서 감사합니다. 귀하의 Organization \"{{teamName}}\"에 업그레이드가 필요한 것으로 확인되었습니다.",
"org_upgraded_successfully": "Organization이 성공적으로 업그레이드되었습니다!",
"use_link_to_reset_password": "비밀번호를 재설정하시려면 아래 링크를 사용하세요.",
"hey_there": "안녕하세요.",
"forgot_your_password_calcom": "비밀번호를 잊어버리셨나요? - {{appName}}",
@@ -248,7 +248,7 @@
"organization_general_description": "팀 언어 및 시간대 설정 관리",
"few_sentences_about_yourself": "자신에 대해 몇 마디를 써보세요. 개인 URL 페이지에 보이는 내용입니다.",
"nearly_there": "거의 다 되었습니다!",
"nearly_there_instructions": "마지막으로, 당신에 대해 간단한 소개와 사진을 올려주세요. 소개와 사진은 예약에 도움을 줍니다.",
"nearly_there_instructions": "마지막으로, 예약에 도움이 되고 사람들이 본인에 대해 알 수 있도록 본인에 대한 간단한 소개와 사진을 올려주세요.",
"set_availability_instructions": "주기적으로 시간이 되는 때가 언제인지 알려주세요. 나중에 더 추가할 수 있습니다.",
"set_availability": "언제 여유가 있는지 설정하세요.",
"continue_without_calendar": "캘린더 없이 계속하기",
@@ -306,16 +306,16 @@
"password_has_been_reset_login": "비밀번호가 초기화되었습니다. 이제 새로 생성한 비밀번호로 로그인할 수 있습니다.",
"layout": "레이아웃",
"bookerlayout_default_title": "기본 보기",
"bookerlayout_description": "여러 개를 선택할 수 있고 예약자는 보기를 전환할 수 있습니다.",
"bookerlayout_description": "여러 개를 선택할 수 있고 예약자가 보기를 전환할 수 있습니다.",
"bookerlayout_user_settings_title": "예약 레이아웃",
"bookerlayout_user_settings_description": "여러 개를 선택할 수 있으고 예약자는 보기를 전환할 수 있습니다. 이벤트별로 재정의할 수 있습니다.",
"bookerlayout_user_settings_description": "여러 개를 선택하고 예약자가 보기를 전환할 수 있습니다. 이벤트별로 재정의할 수 있습니다.",
"bookerlayout_month_view": "월",
"bookerlayout_week_view": "주별",
"bookerlayout_column_view": "열",
"bookerlayout_error_min_one_enabled": "하나 이상의 레이아웃을 활성화해야 합니다.",
"bookerlayout_error_default_not_enabled": "기본 보기로 선택한 레이아웃은 활성화된 레이아웃의 일부가 아닙니다.",
"bookerlayout_error_unknown_layout": "선택한 레이아웃은 유효한 레이아웃이 아닙니다.",
"bookerlayout_override_global_settings": "<2>설정/표시</2> 또는 <6>이 이벤트에 대해서만 재정의</6>에서 모든 이벤트 유형에 대해 이를 관리할 수 있습니다.",
"bookerlayout_override_global_settings": "<2>설정/모양</2> 또는 <6>이 이벤트에 대해서만 재정의</6>에서 모든 이벤트 유형에 대해 이를 관리할 수 있습니다.",
"unexpected_error_try_again": "예기치 않은 오류가 발생했습니다. 다시 시도하십시오.",
"sunday_time_error": "일요일 유효하지 않은 시간",
"monday_time_error": "월요일 유효하지 않은 시간",
@@ -339,7 +339,7 @@
"error_with_status_code_occured": "상태 코드가 {{status}}인 오류가 발생했습니다.",
"error_event_type_url_duplicate": "이 URL을 사용하는 이벤트 유형이 이미 존재합니다.",
"error_event_type_unauthorized_create": "이 이벤트를 만들 수 없습니다.",
"error_event_type_unauthorized_update": "이 일정을 편집할 수 없습니다.",
"error_event_type_unauthorized_update": "이 이벤트를 편집할 수 없습니다.",
"error_workflow_unauthorized_create": "이 워크플로를 만들 수 없습니다.",
"error_schedule_unauthorized_create": "이 일정을 만들 수 없습니다.",
"booking_already_cancelled": "이 예약은 이미 취소되었습니다",
@@ -357,7 +357,7 @@
"upcoming_bookings": "누군가 당신과 회의를 예약하는 즉시 여기에 표시됩니다.",
"recurring_bookings": "누군가가 귀하와 되풀이 회의를 예약하는 즉시 여기에 표시됩니다.",
"past_bookings": "과거 예약이 여기에 표시됩니다.",
"cancelled_bookings": "취소된 예약은 여기에 표시됩니다.",
"cancelled_bookings": "취소된 예약이 여기에 표시됩니다.",
"unconfirmed_bookings": "확인되지 않은 예약은 여기에 표시됩니다.",
"unconfirmed_bookings_tooltip": "미확인된 예약",
"on": "-",
@@ -413,8 +413,8 @@
"team_webhooks": "팀 웹훅",
"create_new_webhook_to_account": "내 계정에 새 웹훅 만들기",
"new_webhook": "새 웹훅",
"receive_cal_meeting_data": "일정이 잡히거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
"receive_cal_event_meeting_data": "일정이 잡혔거나 취소되었을 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
"receive_cal_meeting_data": "이벤트가 예약되거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
"receive_cal_event_meeting_data": "이 이벤트가 예약되거나 취소될 때 지정된 URL에서 실시간으로 {{appName}} 회의 데이터를 수신합니다.",
"responsive_fullscreen_iframe": "반응형 전체 화면 iframe",
"loading": "로드 중",
"deleting": "삭제 중...",
@@ -551,11 +551,11 @@
"team_description": "팀 URL 페이지에 나타날 팀 소개를 해주세요.",
"org_description": "귀하의 조직에 대한 몇 자 남겨주세요. 이 내용은 귀하 조직의 URL 페이지에 표시됩니다.",
"members": "회원",
"organization_members": "조직 일원",
"organization_members": "Organization 구성원",
"member": "회원",
"number_member_one": "회원 {{count}}명",
"number_member_other": "회원 {{count}}명",
"number_selected": "{{count}} 선택됨",
"number_selected": "{{count}}개 선택됨",
"owner": "소유자",
"admin": "관리",
"administrator_user": "관리자 사용자",
@@ -867,13 +867,13 @@
"no_category_apps": "{{category}} 앱 없음",
"all_apps": "모든 앱",
"no_category_apps_description_calendar": "중복 예약을 방지하기 위해 충돌을 확인하려는 캘린더 앱을 추가합니다",
"no_category_apps_description_conferencing": "고객과 화상 통화를 통합하려면 회의 앱을 추가해 보세요",
"no_category_apps_description_conferencing": "고객과 화상 통화하려면 회의 앱을 추가해 보세요",
"no_category_apps_description_payment": "귀하와 귀하 고객 간의 거래를 용이하게 하는 결제 앱을 추가합니다",
"no_category_apps_description_analytics": "예약 페이지에 대한 분석 앱 추가",
"no_category_apps_description_automation": "사용할 자동화 앱 추가",
"no_category_apps_description_other": "모든 종류의 작업을 수행하는 다른 유형의 앱을 추가합니다",
"no_category_apps_description_web3": "예약 페이지에 web3 앱 추가",
"no_category_apps_description_messaging": "맞춤 알림 및 미리 알림을 설정하려면 메시지 앱을 추가하세요",
"no_category_apps_description_messaging": "사용자 정의 알림 및 미리 알림을 설정하려면 메시징 앱을 추가하세요",
"no_category_apps_description_crm": "CRM 앱을 추가하여 만났던 사람을 추적하세요",
"installed_app_calendar_description": "중복 예약을 방지하기 위해 충돌을 확인하도록 캘린더를 설정합니다.",
"installed_app_payment_description": "고객에게 요금 청구 시 사용할 결제 처리 서비스를 구성합니다.",
@@ -882,7 +882,7 @@
"installed_app_conferencing_description": "사용할 회의 앱 구성",
"installed_app_automation_description": "사용할 자동화 앱 구성",
"installed_app_web3_description": "예약 페이지에 사용할 web3 앱 구성",
"installed_app_messaging_description": "맞춤 알림 및 미리 알림 설정에 사용할 메시징 앱 구성",
"installed_app_messaging_description": "사용자 정의 알림 및 미리 알림 설정에 사용할 메시징 앱 구성",
"installed_app_crm_description": "만났던 사람을 추적하는 데 사용할 CRM 앱 구성",
"analytics": "분석",
"empty_installed_apps_headline": "설치된 앱 없음",
@@ -1003,7 +1003,7 @@
"user_impersonation_description": "신고하신 문제를 신속하게 해결할 수 있도록 지원 팀이 귀하의 계정에 일시적으로 로그인할 수 있게 허용합니다.",
"team_impersonation_description": "팀 소유자/관리자가 일시적으로 귀하의 자격으로 로그인할 수 있게 합니다.",
"make_team_private": "팀을 비공개로 설정",
"make_team_private_description": "이 기능이 켜져 있으면 팀원은 다른 팀원을 볼 수 없게 됩니다.",
"make_team_private_description": "이 기능을 켜면 팀원이 다른 팀원을 볼 수 없게 됩니다.",
"you_cannot_see_team_members": "비공개 팀의 모든 팀원을 볼 수 없습니다.",
"allow_booker_to_select_duration": "예약자가 기간을 선택하도록 허용",
"impersonate_user_tip": "이 기능의 사용은 모두 감사됩니다.",
@@ -1338,7 +1338,7 @@
"profile_team_description": "팀 프로필 설정 관리",
"profile_org_description": "사용자 조직 프로필 설정 관리",
"members_team_description": "그룹 내 사용자",
"organization_description": "조직의 관리자 및 일원 관리",
"organization_description": "조직의 관리자 및 구성원 관리",
"team_url": "팀 URL",
"team_members": "팀원",
"more": "더 보기",
@@ -1494,9 +1494,9 @@
"must_enter_team_name": "팀 이름을 입력하세요",
"team_url_required": "팀 URL을 입력하세요",
"url_taken": "이미 사용 중인 URL입니다",
"problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하십시오.",
"problem_registering_domain": "하위 도메인 등록에 문제가 있습니다. 다시 시도하거나 관리자에게 문의하세요.",
"team_publish": "팀 게시",
"number_text_notifications": "전화번호 (문자 알림)",
"number_text_notifications": "전화번호(문자 알림)",
"attendee_email_variable": "참석자 이메일",
"attendee_email_info": "예약자 이메일",
"kbar_search_placeholder": "명령어를 입력하거나 검색하세요...",
@@ -1555,7 +1555,7 @@
"no_apps": "Cal의 이 인스턴스에서 활성화된 앱이 없습니다",
"no_apps_configured": "아직 구성된 앱이 없습니다",
"enable_in_settings": "설정에서 앱을 활성화할 수 있습니다",
"please_contact_admin": "관리자에게 문의하십시오",
"please_contact_admin": "관리자에게 문의하세요",
"apps_settings": "앱 설정",
"fill_this_field": "이 필드에 입력하세요",
"options": "선택사항",
@@ -1659,10 +1659,10 @@
"delete_sso_configuration_confirmation_description": "{{connectionType}} 구성을 삭제하시겠습니까? {{connectionType}} 로그인을 사용하는 팀원은 더 이상 Cal.com에 액세스할 수 없습니다.",
"organizer_timezone": "주최자 시간대",
"email_user_cta": "초대 보기",
"email_no_user_invite_heading": "{{appName}} {{entity}} 가입 초대를 받으셨습니다",
"email_no_user_invite_heading": "{{appName}} {{entity}}에 참여 초대를 받으셨습니다",
"email_no_user_invite_subheading": "{{invitedBy}} 님이 귀하를 {{appName}}에서 자신의 팀에 초대했습니다. {{appName}} 앱은 귀하와 귀하의 팀이 이메일을 주고 받지 않고 회의 일정을 잡을 수 있게 해주는 이벤트 정리 스케줄러입니다.",
"email_user_invite_subheading": "{{invitedBy}}님이 {{appName}}에서 자신의 {{entity}} `{{teamName}}` 팀에 가입하도록 당신을 초대했습니다. {{appName}}은 유저와 {{entity}}에서 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 하는 이벤트 조율 스케줄러입니다.",
"email_no_user_invite_steps_intro": "안내해 드릴 몇 가지 간단한 단계만 거치면 곧 {{entity}}에 대해 스트레스 없이 편리하게 일정을 관리할 수 있게 될 것입니다.",
"email_user_invite_subheading": "{{invitedBy}} 님이 {{appName}}에서 자신의 {{entity}} `{{teamName}}`에 귀하의 참여를 초대했습니다. {{appName}}은(는) 사용자와 {{entity}}이(가) 이메일을 주고 받지 않고도 회의 일정을 잡을 수 있게 해주는 이벤트 조정 스케줄러입니다.",
"email_no_user_invite_steps_intro": "안내해 드릴 몇 가지 간단한 단계만 거치면 곧 스트레스 없이 편리하게 {{entity}} 일정을 관리할 수 있게 될 것입니다.",
"email_no_user_step_one": "사용자 이름 선택",
"email_no_user_step_two": "캘린더 계정 연결",
"email_no_user_step_three": "언제 여유가 있는지 설정하세요",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "참석자가 더 이상 이벤트에 참석하고 있지 않습니다",
"attendee_no_longer_attending_subtitle": "{{name}}이(가) 취소되었습니다. 즉, 이 시간 슬롯에 좌석이 비어 있습니다",
"create_event_on": "이벤트 생성일:",
"create_routing_form_on": "회람 양식 만들기",
"create_routing_form_on": "라우팅 양식을 만들 대상",
"default_app_link_title": "기본 앱 링크 설정",
"default_app_link_description": "기본 앱 링크를 설정하면 새로 생성된 모든 이벤트 유형에서 설정된 앱 링크를 사용할 수 있습니다.",
"organizer_default_conferencing_app": "주최자의 기본 앱",
@@ -1697,7 +1697,7 @@
"booking_questions_title": "예약 질문",
"booking_questions_description": "예약 페이지에서 묻는 질문을 사용자 정의합니다",
"add_a_booking_question": "질문 추가",
"identifier": "식별자",
"identifier": "ID",
"duplicate_email": "중복 이메일입니다",
"booking_with_payment_cancelled": "이 이벤트는 더 이상 결제할 수 없습니다",
"booking_with_payment_cancelled_already_paid": "이 예약 결제에 대한 환불 처리가 진행 중입니다.",
@@ -1740,7 +1740,7 @@
"no_responses_yet": "아직 응답 없음",
"no_routes_defined": "정의된 경로 없음",
"this_will_be_the_placeholder": "이것은 자리 표시자가 됩니다",
"error_booking_event": "이벤트를 예약하는 도중 오류가 발생했습니다. 페이지를 새로고침한 후 다시 시도해주세요.",
"error_booking_event": "이벤트를 예약하는 중 오류가 발생했습니다. 페이지를 새로 고치고 다시 시도하세요.",
"timeslot_missing_title": "시간대가 선택되지 않았습니다",
"timeslot_missing_description": "이벤트를 예약 할 시간대를 선택해주세요.",
"timeslot_missing_cta": "시간대 선택",
@@ -1841,11 +1841,11 @@
"invite_link_copied": "초대 링크가 복사되었습니다",
"invite_link_deleted": "초대 링크가 삭제되었습니다",
"invite_link_updated": "초대 링크 설정이 저장되었습니다",
"link_expires_after": "링크 만료 전까지 설정된 일 수...",
"link_expires_after": "링크 만료 기한...",
"one_day": "1일",
"seven_days": "7일",
"thirty_days": "30일",
"three_months": "3개월ㄹ",
"three_months": "3개월",
"one_year": "1년",
"team_invite_received": "{{teamName}}에 초대되셨습니다",
"currency_string": "{{amount, currency}}",
@@ -1876,7 +1876,7 @@
"connect_google_workspace": "Google Workspace 연결",
"google_workspace_admin_tooltip": "이 기능을 사용하려면 Workspace 관리자여야 합니다",
"first_event_type_webhook_description": "이 이벤트 유형에 대한 첫 번째 웹훅 만들기",
"install_app_on": "앱 설치",
"install_app_on": "앱 설치 대상",
"create_for": "작성 대상",
"setup_organization": "조직 설정",
"organization_banner_description": "팀이 라운드 로빈 및 공동 예약을 통해 공유 앱, 워크플로 및 이벤트 유형을 생성할 수 있는 환경을 만듭니다.",
@@ -1890,35 +1890,35 @@
"organization_name": "조직 이름",
"organization_url": "조직 URL",
"organization_verify_header": "조직 이메일 인증",
"organization_verify_email_body": "조직 설정을 계속하려면 아래 코드를 사용하여 이메일 주소를 인증하십시오.",
"organization_verify_email_body": "조직 설정을 계속하려면 아래 코드를 사용하여 이메일 주소를 인증하세요.",
"additional_url_parameters": "추가 URL 매개변수",
"about_your_organization": "조직 소개",
"about_your_organization_description": "조직은 일원, 이벤트 유형, 앱, 워크플로 등을 공유하여 여러 팀을 만들 수 있는 공유 환경입니다.",
"about_your_organization_description": "Organization은 구성원, 이벤트 유형, 앱, 워크플로 등을 공유하여 여러 팀을 만들 수 있는 공유 환경입니다.",
"create_your_teams": "팀 만들기",
"create_your_teams_description": "팀원을 조직에 추가하여 함께 일정을 시작하세요",
"create_your_teams_description": "조직에 팀원을 추가하여 함께 일정 관리를 시작하세요",
"invite_organization_admins": "조직 관리자 초대",
"invite_organization_admins_description": "이러한 관리자는 조직의 모든 팀에 액세스할 수 있습니다. 나중에 팀 관리자와 팀원을 추가할 수 있습니다.",
"set_a_password": "비밀번호 설정",
"set_a_password_description": "이것으로 조직 이메일과 이 비밀번호를 사용하여 새 사용자 계정이 생성됩니다.",
"set_a_password_description": "이렇게 하면 조직 이메일과 이 비밀번호를 사용하여 새 사용자 계정이 생성됩니다.",
"organization_logo": "조직 로고",
"organization_about_description": "귀하의 조직에 대해 몇 자 남겨주세요. 이 내용은 귀하 조직의 공개 프로필 페이지에 표시됩니다.",
"ill_do_this_later": "나중에",
"verify_your_email": "이메일 인증",
"enter_digit_code": "{{email}} 주소로 보내드린 6자리 코드를 입력하세요",
"verify_email_organization": "조직을 만들려면 이메일을 인증하세요",
"code_provided_invalid": "입력하신 코드가 유효하지 않습니다. 다시 입력하십시오.",
"code_provided_invalid": "입력하신 코드가 유효하지 않습니다. 다시 입력하세요.",
"email_already_used": "이미 사용 중인 이메일입니다",
"organization_admin_invited_heading": "{{orgName}}에 초대되셨습니다",
"organization_admin_invited_body": "{{orgName}}에서 팀에 합류하여 회의 준비보다 회의 자체에 집중하세요!",
"duplicated_slugs_warning": "중복된 슬러그로 인해 다음 팀을 생성할 수 없습니다. {{slugs}}",
"team_names_empty": "팀 이름은 비어 있을 수 없습니다",
"duplicated_slugs_warning": "중복된 슬러그로 인해 다음 팀을 생성할 수 없습니다: {{slugs}}",
"team_names_empty": "팀 이름은 비워둘 수 없습니다",
"team_names_repeated": "팀 이름은 중복될 수 없습니다",
"user_belongs_organization": "사용자는 조직 소속입니다",
"org_no_teams_yet": "이 조직에 아직 팀이 없습니다",
"org_no_teams_yet_description": "관리자인 경우 여기에 표시할 팀을 만들어야 합니다.",
"set_up": "설정",
"set_up_your_profile": "사용자 프로필 설정",
"set_up_your_profile_description": "{{orgName}} 내에서 귀하가 누구인지, 그리고 귀하의 공개 링크에 언제 참여하는지 사람들에게 알리십시오.",
"set_up_your_profile_description": "{{orgName}} 내에서 귀하가 누구인지, 그리고 귀하의 공개 링크에 언제 참여하는지 사람들에게 알려주세요.",
"my_profile": "내 프로필",
"my_settings": "내 설정",
"crm": "CRM",
@@ -1930,7 +1930,7 @@
"no_organization_slug": "이 조직의 팀을 만드는 중 오류가 발생했습니다. URL 슬러그가 없습니다.",
"org_name": "조직 이름",
"org_url": "조직 URL",
"copy_link_org": "조직에 링크 복사",
"copy_link_org": "조직 링크 복사",
"404_the_org": "조직",
"404_the_team": "팀",
"404_claim_entity_org": "조직에 대한 하위 도메인 요청",
@@ -1940,5 +1940,5 @@
"insights_user_filter": "사용자: {{userName}}",
"insights_subtitle": "이벤트 전반에 걸친 예약 Insights 보기",
"custom_plan": "사용자 정의 플랜",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하십시오 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 여기에 새 문자열을 추가하세요 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+25 -25
View File
@@ -11,8 +11,8 @@
"calcom_explained_new_user": "Voltooi het instellen van uw {{appName}}-account! U bent slechts enkele stappen verwijderd van het oplossen van al uw planningsproblemen.",
"have_any_questions": "Heeft u vragen? We zijn er om te helpen.",
"reset_password_subject": "{{appName}}: Instructies voor het opnieuw instellen van uw wachtwoord",
"verify_email_subject": "{{appName}}: Verifieer je account",
"check_your_email": "Controleer je e-mail",
"verify_email_subject": "{{appName}}: verifieer je account",
"check_your_email": "Controleer uw e-mail",
"verify_email_page_body": "We hebben een e-mail naar {{email}} gestuurd. Het is belangrijk om uw e-mailadres te verifiëren om de beste bezorgbaarheid van e-mails en agenda's van {{appName}} te garanderen.",
"verify_email_banner_body": "Verifieer uw e-mailadres om de beste bezorgbaarheid van e-mails en agenda's te garanderen",
"verify_email_email_header": "Verifieer uw e-mailadres",
@@ -131,7 +131,7 @@
"team_upgrade_banner_description": "Bedankt voor het testen van ons nieuwe teamabonnement. We hebben geconstateerd dat uw team \"{{teamName}}\" moet worden geüpgraded.",
"upgrade_banner_action": "Hier upgraden",
"team_upgraded_successfully": "Uw team is geüpgraded!",
"org_upgrade_banner_description": "Bedankt voor het testen van ons organisatie-abonnement. We hebben geconstateerd dat uw organisatie \"{{teamName}}\" moet worden geüpgraded.",
"org_upgrade_banner_description": "Bedankt voor het testen van ons organisatieabonnement. We hebben geconstateerd dat uw organisatie \"{{teamName}}\" moet worden geüpgraded.",
"org_upgraded_successfully": "Uw organisatie is geüpgraded!",
"use_link_to_reset_password": "Gebruik de onderstaande link om uw wachtwoord te resetten",
"hey_there": "Hallo daar,",
@@ -199,7 +199,7 @@
"blog": "Blog",
"blog_description": "Lees ons laatste nieuws en artikelen",
"join_our_community": "Word lid van onze community",
"join_our_discord": "Word lid van onze Discord",
"join_our_discord": "Neem deel aan onze Discord",
"404_claim_entity_user": "Claim uw gebruikersnaam en plan evenementen",
"popular_pages": "Populaire pagina's",
"register_now": "Registreer nu",
@@ -248,10 +248,10 @@
"available_apps_lower_case": "Beschikbare apps",
"check_email_reset_password": "Controleer uw e-mail. We hebben u een link gestuurd om uw wachtwoord opnieuw in te stellen.",
"finish": "Voltooien",
"organization_general_description": "Beheer de instellingen voor uw teamtaal en -tijdzone",
"organization_general_description": "Beheer de instellingen voor de taal en tijdzone van uw team",
"few_sentences_about_yourself": "Een korte introductie over uzelf. Dit wordt weergegeven op uw persoonlijke pagina.",
"nearly_there": "Bijna klaar!",
"nearly_there_instructions": "Tot slot, een korte beschrijving van u en een foto helpt u echt boekingen te krijgen en laat iedereen weten bij wie ze zijn geboekt.",
"nearly_there_instructions": "Tot slot, een korte beschrijving van u en een foto helpt u echt boekingen te krijgen en laat iedereen weten bij wie ze boeken.",
"set_availability_instructions": "Bepaal tijdbereiken waarin u periodiek beschikbaar bent. U kunt op een later tijdstip terugkomen en hier meer van aanmaken en toewijzen aan verschillende kalenders.",
"set_availability": "Beschikbaarheid bepalen",
"continue_without_calendar": "Doorgaan zonder kalender",
@@ -315,10 +315,10 @@
"bookerlayout_month_view": "Maand",
"bookerlayout_week_view": "Wekelijks",
"bookerlayout_column_view": "Kolom",
"bookerlayout_error_min_one_enabled": "Er moet minimaal één indeling ingeschakeld zijn.",
"bookerlayout_error_default_not_enabled": "De indeling die u als standaardweergave heeft geselecteerd, maakt geen deel uit van de ingeschakelde indelingen.",
"bookerlayout_error_min_one_enabled": "Minimaal één indeling moet ingeschakeld zijn.",
"bookerlayout_error_default_not_enabled": "De indeling die u als standaardweergave heeft geselecteerd, behoort niet tot de ingeschakelde indelingen.",
"bookerlayout_error_unknown_layout": "De door u geselecteerde indeling is geen geldige indeling.",
"bookerlayout_override_global_settings": "U kunt dit voor al uw gebeurtenistypen beheren in <2>Instellingen/Weergave</2> of <6>overschrijven voor alleen deze gebeurtenis</6>.",
"bookerlayout_override_global_settings": "U kunt dit voor al uw gebeurtenistypen beheren in <2>Instellingen > Weergave</2> of <6>overschrijven voor alleen deze gebeurtenis</6>.",
"unexpected_error_try_again": "Er is een onverwachte fout opgetreden. Probeer het opnieuw.",
"sunday_time_error": "Ongeldige tijd op zondag",
"monday_time_error": "Ongeldige tijd op maandag",
@@ -417,8 +417,8 @@
"team_webhooks": "Teamwebhooks",
"create_new_webhook_to_account": "Maak een nieuwe webhook aan voor uw account",
"new_webhook": "Maak een Webhook",
"receive_cal_meeting_data": "Ontvang {{appName}}-afspraakgegevens in realtime via een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
"receive_cal_event_meeting_data": "Ontvang {{appName}}-afspraakgegevens in realtime via een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
"receive_cal_meeting_data": "Ontvang afspraakgegevens van {{appName}} in realtime op een opgegeven URL wanneer een gebeurtenis wordt gepland of geannuleerd.",
"receive_cal_event_meeting_data": "Ontvang afspraakgegevens van {{appName}} in realtime op een opgegeven URL wanneer deze gebeurtenis wordt gepland of geannuleerd.",
"responsive_fullscreen_iframe": "Responsieve iframe",
"loading": "Laden...",
"deleting": "Verwijderen...",
@@ -913,7 +913,7 @@
"create_events_on": "Maak gebeurtenissen aan in de",
"enterprise_license": "Dit is een bedrijfsfunctie",
"enterprise_license_description": "Om deze functie in te schakelen, krijgt u een implementatiesleutel op de {{consoleUrl}}-console en voegt u deze toe aan uw .env als CALCOM_LICENSE_KEY. Als uw team al een licentie heeft, neem dan contact op met {{supportMail}} voor hulp.",
"enterprise_license_development": "U kunt deze functie in ontwikkelingsmodus testen. Voor productiegebruik moet een beheerder naar <2>/auth/setup</2> gaan om een licentiesleutel in te voeren.",
"enterprise_license_development": "U kunt deze functie testen in de in ontwikkelingsmodus. Voor productiegebruik moet een beheerder naar <2>/auth/setup</2> gaan om een licentiecode in te voeren.",
"missing_license": "Ontbrekende licentie",
"signup_requires": "Commerciële licentie vereist",
"signup_requires_description": "{{companyName}} biedt momenteel geen gratis opensourceversie van de registratiepagina aan. Om volledige toegang te krijgen tot de registratieonderdelen moet u een commerciële licentie verkrijgen. Voor persoonlijk gebruik raden we aan om accounts aan te maken op het Prisma Data Platform of een andere Postgres-interface.",
@@ -1087,7 +1087,7 @@
"new_event_trigger": "wanneer een nieuwe gebeurtenis is geboekt",
"email_host_action": "e-mail naar organisator versturen",
"email_attendee_action": "e-mail naar deelnemers versturen",
"sms_attendee_action": "Sms naar deelnemer versturen",
"sms_attendee_action": "Sms verzenden naar deelnemer",
"sms_number_action": "sms naar een specifiek nummer sturen",
"whatsapp_number_action": "WhatsApp-bericht naar een specifiek nummer versturen",
"whatsapp_attendee_action": "WhatsApp-bericht naar deelnemer versturen",
@@ -1491,16 +1491,16 @@
"your_org_disbanded_successfully": "Uw organisatie is ontbonden",
"error_creating_team": "Fout bij het aanmaken van team",
"you": "U",
"resend_email": "E-mail opnieuw versturen",
"resend_email": "E-mail opnieuw verzenden",
"member_already_invited": "Lid is al uitgenodigd",
"enter_email_or_username": "Voer een e-mailadres of gebruikersnaam in",
"team_name_taken": "Deze naam is al in gebruik",
"must_enter_team_name": "Moet een teamnaam invoeren",
"team_url_required": "Moet een team-URL invoeren",
"url_taken": "Deze URL is al in gebruik",
"problem_registering_domain": "Er is een probleem opgetreden bij het registreren van het subdomein, probeer het opnieuw of neem contact op met een beheerder",
"problem_registering_domain": "Er is een probleem opgetreden bij het registreren van het subdomein. Probeer het opnieuw of neem contact op met een beheerder",
"team_publish": "Team publiceren",
"number_text_notifications": "Telefoonnummer (berichtmeldingen)",
"number_text_notifications": "Telefoonnummer (sms-meldingen)",
"attendee_email_variable": "E-mailadres deelnemer",
"attendee_email_info": "Het e-mailadres van de persoon die boekt",
"kbar_search_placeholder": "Typ een opdracht of zoek...",
@@ -1524,7 +1524,7 @@
"fixed_round_robin": "Vaste round-robin",
"add_one_fixed_attendee": "Voeg één vaste deelnemer en round-robin toe via een aantal deelnemers.",
"calcom_is_better_with_team": "{{appName}} is beter met teams",
"the_calcom_team": "Het {{companyName}}-team",
"the_calcom_team": "Het team van {{companyName}}",
"add_your_team_members": "Voeg uw teamleden toe aan uw gebeurtenistypes. Gebruik collectieve planning om iedereen op te nemen of zoek de meest geschikte persoon met round robin-planning.",
"booking_limit_reached": "Boekingslimiet voor dit gebeurtenistype is bereikt",
"duration_limit_reached": "Duurlimiet voor dit gebeurtenistype is bereikt",
@@ -1691,7 +1691,7 @@
"attendee_no_longer_attending": "Een deelnemer neemt niet langer deel aan uw gebeurtenis",
"attendee_no_longer_attending_subtitle": "{{name}} heeft geannuleerd. Dit betekent dat er een plaats is vrijgekomen voor dit tijdslot",
"create_event_on": "Gebeurtenis aanmaken op",
"create_routing_form_on": "Maak routeringsformulier op",
"create_routing_form_on": "Routeringsformulier maken op",
"default_app_link_title": "Stel een standaard app-link in",
"default_app_link_description": "Door een standaard app-link in te stellen kunnen alle nieuw gemaakte gebeurtenistypes de door u ingestelde app-link gebruiken.",
"organizer_default_conferencing_app": "Standaardapp organisator",
@@ -1742,9 +1742,9 @@
"spot_popular_event_types": "Spot populaire gebeurtenistypen",
"spot_popular_event_types_description": "Bekijk welke van uw gebeurtenistypen de meeste kliks en boekingen ontvangen",
"no_responses_yet": "Nog geen reacties",
"no_routes_defined": "Geen routes bepaald",
"no_routes_defined": "Geen routes gedefinieerd",
"this_will_be_the_placeholder": "Dit wordt de plaatshouder",
"error_booking_event": "Er is een fout opgetreden bij het boeken van de gebeurtenis, vernieuw de pagina en probeer het opnieuw",
"error_booking_event": "Er is een fout opgetreden bij het boeken van de gebeurtenis. Vernieuw de pagina en probeer het opnieuw",
"timeslot_missing_title": "Geen tijdslot geselecteerd",
"timeslot_missing_description": "Selecteer een tijdslot om de gebeurtenis te boeken.",
"timeslot_missing_cta": "Tijdslot selecteren",
@@ -1806,7 +1806,7 @@
"least_booked_members": "Minst geboekte leden",
"events_created": "Gemaakte gebeurtenissen",
"events_completed": "Voltooide gebeurtenissen",
"events_cancelled": "Geannuleerde gebeurtenissen",
"events_cancelled": "Gebeurtenissen geanuleerd",
"events_rescheduled": "Verplaatste gebeurtenissen",
"from_last_period": "van afgelopen periode",
"from_to_date_period": "Van: {{startDate}} Tot: {{endDate}}",
@@ -1883,9 +1883,9 @@
"connect_google_workspace": "Google Workspace koppelen",
"google_workspace_admin_tooltip": "U moet een Google Workspace-beheerder zijn om deze functie te gebruiken",
"first_event_type_webhook_description": "Maak uw eerste webhook voor dit gebeurtenistype",
"install_app_on": "Installeer app op",
"install_app_on": "App installeren op",
"create_for": "Maken voor",
"setup_organization": "Stel een organisatie in",
"setup_organization": "Een organisatie instellen",
"organization_banner_description": "Maak een omgeving waarin uw teams gedeelde apps, werkstromen en gebeurtenistypen kunnen maken met round-robin en collectieve planning.",
"organization_banner_title": "Beheer organisaties met meerdere teams",
"set_up_your_organization": "Stel uw organisatie in",
@@ -1916,7 +1916,7 @@
"code_provided_invalid": "De opgegeven code is ongeldig, probeer het opnieuw",
"email_already_used": "Het e-mailadres wordt al gebruikt",
"organization_admin_invited_heading": "U bent uitgenodigd om lid te worden van {{orgName}}",
"organization_admin_invited_body": "Word lid van uw team bij {{orgName}} en begin u met het richten op afspraken, niet op het maken van afspraken!",
"organization_admin_invited_body": "Word lid van uw team bij {{orgName}} en begin met het richten op afspraken, niet op het maken van afspraken!",
"duplicated_slugs_warning": "De volgende teams konden niet worden gemaakt vanwege dubbele slugs: {{slugs}}",
"team_names_empty": "Teamnamen mogen niet leeg zijn",
"team_names_repeated": "Teamnamen mogen niet herhaald worden",
@@ -1937,7 +1937,7 @@
"no_organization_slug": "Er is een fout opgetreden bij het maken van teams voor deze organisatie. Ontbrekende URL-slug.",
"org_name": "Organisatienaam",
"org_url": "Organisatie-URL",
"copy_link_org": "Kopieer link naar organisatie",
"copy_link_org": "Link kopiëren naar organisatie",
"404_the_org": "De organisatie",
"404_the_team": "Het team",
"404_claim_entity_org": "Claim uw subdomein voor uw organisatie",
+86 -86
View File
@@ -12,12 +12,12 @@
"have_any_questions": "Masz pytania? Jesteśmy tutaj, aby pomóc.",
"reset_password_subject": "{{appName}}: Instrukcje resetowania hasła",
"verify_email_subject": "{{appName}}: zweryfikuj swoje konto",
"check_your_email": "Sprawdź adres e-mail",
"verify_email_page_body": "Wysłaliśmy wiadomość e-mail na adres {{email}}. Weryfikacja adresu e-mail jest bardzo ważna, ponieważ umożliwia upewnienie się, czy kalendarz i wiadomości e-mail z aplikacji {{appName}} będą działać prawidłowo.",
"verify_email_banner_body": "Potwierdź adres email, aby upewnić się, że wiadomości e-mail i powiadomienia z kalendarza będą do Ciebie docierać.",
"verify_email_email_header": "Zweryfikuj adres e-mail",
"verify_email_email_button": "Potwierdź adres e-mail",
"verify_email_email_body": "Potwierdź adres e-mail poprzez kliknięcie poniższego przycisku.",
"check_your_email": "Sprawdź swój adres e-mail",
"verify_email_page_body": "Wysłaliśmy wiadomość e-mail na adres {{email}}. Weryfikacja adresu e-mail jest ważna, ponieważ umożliwia zagwarantowanie prawidłowego działania kalendarza i dostarczania wiadomości e-mail z aplikacji {{appName}}.",
"verify_email_banner_body": "Potwierdź adres e-mail, aby upewnić się, że wiadomości e-mail i powiadomienia z kalendarza będą do Ciebie docierać.",
"verify_email_email_header": "Zweryfikuj swój adres e-mail",
"verify_email_email_button": "Zweryfikuj adres e-mail",
"verify_email_email_body": "Zweryfikuj swój adres e-mail, klikając poniższy przycisk.",
"verify_email_email_link_text": "Oto link, jeśli nie lubisz klikać przycisków:",
"email_sent": "Wysłano wiadomość e-mail",
"event_declined_subject": "Odrzucono: {{title}} w dniu {{date}}",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "Zaktualizowano - Twoje wydarzenie zostało przełożone",
"request_reschedule_subtitle": "Organizator ({{organizer}}) anulował rezerwację i prosi Cię o wybranie innego terminu.",
"request_reschedule_title_organizer": "{{attendee}} poproszono o zmianę harmonogramu",
"request_reschedule_subtitle_organizer": "Rezerwacja została przez Ciebie anulowana i uczestnik ({{attendee}}) musi wybrać z nowy termin rezerwacji u Ciebie.",
"request_reschedule_subtitle_organizer": "Rezerwacja została przez Ciebie anulowana i uczestnik ({{attendee}}) powinien wybrać z nowy termin rezerwacji u Ciebie.",
"rescheduled_event_type_subject": "Wysłano prośbę o zmianę terminu: {{eventType}} o nazwie {{name}}, z {{date}}",
"requested_to_reschedule_subject_attendee": "Działanie wymagało zmiany harmonogramu: Zarezerwuj nową godzinę na wydarzenie {{eventType}} z {{name}}",
"hi_user_name": "Cześć {{name}}",
@@ -118,7 +118,7 @@
"team_info": "Informacje o zespole",
"request_another_invitation_email": "Jeśli wolisz nie używać {{toEmail}} jako adresu e-mail {{appName}} lub masz już konto {{appName}}, poproś o inne zaproszenie na ten e-mail.",
"you_have_been_invited": "Zostałeś zaproszony do dołączenia do zespołu {{teamName}}",
"user_invited_you": "Użytkownik {{user}} zaprosił Cię do dołączenia do: {{entity}} {{team}} w aplikacji {{appName}}.",
"user_invited_you": "Użytkownik {{user}} zaprosił Cię do dołączenia do: {{entity}} {{team}} w aplikacji {{appName}}",
"hidden_team_member_title": "Jesteś ukryty w tym zespole",
"hidden_team_member_message": "Twoje miejsce nie jest opłacone, przejdź na wersję Pro lub poinformuj właściciela zespołu o tym, że może zapłacić za Twoje miejsce.",
"hidden_team_owner_message": "Potrzebujesz konta pro aby korzystać z zespołów, jesteś ukryty do czasu ulepszenia.",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego nowego planu zespołowego. Zauważyliśmy, że Twój zespół „{{teamName}}” trzeba ulepszyć.",
"upgrade_banner_action": "Ulepsz tutaj",
"team_upgraded_successfully": "Twój zespół został pomyślnie zaktualizowany!",
"org_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego planu Organization. Zauważyliśmy, że Twój zespół „{{teamName}}” z planu Organization trzeba ulepszyć.",
"org_upgraded_successfully": "Twój zespół z planu Organization został pomyślnie zaktualizowany!",
"org_upgrade_banner_description": "Dziękujemy za wypróbowanie naszego planu Organization. Zauważyliśmy, że Twój zespół „{{teamName}}” z planu Organization wymaga przejścia na wyższą wersję.",
"org_upgraded_successfully": "Twój zespół z planu Organization przeszedł na wyższą wersję!",
"use_link_to_reset_password": "Użyj poniższego linku, aby zresetować swoje hasło",
"hey_there": "Cześć,",
"forgot_your_password_calcom": "Nie pamiętasz swojego hasła? - {{appName}}",
@@ -248,7 +248,7 @@
"organization_general_description": "Zarządzaj ustawieniami języka i strefy czasowej Twojego zespołu.",
"few_sentences_about_yourself": "Kilka zdań o Tobie. To pojawi się na Twojej osobistej stronie URL.",
"nearly_there": "Prawie gotowe!",
"nearly_there_instructions": "Ostatnia wskazówka – krótka informacja na Twój temat i zdjęcie naprawdę pomogą Ci zwiększyć liczbę rezerwacji i ułatwią rezerwującym upewnienie się, z kim umawiają spotkanie.",
"nearly_there_instructions": "Ostatnia wskazówka — krótka informacja na Twój temat i zdjęcie naprawdę pomogą Ci zwiększyć liczbę rezerwacji i ułatwią rezerwującym upewnienie się, u kogo dokonują rezerwacji.",
"set_availability_instructions": "Określ zakresy czasu, kiedy jesteś generalnie dostępny/a. Możesz utworzyć ich więcej później i przypisać je do różnych kalendarzy.",
"set_availability": "Ustaw swoją dostępność",
"continue_without_calendar": "Kontynuuj bez kalendarza",
@@ -306,14 +306,14 @@
"password_has_been_reset_login": "Twoje hasło zostało zresetowane. Możesz teraz zalogować się przy użyciu nowo utworzonego hasła.",
"layout": "Układ",
"bookerlayout_default_title": "Widok domyślny",
"bookerlayout_description": "Możesz wybrać kilka układów, a osoby rezerwujące będą mogły zmieniać widoki.",
"bookerlayout_description": "Możesz wybrać wiele układów, a osoby rezerwujące mogą zmieniać widoki.",
"bookerlayout_user_settings_title": "Układ rezerwacji",
"bookerlayout_user_settings_description": "Możesz wybrać kilka układów, a osoby rezerwujące będą mogły zmieniać widoki. To ustawienie można zmieniać w poszczególnych wydarzeniach.",
"bookerlayout_user_settings_description": "Możesz wybrać wiele układów, a osoby rezerwujące mogą zmieniać widoki. To ustawienie można zastąpić w poszczególnych wydarzeniach.",
"bookerlayout_month_view": "Miesięczny",
"bookerlayout_week_view": "Tygodniowy",
"bookerlayout_column_view": "Kolumna",
"bookerlayout_error_min_one_enabled": "Trzeba włączyć co najmniej jeden układ.",
"bookerlayout_error_default_not_enabled": "Układ wybrany jako widok domyślny nie jest częścią włączonych układów.",
"bookerlayout_error_default_not_enabled": "Układ wybrany jako widok domyślny nie należy do włączonych układów.",
"bookerlayout_error_unknown_layout": "Wybrany układ nie jest prawidłowym układem.",
"bookerlayout_override_global_settings": "Możesz zarządzać tym ustawieniem w odniesieniu do wszystkich typów wydarzeń w sekcji <2>Ustawienia / Wygląd</2> lub <6>zastąpić je tylko w przypadku tego wydarzenia</6>.",
"unexpected_error_try_again": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie.",
@@ -337,12 +337,12 @@
"cancelling_event_recurring": "Wydarzenie jest jednym z wystąpień wydarzenia cyklicznego.",
"cancelling_all_recurring": "Są to wszystkie pozostałe wystąpienia wydarzenia cyklicznego.",
"error_with_status_code_occured": "Wystąpił błąd z kodem statusu {{status}}.",
"error_event_type_url_duplicate": "Typ wydarzenia o podanym adresie URL już istnieje.",
"error_event_type_unauthorized_create": "Nie możesz utworzyć tego wydarzenia.",
"error_event_type_unauthorized_update": "Nie możesz edytować tego wydarzenia.",
"error_workflow_unauthorized_create": "Nie możesz utworzyć tego przepływu pracy.",
"error_schedule_unauthorized_create": "Nie możesz utworzyć tego harmonogramu.",
"booking_already_cancelled": "Ta rezerwacja została już anulowana.",
"error_event_type_url_duplicate": "Typ wydarzenia o tym adresie URL już istnieje.",
"error_event_type_unauthorized_create": "Nie możesz utworzyć tego wydarzenia",
"error_event_type_unauthorized_update": "Nie możesz edytować tego wydarzenia",
"error_workflow_unauthorized_create": "Nie możesz utworzyć tego przepływu pracy",
"error_schedule_unauthorized_create": "Nie możesz utworzyć tego harmonogramu",
"booking_already_cancelled": "Ta rezerwacja została już anulowana",
"booking_already_accepted_rejected": "Ta rezerwacja została już zaakceptowana lub odrzucona",
"go_back_home": "Wróć do strony głównej",
"or_go_back_home": "Lub wróć do strony głównej",
@@ -352,7 +352,7 @@
"no_status_bookings_yet_description": "Nie masz {{status}} rezerwacji. {{description}}",
"event_between_users": "{{eventName}} między {{host}} a {{attendeeName}}",
"bookings": "Rezerwacje",
"booking_not_found": "Rezerwacja nie została znaleziona.",
"booking_not_found": "Nie znaleziono rezerwacji",
"bookings_description": "Zobacz nadchodzące i przeszłe wydarzenia zarezerwowane za pomocą linków tego wydarzenia.",
"upcoming_bookings": "Jak tylko ktoś zarezerwuje czas z Tobą, to pojawi się tutaj.",
"recurring_bookings": "Jak tylko ktoś zarezerwuje cykliczne spotkanie z Tobą, to pojawi się ono tutaj.",
@@ -413,7 +413,7 @@
"team_webhooks": "Webhooki zespołu",
"create_new_webhook_to_account": "Utwórz nowy webhook do swojego konta",
"new_webhook": "Nowy Webhook",
"receive_cal_meeting_data": "Możesz otrzymywać dane ze spotkania w aplikacji {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
"receive_cal_meeting_data": "Otrzymuj dane ze spotkania {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
"receive_cal_event_meeting_data": "Otrzymuj dane ze spotkania {{appName}} pod określonym adresem URL, w czasie rzeczywistym, gdy wydarzenie jest zaplanowane lub anulowane.",
"responsive_fullscreen_iframe": "Responsywny pełnoekranowy iframe",
"loading": "Wczytywanie...",
@@ -505,7 +505,7 @@
"additional_guests": "Dodaj gości",
"your_name": "Twoje imię",
"your_full_name": "Twoje imię i nazwisko",
"no_name": "Brak nazwy",
"no_name": "Bez nazwy",
"email_address": "Adres e-mail",
"enter_valid_email": "Wprowadź prawidłowy adres e-mail",
"location": "Lokalizacja",
@@ -551,11 +551,11 @@
"team_description": "Kilka zdań na temat Twojego zespołu. Będą wyświetlane na stronie adresu URL Twojego zespołu.",
"org_description": "Kilka zdań na temat Twojej organizacji. Pojawią się na stronie adresu URL Twojej organizacji.",
"members": "Członkowie",
"organization_members": "Członkowie organizacji",
"organization_members": "Członkowie planu Organization",
"member": "Członek",
"number_member_one": "{{count}} członek",
"number_member_other": "{{count}} członków",
"number_selected": "Wybrano: {{count}}",
"number_selected": "wybrano {{count}}",
"owner": "Właściciel",
"admin": "Administrator",
"administrator_user": "Użytkownik-administrator",
@@ -662,7 +662,7 @@
"event_type_updated_successfully": "{{eventTypeTitle}} typ wydarzenia został pomyślnie zaktualizowany",
"event_type_deleted_successfully": "Typ wydarzenia usunięty pomyślnie",
"hours": "Godziny",
"people": "Osoby",
"people": "Ludzie",
"your_email": "Twój e-mail",
"change_avatar": "Zmień Awatar",
"language": "Język",
@@ -774,7 +774,7 @@
"cal_provide_huddle01_meeting_url": "{{appName}} zapewni URL spotkania Huddle01 Web3.",
"cal_provide_teams_meeting_url": "{{appName}} zapewni adres URL do spotkania na MS Teams. UWAGA: MOŻE POBIERAĆ RACHUNEK PRACY LUB SCHOOLU",
"require_payment": "Wymagaj płatności",
"you_need_to_add_a_name": "Musisz dodać nazwę.",
"you_need_to_add_a_name": "Musisz dodać nazwę",
"commission_per_transaction": "prowizja za transakcję",
"event_type_updated_successfully_description": "Twój typ wydarzenia został pomyślnie zaktualizowany.",
"hide_event_type": "Ukryj typ zdarzenia",
@@ -867,23 +867,23 @@
"no_category_apps": "Brak aplikacji z kategorii {{category}}",
"all_apps": "Wszystkie aplikacje",
"no_category_apps_description_calendar": "Dodaj aplikację kalendarza, aby wykrywać konflikty i unikać podwójnych rezerwacji",
"no_category_apps_description_conferencing": "Spróbuj dodać aplikację konferencyjną, aby nawiązywać połączenia wideo z klientami.",
"no_category_apps_description_conferencing": "Spróbuj dodać aplikację konferencyjną, aby nawiązywać połączenia wideo z klientami",
"no_category_apps_description_payment": "Dodaj aplikację płatniczą, aby ułatwić transakcje z klientami.",
"no_category_apps_description_analytics": "Dodaj aplikację analityczną do stron rezerwacji",
"no_category_apps_description_automation": "Dodaj aplikację automatyzującą, która ma być używana",
"no_category_apps_description_other": "Dodaj dowolny typ aplikacji, aby uzyskać dostęp do różnych innych funkcji",
"no_category_apps_description_web3": "Dodaj aplikację web3 do stron rezerwacji",
"no_category_apps_description_messaging": "Dodaj aplikację do wysyłania wiadomości, aby skonfigurować własne powiadomienia i przypomnienia.",
"no_category_apps_description_crm": "Dodaj aplikację CRM, aby monitorować to, z kim się spotykasz.",
"no_category_apps_description_messaging": "Dodaj aplikację do wysyłania wiadomości, aby skonfigurować własne powiadomienia i przypomnienia",
"no_category_apps_description_crm": "Dodaj aplikację CRM, aby monitorować to, z kim się spotykasz",
"installed_app_calendar_description": "Ustaw kalendarze, aby wykrywać konflikty i unikać podwójnych rezerwacji.",
"installed_app_payment_description": "Skonfiguruj usługi przetwarzania płatności, których chcesz używać do pobierania opłat od klientów.",
"installed_app_analytics_description": "Skonfiguruj, które aplikacje analityczne mają być używane na stronach rezerwacji",
"installed_app_other_description": "Wszystkie zainstalowane aplikacje z innych kategorii.",
"installed_app_conferencing_description": "Skonfiguruj, z których aplikacji konferencyjnych chcesz korzystać.",
"installed_app_conferencing_description": "Skonfiguruj, z których aplikacji konferencyjnych chcesz korzystać",
"installed_app_automation_description": "Skonfiguruj, które aplikacje automatyzujące mają być używane",
"installed_app_web3_description": "Skonfiguruj aplikacje web3, które mają być używane na stronach rezerwacji",
"installed_app_messaging_description": "Skonfiguruj aplikacje, które będą używane do ustawiania własnych powiadomień i przypomnień.",
"installed_app_crm_description": "Skonfiguruj aplikacje CRM, za pomocą których chcesz monitorować to, z kim się spotykasz.",
"installed_app_messaging_description": "Skonfiguruj aplikacje, które będą używane do ustawiania niestandardowych powiadomień i przypomnień",
"installed_app_crm_description": "Skonfiguruj aplikacje CRM, za pomocą których chcesz monitorować to, z kim się spotykasz",
"analytics": "Analityka",
"empty_installed_apps_headline": "Brak zainstalowanych aplikacji",
"empty_installed_apps_description": "Aplikacje umożliwiają znaczne usprawnienie przebiegu pracy i uproszczenie planowania.",
@@ -909,7 +909,7 @@
"create_events_on": "Utwórz wydarzenia w",
"enterprise_license": "To funkcja dla przedsiębiorstw",
"enterprise_license_description": "Aby włączyć tę funkcję, uzyskaj klucz wdrożenia na konsoli {{consoleUrl}} i dodaj go do swojego pliku .env jako CALCOM_LICENSE_KEY. Jeśli Twój zespół ma już licencję, napisz na adres {{supportMail}}, aby uzyskać pomoc.",
"enterprise_license_development": "Możesz przetestować tę funkcję w trybie deweloperskim. Aby wykorzystać ją w celach produkcyjnych, poproś administratora o wprowadzenie klucza licencyjnego w poleceniu <2>/auth/setup</2>.",
"enterprise_license_development": "Możesz przetestować tę funkcję w trybie deweloperskim. Aby wykorzystać ją w celach produkcyjnych, poproś administratora o wprowadzenie klucza licencyjnego w obszarze <2>/auth/setup</2>.",
"missing_license": "Brakująca licencja",
"signup_requires": "Wymagana licencja handlowa",
"signup_requires_description": "{{companyName}} obecnie nie oferuje darmowej otwartej wersji strony rejestracji. Aby uzyskać pełny dostęp do komponentów rejestracji, musisz zdobyć licencję komercyjną. Do użytku osobistego zalecamy platformę danych Prisma lub jakikolwiek inny interfejs Postgres do tworzenia kont.",
@@ -979,7 +979,7 @@
"confirm_delete_api_key": "Unieważnij ten klucz API",
"revoke_api_key": "Unieważnij klucz API",
"api_key_copied": "Skopiowano klucz API!",
"api_key_expires_on": "Klucz API wygaśnie w dniu",
"api_key_expires_on": "Klucz interfejsu API wygaśnie w dniu",
"delete_api_key_confirm_title": "Czy chcesz trwale usunąć ten klucz API ze swojego konta?",
"copy": "Kopiuj",
"expire_date": "Data wygaśnięcia",
@@ -1003,7 +1003,7 @@
"user_impersonation_description": "Pozwala naszemu zespołowi pomocy na tymczasowe zalogowanie się jako użytkownik w celu szybkiego rozwiązania wszelkich zgłaszanych nam problemów.",
"team_impersonation_description": "Umożliwia właścicielom/administratorom zespołu tymczasowe zalogowanie się jako Ty.",
"make_team_private": "Ustaw zespół jako prywatny",
"make_team_private_description": "Gdy to ustawienie jest włączone, członkowie zespołu nie będą mogli zobaczyć innych osób z zespołu.",
"make_team_private_description": "Gdy to ustawienie jest włączone, członkowie zespołu nie będą mogli zobaczyć innych członków zespołu.",
"you_cannot_see_team_members": "Nie możesz zobaczyć wszystkich członków zespołu prywatnego.",
"allow_booker_to_select_duration": "Zezwól rezerwującemu na wybranie czasu trwania",
"impersonate_user_tip": "Wszystkie przypadki użycia tej funkcji są kontrolowane.",
@@ -1072,7 +1072,7 @@
"event_location": "Lokalizacja wydarzenia",
"reschedule_optional": "Powód przełożenia (opcjonalnie)",
"reschedule_placeholder": "Poinformuj innych o powodach przełożenia wydarzenia",
"event_cancelled": "To wydarzenie zostało anulowane.",
"event_cancelled": "To wydarzenie zostało anulowane",
"emailed_information_about_cancelled_event": "Wysłaliśmy wiadomość e-mail Tobie i innym uczestnikom, aby ich o tym poinformować.",
"this_input_will_shown_booking_this_event": "To wejście zostanie wyświetlone podczas rezerwacji tego wydarzenia",
"meeting_url_in_conformation_email": "Adres URL spotkania znajduje się w wiadomości e-mail z potwierdzeniem",
@@ -1306,8 +1306,8 @@
"connect_analytics_apps": "Połącz aplikacje analityczne",
"connect_other_apps": "Połącz inne aplikacje",
"connect_web3_apps": "Połącz aplikacje web3",
"connect_messaging_apps": "Połącz aplikacje do wysyłania wiadomości",
"connect_crm_apps": "Połącz aplikacje CRM",
"connect_messaging_apps": "Podłącz aplikacje do wysyłania wiadomości",
"connect_crm_apps": "Podłącz aplikacje CRM",
"current_step_of_total": "Krok {{currentStep}} z {{maxSteps}}",
"add_variable": "Dodaj zmienną",
"custom_phone_number": "Niestandardowy numer telefonu",
@@ -1487,14 +1487,14 @@
"your_org_disbanded_successfully": "Twoja organizacja została rozwiązana.",
"error_creating_team": "Podczas tworzenia zespołu wystąpił błąd",
"you": "Ty",
"resend_email": "Wyślij wiadomość e-mail ponownie",
"resend_email": "Wyślij ponownie wiadomość e-mail",
"member_already_invited": "Członek został już zaproszony",
"enter_email_or_username": "Wprowadź adres e-mail lub nazwę użytkownika",
"team_name_taken": "Ta nazwa jest już zajęta",
"must_enter_team_name": "Musisz wprowadzić nazwę zespołu",
"team_url_required": "Musisz wprowadzić adres URL zespołu",
"url_taken": "Ten adres URL jest już zajęty",
"problem_registering_domain": "Wystąpił problem z rejestracją subdomeny, spróbuj ponownie lub skontaktuj się z administratorem.",
"problem_registering_domain": "Wystąpił problem z zarejestrowaniem subdomeny, spróbuj ponownie lub skontaktuj się z administratorem",
"team_publish": "Opublikuj zespół",
"number_text_notifications": "Numer telefonu (powiadomienia SMS)",
"attendee_email_variable": "Adres e-mail uczestnika",
@@ -1554,7 +1554,7 @@
"no_available_apps_description": "Upewnij się, że w Twoim wdrożeniu w folderze „packages/app-store” znajdują są aplikacje.",
"no_apps": "W tym wystąpieniu usługi Cal nie ma włączonych aplikacji",
"no_apps_configured": "Nie skonfigurowano jeszcze żadnej aplikacji",
"enable_in_settings": "Możesz włączyć aplikacje w ustawieniach.",
"enable_in_settings": "Możesz włączyć aplikacje w ustawieniach",
"please_contact_admin": "Skontaktuj się z administratorem",
"apps_settings": "Ustawienia aplikacji",
"fill_this_field": "Wypełnij to pole",
@@ -1661,8 +1661,8 @@
"email_user_cta": "Wyświetl zaproszenie",
"email_no_user_invite_heading": "Zaproszono Cię do dołączenia do aplikacji {{appName}} ({{entity}})",
"email_no_user_invite_subheading": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojemu zespołowi planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
"email_user_invite_subheading": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do: {{entity}} „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi {{entity}} planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
"email_no_user_invite_steps_intro": "Przeprowadzimy Cię przez kilka krótkich etapów i wkrótce w ramach {{entity}} zaczniesz z przyjemnością korzystać z bezstresowego narzędzia planowania.",
"email_user_invite_subheading": "{{invitedBy}} zaprasza Cię do dołączenia do: {{entity}} „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi {{entity}} planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.",
"email_no_user_invite_steps_intro": "Przeprowadzimy Cię przez kilka krótkich kroków i wkrótce w ramach {{entity}} zaczniesz z przyjemnością korzystać z bezstresowego planowania.",
"email_no_user_step_one": "Wybierz nazwę użytkownika",
"email_no_user_step_two": "Połącz swoje konto kalendarza",
"email_no_user_step_three": "Ustaw swoją dostępność",
@@ -1674,7 +1674,7 @@
"no_workflows": "Brak przepływów pracy",
"change_filter": "Zmień filtr, aby zobaczyć osobiste i zespołowe przepływy pracy.",
"change_filter_common": "Zmień filtr, aby zobaczyć wyniki.",
"no_results_for_filter": "Brak wyników dla filtra",
"no_results_for_filter": "Brak wyników dla filtru",
"recommended_next_steps": "Zalecane następne kroki",
"create_a_managed_event": "Utwórz typ zarządzanego wydarzenia",
"meetings_are_better_with_the_right": "Spotkania idą lepiej, gdy uczestniczą w nich właściwi członkowie zespołu. Zaproś ich teraz.",
@@ -1685,7 +1685,7 @@
"no_longer_attending": "Nie bierzesz już udziału w tym wydarzeniu",
"attendee_no_longer_attending_subject": "Uczestnik nie bierze już udziału w wydarzeniu {{title}} odbywającym się {{date}}",
"attendee_no_longer_attending": "Uczestnik nie bierze już udziału w Twoim wydarzeniu.",
"attendee_no_longer_attending_subtitle": "Użytkownik {{name}} anulował rezerwację. To znaczy, że zwolniło się miejsce w tym terminie",
"attendee_no_longer_attending_subtitle": "Użytkownik {{name}} anulował rezerwację. To znaczy, że zwolniło się miejsce w tym przedziale czasowym",
"create_event_on": "Utwórz wydarzenie w kalendarzu",
"create_routing_form_on": "Utwórz formularz przekierowania na",
"default_app_link_title": "Ustaw domyślny link do aplikacji",
@@ -1740,14 +1740,14 @@
"no_responses_yet": "Nie ma jeszcze odpowiedzi",
"no_routes_defined": "Brak zdefiniowanych przekierowań",
"this_will_be_the_placeholder": "To będzie symbol zastępczy",
"error_booking_event": "Podczas rezerwacji wydarzenia wystąpił błąd, odśwież stronę i spróbuj ponownie.",
"error_booking_event": "Podczas rezerwacji wydarzenia wystąpił błąd, odśwież stronę i spróbuj ponownie",
"timeslot_missing_title": "Nie wybrano przedziału czasowego",
"timeslot_missing_description": "Wybierz przedział czasowy, aby zarezerwować wydarzenie.",
"timeslot_missing_cta": "Wybierz przedział czasowy",
"switch_monthly": "Przełącz na widok miesiąca",
"switch_weekly": "Przełącz na widok tygodnia",
"switch_multiday": "Przełącz na widok dnia",
"switch_columnview": "Przełącz na widok kolumny",
"switch_columnview": "Przełącz na widok kolumnowy",
"num_locations": "Lokalizacje do wyboru: {{num}}",
"select_on_next_step": "Wybierz następny krok",
"this_meeting_has_not_started_yet": "To spotkanie jeszcze się nie rozpoczęło",
@@ -1841,13 +1841,13 @@
"invite_link_copied": "Skopiowano link zaproszenia",
"invite_link_deleted": "Usunięto link zaproszenia",
"invite_link_updated": "Zapisano ustawienia linku zaproszenia",
"link_expires_after": "Linki wygasną po upływie...",
"one_day": "1 dnia",
"link_expires_after": "Linki wygasną po...",
"one_day": "1 dzień",
"seven_days": "7 dni",
"thirty_days": "30 dni",
"three_months": "3 miesięcy",
"one_year": "roku",
"team_invite_received": "Zaproszono Cię do zespołu {{teamName}}",
"three_months": "3 miesiące",
"one_year": "1 rok",
"team_invite_received": "Zaproszono Cię do dołączenia do zespołu {{teamName}}",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "Zamierzasz obciążyć uczestnika kwotą {{amount, currency}}. Czy na pewno chcesz kontynuować?",
"charge_attendee": "Obciąż uczestnika kwotą {{amount, currency}}",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "Zaproszono {{userCount}} użytkowników",
"error_collecting_card": "Błąd podczas pobierania należności z karty",
"image_size_limit_exceed": "Rozmiar przesyłanego obrazu nie powinien przekraczać limitu 5 MB",
"unauthorized_workflow_error_message": "{{errorCode}}: nie masz uprawnień do włączenia lub wyłączenia tego przepływu pracy.",
"unauthorized_workflow_error_message": "{{errorCode}}: nie masz uprawnień do włączenia lub wyłączenia tego przepływu pracy",
"inline_embed": "Osadź w stronie",
"load_inline_content": "Wczytuje typ wydarzenia bezpośrednio w treści Twojej strony internetowej.",
"floating_pop_up_button": "Pływający przycisk wyskakujący",
@@ -1876,57 +1876,57 @@
"connect_google_workspace": "Podłącz usługę Google Workspace",
"google_workspace_admin_tooltip": "Aby skorzystać z tej funkcji, musisz być administratorem usługi Workspace.",
"first_event_type_webhook_description": "Utwórz swój pierwszy element webhook dla tego typu wydarzenia",
"install_app_on": "Zainstaluj aplikację na:",
"install_app_on": "Zainstaluj aplikację na koncie",
"create_for": "Utwórz dla",
"setup_organization": "Skonfiguruj organizację",
"organization_banner_description": "Utwórz środowisko, w którym zespoły będą mogły dzielić się aplikacjami, przepływami pracy i typami wydarzeń przy użyciu algorytmu karuzelowego lub zbiorowego ustalania harmonogramu.",
"organization_banner_description": "Utwórz środowisko, w którym zespoły będą mogły tworzyć wspólne aplikacje, przepływy pracy i typy wydarzeń przy użyciu algorytmu karuzelowego lub zbiorowego ustalania harmonogramu.",
"organization_banner_title": "Zarządzaj organizacjami z wieloma zespołami",
"set_up_your_organization": "Skonfiguruj organizację",
"organizations_description": "Organizacje to współdzielone środowiska, w których zespoły mogą tworzyć wspólne typy wydarzeń, aplikacje, przepływy pracy i nie tylko.",
"must_enter_organization_name": "Nazwa organizacji jest wymagana.",
"must_enter_organization_admin_email": "Adres e-mail organizacji jest wymagany.",
"admin_email": "Adres e-mail organizacji",
"set_up_your_organization": "Skonfiguruj swoją organizację",
"organizations_description": "Organizacje to współdzielone środowiska, w których zespoły mogą tworzyć wspólne typy wydarzeń, aplikacje, przepływy pracy itd.",
"must_enter_organization_name": "Należy wprowadzić nazwę organizacji",
"must_enter_organization_admin_email": "Należy wprowadzić adres e-mail swojej organizacji",
"admin_email": "Twój adres e-mail w organizacji",
"admin_username": "Nazwa użytkownika administratora",
"organization_name": "Nazwa organizacji",
"organization_url": "Adres URL organizacji",
"organization_verify_header": "Zweryfikuj adres e-mail organizacji",
"organization_verify_email_body": "Użyj poniższego kodu, aby zweryfikować adres e-mail i kontynuować konfigurację organizacji.",
"organization_verify_header": "Zweryfikuj adres e-mail swojej organizacji",
"organization_verify_email_body": "Użyj poniższego kodu, aby zweryfikować adres e-mail i kontynuować konfigurację swojej organizacji.",
"additional_url_parameters": "Dodatkowe parametry adresu URL",
"about_your_organization": "Informacje o Twojej organizacji",
"about_your_organization_description": "Organizacje to współdzielone środowiska, w których możesz utworzyć wiele zespołów ze wspólnymi członkami, typami wydarzeń, aplikacjami, przepływami pracy i nie tylko.",
"about_your_organization_description": "Organizacje to współdzielone środowiska, w których możesz utworzyć wiele zespołów ze wspólnymi członkami, typami wydarzeń, aplikacjami, przepływami pracy itd.",
"create_your_teams": "Utwórz zespoły",
"create_your_teams_description": "Zacznij wspólne planowanie poprzez dodanie członków zespołu do Twojej organizacji",
"invite_organization_admins": "Zaproś administratorów organizacji",
"invite_organization_admins": "Zaproś administratorów Twojej organizacji",
"invite_organization_admins_description": "Administratorzy będą mieli dostęp do wszystkich zespołów w Twojej organizacji. Administratorów i członków zespołu możesz dodać później.",
"set_a_password": "Ustaw hasło",
"set_a_password_description": "Spowoduje to utworzenie nowego konta użytkownika z adresem e-mail Twojej organizacji i wybranym hasłem.",
"organization_logo": "Logo organizacji",
"organization_about_description": "Kilka zdań na temat Twojej organizacji. Pojawią się na publicznej stronie profilowej Twojej organizacji.",
"set_a_password_description": "Spowoduje to utworzenie nowego konta użytkownika z adresem e-mail w Twojej organizacji i wybranym hasłem.",
"organization_logo": "Logotyp organizacji",
"organization_about_description": "Kilka zdań na temat Twojej organizacji. Będą wyświetlane na publicznej stronie profilowej Twojej organizacji.",
"ill_do_this_later": "Zrobię to później",
"verify_your_email": "Potwierdź adres e-mail",
"verify_your_email": "Zweryfikuj swój adres e-mail",
"enter_digit_code": "Wprowadź 6-cyfrowy kod, który wysłaliśmy na adres {{email}}",
"verify_email_organization": "Potwierdź adres e-mail, aby utworzyć organizację",
"code_provided_invalid": "Podany kod jest nieprawidłowy, spróbuj ponownie.",
"email_already_used": "Adres e-mail jest już używany.",
"organization_admin_invited_heading": "Zaproszono Cię do organizacji {{orgName}}",
"organization_admin_invited_body": "Dołącz do Twojego zespołu w organizacji {{orgName}} i zacznij skupiać się na spotkaniu, a nie jego umawianiu!",
"duplicated_slugs_warning": "Następujące zespoły nie mogły zostać utworzone z powodu zduplikowanych slugów: {{slugs}}",
"team_names_empty": "Nazwy zespołów nie mogą być puste.",
"team_names_repeated": "Nazwy zespołów nie mogą się powtarzać.",
"user_belongs_organization": "Użytkownik należy do organizacji.",
"org_no_teams_yet": "W tej organizacji nie ma jeszcze żadnych zespołów.",
"verify_email_organization": "Zweryfikuj swój adres e-mail, aby utworzyć organizację",
"code_provided_invalid": "Podany kod jest nieprawidłowy, spróbuj ponownie",
"email_already_used": "Adres e-mail jest już używany",
"organization_admin_invited_heading": "Zaproszono Cię do dołączenia do organizacji {{orgName}}",
"organization_admin_invited_body": "Dołącz do Twojego zespołu w organizacji {{orgName}} i zacznij skupiać się na spotkaniu, zamiast na tworzeniu spotkań!",
"duplicated_slugs_warning": "Następujących zespołów nie można było utworzyć z powodu zduplikowanych slugów: {{slugs}}",
"team_names_empty": "Nazwy zespołów nie mogą być puste",
"team_names_repeated": "Nazwy zespołów nie mogą się powtarzać",
"user_belongs_organization": "Użytkownik należy do organizacji",
"org_no_teams_yet": "W tej organizacji nie ma jeszcze żadnych zespołów",
"org_no_teams_yet_description": "Jeśli jesteś administratorem, pamiętaj o utworzeniu zespołów, które będą wyświetlane tutaj.",
"set_up": "Skonfiguruj",
"set_up_your_profile": "Skonfiguruj profil",
"set_up_your_profile_description": "Określ, jakie informacje o Twojej roli w organizacji {{orgName}} zobaczą osoby, które klikną Twój link publiczny.",
"set_up_your_profile_description": "Określ informacje o Twojej roli w organizacji {{orgName}} wyświetlane osobom, które klikną Twój link publiczny.",
"my_profile": "Mój profil",
"my_settings": "Moje ustawienia",
"crm": "CRM",
"messaging": "Wiadomości",
"messaging": "Obsługa wiadomości",
"sender_id_info": "Nazwa lub numer wyświetlany jako nadawca wiadomości SMS (niektóre kraje nie zezwalają na alfanumeryczne identyfikatory nadawcy)",
"org_admins_can_create_new_teams": "Tylko administrator Twojej organizacji może tworzyć nowe zespoły.",
"google_new_spam_policy": "Nowa polityka firmy Google dotycząca spamu może uniemożliwić Ci otrzymywanie powiadomień e-mail i kalendarza na temat tej rezerwacji.",
"resolve": "Rozwiąż",
"org_admins_can_create_new_teams": "Tylko administrator Twojej organizacji może tworzyć nowe zespoły",
"google_new_spam_policy": "Nowa polityka firmy Google dotycząca spamu może uniemożliwić Ci otrzymywanie powiadomień na temat tej rezerwacji w wiadomościach e-mail i z kalendarza.",
"resolve": "Rozwiąż problem",
"no_organization_slug": "Podczas tworzenia zespołów tej organizacji wystąpił błąd. Brakujący slug adresu URL.",
"org_name": "Nazwa organizacji",
"org_url": "Adres URL organizacji",
@@ -1934,11 +1934,11 @@
"404_the_org": "Organizacja",
"404_the_team": "Zespół",
"404_claim_entity_org": "Zajmij subdomenę dla Twojej organizacji",
"404_claim_entity_team": "Zajmij ten zespół i zacznij wspólnie zarządzać harmonogramami",
"404_claim_entity_team": "Dołącz do tego zespołu i zacznij wspólnie zarządzać harmonogramami",
"insights_all_org_filter": "Wszystkie",
"insights_team_filter": "Zespół: {{teamName}}",
"insights_user_filter": "Użytkownik: {{userName}}",
"insights_subtitle": "Wyświetl wskaźniki rezerwacji z różnych wydarzeń",
"insights_subtitle": "Wyświetl wskaźniki Insights rezerwacji z różnych wydarzeń",
"custom_plan": "Plan niestandardowy",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodaj nowe ciągi powyżej ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -350,7 +350,7 @@
"cancelling_event_recurring": "O evento é uma instância de um evento recorrente.",
"cancelling_all_recurring": "Estas são todas as instâncias restantes no evento recorrente.",
"error_with_status_code_occured": "Ocorreu um erro com o status code {{status}}.",
"error_event_type_url_duplicate": "Já existe um tipo de evento para esta URL.",
"error_event_type_url_duplicate": "Já existe um tipo de evento para este URL.",
"error_event_type_unauthorized_create": "Não é possível criar este evento",
"error_event_type_unauthorized_update": "Não é possível editar este evento",
"error_workflow_unauthorized_create": "Não é possível criar este fluxo de trabalho",
@@ -1921,7 +1921,7 @@
"set_a_password": "Definir senha",
"set_a_password_description": "Será criada uma nova conta de usuário com o e-mail da sua organização e esta senha.",
"organization_logo": "Logotipo da organização",
"organization_about_description": "Uma breve descrição sobre sua organização. Isso aparecerá na página do perfli público da sua organização.",
"organization_about_description": "Uma breve descrição sobre sua organização. Isso aparecerá na página do perfil público da sua organização.",
"ill_do_this_later": "Farei isso mais tarde",
"verify_your_email": "Verifique seu e-mail",
"enter_digit_code": "Insira o código de seis dígitos enviado para {{email}}",
@@ -1947,7 +1947,7 @@
"org_admins_can_create_new_teams": "Apenas o administrador da sua organização pode criar equipes novas",
"google_new_spam_policy": "A nova política de spams do Google pode impedir o recebimento de notificações do calendário e e-mail sobre esta reserva.",
"resolve": "Resolver",
"no_organization_slug": "Houve um erro ao criar equipes para esta organizazção. Falta o campo de dados dinâmico da URL.",
"no_organization_slug": "Houve um erro ao criar equipes para esta organizazção. Falta o campo de dados dinâmico do URL.",
"org_name": "Nome da organização",
"org_url": "URL da organização",
"copy_link_org": "Copiar link para a organização",
+47 -47
View File
@@ -11,7 +11,7 @@
"calcom_explained_new_user": "Finalizați configurarea contului {{appName}}! Mai aveți doar câțiva pași până la soluționarea tuturor problemelor legate de program.",
"have_any_questions": "Aveți întrebări? Suntem aici pentru a vă ajuta.",
"reset_password_subject": "{{appName}}: instrucțiuni de resetare a parolei",
"verify_email_subject": "{{appName}}: Verificați-vă contul",
"verify_email_subject": "{{appName}}: verificați-vă contul",
"check_your_email": "Verificați-vă e-mailul",
"verify_email_page_body": "Am trimis un e-mail către {{email}}. Este important să vă verificați adresa de e-mail pentru a garanta cea mai bună furnizare a e-mailurilor și datelor de calendar de la {{appName}}.",
"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",
@@ -21,7 +21,7 @@
"verify_email_email_link_text": "Iată linkul, în caz că nu vă place să apăsați butoane:",
"email_sent": "E-mail trimis cu succes",
"event_declined_subject": "Refuzat: {{title}} în {{date}}",
"event_cancelled_subject": "Anulat: {{title}} la {{date}}",
"event_cancelled_subject": "Anulat: {{title}} pe {{date}}",
"event_request_declined": "Solicitarea pentru eveniment a fost refuzată",
"event_request_declined_recurring": "Solicitarea dvs. pentru evenimentul recurent a fost refuzată",
"event_request_cancelled": "Evenimentul programat a fost anulat",
@@ -118,7 +118,7 @@
"team_info": "Informații echipă",
"request_another_invitation_email": "Dacă preferați să nu utilizați {{toEmail}} ca e-mail {{appName}} sau aveți deja un cont {{appName}}, vă rugăm să solicitați o altă invitație la acel e-mail.",
"you_have_been_invited": "Ați fost invitat să vă alăturați echipei {{teamName}}",
"user_invited_you": "{{user}} v-a invitat să vă alăturați la {{entity}} {{team}} de pe {{appName}}",
"user_invited_you": "{{user}} v-a invitat să faceți parte din {{entity}} {{team}} de pe {{appName}}",
"hidden_team_member_title": "Sunteți ascuns în această echipă",
"hidden_team_member_message": "Licența dvs. nu este plătită. Fie faceți upgrade la Pro, fie anunțați proprietarul echipei că vă poate plăti licența.",
"hidden_team_owner_message": "Aveți nevoie de un cont Pro pentru a utiliza echipe. Sunteți ascuns până când faceți upgrade.",
@@ -197,7 +197,7 @@
"blog": "Blog",
"blog_description": "Citește cele mai recente noutăți și articole",
"join_our_community": "Alătură-te comunității noastre",
"join_our_discord": "Alăturați-vă severului nostru de Discord",
"join_our_discord": "Intrați pe serverul nostru Discord",
"404_claim_entity_user": "Revendică-ți numele de utilizator și programul evenimentelor",
"popular_pages": "Pagini populare",
"register_now": "Înregistrează-te acum",
@@ -248,7 +248,7 @@
"organization_general_description": "Gestionați setările echipei pentru limbă și fus orar",
"few_sentences_about_yourself": "Câteva propoziții despre tine. Aceasta va apărea pe pagina de url personală.",
"nearly_there": "Încă puțin!",
"nearly_there_instructions": "Î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 oamenilor cu cine fac rezervarea.",
"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",
"continue_without_calendar": "Continuă fără calendar",
@@ -306,16 +306,16 @@
"password_has_been_reset_login": "Parola a fost resetată. Acum vă puteţi conecta cu parola nou creată.",
"layout": "Aspect",
"bookerlayout_default_title": "Vizualizare implicită",
"bookerlayout_description": "Puteți selecta mai multe și persoanele care fac rezervări cu dvs. pot comuta vizualizările.",
"bookerlayout_description": "Puteți selecta mai multe vizualizări, iar persoanele care fac rezervări cu dvs. le pot alterna.",
"bookerlayout_user_settings_title": "Aspect rezervare",
"bookerlayout_user_settings_description": "Puteți selecta mai multe și persoanele care fac rezervări cu dvs. pot comuta vizualizările. Această setare poate fi suprascrisă în funcție de eveniment.",
"bookerlayout_user_settings_description": "Puteți selecta mai multe vizualizări, iar persoanele care fac rezervări cu dvs. le pot alterna. Această setare poate fi suprascrisă în funcție de eveniment.",
"bookerlayout_month_view": "Lună",
"bookerlayout_week_view": "Săptămânal",
"bookerlayout_column_view": "Coloană",
"bookerlayout_error_min_one_enabled": "Trebuie activat cel puțin un aspect.",
"bookerlayout_error_default_not_enabled": "Aspectul selectat ca vizualizare implicită nu face parte din aspectele activate.",
"bookerlayout_error_default_not_enabled": "Aspectul selectat ca vizualizare implicită nu se numără printre aspectele activate.",
"bookerlayout_error_unknown_layout": "Aspectul selectat nu este un aspect valid.",
"bookerlayout_override_global_settings": "Puteți gestiona acest lucru pentru toate tipurile de evenimente din <2>setări/aspect</2> sau <6>puteți suprascrie doar pentru acest eveniment</6>.",
"bookerlayout_override_global_settings": "Puteți gestiona acest parametru pentru toate tipurile de evenimente din <2>setări/aspect</2> sau <6>puteți suprascrie doar pentru acest eveniment</6>.",
"unexpected_error_try_again": "A apărut o eroare neașteptată. Încercați din nou.",
"sunday_time_error": "Oră nevalidă duminică",
"monday_time_error": "Oră nevalidă luni",
@@ -339,7 +339,7 @@
"error_with_status_code_occured": "A apărut o eroare la codul de stare {{status}}.",
"error_event_type_url_duplicate": "Există deja un tip de eveniment cu această adresă URL.",
"error_event_type_unauthorized_create": "Nu puteți crea acest eveniment",
"error_event_type_unauthorized_update": "Nu puteți edita acest eveniment",
"error_event_type_unauthorized_update": "Nu puteți modifica acest eveniment",
"error_workflow_unauthorized_create": "Nu puteți crea acest flux de lucru",
"error_schedule_unauthorized_create": "Nu puteți crea acest program",
"booking_already_cancelled": "Această rezervare a fost deja anulată",
@@ -555,7 +555,7 @@
"member": "Membru",
"number_member_one": "{{count}} membru",
"number_member_other": "{{count}} (de) membri",
"number_selected": "{{count}} selectat(ți)",
"number_selected": "Selectat: {{count}}",
"owner": "Proprietar",
"admin": "Admin",
"administrator_user": "Utilizator administrator",
@@ -695,7 +695,7 @@
"create_new_team": "Creează o echipă nouă",
"open_invitations": "Deschide invitațiile",
"new_team": "Echipă nouă",
"create_first_team_and_invite_others": "Creați-vă prima echipă și invitați alți utilizatori să lucrați împreună.",
"create_first_team_and_invite_others": "Creați-vă prima echipă și invitați alți utilizatori pentru a lucra împreună.",
"create_team_to_get_started": "Creează o echipă pentru a începe",
"teams": "Echipe",
"team": "Echipă",
@@ -879,11 +879,11 @@
"installed_app_payment_description": "Configurați serviciile de procesare a plăților care vor fi utilizate la taxarea clienților.",
"installed_app_analytics_description": "Configurați care aplicații de analiză vor fi utilizate pentru paginile dvs. de rezervări",
"installed_app_other_description": "Toate aplicațiile instalate din alte categorii.",
"installed_app_conferencing_description": "Configurați care aplicații de conferințe vor fi utilizate",
"installed_app_conferencing_description": "Configurați ce aplicații de conferințe vor fi utilizate",
"installed_app_automation_description": "Configurați care aplicații de automatizare vor fi utilizate",
"installed_app_web3_description": "Configurați care aplicații Web3 vor fi utilizate pentru paginile dvs. de rezervări",
"installed_app_messaging_description": "Configurați care aplicații de mesagerie vor fi utilizate pentru configurarea de notificări și mementouri personalizate",
"installed_app_crm_description": "Configurați care aplicații CRM vor fi utilizate pentru a ține evidența persoanelor cu care v-ați întâlnit",
"installed_app_messaging_description": "Definiți ce aplicații de mesagerie vor fi utilizate pentru configurarea de notificări și mementouri personalizate",
"installed_app_crm_description": "Configurați ce aplicații CRM vor fi utilizate pentru a ține evidența persoanelor cu care v-ați întâlnit",
"analytics": "Analiză",
"empty_installed_apps_headline": "Nicio aplicație instalată",
"empty_installed_apps_description": "Aplicațiile vă permit să vă îmbunătățiți în mod semnificativ fluxul de lucru și activitățile legate de programări.",
@@ -909,7 +909,7 @@
"create_events_on": "Creați evenimente în",
"enterprise_license": "Aceasta este o caracteristică de întreprindere",
"enterprise_license_description": "Pentru a activa această caracteristică, obține o cheie de implementare la consola {{consoleUrl}} și adaug-o la .env ca CALCOM_LICENSE_KEY. Dacă echipa ta are deja o licență, te rugăm să contactezi {{supportMail}} pentru ajutor.",
"enterprise_license_development": "Puteți testa această caracteristică în modul de dezvoltare. Pentru utilizarea în mediul de producție, solicitați unui administrator să acceseze <2>/auth/setup</2> ca să introducă o cheie de licență.",
"enterprise_license_development": "Puteți testa această caracteristică în modul de dezvoltare. Pentru utilizarea în mediul de producție, solicitați unui administrator să acceseze <2>/auth/setup</2> pentru a introduce o cheie de licență.",
"missing_license": "Licență lipsă",
"signup_requires": "Licență comercială necesară",
"signup_requires_description": "În prezent, {{companyName}} nu oferă o versiune open-source gratuită a paginii de înscriere. Pentru a primi acces deplin la componentele de înscriere, trebuie să obțineți o licență comercială. Pentru uz personal, recomandăm Prisma Data Platform sau orice altă interfață Postgres pentru a crea conturi.",
@@ -979,7 +979,7 @@
"confirm_delete_api_key": "Revocați această cheie API",
"revoke_api_key": "Revocați cheia API",
"api_key_copied": "Cheie API copiată!",
"api_key_expires_on": "Cheia API va expira la",
"api_key_expires_on": "Cheia API va expira pe",
"delete_api_key_confirm_title": "Eliminați definitiv această cheie API din contul dvs.?",
"copy": "Copiere",
"expire_date": "Data expirării",
@@ -1079,7 +1079,7 @@
"url_start_with_https": "Adresa URL trebuie să înceapă cu http:// or https://",
"number_provided": "Numărul de telefon va fi furnizat",
"before_event_trigger": "înainte de începerea evenimentului",
"event_cancelled_trigger": "când se anulează evenimentul",
"event_cancelled_trigger": "la anularea evenimentului",
"new_event_trigger": "când este rezervat noul eveniment",
"email_host_action": "trimiteți e-mail la gazdă",
"email_attendee_action": "trimiteți e-mail participanților",
@@ -1292,7 +1292,7 @@
"conferencing_description": "Gestionează aplicațiile de conferințe video pentru întâlnirile tale",
"add_conferencing_app": "Adăugare aplicație pentru conferințe",
"password_description": "Gestionați setările pentru parolele contului dvs.",
"set_up_two_factor_authentication": "Configurați autentificarea în doi factori",
"set_up_two_factor_authentication": "Configurați autentificarea cu doi factori",
"we_just_need_basic_info": "Avem nevoie doar de câteva informații de bază pentru configurarea profilului dvs.",
"skip": "Omiteți",
"do_this_later": "Reveniți mai târziu",
@@ -1336,7 +1336,7 @@
"event_one": "eveniment",
"event_other": "evenimente",
"profile_team_description": "Gestionați setările pentru profilul echipei dvs.",
"profile_org_description": "Gestionați setările profilului organizației dvs.",
"profile_org_description": "Gestionați setările pentru profilul organizației dvs.",
"members_team_description": "Utilizatori care sunt în grup",
"organization_description": "Gestionați administratorii și membrii din organizația dvs.",
"team_url": "URL-ul echipei",
@@ -1553,7 +1553,7 @@
"no_available_apps": "Nu există nicio aplicație disponibilă",
"no_available_apps_description": "Asigură-te că există aplicații în implementare sub „packages/app-store”",
"no_apps": "Nu există nicio aplicație activată în această instanță de Cal",
"no_apps_configured": "Nu a fost configurată nicio aplicație încă",
"no_apps_configured": "Încă nu a fost configurată nicio aplicație",
"enable_in_settings": "Puteți activa aplicații din setări",
"please_contact_admin": "Contactați administratorul",
"apps_settings": "Setări aplicații",
@@ -1659,9 +1659,9 @@
"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": "Ați fost invitat să vă alăturați la o {{entity}} {{appName}}",
"email_no_user_invite_heading": "Ați fost invitat să faceți parte dintr-o {{entity}} {{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": "{{invitedBy}} v-a invitat să faceți parte din {{entity}} sa „{{teamName}}” de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, prin care dvs. și {{entity}} dvs. puteți să programați ședințe fără a face ping-pong prin e-mail.",
"email_user_invite_subheading": "{{invitedBy}} v-a invitat să faceți parte din {{entity}} „{{teamName}}” de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, prin care dvs. și {{entity}} 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",
@@ -1837,7 +1837,7 @@
"complete_your_booking_subject": "Finalizați rezervarea: {{title}}, pe {{date}}",
"confirm_your_details": "Confirmați-vă detaliile",
"copy_invite_link": "Copiere link de invitație",
"edit_invite_link": "Editare setări link",
"edit_invite_link": "Modificare setări link",
"invite_link_copied": "Link de invitație copiat",
"invite_link_deleted": "Link de invitație șters",
"invite_link_updated": "Setări link de invitație salvate",
@@ -1876,69 +1876,69 @@
"connect_google_workspace": "Conectare la Google Workspace",
"google_workspace_admin_tooltip": "Trebuie să fiți administrator Workspace pentru a putea utiliza această caracteristică",
"first_event_type_webhook_description": "Creați primul dvs. webhook pentru acest tip de eveniment",
"install_app_on": "Instalați aplicația pe",
"install_app_on": "Instalați aplicația în",
"create_for": "Creare pentru",
"setup_organization": "Configurare organizație",
"organization_banner_description": "Creați un mediu în care echipele dvs. să poată crea aplicații, fluxuri de lucru și tipuri de evenimente partajate, folosind programarea colectivă sau cu alocare prin rotație.",
"setup_organization": "Configurarați o organizație",
"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",
"organizations_description": "Organizațiile sunt medii partajate în care echipele pot crea tipuri de evenimente, aplicații, fluxuri de lucru partajate și multe altele.",
"must_enter_organization_name": "Trebuie să introduceți un nume de organizație",
"organizations_description": "Organizațiile sunt medii partajate în care echipele pot crea tipuri de evenimente, aplicații, fluxuri de lucru comune și multe altele.",
"must_enter_organization_name": "Trebuie să introduceți denumirea unei organizații",
"must_enter_organization_admin_email": "Trebuie să introduceți adresa de e-mail a organizației",
"admin_email": "Adresa de e-mail a organizației dvs.",
"admin_username": "Numele de utilizator al administratorului",
"organization_name": "Nume organizație",
"organization_name": "Denumire organizație",
"organization_url": "Adresă URL organizație",
"organization_verify_header": "Verificați e-mailul organizației",
"organization_verify_email_body": "Utilizați codul de mai jos ca să verificați adresa de e-mail pentru a continua configurarea organizației.",
"organization_verify_email_body": "Utilizați codul de mai jos pentru a verifica adresa de e-mail și a continua configurarea organizației.",
"additional_url_parameters": "Parametri suplimentari URL",
"about_your_organization": "Despre organizația dvs.",
"about_your_organization_description": "Organizațiile sunt medii partajate în care puteți crea mai multe echipe cu membri, tipuri de evenimente, aplicații, fluxuri de lucru partajate și multe altele.",
"about_your_organization_description": "Organizațiile sunt medii partajate în care puteți crea mai multe echipe cu membri, tipuri de evenimente, aplicații, fluxuri de lucru comune și multe altele.",
"create_your_teams": "Creați echipe",
"create_your_teams_description": "Începeți să programați împreună adăugând membrii echipei la organizația dvs.",
"create_your_teams_description": "Începeți să programați împreună; adăugați membrii echipei în organizația dvs.",
"invite_organization_admins": "Invitați administratorii organizației dvs.",
"invite_organization_admins_description": "Acești administratori vor avea acces la toate echipele din organizația dvs. Puteți adăuga ulterior administratori și membri de echipă.",
"set_a_password": "Setați o parolă",
"set_a_password_description": "Aceasta va crea un nou cont de utilizator cu e-mailul organizația dvs. și această parolă.",
"set_a_password_description": "Se va crea astfel un nou cont de utilizator cu e-mailul organizației dvs. și această parolă.",
"organization_logo": "Siglă organizație",
"organization_about_description": "Câteva propoziții despre organizația dvs. Acestea vor fi afișate pe pagina cu profilul public al organizației.",
"ill_do_this_later": "Voi face acest lucru mai târziu",
"verify_your_email": "Verificați-vă e-mailul",
"enter_digit_code": "Introduceți codul de 6 cifre pe care l-am trimis la {{email}}",
"enter_digit_code": "Introduceți codul din 6 cifre pe care l-am trimis la adresa {{email}}",
"verify_email_organization": "Verificați-vă e-mailul pentru a crea o organizație",
"code_provided_invalid": "Codul furnizat nu este valid, încercați din nou",
"code_provided_invalid": "Codul transmis nu este valid; încercați din nou",
"email_already_used": "E-mailul este utilizat deja",
"organization_admin_invited_heading": "Ați fost invitat să faceți parte din {{orgName}}",
"organization_admin_invited_body": "Alăturați-vă echipei din de la {{orgName}} și începeți să vă concentrați pe întâlniri, nu pe organizarea acestora!",
"duplicated_slugs_warning": "Următoarele echipe nu au putut fi create din cauza unor sluguri duplicat: {{slugs}}",
"team_names_empty": "Numele de echipă nu pot fi necompletate",
"team_names_repeated": "Numele de echipă nu pot fi repetate",
"organization_admin_invited_body": "Faceți parte din echipa {{orgName}} și începeți să vă concentrați pe întâlniri, nu pe organizarea acestora!",
"duplicated_slugs_warning": "Următoarele echipe nu au putut fi create ca urmare a unor sluguri duplicat: {{slugs}}",
"team_names_empty": "Denumirile de echipă nu pot rămâne necompletate",
"team_names_repeated": "Denumirile de echipă trebuie să fie unice",
"user_belongs_organization": "Utilizatorul aparține unei organizații",
"org_no_teams_yet": "Această organizație nu are încă echipe",
"org_no_teams_yet_description": "Dacă sunteți un administrator, creați echipe pentru a fi afișate aici.",
"org_no_teams_yet_description": "Dacă sunteți administrator, creați echipe pentru a fi afișate aici.",
"set_up": "Configurare",
"set_up_your_profile": "Configurați-vă profilul",
"set_up_your_profile_description": "Spuneți-le oamenilor care este rolul dvs. în cadrul {{orgName}} și când interacționează cu linkul dvs. public.",
"set_up_your_profile_description": "Spuneți-le celorlalți care este rolul dvs. în cadrul {{orgName}} și atunci când interacționează cu linkul dvs. public.",
"my_profile": "Profilul meu",
"my_settings": "Setările mele",
"crm": "CRM",
"messaging": "Mesagerie",
"sender_id_info": "Numele sau numărul afișat ca expeditor al unui SMS (unele țări nu permit ID-uri alfanumerice ale expeditorului)",
"sender_id_info": "Numele sau numărul afișat ca expeditor al unui SMS (unele țări nu permit ID-uri alfanumerice ale expeditorilor)",
"org_admins_can_create_new_teams": "Numai administratorul organizației dvs. poate crea echipe noi",
"google_new_spam_policy": "Noua politică de spam a Google vă poate împiedica să primiți orice notificare prin e-mail sau calendar cu privire la această rezervare.",
"google_new_spam_policy": "Noua politică Google privind spamul vă poate împiedica să primiți orice notificare prin e-mail sau calendar cu privire la această rezervare.",
"resolve": "Rezolvați",
"no_organization_slug": "A survenit o eroare la crearea echipelor pentru această organizație. Slug URL lipsă.",
"org_name": "Nume organizație",
"org_name": "Denumire organizație",
"org_url": "Adresă URL organizație",
"copy_link_org": "Copiați linkul către organizație",
"404_the_org": "Organizația",
"404_the_team": "Echipa",
"404_claim_entity_org": "Revendicați subdomeniul pentru organizația dvs.",
"404_claim_entity_team": "Revendicați această echipă și începeți să gestionați programele în mod colectiv",
"404_claim_entity_team": "Solicitați să faceți parte din această echipă și începeți să gestionați programe în mod colectiv",
"insights_all_org_filter": "Toate aplicațiile",
"insights_team_filter": "Echipă: {{teamName}}",
"insights_user_filter": "Utilizator: {{userName}}",
"insights_subtitle": "Vizualizați perspective cu privire la rezervări pentru toate evenimentele dvs.",
"insights_subtitle": "Vizualizați date Insights cu privire la rezervări pentru toate evenimentele dvs.",
"custom_plan": "Plan personalizat",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adăugați stringurile noi deasupra acestui rând ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+68 -68
View File
@@ -11,14 +11,14 @@
"calcom_explained_new_user": "Завершите настройку учетной записи {{appName}}. Вы в считанных шагах от решения всех своих проблем с планированием.",
"have_any_questions": "Есть вопросы? Мы здесь, чтобы помочь.",
"reset_password_subject": "{{appName}}: Инструкция по сбросу пароля",
"verify_email_subject": "{{appName}}: Подтвердите учетную запись",
"check_your_email": "Проверьте почту",
"verify_email_page_body": "Мы отправили письмо на адрес {{email}}. Обязательно подтвердите адрес электронной почты, чтобы электронная почта и календарь {{appName}} работали с максимальной эффективностью.",
"verify_email_banner_body": "Подтвердите адрес электронной почты, чтобы электронная почта и календарь работали с максимальной эффективностью",
"verify_email_email_header": "Подтвердите ваш адрес электронной почты",
"verify_email_email_button": "Подтвердите адрес электронной почты",
"verify_email_subject": "{{appName}}: подтвердите учетную запись",
"check_your_email": "Проверьте электронную почту",
"verify_email_page_body": "Мы отправили письмо на адрес {{email}}. Обязательно подтвердите адрес электронной почты, чтобы обеспечить гарантированную доставку уведомлений от {{appName}} по электронной почте и в календаре.",
"verify_email_banner_body": "Подтвердите адрес электронной почты для обеспечения гарантированной доставки уведомлений по электронной почте и в календаре",
"verify_email_email_header": "Подтвердите свой адрес электронной почты",
"verify_email_email_button": "Подтвердить эл. почту",
"verify_email_email_body": "Подтвердите адрес электронной почты, нажав кнопку ниже.",
"verify_email_email_link_text": "Вот ссылка на случай, если вы не любите нажимать на кнопки:",
"verify_email_email_link_text": "Вы также можете вручную перейти по следующей ссылке:",
"email_sent": "Письмо успешно отправлено",
"event_declined_subject": "Отклонено: {{title}} {{date}}",
"event_cancelled_subject": "Отмена: {{title}} {{date}}",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "Ваше событие было перенесено.",
"request_reschedule_subtitle": "{{organizer}} отменил(-а) бронирование и попросил(-а) вас выбрать другое время.",
"request_reschedule_title_organizer": "Вы запросили у {{attendee}} изменение расписания",
"request_reschedule_subtitle_organizer": "Вы отменили бронирование; теперь {{attendee}} и вам нужно выбрать новое время.",
"request_reschedule_subtitle_organizer": "Вы отменили бронирование; теперь вы и {{attendee}} должны выбрать новое время.",
"rescheduled_event_type_subject": "Запрос на перенос отправлен: {{eventType}} с {{name}}, {{date}}",
"requested_to_reschedule_subject_attendee": "Требуется перенести бронирование: забронируйте новое время для {{eventType}} с {{name}}",
"hi_user_name": "Привет {{name}}",
@@ -129,7 +129,7 @@
"team_upgrade_banner_description": "Спасибо, что попробовали наш новый тариф Team. Для работы с командой «{{teamName}}» необходимо изменить тариф.",
"upgrade_banner_action": "Изменить",
"team_upgraded_successfully": "Вы успешно перешли на новый тариф для своей команды!",
"org_upgrade_banner_description": "Спасибо, что попробовали наш новый тариф Organization. Для работы «{{teamName}}» нужно перейти на тариф Organization.",
"org_upgrade_banner_description": "Спасибо, что попробовали наш новый тариф Organization. Для продолжения работы с командой «{{teamName}}» необходимо перейти на тариф Organization.",
"org_upgraded_successfully": "Вы успешно перешли на тариф Organization!",
"use_link_to_reset_password": "Используйте ссылку ниже, чтобы сбросить пароль",
"hey_there": "Привет,",
@@ -197,7 +197,7 @@
"blog": "Блог",
"blog_description": "Прочитайте наши последние новости и статьи",
"join_our_community": "Присоединяйтесь к нашему сообществу",
"join_our_discord": "Присоединяйтесь к нам в Discord",
"join_our_discord": "Присоединиться к нашему Discord-сообществу",
"404_claim_entity_user": "Забронируйте своё имя пользователя и начните планировать встречи",
"popular_pages": "Популярные страницы",
"register_now": "Зарегистрироваться",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "Эта страница не существует.",
"check_spelling_mistakes_or_go_back": "Проверьте наличие ошибок, или вернитесь на предыдущую страницу.",
"404_page_not_found": "404: Страница не найдена.",
"booker_event_not_found": "Нам не удалось найти событие, которое вы пытаетесь забронировать.",
"booker_event_not_found": "Событие, которое вы пытаетесь забронировать, не найдено.",
"getting_started": "Начало работы",
"15min_meeting": "Встреча на 15 минут",
"30min_meeting": "Встреча на 30 минут",
@@ -304,18 +304,18 @@
"success": "Успешно",
"failed": "Ошибка",
"password_has_been_reset_login": "Ваш пароль был сброшен. Теперь вы можете войти с новым паролем.",
"layout": "Макет",
"layout": "Режим отображения",
"bookerlayout_default_title": "Представление по умолчанию",
"bookerlayout_description": "Вы можете выбрать несколько представлений; пользователи, оформляющие бронирование, могут переключать представления.",
"bookerlayout_user_settings_title": "Представление забронированного события",
"bookerlayout_user_settings_description": "Вы можете выбрать несколько представлений; пользователи, оформляющие бронирование, могут переключать представления. Эту настройку можно переопределять для каждого события.",
"bookerlayout_description": "Вы можете выбрать несколько представлений, чтобы пользователи могли переключаться между ними при бронировании.",
"bookerlayout_user_settings_title": "Режим отображения бронирования",
"bookerlayout_user_settings_description": "Вы можете выбрать несколько представлений, чтобы пользователи могли переключаться между ними при бронировании. Эту настройку можно переопределять для отдельных событий.",
"bookerlayout_month_view": "Месяц",
"bookerlayout_week_view": "Неделя",
"bookerlayout_column_view": "Столбец",
"bookerlayout_error_min_one_enabled": "Нужно выбрать по крайней мере один макет.",
"bookerlayout_error_default_not_enabled": "Макет, который вы выбрали как представление по умолчанию, не входит в число доступных макетов.",
"bookerlayout_error_unknown_layout": "Вы выбрали недопустимый макет.",
"bookerlayout_override_global_settings": "Эту настройку можно указать для всех типов событий в <2>настройках / оформление</2> или <6>указать только для этого события</6>.",
"bookerlayout_error_min_one_enabled": "Нужно выбрать по крайней мере один режим отображения.",
"bookerlayout_error_default_not_enabled": "Режим отображения, который вы выбрали по умолчанию, не входит в число доступных режимов.",
"bookerlayout_error_unknown_layout": "Вы выбрали недопустимый режим отображения.",
"bookerlayout_override_global_settings": "Вы можете выбрать режим для всех типов событий (раздел <2>Настройки / Внешний вид</2>) или <6>только для этого типа события</6>.",
"unexpected_error_try_again": "Произошла непредвиденная ошибка. Попробуйте еще раз.",
"sunday_time_error": "Недопустимое время в воскресенье",
"monday_time_error": "Недопустимое время в понедельник",
@@ -357,7 +357,7 @@
"upcoming_bookings": "Как только кто-то забронирует встречу с вами она будет отображена здесь.",
"recurring_bookings": "Как только кто-то забронирует повторяющуюся встречу с вами, она будет отображена здесь.",
"past_bookings": "Здесь появятся ваши прошлые бронирования.",
"cancelled_bookings": "Здесь появятся ваши отменённые бронирования.",
"cancelled_bookings": "Здесь будут отображаться ваши отменённые бронирования.",
"unconfirmed_bookings": "Здесь можно увидеть бронирования, которые вы еще не подтвердили.",
"unconfirmed_bookings_tooltip": "Неподтвержденные бронирования",
"on": "на",
@@ -391,7 +391,7 @@
"user_dynamic_booking_disabled": "Некоторые участники группы отключили функцию динамического группового бронирования",
"allow_dynamic_booking_tooltip": "Ссылки для группового бронирования, которые можно создавать динамически, указывая несколько имен пользователей при помощи знака «+». Пример: «{{appName}}/bailey+peer»",
"allow_dynamic_booking": "Разрешить участникам бронировать встречи с вами при помощи динамического группового бронирования",
"dynamic_booking": "Динамические ссылки группы",
"dynamic_booking": "Динамические ссылки для групп",
"email": "Адрес электронной почты",
"email_placeholder": "jdoe@example.com",
"full_name": "Имя",
@@ -414,7 +414,7 @@
"create_new_webhook_to_account": "Создайте новый вебхук для вашей учетной записи",
"new_webhook": "Новый веб-хук",
"receive_cal_meeting_data": "Получайте данные о создании или отмене встреч в {{appName}} по указанному URL-адресу в реальном времени.",
"receive_cal_event_meeting_data": "Получайте данные о планировании или отмене этого события в {{appName}} по указанному URL-адресу в реальном времени.",
"receive_cal_event_meeting_data": "Получайте данные о планировании или отмене событий данного типа в {{appName}} по указанному URL-адресу в реальном времени.",
"responsive_fullscreen_iframe": "Адаптивный полноэкранный iframe",
"loading": "Загрузка...",
"deleting": "Выполняется удаление...",
@@ -505,7 +505,7 @@
"additional_guests": "Добавить гостей",
"your_name": "Ваше имя",
"your_full_name": "ФИО",
"no_name": "Нет имени",
"no_name": "Нет названия",
"email_address": "Адрес электронной почты",
"enter_valid_email": "Укажите допустимый адрес электронной почты",
"location": "Местоположение",
@@ -586,8 +586,8 @@
"confirm_all": "Подтвердить все",
"disband_team": "Распустить команду",
"disband_team_confirmation_message": "Вы уверены, что хотите распустить эту команду? Любой, с кем вы поделились ссылкой на эту команду, больше не сможет забронировать её.",
"disband_org": "Распустить организацию",
"disband_org_confirmation_message": "Распустить эту организацию? Все команды и сотрудники будут удалены.",
"disband_org": "Расформировать организацию",
"disband_org_confirmation_message": "Расформировать эту организацию? Все команды и сотрудники будут удалены.",
"remove_member_confirmation_message": "Вы уверены, что хотите удалить этого участника из команды?",
"confirm_disband_team": "Да, распустить команду",
"confirm_remove_member": "Да, удалить участника",
@@ -662,7 +662,7 @@
"event_type_updated_successfully": "Тип события {{eventTypeTitle}} успешно обновлен",
"event_type_deleted_successfully": "Тип события успешно удален",
"hours": "Часы",
"people": "Люди",
"people": "Участники",
"your_email": "Ваш адрес электронной почты",
"change_avatar": "Изменить аватар",
"language": "Язык",
@@ -774,7 +774,7 @@
"cal_provide_huddle01_meeting_url": "{{appName}} создаст ссылку на встречу в Huddle01 Web3.",
"cal_provide_teams_meeting_url": "{{appName}} предоставит URL-адрес встречи в MS Teams. ПРИМЕЧАНИЕ: У ВАС ДОЛЖЕН БЫТЬ КОРПОРАТИВНЫЙ ИЛИ СТУДЕНЧЕСКИЙ АККАУНТ",
"require_payment": "Требуется оплата",
"you_need_to_add_a_name": "Нужно добавить имя",
"you_need_to_add_a_name": "Необходимо добавить имя",
"commission_per_transaction": "комиссия за сделку",
"event_type_updated_successfully_description": "Ваш шаблон события успешно обновлён.",
"hide_event_type": "Скрыть шаблон события",
@@ -874,15 +874,15 @@
"no_category_apps_description_other": "Добавляйте всевозможные приложения для решения своих задач",
"no_category_apps_description_web3": "Добавьте приложение web3 для использования на страницах бронирования",
"no_category_apps_description_messaging": "Добавьте мессенджер, чтобы настроить пользовательские уведомления и напоминания",
"no_category_apps_description_crm": "Добавьте CRM, чтобы отслеживать, с кем у вас были встречи",
"no_category_apps_description_crm": "Добавьте приложение CRM, чтобы отслеживать, с кем у вас были встречи",
"installed_app_calendar_description": "Настройте проверку календарей на предмет конфликтов для избежания двойного бронирования.",
"installed_app_payment_description": "Выберите службы обработки платежей для получения оплаты от клиентов.",
"installed_app_analytics_description": "Выберите приложения аналитики для страниц бронирования",
"installed_app_other_description": "Все установленные приложения из других категорий.",
"installed_app_conferencing_description": "Выберите приложения для видеоконференций",
"installed_app_conferencing_description": "Выберите приложения для конференц-связи",
"installed_app_automation_description": "Выберите приложения для автоматизации",
"installed_app_web3_description": "Выберите приложения web3 для страниц бронирования",
"installed_app_messaging_description": "Выберите мессенджеры, в которых вы хотите настроить пользовательские уведомления и напоминания",
"installed_app_messaging_description": "Выберите мессенджеры, с помощью которых вы хотите отправлять пользовательские уведомления и напоминания",
"installed_app_crm_description": "Выберите CRM-приложения, в которых вы хотите отслеживать, с кем у вас были встречи",
"analytics": "Аналитика",
"empty_installed_apps_headline": "Нет установленных приложений",
@@ -979,7 +979,7 @@
"confirm_delete_api_key": "Отозвать ключ API",
"revoke_api_key": "Отозвать ключ API",
"api_key_copied": "Ключ API скопирован.",
"api_key_expires_on": "Срок действия ключа API истекает",
"api_key_expires_on": "Ключ API действителен до",
"delete_api_key_confirm_title": "Удалить этот ключ API из вашего аккаунта навсегда?",
"copy": "Копировать",
"expire_date": "Срок действия",
@@ -1002,9 +1002,9 @@
"user_impersonation_heading": "Вход от имени пользователя",
"user_impersonation_description": "Позволяет нашей службе поддержки временно входить в систему от вашего имени, чтобы быстро решать любые проблемы, о которых вы нам сообщаете.",
"team_impersonation_description": "Позволяет участникам и администраторам вашей команды временно входить в систему под вашим именем.",
"make_team_private": "Сделать команду защищенной",
"make_team_private": "Сделать команду закрытой",
"make_team_private_description": "Если эта опция включена, участники вашей команды не смогут видеть других участников команды.",
"you_cannot_see_team_members": "Вы не можете видеть всех участников защищенной команды.",
"you_cannot_see_team_members": "Вы не можете видеть список участников закрытой команды.",
"allow_booker_to_select_duration": "Разрешить пользователю, оформляющему бронирование, выбирать длительность",
"impersonate_user_tip": "Все варианты использования этой функции проверяются.",
"impersonating_user_warning": "Олицетворение пользователя \"{{user}}\".",
@@ -1079,7 +1079,7 @@
"url_start_with_https": "URL-адрес должен начинаться с http:// или https://",
"number_provided": "Будет указан номер телефона",
"before_event_trigger": "до начала события",
"event_cancelled_trigger": "когда событие отменено",
"event_cancelled_trigger": "при отмене события",
"new_event_trigger": "когда будет забронировано новое событие",
"email_host_action": "отправить письмо организатору",
"email_attendee_action": "отправить письмо участникам",
@@ -1292,7 +1292,7 @@
"conferencing_description": "Настройка приложений для видеоконференций, используемых для проведения онлайн-встреч",
"add_conferencing_app": "Добавить приложение для видеоконференций",
"password_description": "Настройка паролей для аккаунта",
"set_up_two_factor_authentication": "Настроить двухфакторную аутентификацию",
"set_up_two_factor_authentication": "Настройка двухфакторной аутентификации",
"we_just_need_basic_info": "Для настройки вашего профиля необходимо указать основную информацию.",
"skip": "Пропустить",
"do_this_later": "Настроить позже",
@@ -1336,7 +1336,7 @@
"event_one": "событие",
"event_other": "событий",
"profile_team_description": "Настройка профиля вашей команды",
"profile_org_description": "Настроить профиль организации",
"profile_org_description": "Настройка профиля организации",
"members_team_description": "Пользователи, входящие в группу",
"organization_description": "Управляйте администраторами и сотрудниками вашей организации",
"team_url": "URL-адрес команды",
@@ -1494,7 +1494,7 @@
"must_enter_team_name": "Необходимо ввести название команды",
"team_url_required": "Необходимо ввести URL-адрес команды",
"url_taken": "Этот URL-адрес уже занят",
"problem_registering_domain": "Возникла проблема с регистрацией поддомена. Попробуйте еще раз или свяжитесь с администратором",
"problem_registering_domain": "При регистрации поддомена возникла проблема. Попробуйте еще раз или свяжитесь с администратором",
"team_publish": "Опубликовать команду",
"number_text_notifications": "Номер телефона (SMS-уведомления)",
"attendee_email_variable": "Электронная почта участника",
@@ -1539,7 +1539,7 @@
"navigate_installed_apps": "Перейти к установленным приложениям",
"disabled_calendar": "Если у вас установлен другой календарь, в него будут добавляться новые бронирования. Если у вас нет установленного календаря, подключите новый календарь, чтобы не пропускать новые бронирования.",
"enable_apps": "Включить приложения",
"enable_apps_description": "Выберите приложения, которые пользователи могут интегрировать с {{appName}}",
"enable_apps_description": "Выберите приложения, которые пользователи смогут интегрировать с {{appName}}",
"purchase_license": "Купить лицензию",
"already_have_key": "У меня уже есть ключ:",
"already_have_key_suggestion": "Скопируйте сюда переменную окружения CALCOM_LICENSE_KEY.",
@@ -1554,7 +1554,7 @@
"no_available_apps_description": "Убедитесь, что в вашей установке в 'packages/app-store' есть приложения",
"no_apps": "В этом экземпляре Cal нет включенных приложений",
"no_apps_configured": "Нет настроенных приложений",
"enable_in_settings": "Выберите приложения в настройках",
"enable_in_settings": "Вы можете включить приложения в настройках",
"please_contact_admin": "Свяжитесь с вашим администратором",
"apps_settings": "Настройки приложений",
"fill_this_field": "Заполните это поле",
@@ -1661,8 +1661,8 @@
"email_user_cta": "Посмотреть приглашение",
"email_no_user_invite_heading": "Вас пригласили в {{entity}} {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} пригласил(-а) вас в команду в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.",
"email_user_invite_subheading": "{{invitedBy}} пригласил(а) вас в команду {{entity}} `{{teamName}}` в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого вы и ваша {{entity}} можете планировать встречи без утомительной переписки по электронной почте.",
"email_no_user_invite_steps_intro": "Всего несколько шагов — и вы сможете оперативно и без стресса планировать встречи с {{entity}}.",
"email_user_invite_subheading": "{{invitedBy}} пригласил(-а) вас в {{entity}} `{{teamName}}` в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого вы и ваша {{entity}} можете планировать встречи без утомительной переписки по электронной почте.",
"email_no_user_invite_steps_intro": "Всего несколько шагов — и вы сможете оперативно и без стресса планировать встречи в рамках вашей {{entity}}.",
"email_no_user_step_one": "Выберите имя пользователя",
"email_no_user_step_two": "Подключите аккаунт календаря",
"email_no_user_step_three": "Задайте время, в которое вы доступны",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "Участник отказался от посещения вашего мероприятия",
"attendee_no_longer_attending_subtitle": "{{name}} отказался(-ась) от посещения мероприятия. Этот промежуток времени снова свободен",
"create_event_on": "Создать событие в календаре",
"create_routing_form_on": "Создать форму маршрутизации в",
"create_routing_form_on": "Создать форму маршрутизации в аккаунте",
"default_app_link_title": "Установить ссылку на приложение по умолчанию",
"default_app_link_description": "Если установить ссылку на приложение по умолчанию, она будет присваиваться всем вновь создаваемым событиям.",
"organizer_default_conferencing_app": "Приложение организатора по умолчанию",
@@ -1809,7 +1809,7 @@
"redirect_url_warning": "При использовании перенаправления страница успешного бронирования будет отключена. Не забудьте упомянуть «Бронирование подтверждено» на собственной странице оповещения об успешном бронировании.",
"event_trends": "Тренды событий",
"clear_filters": "Сбросить фильтры",
"clear": "Очистить",
"clear": "Сбросить",
"hold": "Заморозить",
"on_booking_option": "Списывать оплату при бронировании",
"hold_option": "Взимать комиссию за неявку",
@@ -1836,18 +1836,18 @@
"complete_your_booking": "Завершить бронирование",
"complete_your_booking_subject": "Завершите бронирование: {{title}}, {{date}}",
"confirm_your_details": "Подтвердите свои данные",
"copy_invite_link": "Скопировать ссылку приглашения",
"copy_invite_link": "Копировать ссылку для приглашения",
"edit_invite_link": "Изменить настройки ссылки",
"invite_link_copied": "Ссылка с приглашением скопирована",
"invite_link_deleted": "Ссылка на приглашение удалена",
"invite_link_updated": "Настройки ссылки с приглашением сохранены",
"link_expires_after": "Ссылки истекают через...",
"invite_link_copied": "Ссылка для приглашения скопирована",
"invite_link_deleted": "Ссылка для приглашения удалена",
"invite_link_updated": "Настройки ссылки для приглашения сохранены",
"link_expires_after": "Срок действия ссылок истекает через...",
"one_day": "1 день",
"seven_days": "7 дней",
"thirty_days": "30 дней",
"three_months": "3 месяца",
"one_year": "1 год",
"team_invite_received": "Вас пригласили в {{teamName}}",
"team_invite_received": "Вас пригласили в команду {{teamName}}",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "Вы собираетесь списать с участника {{amount, currency}}. Продолжить?",
"charge_attendee": "Списать с участника {{amount, currency}}",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "Приглашено пользователей: {{userCount}}",
"error_collecting_card": "Ошибка при обработке карты",
"image_size_limit_exceed": "Размер загружаемого изображения не должен превышать 5 МБ",
"unauthorized_workflow_error_message": "{{errorCode}}: У вас нет права включать или отключать этот рабочий процесс",
"unauthorized_workflow_error_message": "{{errorCode}}: у вас недостаточно разрешений для включения или отключения этого рабочего процесса",
"inline_embed": "Встраивание в содержимое сайта",
"load_inline_content": "Отображение события вместе с другим содержимым сайта.",
"floating_pop_up_button": "Плавающая кнопка",
@@ -1878,13 +1878,13 @@
"first_event_type_webhook_description": "Создайте первый вебхук для этого типа событий",
"install_app_on": "Установить приложение в",
"create_for": "Создать для",
"setup_organization": "Настроить организацию",
"organization_banner_description": "Создавайте рабочие среды, в которых ваши команды смогут открывать совместный доступ к приложениям, рабочим процессам и типам событий, составляя расписание совместно или по очереди.",
"setup_organization": "Настроите организацию",
"organization_banner_description": "Создавайте рабочие среды, в рамках которых ваши команды смогут создавать общие приложения, рабочие процессы и типы событий с назначением участников по очереди и коллективным планированием.",
"organization_banner_title": "Управляйте организациями с несколькими командами",
"set_up_your_organization": "Настройте организацию",
"organizations_description": "Организация – это общая рабочая среда, в которой команды могут создавать общие типы событий, приложения, рабочие процессы и многое другое.",
"organizations_description": "Организация — это общая рабочая среда, в которой команды могут создавать общие типы событий, приложения, рабочие процессы и многое другое.",
"must_enter_organization_name": "Необходимо ввести название организации",
"must_enter_organization_admin_email": "Необходимо ввести адрес электронной почты вашей организации",
"must_enter_organization_admin_email": "Необходимо ввести ваш адрес электронной почты в организации",
"admin_email": "Адрес электронной почты в организации",
"admin_username": "Имя пользователя администратора",
"organization_name": "Название организации",
@@ -1892,14 +1892,14 @@
"organization_verify_header": "Подтвердите адрес электронной почты вашей организации",
"organization_verify_email_body": "С помощью кода ниже подтвердите свой адрес электронной почты, чтобы продолжить настройку организации.",
"additional_url_parameters": "Дополнительные параметры URL-адреса",
"about_your_organization": "Об организации",
"about_your_organization_description": "Организация – это общая рабочая среда, в которой можно создавать несколько команд с общими сотрудниками, типами событий, приложениями, рабочими процессами и т. п.",
"create_your_teams": "Создать команды",
"about_your_organization": "О вашей организации",
"about_your_organization_description": "Организация — это общая рабочая среда, в которой можно создавать несколько команд с общими сотрудниками, типами событий, приложениями, рабочими процессами и т. п.",
"create_your_teams": "Создайте команды",
"create_your_teams_description": "Добавьте участников команды в организацию и начните планировать дела вместе",
"invite_organization_admins": "Пригласите администраторов вашей организации",
"invite_organization_admins_description": "Эти администраторы будут иметь доступ ко всем командам вашей организации. Администраторов и участников команд можно добавить позже.",
"set_a_password": "Установить пароль",
"set_a_password_description": "Будет создан новый пользовательский аккаунт с адресом электронной почты вашей организации и этим паролем.",
"set_a_password": "Установите пароль",
"set_a_password_description": "Будет создан новый пользовательский аккаунт с адресом электронной почты вашей организации и указанным паролем.",
"organization_logo": "Логотип организации",
"organization_about_description": "Краткое описание вашей организации. Этот текст будет виден в публичном профиле вашей организации.",
"ill_do_this_later": "Позже",
@@ -1908,11 +1908,11 @@
"verify_email_organization": "Подтвердите свой адрес электронной почты для создания организации",
"code_provided_invalid": "Указанный код недействителен, попробуйте еще раз",
"email_already_used": "Адрес электронной почты уже используется",
"organization_admin_invited_heading": "Вас пригласили в {{orgName}}",
"organization_admin_invited_body": "Станьте частью команды {{orgName}} – и вы сможете уделять внимание встречам, а не их планированию!",
"organization_admin_invited_heading": "Вас пригласили в организацию {{orgName}}",
"organization_admin_invited_body": "Присоединитесь к своей команде в организации {{orgName}} — и вы сможете сосредоточиться на самих встречах, а не на их планировании!",
"duplicated_slugs_warning": "Не удалось создать следующие команды из-за дублирующихся слагов: {{slugs}}",
"team_names_empty": "Имена команд не могут быть пустыми",
"team_names_repeated": "Имена команд должны быть уникальными",
"team_names_empty": "Названия команд не могут быть пустыми",
"team_names_repeated": "Названия команд должны быть уникальными",
"user_belongs_organization": "Пользователь относится к организации",
"org_no_teams_yet": "У этой организации еще нет команд",
"org_no_teams_yet_description": "Если вы администратор, не забудьте создать команды, которые будут отображаться здесь.",
@@ -1922,19 +1922,19 @@
"my_profile": "Мой профиль",
"my_settings": "Мои настройки",
"crm": "CRM",
"messaging": "Сообщения",
"messaging": "Мессенджеры",
"sender_id_info": "Имя или номер, отображаемые как отправитель SMS-сообщения (в некоторых странах не допускаются буквенно-цифровые идентификаторы)",
"org_admins_can_create_new_teams": "Только администратор вашей организации может создавать новые команды",
"google_new_spam_policy": "Из-за новой политики Google по выявлению спама вы можете не получить письма и уведомления календаря об этом забронированном событии.",
"resolve": "Разрешить",
"google_new_spam_policy": "В связи с новой политикой Google в отношении спама существует вероятность, что вы не сможете увидеть уведомления об этом забронированном событии по электронной почте или в календаре.",
"resolve": "Как решить эту проблему",
"no_organization_slug": "При создании команд для этой организации произошла ошибка. Отсутствует слаг URL-адреса.",
"org_name": "Название организации",
"org_url": "URL-адрес организации",
"copy_link_org": "Скопировать ссылку на организацию",
"copy_link_org": "Копировать ссылку на организацию",
"404_the_org": "Организация",
"404_the_team": "Команда",
"404_claim_entity_org": "Получите поддомен для вашей организации",
"404_claim_entity_team": "Направьте запрос в команду и начните составлять расписания вместе",
"404_claim_entity_team": "Присоединитесь к команде и начните составлять расписания вместе",
"insights_all_org_filter": "Все приложения",
"insights_team_filter": "Команда: {{teamName}}",
"insights_user_filter": "Пользователь: {{userName}}",
+56 -56
View File
@@ -11,14 +11,14 @@
"calcom_explained_new_user": "Završite podešavanje vašeg {{appName}} naloga! Na par koraka ste od rešavanja svih problema sa rasporedom.",
"have_any_questions": "Imate pitanja? Tu smo da pomognemo.",
"reset_password_subject": "{{appName}}: Upustva za resetovanje lozinke",
"verify_email_subject": "{{appName}}: Potvrdi svoj nalog",
"check_your_email": "Proveri imejl",
"verify_email_page_body": "Poslali smo imejl na {{email}}. Važno je da potvrdite svoju imejl adresu da biste obezbedili najbolju isporuku imejla i kalendara od aplikacije {{appName}}.",
"verify_email_banner_body": "Potvrdite svoju imejl adresu da biste obezbedili najbolju isporuku imejla i kalendara",
"verify_email_email_header": "Potvrdite svoju imejl adresu",
"verify_email_email_button": "Potvrdi imejl",
"verify_email_subject": "{{appName}}: Potvrdite svoj nalog",
"check_your_email": "Proverite svoju e-poštu",
"verify_email_page_body": "Poslali smo imejl na {{email}}. Važno je da potvrdite svoju adresu e-pošte kako biste osigurali najbolju isporučivost e-pošte i kalendara od aplikacije {{appName}}.",
"verify_email_banner_body": "Potvrdite svoju adresu e-pošte kako biste osigurali najbolju isporučivost e-pošte i kalendara",
"verify_email_email_header": "Potvrdite svoju adresu e-pošte",
"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 imejl adresu klikom na dugme ispod.",
"verify_email_email_body": "Potvrdite svoju adresu e-pošte klikom na dugme ispod.",
"verify_email_email_link_text": "U slučaju da ne volite da klikćete na dugmad, evo linka:",
"email_sent": "Imejl je uspešno poslat",
"event_declined_subject": "Odbijeno: {{title}} datuma {{date}}",
@@ -119,7 +119,7 @@
"team_info": "Informacije o timu",
"request_another_invitation_email": "Ako preferirate da ne koristite {{toEmail}} kao vašu {{appName}} e-poštu ili već imate {{appName}} nalog, zatražite još jednu pozivnicu na tu e-poštu.",
"you_have_been_invited": "Pozvani ste da se pridružite timu {{teamName}}",
"user_invited_you": "{{user}} vas je pozvao da se pridružite {{entity}} {{team}} na {{appName}}",
"user_invited_you": "{{user}} vas je pozvao/la da se pridružite {{entity}} {{team}} na {{appName}}",
"hidden_team_member_title": "Sakriveni ste u ovom timu",
"hidden_team_member_message": "Vaše mesto nije plaćeno, ili se pretplatite na Pro ili obavestite vođu tima da plati za vaše mesto.",
"hidden_team_owner_message": "Potreban je Pro nalog za korišćenje timova, sakriveni ste dok se ne pretplatite.",
@@ -307,16 +307,16 @@
"password_has_been_reset_login": "Vaša lozinka je resetovana. Sada možete da se ulogujete sa vašom novom lozinkom.",
"layout": "Raspored",
"bookerlayout_default_title": "Podrazumevani prikaz",
"bookerlayout_description": "Možete da izaberete više njih, a vaši polaznici mogu da menjaju prikaze.",
"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_description": "Možete da izaberete više njih, a polaznici mogu da menjaju izglede. Ovo može da bude izmenjeno na osnovu događaja.",
"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",
"bookerlayout_column_view": "Kolona",
"bookerlayout_error_min_one_enabled": "Mora da bude omogućen najmanje jedan izgled.",
"bookerlayout_error_default_not_enabled": "Izgled koji ste izabrali da bude podrazumevan nije deo omogućenih izgleda.",
"bookerlayout_error_unknown_layout": "Izgled koji ste izabrali nije važeći izgled.",
"bookerlayout_override_global_settings": "Možete da upravljate ovim za sve tipove događaja u <2>podešavanje / izgled</2> ili <6>izmeni samo za ovaj događaj</6>.",
"bookerlayout_override_global_settings": "Možete da upravljate ovim za sve tipove događaja u <2>podešavanja / izgled</2> ili <6>zameni samo za ovaj događaj</6>.",
"unexpected_error_try_again": "Došlo je do neočekivane greške. Pokušajte ponovo.",
"sunday_time_error": "Nevažeće vreme u nedelju",
"monday_time_error": "Nevažeće vreme u ponedeljak",
@@ -478,7 +478,7 @@
"max_limit_allowed_hint": "Mora da ima {{limit}} znakova ili manje",
"invalid_password_hint": "Lozinka mora da bude dugačka najmanje {{passwordLength}} znakova, da sadrži najmanje jedan broj i da ima mešavinu velikih i malih slova",
"incorrect_password": "Lozinka je netačna.",
"incorrect_email_password": "Imejl ili lozinka su netačni.",
"incorrect_email_password": "Adresa e-pošte ili lozinka su netačni.",
"use_setting": "Koristi podešavanje",
"am_pm": "am/pm",
"time_options": "Vremenske opcije",
@@ -588,7 +588,7 @@
"disband_team": "Raspusti Tim",
"disband_team_confirmation_message": "Da li ste sigurni da želite raspustiti ovaj tim? S kim god ste podelili link ovog tima, neće moći više da rezerviše pomoću njega.",
"disband_org": "Rasformirajte organizaciju",
"disband_org_confirmation_message": "Da li ste sigurni da želite da rasformirate ovu organizaciju? Svi timovi i članovi će biti obrisani.",
"disband_org_confirmation_message": "Da li ste sigurni da želite da rasformirate ovu organizaciju? Svi timovi i članovi će biti izbrisani.",
"remove_member_confirmation_message": "Da li ste sigurni da želite ukloniti ovog člana iz tima?",
"confirm_disband_team": "Da, raspusti tim",
"confirm_remove_member": "Da, ukloni člana",
@@ -910,7 +910,7 @@
"create_events_on": "Kreiraj događaje na",
"enterprise_license": "Ovo je enterprise funkcija",
"enterprise_license_description": "Da biste omogućili ovu funkciju, nabavite ključ za primenu na {{consoleUrl}} konzoli i dodajte ga u svoj .env kao CALCOM_LICENCE_KEY. Ako vaš tim već ima licencu, obratite se na {{supportMail}} za pomoć.",
"enterprise_license_development": "Možete da testirate ovu funkciju u razvojnom obliku. Za proizvodnu upotrebu molimo da administrator ode na <2>/auth/setup</2> da unese ključ za licencu.",
"enterprise_license_development": "Ovu funkciju možete testirati u razvojnom režimu. Za proizvodnu upotrebu neka administrator ode na <2>/auth/setup</2> da unese ključ za licencu.",
"missing_license": "Nedostaje Licenca",
"signup_requires": "Komercijalna dozvola je neophodna",
"signup_requires_description": "{{companyName}} trenutno ne nudi besplatnu verziju otvorenog koda od stranice za prijavu. Da bi dobili potpuni pristup kompenentama za prijavu, neophodno je da ste vlasnik komercijalne licence. Za ličnu upotrebu preporučujemo Prisma Data Platformu ili bilo koji drugi Postgres interfejs za pravljenje naloga.",
@@ -980,7 +980,7 @@
"confirm_delete_api_key": "Opozovi ovaj API ključ",
"revoke_api_key": "Opozovi API ključ",
"api_key_copied": "API ključ je kopiran!",
"api_key_expires_on": "API ključ će isteći dana",
"api_key_expires_on": "API ključ će isteći",
"delete_api_key_confirm_title": "Želite li da trajno uklonite ovaj API ključ iz svog naloga?",
"copy": "Kopiraj",
"expire_date": "Datum isteka",
@@ -1003,8 +1003,8 @@
"user_impersonation_heading": "Predstavljanje kao korisnik",
"user_impersonation_description": "Dozvoljava našem timu za podršku da se privremeno prijavi umesto vas kako bismo vam pomogli da brzo rešite sve probleme koje ste nam prijavili.",
"team_impersonation_description": "Omogućava vlasnicima/administratorima vašeg tima da se privremeno prijave kao vi.",
"make_team_private": "Postavite privatnost tima",
"make_team_private_description": "Članovi vašeg tima neće moći da vide druge članove tima kada je uključen.",
"make_team_private": "Učinite tim privatnim",
"make_team_private_description": "Članovi vašeg tima neće moći da vide druge članove tima kada je ovo aktivirano.",
"you_cannot_see_team_members": "Nećete moći da vidite sve članove privatnog tima.",
"allow_booker_to_select_duration": "Dozvoli polazniku da izabere trajanje",
"impersonate_user_tip": "Sva korišćenja ove funkcije se nadgledaju.",
@@ -1084,7 +1084,7 @@
"new_event_trigger": "kada je zakazan novi događaj",
"email_host_action": "pošalji imejl domaćinu",
"email_attendee_action": "pošalji imejl učesnicima",
"sms_attendee_action": "Pošalji SMS polazniku",
"sms_attendee_action": "Pošalji SMS učesniku",
"sms_number_action": "pošalji SMS na određeni broj",
"whatsapp_number_action": "pošaljite Whatsapp poruku na određeni broj",
"whatsapp_attendee_action": "pošaljite Whatsapp poruku učesniku",
@@ -1293,7 +1293,7 @@
"conferencing_description": "Dodajte svoje omiljene aplikacije za video konferencije za vaše sastanke",
"add_conferencing_app": "Dodaj aplikaciju za konferenciju",
"password_description": "Upravljajte podešavanjima za lozinke vašeg naloga",
"set_up_two_factor_authentication": "Podesite dvostruku proveru identiteta",
"set_up_two_factor_authentication": "Podesite dvostruku potvrdu identiteta",
"we_just_need_basic_info": "Trebaju nam neke osnovne informacije da bismo podesili vaš profil.",
"skip": "Preskoči",
"do_this_later": "Uradite ovo kasnije",
@@ -1307,7 +1307,7 @@
"connect_analytics_apps": "Povežite analitičke aplikacije",
"connect_other_apps": "Povežite druge aplikacije",
"connect_web3_apps": "Povežite web3 aplikacije",
"connect_messaging_apps": "Povežite aplikacije za poruke",
"connect_messaging_apps": "Povežite aplikacije za razmenu poruka",
"connect_crm_apps": "Povežite CRM aplikacije",
"current_step_of_total": "Korak {{currentStep}} od {{maxSteps}}",
"add_variable": "Dodaj promenljivu",
@@ -1380,7 +1380,7 @@
"routing_forms_send_email_owner": "Pošaljite imejl vlasniku",
"routing_forms_send_email_owner_description": "Pošaljite imejl vlasniku kada pošaljete obrazac",
"add_new_form": "Dodaj novi formular",
"add_new_team_form": "Dodajte novi oblik svom timu",
"add_new_team_form": "Dodajte novi formular vašem timu",
"create_your_first_route": "Kreirajte svoju prvu rutu",
"route_to_the_right_person": "Usmeravanje na pravu osobu na osnovu odgovora iz obrasca",
"form_description": "Kreirajte formular da biste rutirali osobu koja vrši rezervaciju",
@@ -1488,7 +1488,7 @@
"your_org_disbanded_successfully": "Vaša organizacija je uspešno rasformirana",
"error_creating_team": "Greška prilikom kreiranja tima",
"you": "Vi",
"resend_email": "Ponovo pošaljite imejl",
"resend_email": "Ponovo pošalji imejl",
"member_already_invited": "Član je već pozvan",
"enter_email_or_username": "Unesite imejl ili korisničko ime",
"team_name_taken": "Ime je zauzeto",
@@ -1497,7 +1497,7 @@
"url_taken": "Ovaj URL je zauzet",
"problem_registering_domain": "Postoji problem sa registracijom poddomena, pokušajte ponovo ili se obratite administratoru",
"team_publish": "Objavite tim",
"number_text_notifications": "Broj telefona (obaveštenja porukom)",
"number_text_notifications": "Broj telefona (obaveštenja putem SMS-a)",
"attendee_email_variable": "Imejl polaznika",
"attendee_email_info": "Imejl osobe koja rezerviše",
"kbar_search_placeholder": "Unesite komandu ili pretražite...",
@@ -1520,7 +1520,7 @@
"find_the_best_person": "Pronađite najbolju dostupnu osobu i potom rotirajte ostale članove tima.",
"fixed_round_robin": "Fiksno kružno dodeljivanje",
"add_one_fixed_attendee": "Dodajte jednog fiksnog učesnika i onda rotirajte ostale učesnike.",
"calcom_is_better_with_team": "{{appName}} je bolji uz timove",
"calcom_is_better_with_team": "Aplikacija {{appName}} je još bolja uz timove",
"the_calcom_team": "Tim kompanije {{companyName}}",
"add_your_team_members": "Dodajte članove vašeg tima vašim tipovima događaja. Koristite kolektivno zakazivanje da uključite svakoga ili pronađete osobu koja najviše odgovara pomoću zakazivanja kružnim dodeljivanjem.",
"booking_limit_reached": "Dostignuta je granica zakazivanja za ovaj tip događaja",
@@ -1540,7 +1540,7 @@
"navigate_installed_apps": "Idi na instalirane aplikacije",
"disabled_calendar": "Ako imate instaliran drugi kalendar, nova zakazivanja će biti dodata na njega. Ako nemate, onda povežite novi kalendar da ne biste propustili nova zakazivanja.",
"enable_apps": "Omogući aplikacije",
"enable_apps_description": "Omogući aplikacije koje korisnici mogu da integrišu sa {{appName}}",
"enable_apps_description": "Omogući aplikacije koje korisnici mogu da integrišu sa aplikacijom {{appName}}",
"purchase_license": "Kupovina licence",
"already_have_key": "Već imam ključ:",
"already_have_key_suggestion": "Kopirajte ovde postojeću CALCOM_LICENSE_KEY promenljivu okruženja.",
@@ -1554,7 +1554,7 @@
"no_available_apps": "Nema dostupnih aplikacija",
"no_available_apps_description": "Uverite se da ima aplikacija u vašoj fascikli za instalaciju pod „packages/app-store“",
"no_apps": "Nema omogućenih aplikacija u ovoj instanci Cal-a",
"no_apps_configured": "Ni jedna aplikacija još nije konfigurisana",
"no_apps_configured": "Nijedna aplikacija još nije konfigurisana",
"enable_in_settings": "U podešavanjima možete da omogućite aplikacije",
"please_contact_admin": "Obratite se administratoru",
"apps_settings": "Podešavanja aplikacija",
@@ -1662,7 +1662,7 @@
"email_user_cta": "Prikaži pozivnicu",
"email_no_user_invite_heading": "Pozvani ste da se pridružite {{appName}} {{entity}}",
"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": "{{invitedBy}} vas je pozvao da se pridružite {{entity}} `{{teamName}}` na {{appName}}. {{appName}} je uređivač rasporeda koji omogućava vama i vašem {{entity}} da zakažete sastanke bez razmene imejlova.",
"email_user_invite_subheading": "{{invitedBy}} vas je pozvao/la da se pridružite {{entity}} `{{teamName}}` na {{appName}}. {{appName}} je uređivač rasporeda koji omogućava vama i vašem {{entity}} da zakažete sastanke bez razmene imejlova.",
"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",
@@ -1688,7 +1688,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": "Kreirajte formu za preusmeravanje",
"create_routing_form_on": "Kreiraj obrazac za usmeravanje",
"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",
@@ -1748,7 +1748,7 @@
"switch_monthly": "Pređite na mesečni pregled",
"switch_weekly": "Pređite na nedeljni pregled",
"switch_multiday": "Pređi na dnevni pregled",
"switch_columnview": "Pređite na pregled kolone",
"switch_columnview": "Pređi na pregled kolone",
"num_locations": "{{num}} opcije lokacije",
"select_on_next_step": "Izaberite na sledećem koraku",
"this_meeting_has_not_started_yet": "Ovaj sastanak još nije počeo",
@@ -1803,7 +1803,7 @@
"least_booked_members": "Članovi koji su najmanje zakazali",
"events_created": "Kreirani događaji",
"events_completed": "Završeni događaji",
"events_cancelled": "Događaji su otkazani",
"events_cancelled": "Otkazani događaji",
"events_rescheduled": "Pomereni događaji",
"from_last_period": "iz prošlog perioda",
"from_to_date_period": "Od: {{startDate}} Do: {{endDate}}",
@@ -1837,12 +1837,12 @@
"complete_your_booking": "Završite svoje zakazivanje",
"complete_your_booking_subject": "Završite svoje zakazivanje: {{title}} dana {{date}}",
"confirm_your_details": "Potvrdite svoje podatke",
"copy_invite_link": "Kopiraj link za poziv",
"copy_invite_link": "Kopiraj link pozivnice",
"edit_invite_link": "Izmeni podešavanja linka",
"invite_link_copied": "Link za poziv je kopiran",
"invite_link_deleted": "Link za poziv je izbrisan",
"invite_link_updated": "Podešavanja linka za poziv su sačuvana",
"link_expires_after": "Link je namešte da istekne za...",
"invite_link_copied": "Link pozivnice je kopiran",
"invite_link_deleted": "Link pozivnice je izbrisan",
"invite_link_updated": "Podešavanja linka pozivnice su sačuvana",
"link_expires_after": "Linkovi su podešeni da isteknu za...",
"one_day": "1 dan",
"seven_days": "7 dana",
"thirty_days": "30 dana",
@@ -1880,58 +1880,58 @@
"install_app_on": "Instaliraj aplikaciju",
"create_for": "Napravi za",
"setup_organization": "Postavi organizaciju",
"organization_banner_description": "Kreirajte okruženje gde vaši timovi mogu da postave deljene aplikacije, radni tok i vrste događaja sa kružnom dodelom i zajedničko zakazivanje.",
"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.",
"organization_banner_title": "Upravljajte organizacijama sa više timova",
"set_up_your_organization": "Postavite svoju organizaciju",
"organizations_description": "Organizacije su deljena okruženja gde timovi mogu da kreiraju vrste deljenih događaja, aplikacija, radnog toka i više.",
"must_enter_organization_name": "Morate da unesete ime organizacije",
"must_enter_organization_admin_email": "Morate da unesete imejl adresu vaše 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_username": "Korisničko ime administratora",
"organization_name": "Ime organizacije",
"organization_name": "Naziv organizacije",
"organization_url": "URL organizacije",
"organization_verify_header": "Potvrdite imejl vaše organizacije",
"organization_verify_email_body": "Koristite kod u nastavku da biste potvrdili svoju imejl adresu i nastavili da postavljate svoju organizaciju.",
"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, vrstama događaja, aplikacijama, radnim tokom i drugo.",
"create_your_teams": "Kreirajte svoj tim",
"create_your_teams_description": "Počnite planiranje zajedno dodavanjem članova tima vaše ogranizacije",
"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.",
"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",
"invite_organization_admins_description": "Administratori će imati pristup svim timovima vaše ogranizacije. Možete kasnije da dodate administratore i članove tima.",
"set_a_password": "Postavite lozinku",
"set_a_password_description": "Ovim ćete kreirati novi korisnički nalog uz imejl organizacije i ovu lozinku.",
"set_a_password_description": "Ovim ćete kreirati novi korisnički nalog sa adresom e-pošte vaše organizacije i ovom lozinkom.",
"organization_logo": "Logotip organizacije",
"organization_about_description": "Nekoliko rečenica o vašem preduzeću. Ovo će se pojaviti na javnom profilu stranice vašeg preduzeća.",
"organization_about_description": "Nekoliko rečenica o vašoj organizaciji. Ovo će se pojaviti na stranici javnog profila vaše organizacije.",
"ill_do_this_later": "Uradiću to kasnije",
"verify_your_email": "Potvrdite imejl",
"verify_your_email": "Potvrdite svoju adresu e-pošte",
"enter_digit_code": "Unesite šestocifreni kod koji smo vam poslali na {{email}}",
"verify_email_organization": "Potvrdite imejl da biste kreirali organizaciju",
"verify_email_organization": "Potvrdite svoju adresu e-pošte da biste kreirali organizaciju",
"code_provided_invalid": "Dostavljeni kôd nije važeći, pokušajte ponovo",
"email_already_used": "Imejl je već iskorišćen",
"organization_admin_invited_heading": "Pozvani ste da se pridružite {{orgName}}",
"organization_admin_invited_body": "Pridružite se svom timu u {{orgName}} i usredsredite se na sastanak, a ne na kreiranje sastanaka!",
"email_already_used": "Adresa e-pošte se već koristi",
"organization_admin_invited_heading": "Pozvani ste da se pridružite organizaciji {{orgName}}",
"organization_admin_invited_body": "Pridružite se svom timu u organizaciji {{orgName}} i usredsredite se na sastanak, a ne na kreiranje sastanaka!",
"duplicated_slugs_warning": "Sledeći timovi se ne mogu kreirati zbog dupliranih slug-ova: {{slugs}}",
"team_names_empty": "Imena timova ne mogu biti prazna",
"team_names_repeated": "Imena timova se ne mogu ponavljati",
"user_belongs_organization": "Korisnik pripada organizaciji",
"org_no_teams_yet": "Ova organizacija još uvek nema timove",
"org_no_teams_yet_description": "Ako ste administrator, potrudite se da kreirate timove koji će ovde biti prikazani.",
"set_up": "Podesite",
"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.",
"my_profile": "Moj profil",
"my_settings": "Moja podešavanja",
"crm": "CRM",
"messaging": "Poruke",
"sender_id_info": "Kao pošiljalac poruke prikazuju se ime i broj (neke zemlje ne dozvoljavaju alfanumeričku identifikaciju pošiljaoca)",
"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",
"no_organization_slug": "Desila se greška kod kreiranja timova za ovu organizaciju. Nedostaje URL slug.",
"org_name": "Ime organizacije",
"org_name": "Naziv organizacije",
"org_url": "URL organizacije",
"copy_link_org": "Kopirajte link do organizacije",
"copy_link_org": "Kopiraj link do organizacije",
"404_the_org": "Organizacija",
"404_the_team": "Tim",
"404_claim_entity_org": "Zatražite poddomen za svoju organizaciju",
+34 -34
View File
@@ -17,11 +17,11 @@
"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",
"verify_email_email_body": "Vänligen verifiera din e-postadress genom att klicka på knappen nedan.",
"verify_email_email_body": "Verifiera din e-postadress genom att klicka på knappen nedan.",
"verify_email_email_link_text": "Här är länken om du inte gillar att klicka på knappar:",
"email_sent": "E-postmeddelandet har skickats",
"event_declined_subject": "Avvisades: {{title}} kl. {{date}}",
"event_cancelled_subject": "Avbröts: {{title}} kl. {{date}}",
"event_cancelled_subject": "Avbröts: {{title}} {{date}}",
"event_request_declined": "Din bokningsförfrågan har avbjöts",
"event_request_declined_recurring": "Din återkommande händelse har avböjts",
"event_request_cancelled": "Din schemalagda bokning ställdes in",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "Uppdatering - Din bokning har blivit omplanerad",
"request_reschedule_subtitle": "{{organizer}} har avbokat bokningen och bett dig att välja en annan tid.",
"request_reschedule_title_organizer": "Du har begärt att {{attendee}} ska boka om",
"request_reschedule_subtitle_organizer": "Du har avbokat bokningen och {{attendee}} ska välja en ny bokningstid hos dig.",
"request_reschedule_subtitle_organizer": "Du har avbokat bokningen och {{attendee}} måste välja en ny bokningstid med dig.",
"rescheduled_event_type_subject": "Begäran om ny schemaläggning har skickats: {{eventType}} med {{name}} {{date}}",
"requested_to_reschedule_subject_attendee": "Åtgärd som krävs Tidsschema: Boka en ny tid för {{eventType}} hos {{name}}",
"hi_user_name": "Hej {{name}}",
@@ -118,7 +118,7 @@
"team_info": "Team info",
"request_another_invitation_email": "Om du föredrar att inte använda {{toEmail}} som din {{appName}} e-post eller redan har ett {{appName}} konto, vänligen begär en annan inbjudan till den e-postadressen.",
"you_have_been_invited": "Du har blivit inbjuden till teamet {{teamName}}",
"user_invited_you": "{{user}} bjöd in dig till {{entity}} {{team}} på {{appName}}",
"user_invited_you": "{{user}} har bjudit in dig till {{entity}} {{team}} på {{appName}}",
"hidden_team_member_title": "Du är dold i detta team",
"hidden_team_member_message": "Din plats är inte betalad för. Uppgradera till Pro eller låt teamägaren veta att de kan betala för din plats.",
"hidden_team_owner_message": "Du behöver ett pro-konto för att använda team, du är dold tills du uppgraderar.",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "Denna sida finns inte.",
"check_spelling_mistakes_or_go_back": "Kolla efter stavfel eller gå tillbaka till föregående sida.",
"404_page_not_found": "404: Sidan kunde inte hittas.",
"booker_event_not_found": "Vi kunde inte hitta händelsen du försöker boka.",
"booker_event_not_found": "Vi hittar inte händelsen som du försöker boka.",
"getting_started": "Komma igång",
"15min_meeting": "15 minuters möte",
"30min_meeting": "30 minuters möte",
@@ -248,7 +248,7 @@
"organization_general_description": "Hantera inställningar för ditt teams språk och tidszon",
"few_sentences_about_yourself": "Några meningar om dig själv. Detta kommer att visas på din personliga webbsida.",
"nearly_there": "Nästan där!",
"nearly_there_instructions": "Sist en kort beskrivning om dig och ett foto hjälper dig verkligen att få bokningar och låter folk veta vem de bokar hos.",
"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",
"continue_without_calendar": "Fortsätt utan kalender",
@@ -337,7 +337,7 @@
"cancelling_event_recurring": "Händelsen är i en återkommande händelse.",
"cancelling_all_recurring": "Dessa är alla kvarvarande instanser i den återkommande händelsen.",
"error_with_status_code_occured": "Ett fel med statuskoden {{status}} inträffade.",
"error_event_type_url_duplicate": "En händelsetyp med denna URL finns redan.",
"error_event_type_url_duplicate": "Det finns redan en händelsetyp med denna URL.",
"error_event_type_unauthorized_create": "Du kan inte skapa den här händelsen",
"error_event_type_unauthorized_update": "Du kan inte redigera den här händelsen",
"error_workflow_unauthorized_create": "Du kan inte skapa det här arbetsflödet",
@@ -357,7 +357,7 @@
"upcoming_bookings": "Så fort någon bokar en tid med dig kommer den att dyka upp här.",
"recurring_bookings": "Så fort någon bokar ett återkommande möte med dig visas det här.",
"past_bookings": "Dina tidigare bokningar kommer att visas här.",
"cancelled_bookings": "Dina inställda bokningar visas här.",
"cancelled_bookings": "Dina avbokningar visas här.",
"unconfirmed_bookings": "Dina obekräftade bokningar kommer att visas här.",
"unconfirmed_bookings_tooltip": "Obekräftade bokningar",
"on": "den",
@@ -398,7 +398,7 @@
"browse_api_documentation": "Bläddra i vår API-dokumentation",
"leverage_our_api": "Utnyttja vår API för full kontroll och anpassningsbarhet.",
"create_webhook": "Skapa webhook",
"booking_cancelled": "Bokning inställd",
"booking_cancelled": "Avbokad",
"booking_rescheduled": "Bokning ombokad",
"recording_ready": "Länk för att ladda ned inspelning är klar",
"booking_created": "Bokning skapad",
@@ -413,8 +413,8 @@
"team_webhooks": "Team Webbhookar",
"create_new_webhook_to_account": "Skapa en ny webhook till ditt konto",
"new_webhook": "Ny webhook",
"receive_cal_meeting_data": "Ta emot {{appName}} mötesdata på en angiven webbadress, i realtid, när en händelse är schemalagd eller avbruten.",
"receive_cal_event_meeting_data": "Ta emot {{appName}} mötesdata på en angiven webbadress, i realtid, när denna händelse är schemalagd eller avbokad.",
"receive_cal_meeting_data": "Ta emot {{appName}} mötesdata på en angiven webbadress, i realtid, när en händelse schemaläggs eller avbryts.",
"receive_cal_event_meeting_data": "Ta emot {{appName}} mötesdata på en angiven webbadress, i realtid, när denna händelse schemaläggs eller avbryts.",
"responsive_fullscreen_iframe": "Responsiv helskärms-iframe",
"loading": "Laddar...",
"deleting": "Raderar...",
@@ -586,7 +586,7 @@
"confirm_all": "Bekräfta alla",
"disband_team": "Ta bort teamet",
"disband_team_confirmation_message": "Är du säker på att du vill ta bort detta team? Alla som du har delat den här teamlänken med kommer inte längre att kunna boka med den.",
"disband_org": "Upplös organisation",
"disband_org": "Upplös Organization",
"disband_org_confirmation_message": "Är du säker på att du vill upplösa denna organisation? Alla team och medlemmar kommer att tas bort.",
"remove_member_confirmation_message": "Är du säker på att du vill ta bort denna medlem från teamet?",
"confirm_disband_team": "Ja, ta bort teamet",
@@ -873,7 +873,7 @@
"no_category_apps_description_automation": "Lägg till en automationsapp att använda",
"no_category_apps_description_other": "Lägg till en annan typ av app för att göra alla möjliga saker",
"no_category_apps_description_web3": "Lägg till en web3-app för dina bokningssidor",
"no_category_apps_description_messaging": "Lägg till en meddelandeapp för att skapa anpassade meddelanden och påminnelser",
"no_category_apps_description_messaging": "Lägg till en meddelandeapp för att skapa anpassade aviseringar och påminnelser",
"no_category_apps_description_crm": "Lägg till en CRM-app för att hålla reda på vilka du har träffat",
"installed_app_calendar_description": "Ställ in kalendrar att söka efter konflikter för att undvika dubbelbokningar.",
"installed_app_payment_description": "Konfigurera vilka betalningstjänster som ska användas när du debiterar dina kunder.",
@@ -883,7 +883,7 @@
"installed_app_automation_description": "Konfigurera vilka automationsappar som ska användas",
"installed_app_web3_description": "Konfigurera vilka web3-appar som ska användas för dina bokningssidor",
"installed_app_messaging_description": "Konfigurera vilka meddelandeappar som ska användas för att skapa anpassade aviseringar och påminnelser",
"installed_app_crm_description": "Konfigurera vilka CRM-appar som ska användas för att hålla reda på vem du har träffat",
"installed_app_crm_description": "Konfigurera vilka CRM-appar som ska användas för att hålla reda på vilka du har träffat",
"analytics": "Analys",
"empty_installed_apps_headline": "Inga appar installerade",
"empty_installed_apps_description": "Med appar kan du förbättra ditt arbetsflöde och din schemaläggning avsevärt.",
@@ -979,7 +979,7 @@
"confirm_delete_api_key": "Återkalla den här API-nyckeln",
"revoke_api_key": "Återkalla API-nyckel",
"api_key_copied": "API-nyckel kopierad!",
"api_key_expires_on": "API-nyckeln upphör att gälla den",
"api_key_expires_on": "API-nyckeln upphör att gälla",
"delete_api_key_confirm_title": "Ta bort denna API-nyckel permanent från ditt konto?",
"copy": "Kopiera",
"expire_date": "Förfallodatum",
@@ -1327,7 +1327,7 @@
"download_responses_description": "Ladda ned alla svar till ditt formulär i CSV-format.",
"download": "Ladda ned",
"download_recording": "Ladda ned inspelning",
"recording_from_your_recent_call": "En inspelning från ditt senaste samtal om {{appName}} är redo för nedladdning",
"recording_from_your_recent_call": "En inspelning från ditt senaste samtal om {{appName}} kan laddas ned",
"create_your_first_form": "Skapa ditt första formulär",
"create_your_first_form_description": "Med omdirigeringsformulär kan du ställa kvalificerade frågor och dirigera till rätt person eller händelsetyp.",
"create_your_first_webhook": "Skapa din första webhook",
@@ -1379,7 +1379,7 @@
"routing_forms_send_email_owner": "Skicka e-post till ägare",
"routing_forms_send_email_owner_description": "Skickar ett e-postmeddelande till ägaren när formuläret skickas",
"add_new_form": "Lägg till nytt formulär",
"add_new_team_form": "Lägg till ett nytt formulär till ditt team",
"add_new_team_form": "Lägg till ett nytt formulär i ditt team",
"create_your_first_route": "Skapa din första dirigering",
"route_to_the_right_person": "Skicka vidare till rätt person baserat på svaren i formuläret",
"form_description": "Skapa ditt formulär för att dirigera en bokare",
@@ -1494,9 +1494,9 @@
"must_enter_team_name": "Teamnamn måste anges",
"team_url_required": "Team-URL måste anges",
"url_taken": "Denna URL används redan",
"problem_registering_domain": "Ett problem inträffade vid registreringen av underdomänen, försök igen eller kontakta en administratör",
"problem_registering_domain": "Ett problem inträffade när underdomänen registrerades, försök igen eller kontakta en administratör",
"team_publish": "Publicera team",
"number_text_notifications": "Telefonnummer (SMS-notiser)",
"number_text_notifications": "Telefonnummer (SMS-aviseringar)",
"attendee_email_variable": "Deltagarens e-postadress",
"attendee_email_info": "Personens e-postadress för bokning",
"kbar_search_placeholder": "Ange ett kommando eller sök ...",
@@ -1659,10 +1659,10 @@
"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": "Du har blivit inbjuden att gå med i en {{appName}} {{entity}}",
"email_no_user_invite_heading": "Du har blivit inbjuden att gå med i en/ett {{appName}}-{{entity}}",
"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": "{{invitedBy}} har bjudit in dig att gå med i deras {{entity}} `{{teamName}}` på {{appName}}. {{appName}} är schemaläggaren som gör det möjligt för dig och din {{entity}} 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 njuta av stressfri schemaläggning med din {{entity}} på nolltid.",
"email_user_invite_subheading": "{{invitedBy}} har bjudit in dig att gå med i deras {{entity}} '{{teamName}}' på {{appName}}. {{appName}} är schemaläggaren som gör det möjligt för dig och din/ditt {{entity}} att schemalägga möten utan att skicka e-post fram och tillbaka.",
"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",
"email_no_user_step_three": "Ange din tillgänglighet",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "En deltagare deltar inte längre i din händelse",
"attendee_no_longer_attending_subtitle": "{{name}} har avbokat. Detta innebär att en plats har blivit ledig för denna tid",
"create_event_on": "Skapa händelse i",
"create_routing_form_on": "Skapa routing-formulär",
"create_routing_form_on": "Skapa omdirigeringsformulär",
"default_app_link_title": "Skapa en standardapplänk",
"default_app_link_description": "Om du skapar en standardapplänk kan alla händelsetyper som nyligen skapats använda den applänk som du har angett.",
"organizer_default_conferencing_app": "Arrangörens standardapp",
@@ -1840,8 +1840,8 @@
"edit_invite_link": "Redigera länkinställningar",
"invite_link_copied": "Inbjudningslänk kopierad",
"invite_link_deleted": "Inbjudningslänk borttagen",
"invite_link_updated": "Inställningar för inbjudningslänk sparade",
"link_expires_after": "Länkar som upphör att gälla efter...",
"invite_link_updated": "Inställningar för inbjudningslänk har sparats",
"link_expires_after": "Länkarna upphör att gälla efter ...",
"one_day": "1 dag",
"seven_days": "7 dagar",
"thirty_days": "30 dagar",
@@ -1876,7 +1876,7 @@
"connect_google_workspace": "Anslut Google Workspace",
"google_workspace_admin_tooltip": "Du måste vara Workspace-administratör för att använda denna funktion",
"first_event_type_webhook_description": "Skapa din första webhook för denna händelsetyp",
"install_app_on": "Installera appen den",
"install_app_on": "Installera appen på",
"create_for": "Skapa för",
"setup_organization": "Konfigurera en organisation",
"organization_banner_description": "Skapa en miljö där dina team kan skapa delade appar, arbetsflöden och händelsetyper med round-robin och kollektiv schemaläggning.",
@@ -1899,31 +1899,31 @@
"invite_organization_admins": "Bjud in organisationsadministratörer",
"invite_organization_admins_description": "Dessa administratörer har tillgång till alla team i din organisation. Du kan lägga till teamadministratörer och medlemmar senare.",
"set_a_password": "Konfigurera ett lösenord",
"set_a_password_description": "Detta skapar ett nytt användarkonto med din organisations e-postadress och detta lösenord.",
"set_a_password_description": "Detta skapar ett nytt användarkonto med din organisations e-postadress och det här lösenordet.",
"organization_logo": "Organisationens logotyp",
"organization_about_description": "Några meningar om din organisation. Detta kommer att visas på din organisations offentliga profilsida.",
"organization_about_description": "Några meningar om din organisation. Detta visas på din organisations offentliga profilsida.",
"ill_do_this_later": "Jag gör det senare",
"verify_your_email": "Verifiera din e-postadress",
"enter_digit_code": "Ange den 6-siffriga koden vi skickade till {{email}}",
"enter_digit_code": "Ange den 6-siffriga koden som vi skickade till {{email}}",
"verify_email_organization": "Verifiera din e-postadress för att skapa en organisation",
"code_provided_invalid": "Koden är inte giltig, försök igen",
"email_already_used": "E-postadressen används redan",
"organization_admin_invited_heading": "Du har blivit inbjuden att gå med i {{orgName}}",
"organization_admin_invited_body": "Gå med i ditt team på {{orgName}} och börja fokusera på att mötas, inte skapa möten!",
"organization_admin_invited_body": "Gå med i ditt team på {{orgName}} och börja fokusera på att mötas istället för att skapa möten!",
"duplicated_slugs_warning": "Följande team kunde inte skapas på grund av dubblerade sluggar: {{slugs}}",
"team_names_empty": "Teamnamn får inte lämnas tomt",
"team_names_repeated": "Teamnamn kan inte upprepas",
"user_belongs_organization": "Användaren tillhör en organisation",
"org_no_teams_yet": "Denna organisation har inga team än",
"org_no_teams_yet_description": "Om du är administratör ska du se till att skapa team som ska visas här.",
"org_no_teams_yet_description": "Om du är administratör ska du skapa team som visas här.",
"set_up": "Konfigurera",
"set_up_your_profile": "Konfigurera din profil",
"set_up_your_profile_description": "Låt folk veta vem du är inom {{orgName}} och när de engagerar sig i din offentliga länk.",
"set_up_your_profile_description": "Meddela andra vem du är inom {{orgName}} och när de engagerar sig i din offentliga länk.",
"my_profile": "Min profil",
"my_settings": "Mina inställningar",
"crm": "CRM",
"messaging": "Meddelanden",
"sender_id_info": "Namn eller nummer som visas som avsändare av ett SMS (vissa länder tillåter inte alfanumeriska avsändar-ID)",
"sender_id_info": "Namn eller nummer som visas som avsändare av ett SMS (vissa länder tillåter inte alfanumeriska avsändar-ID:n)",
"org_admins_can_create_new_teams": "Endast administratören för din organisation kan skapa nya team",
"google_new_spam_policy": "Googles nya skräppostpolicy kan hindra dig från att få e-post och kalenderaviseringen om denna bokning.",
"resolve": "Lös",
@@ -1933,7 +1933,7 @@
"copy_link_org": "Kopiera länk till organisation",
"404_the_org": "Organisationen",
"404_the_team": "Teamet",
"404_claim_entity_org": "Registrera din underdomän för din organisation",
"404_claim_entity_org": "Registrera underdomänen för din organisation",
"404_claim_entity_team": "Registrera det här teamet och börja hantera scheman tillsammans",
"insights_all_org_filter": "Alla",
"insights_team_filter": "Team: {{teamName}}",
+31 -31
View File
@@ -13,15 +13,15 @@
"reset_password_subject": "{{appName}}: Şifre sıfırlama talimatları",
"verify_email_subject": "{{appName}}: Hesabınızı doğrulayın",
"check_your_email": "E-postanızı kontrol edin",
"verify_email_page_body": "{{email}} adresine bir e-posta gönderdik. {{appName}} tarafından gönderilen e-postaların ve takvim bilgilerinin güvenilir bir şekilde teslim edilmesini sağlamak için e-posta adresinizi doğrulamanız önemlidir.",
"verify_email_page_body": "{{email}} adresine bir e-posta gönderdik. {{appName}} tarafından gönderilen e-posta ve takvim bilgilerinin güvenilir bir şekilde teslim edilmesini sağlamak için e-posta adresinizi doğrulamanız önemlidir.",
"verify_email_banner_body": "E-postaların ve takvim bilgilerinin güvenilir bir şekilde teslim edilmesini sağlamak için e-posta adresinizi doğrulayın",
"verify_email_email_header": "E-posta adresinizi doğrulayın",
"verify_email_email_button": "E-postayı doğrula",
"verify_email_email_body": "Lütfen aşağıdaki düğmeyi tıklayarak e-posta adresinizi doğrulayın.",
"verify_email_email_link_text": "Düğmelere tıklamayı sevmiyorsanız, işte bağlantı:",
"verify_email_email_link_text": "Düğmelere tıklamayı sevmiyorsanız işte bağlantı:",
"email_sent": "E-posta başarıyla gönderildi",
"event_declined_subject": "Reddedildi: {{title}}, {{date}} tarihinde",
"event_cancelled_subject": "İptal edildi: {{title}}, {{date}} tarihinde",
"event_cancelled_subject": "İptal edildi: {{date}} tarihindeki {{title}}",
"event_request_declined": "Etkinlik talebiniz reddedildi",
"event_request_declined_recurring": "Yinelenen etkinlik talebiniz reddedildi",
"event_request_cancelled": "Planlanan etkinliğiniz iptal edildi",
@@ -89,7 +89,7 @@
"event_has_been_rescheduled": "Güncellendi - Etkinliğiniz yeniden planlandı",
"request_reschedule_subtitle": "{{organizer}} rezervasyonu iptal etti ve sizden başka bir saat seçmenizi istiyor.",
"request_reschedule_title_organizer": "{{attendee}} adlı kişiye yeniden planlama talebinde bulundunuz",
"request_reschedule_subtitle_organizer": "Rezervasyonu iptal ettiniz ve {{attendee}} isimli kişinin sizinle yeni bir rezervasyon saati belirlemesi gerekiyor.",
"request_reschedule_subtitle_organizer": "Rezervasyonu iptal ettiniz ve {{attendee}} adlı kişinin sizinle yeni bir rezervasyon saati seçmesi gerekiyor.",
"rescheduled_event_type_subject": "Yeniden planlama isteği gönderildi: {{date}} tarihinde {{name}} ile {{eventType}}",
"requested_to_reschedule_subject_attendee": "Yeniden Planlama İşlemi Gerekiyor: Lütfen {{name}} ile {{eventType}} için yeni bir saat belirleyin",
"hi_user_name": "Merhaba {{name}}",
@@ -129,7 +129,7 @@
"team_upgrade_banner_description": "Yeni ekip planımızı denediğiniz için teşekkür ederiz. \"{{teamName}}\" adlı ekibinizin yükseltilmesi gerektiğini fark ettik.",
"upgrade_banner_action": "Buradan yükseltin",
"team_upgraded_successfully": "Ekibiniz başarıyla yükseltildi!",
"org_upgrade_banner_description": "Yeni Kurumsal planımızı denediğiniz için teşekkür ederiz. \"{{teamName}}\" adlı kuruluşunuzun planının yükseltilmesi gerektiğini fark ettik.",
"org_upgrade_banner_description": "Yeni Organization planımızı denediğiniz için teşekkür ederiz. \"{{teamName}}\" adlı Kuruluşunuzun planının yükseltilmesi gerektiğini fark ettik.",
"org_upgraded_successfully": "Kuruluşunuz başarıyla yükseltildi!",
"use_link_to_reset_password": "Şifrenizi sıfırlamak için aşağıdaki bağlantıyı kullanın",
"hey_there": "Selam,",
@@ -248,7 +248,7 @@
"organization_general_description": "Ekibinizin dili ve saat dilimi için ayarları yönetin",
"few_sentences_about_yourself": "Birkaç cümleyle kendinizden bahsedin. Bu, kişisel URL sayfanızda görünecektir.",
"nearly_there": "Neredeyse bitti!",
"nearly_there_instructions": "Son bir şey; Kendiniz hakkında kısa bir açıklama yazmak ve bir resim koymak, rezervasyon almanıza ve insanların gerçekte kiminle rezervasyon yaptıklarını bilmelerine yardımcı olur.",
"nearly_there_instructions": "Son bir şey; kendiniz hakkında kısa bir açıklama yazmak ve bir resim koymak, rezervasyon almanıza ve insanların gerçekte kiminle rezervasyon yaptıklarını bilmelerine yardımcı olur.",
"set_availability_instructions": "Sürekli olarak müsait olduğunuz zaman aralıklarını tanımlayın. Daha sonra başka zaman aralıkları oluşturabilir ve bunları farklı takvimlere atayabilirsiniz.",
"set_availability": "Müsaitlik durumunuzu ayarlayın",
"continue_without_calendar": "Takvim olmadan devam et",
@@ -307,7 +307,7 @@
"layout": "Düzen",
"bookerlayout_default_title": "Varsayılan görünüm",
"bookerlayout_description": "Birden fazla seçim yapabilirsiniz ve rezervasyon yaptıran kullanıcılarınız görünümler arasında geçiş yapabilir.",
"bookerlayout_user_settings_title": "Rezervasyon sayfası düzeni",
"bookerlayout_user_settings_title": "Rezervasyon düzeni",
"bookerlayout_user_settings_description": "Birden fazla seçim yapabilirsiniz ve rezervasyon yaptıran kullanıcılar görünümler arasında geçiş yapabilir. Bu seçenek, her etkinlik için geçersiz kılınabilir.",
"bookerlayout_month_view": "Aylık",
"bookerlayout_week_view": "Haftalık",
@@ -586,7 +586,7 @@
"confirm_all": "Tümünü onayla",
"disband_team": "Ekibi Dağıt",
"disband_team_confirmation_message": "Bu ekibi dağıtmak istediğinizden emin misiniz? Bu ekip bağlantısını paylaştığınız herkes artık bu bağlantıyı kullanarak rezervasyon yapamayacaktır.",
"disband_org": "Kuruluşu Dağıt",
"disband_org": "Kuruluşu dağıt",
"disband_org_confirmation_message": "Bu kuruluşu dağıtmak istediğinizden emin misiniz? Tüm ekipler ve üyeler silinecek.",
"remove_member_confirmation_message": "Bu üyeyi ekipten çıkarmak istediğinizden emin misiniz?",
"confirm_disband_team": "Evet, ekibi dağıt",
@@ -774,7 +774,7 @@
"cal_provide_huddle01_meeting_url": "{{appName}}, bir Huddle01 web3 görüntülü toplantı URL'si sağlayacaktır.",
"cal_provide_teams_meeting_url": "{{appName}}, bir MS Teams toplantı URL'si sağlayacaktır. NOT: İŞ VEYA OKUL HESABINIZIN OLMASI GEREKİR",
"require_payment": "Ödemeyi Gerekli Kılın",
"you_need_to_add_a_name": "Bir ad eklemeniz gerekiyor",
"you_need_to_add_a_name": "Ad eklemeniz gerekiyor",
"commission_per_transaction": "işlem başına komisyon",
"event_type_updated_successfully_description": "Etkinlik türünüz başarıyla güncellendi.",
"hide_event_type": "Etkinlik türünü gizle",
@@ -909,7 +909,7 @@
"create_events_on": "Şurada etkinlik oluşturun:",
"enterprise_license": "Bu bir kurumsal özelliktir",
"enterprise_license_description": "Bu özelliği etkinleştirmek için {{consoleUrl}} konsolundan bir dağıtım anahtarı alın ve bunu .env dosyanıza CALCOM_LICENSE_KEY olarak ekleyin. Ekibinizin zaten bir lisansı varsa yardım için lütfen {{supportMail}} adresinden iletişime geçin.",
"enterprise_license_development": "Bu özelliği geliştirme modunda deneyebilirsiniz. Üretim kullanımı için bir yöneticinin <2>yetkilendirme/kurulum</2> seçeneklerine giderek ve bir lisans anahtarı girmesi gerekir.",
"enterprise_license_development": "Bu özelliği, geliştirme modunda deneyebilirsiniz. Üretim kullanımı için lütfen bir yöneticinin lisans anahtarını girmesi için <2>/auth/setup</2> adımlarını izlemesini sağlayın.",
"missing_license": "Eksik Lisans",
"signup_requires": "Ticari lisans gerekli",
"signup_requires_description": "{{companyName}} şu anda kayıt sayfasının ücretsiz, açık kaynaklı bir sürümünü sunmamaktadır. Kayıt bileşenlerine tam erişim elde etmek için ticari bir lisans almanız gerekiyor. Kişisel kullanım için hesap oluşturmak üzere Prisma Data veya başka bir Postgres arayüzü öneriyoruz.",
@@ -1292,7 +1292,7 @@
"conferencing_description": "Toplantılarınız için favori video konferans uygulamalarınızı yönetin",
"add_conferencing_app": "Konferans Uygulaması ekle",
"password_description": "Hesap şifreleriniz için ayarları yönetin",
"set_up_two_factor_authentication": "İki Faktörlü Kimlik Doğrulamanızı ayarlayın",
"set_up_two_factor_authentication": "İki Adımlı Kimlik Doğrulamanızı ayarlayın",
"we_just_need_basic_info": "Profil kurulumunuzu almak için sadece bazı temel bilgilere ihtiyacımız var.",
"skip": "Atla",
"do_this_later": "Bunu daha sonra yap",
@@ -1519,7 +1519,7 @@
"find_the_best_person": "Mevcut en iyi kişiyi bulun ve ekip üyeleriniz arasında rotasyon yapın.",
"fixed_round_robin": "Sabit döngü",
"add_one_fixed_attendee": "Bir sabit katılımcı ekleyin ve katılımcı sayısına göre rotasyon yapın.",
"calcom_is_better_with_team": "{{appName}}, ekiplerle daha iyidir",
"calcom_is_better_with_team": "{{appName}}, ekiplerle daha iyi",
"the_calcom_team": "{{companyName}} ekibi",
"add_your_team_members": "Ekip üyelerinizi etkinlik türlerinize ekleyin. Herkesi eklemek için toplu planlamayı kullanın veya döngüsel planlama ile en uygun kişiyi bulun.",
"booking_limit_reached": "Bu etkinlik türü için Rezervasyon Sınırına ulaşıldı",
@@ -1659,7 +1659,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": "{{appName}} {{entity}} uygulamasına katılmaya davet edildiniz",
"email_no_user_invite_heading": "{{appName}} {{entity}} 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": "{{invitedBy}}, sizi {{appName}} uygulamasındaki {{entity}} `{{teamName}}` ekibine katılmaya davet etti. {{appName}}, size ve {{entity}} 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.",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "Bir katılımcı artık etkinliğinize katılmıyor",
"attendee_no_longer_attending_subtitle": "{{name}} etkinlik katılımını iptal etti. Bu, bu zaman aralığı için bir yerin açıldığı anlamına gelir",
"create_event_on": "Şu tarih için etkinlik oluşturun:",
"create_routing_form_on": "Şurası için yönlendirme formu oluştur:",
"create_routing_form_on": "Şurada yönlendirme formu oluştur:",
"default_app_link_title": "Varsayılan uygulama bağlantısını ayarlayın",
"default_app_link_description": "Varsayılan uygulama bağlantısını ayarlamak, yeni oluşturulan tüm etkinlik türlerinin ayarladığınız uygulama bağlantısını kullanmasına olanak tanır.",
"organizer_default_conferencing_app": "Organizatörün varsayılan uygulaması",
@@ -1738,7 +1738,7 @@
"spot_popular_event_types": "Popüler etkinlik türlerini tespit edin",
"spot_popular_event_types_description": "Hangi etkinlik türünüzün en çok tıklandığını ve rezervasyon aldığını görün",
"no_responses_yet": "Henüz yanıt yok",
"no_routes_defined": "Yönlendirmeler tanımlanmadı",
"no_routes_defined": "Yönlendirme tanımlanmadı",
"this_will_be_the_placeholder": "Bu, yer tutucu olacak",
"error_booking_event": "Etkinlik rezervasyonu yapılırken bir hata oluştu, lütfen sayfayı yenileyerek tekrar deneyin",
"timeslot_missing_title": "Zaman aralığı seçilmedi",
@@ -1841,7 +1841,7 @@
"invite_link_copied": "Davet bağlantısı kopyalandı",
"invite_link_deleted": "Davet bağlantısı silindi",
"invite_link_updated": "Davet bağlantısı ayarları kaydedildi",
"link_expires_after": "Bağlantının sona erme süresi ayarlandı...",
"link_expires_after": "Bağlantıların sona erme süresini şuna ayarla...",
"one_day": "1 gün",
"seven_days": "7 gün",
"thirty_days": "30 gün",
@@ -1876,17 +1876,17 @@
"connect_google_workspace": "Google Workspace'i bağlayın",
"google_workspace_admin_tooltip": "Bu özelliği kullanmak için Çalışma Alanı Yöneticisi olmalısınız",
"first_event_type_webhook_description": "Bu etkinlik türü için ilk web kancanızı oluşturun",
"install_app_on": "Uygulamayı şuraya yükle:",
"install_app_on": "Uygulamayı şurada yükle:",
"create_for": "Oluşturun",
"setup_organization": "Bir Kuruluş Oluşturun",
"setup_organization": "Kuruluş oluşturun",
"organization_banner_description": "Ekiplerinizin, döngüsel ve toplu planlama ile paylaşılan uygulamalar, iş akışları ve olay türleri oluşturabileceği bir ortam oluşturun.",
"organization_banner_title": "Kuruluşları birden çok ekiple yönetin",
"set_up_your_organization": "Kuruluşunuzu düzenleyin",
"organizations_description": "Kuruluşlar, ekiplerin paylaşımlı etkinlik türleri, uygulamalar, iş akışları ve daha fazlasını oluşturabileceği paylaşımlı ortamlardır.",
"must_enter_organization_name": "Bir kuruluş adı girilmelidir",
"must_enter_organization_name": "Kuruluş adı girilmeli",
"must_enter_organization_admin_email": "Kuruluşunuzun e-posta adresini girmelisiniz",
"admin_email": "Kuruluşunuzun e-posta adresi",
"admin_username": "Yöneticinin adı",
"admin_username": "Yöneticinin kullanıcı adı",
"organization_name": "Kuruluş adı",
"organization_url": "Kuruluş URL'si",
"organization_verify_header": "Kuruluşunuzun e-postasını doğrulayın",
@@ -1894,31 +1894,31 @@
"additional_url_parameters": "Ek URL parametreleri",
"about_your_organization": "Kuruluşunuz hakkında",
"about_your_organization_description": "Kuruluşlar; paylaşımlı üyeler, etkinlik türleri, uygulamalar, iş akışları ve daha fazlasıyla birden çok ekip oluşturabileceğiniz paylaşımlı ortamlardır.",
"create_your_teams": "Ekibinizi oluşuturun",
"create_your_teams": "Ekiplerinizi oluşturun",
"create_your_teams_description": "Ekip üyelerinizi kuruluşunuza ekleyerek planlama işlerinizi birlikte yapmaya başlayın",
"invite_organization_admins": "Kuruluşunuzun yöneticilerini davet edin",
"invite_organization_admins_description": "Bu yöneticilerin kuruluşunuzdaki tüm ekiplere erişimi olacaktır. Ekip yöneticilerini ve üyeleri daha sonra ekleyebilirsiniz.",
"set_a_password": "Bir şifre belirleyin",
"set_a_password_description": "Kuruluşunuzun e-posta adresi ve bu şifre ile yeni bir kullanıcı hesabı oluşturulacaktır.",
"invite_organization_admins_description": "Bu yöneticilerin kuruluşunuzdaki tüm ekiplere erişimi olacak. Ekip yöneticilerini ve üyeleri daha sonra ekleyebilirsiniz.",
"set_a_password": "Şifre belirleyin",
"set_a_password_description": "Bu işlem, kuruluşunuzun e-posta adresi ve bu şifre ile yeni bir kullanıcı hesabı oluşturur.",
"organization_logo": "Kuruluş Logosu",
"organization_about_description": "Birkaç cümleyle kuruluşunuzdan bahsedin. Bu, kuruluşunuzun herkese açık profil sayfasında görünecektir.",
"organization_about_description": "Birkaç cümleyle kuruluşunuzdan bahsedin. Bu, kuruluşunuzun herkese açık profil sayfasında görünür.",
"ill_do_this_later": "Bunu daha sonra yapacağım",
"verify_your_email": "E-posta adresinizi doğrulayın",
"enter_digit_code": "{{email}} adresine gönderdiğimiz 6 haneli kodu girin",
"verify_email_organization": "Bir kuruluş oluşturmak için e-postanızı doğrulayın",
"verify_email_organization": "Kuruluş oluşturmak için e-postanızı doğrulayın",
"code_provided_invalid": "Sağlanan kod geçerli değil, tekrar deneyin",
"email_already_used": "E-posta zaten kullanılıyor",
"organization_admin_invited_heading": "{{orgName}} ekibine katılmaya davet edildiniz",
"organization_admin_invited_body": "{{orgName}} ekibine katılın ve toplantıları planlamaya değil, toplantılarınıza odaklanın!",
"duplicated_slugs_warning": "Aşağıdaki ekipler, yinelenen bilgi hataları nedeniyle oluşturulamadı: {{slugs}}",
"duplicated_slugs_warning": "Aşağıdaki ekipler, yinelenen slug'lar nedeniyle oluşturulamadı: {{slugs}}",
"team_names_empty": "Ekip adları boş olamaz",
"team_names_repeated": "Takım adları tekrar edilemez",
"team_names_repeated": "Ekip adları tekrarlanamaz",
"user_belongs_organization": "Kullanıcı bir kuruluşa ait",
"org_no_teams_yet": "Bu kuruluşun henüz ekibi yok",
"org_no_teams_yet_description": "Yöneticiyseniz, burada gösterilecek ekipler oluşturduğunuzdan emin olun.",
"org_no_teams_yet_description": "Yöneticiyseniz burada gösterilecek ekipler oluşturduğunuzdan emin olun.",
"set_up": "Düzenle",
"set_up_your_profile": "Profilinizi düzenleyin",
"set_up_your_profile_description": "{{orgName}}'deki kişilerin kim olduğunuzu ve herkese açık bir bağlantı aracılığıyla sizinle nasıl bağlantı kuracaklarını bilmelerini sağlayın.",
"set_up_your_profile_description": "{{orgName}} adlı kuruluş dâhilinde ve herkese açık bağlantınızla etkileşim kurduklarında insanların kim olduğunuzu bilmelerini sağlayın.",
"my_profile": "Profilim",
"my_settings": "Ayarlarım",
"crm": "CRM",
@@ -1938,7 +1938,7 @@
"insights_all_org_filter": "Tümü",
"insights_team_filter": "Ekip: {{teamName}}",
"insights_user_filter": "Kullanıcı: {{userName}}",
"insights_subtitle": "Etkinlikleriniz için rezervasyon Insights'lerini görüntüleyin",
"insights_subtitle": "Etkinliklerinizdeki rezervasyon insights'ı görüntüleyin",
"custom_plan": "Özel Plan",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Yeni dizelerinizi yukarıya ekleyin ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+69 -69
View File
@@ -13,13 +13,13 @@
"reset_password_subject": "{{appName}}: інструкції зі скидання пароля",
"verify_email_subject": "{{appName}}: підтвердьте свій обліковий запис",
"check_your_email": "Перевірте свою електронну пошту",
"verify_email_page_body": "Ми надіслали електронний лист на адресу {{email}}. Підтвердьте свою електронну адресу, щоб забезпечити надійну доставку електронних листів і інформації з календаря від {{appName}}.",
"verify_email_banner_body": "Підтвердьте свою електронну адресу, щоб забезпечити надійну доставку електронних листів і інформації з календаря",
"verify_email_page_body": "Ми надіслали лист на адресу {{email}}. Підтвердьте свою електронну адресу, щоб уникнути проблем із доставкою листів і даних календаря із застосунку {{appName}}.",
"verify_email_banner_body": "Підтвердьте свою електронну адресу, щоб уникнути проблем із доставкою листів і даних календаря",
"verify_email_email_header": "Підтвердьте свою електронну адресу",
"verify_email_email_button": "Підтвердити ел. адресу",
"verify_email_email_body": "Підтвердьте свою електронну адресу, натиснувши кнопку нижче.",
"verify_email_email_link_text": "Ось посилання, яким можна скористатись, якщо ви не любите натискати кнопки:",
"email_sent": "Електронний лист надіслано",
"verify_email_email_link_text": "Можете скористатися цим посиланням, якщо не любите натискати кнопки:",
"email_sent": "Лист надіслано",
"event_declined_subject": "Відхилено: {{title}}, {{date}}",
"event_cancelled_subject": "Скасовано: {{title}}, {{date}}",
"event_request_declined": "Ваш запит на захід відхилено",
@@ -87,7 +87,7 @@
"your_meeting_has_been_booked": "Вашу нараду заброньовано",
"event_type_has_been_rescheduled_on_time_date": "Ваш {{title}} перенесено на {{date}}.",
"event_has_been_rescheduled": "Оновлено – ваш захід перенесено",
"request_reschedule_subtitle": "Організатор {{organizer}} скасував бронювання та попросив вас вибрати інший час.",
"request_reschedule_subtitle": "Організатор {{organizer}} скасував бронювання й попросив вас вибрати інший час.",
"request_reschedule_title_organizer": "Ви попросили учасника {{attendee}} перенести бронювання",
"request_reschedule_subtitle_organizer": "Ви скасували бронювання. {{attendee}} має забронювати інший час.",
"rescheduled_event_type_subject": "Запит на перенесення надіслано: {{eventType}} «{{name}}», {{date}}",
@@ -118,7 +118,7 @@
"team_info": "Про команду",
"request_another_invitation_email": "Якщо ви не хочете використовувати {{toEmail}} в {{appName}} або вже маєте обліковий запис {{appName}}, надішліть запит на запрошення на потрібну електронну адресу.",
"you_have_been_invited": "Вас запрошено приєднатися до команди «{{teamName}}»",
"user_invited_you": "{{user}} запросив(-ла) вас приєднатися сюди: {{entity}} «{{team}}» в {{appName}}",
"user_invited_you": "{{user}} запрошує вас приєднатись: {{entity}} «{{team}}» в {{appName}}",
"hidden_team_member_title": "У цій команді вас приховано",
"hidden_team_member_message": "Ваше місце не оплачено. Перейдіть на версію Pro або попросіть власника команди оплатити ваше місце.",
"hidden_team_owner_message": "Щоб користуватися функціями команди, потрібен обліковий запис версії Pro. До переходу на цю версію вас буде приховано.",
@@ -129,8 +129,8 @@
"team_upgrade_banner_description": "Дякуємо, що спробували наш новий план для команд! Ми помітили, що вашу команду «{{teamName}}» потрібно перевести на план вищого рівня.",
"upgrade_banner_action": "Перейдіть на інший план",
"team_upgraded_successfully": "Версію для вашої команди оновлено!",
"org_upgrade_banner_description": "Дякуємо, що спробували наш новий план Organization! Ми помітили, що команду «{{teamName}}» вашої організації потрібно перевести на план вищого рівня.",
"org_upgraded_successfully": "Тарифний план вашої організації змінено!",
"org_upgrade_banner_description": "Дякуємо, що спробували наш новий план Organization! Ми помітили, що для команди «{{teamName}}» вашої організації потрібно підвищити рівень плану.",
"org_upgraded_successfully": "Рівень плану вашої організації підвищено!",
"use_link_to_reset_password": "Скористайтеся посиланням нижче, щоб скинути пароль",
"hey_there": "Привіт!",
"forgot_your_password_calcom": "Забули пароль? – {{appName}}",
@@ -197,7 +197,7 @@
"blog": "Блог",
"blog_description": "Читайте наші останні новини та статті",
"join_our_community": "Долучайтеся до нашої спільноти",
"join_our_discord": "Приєднайтеся до нашого каналу в Discord",
"join_our_discord": "Приєднайтеся до нас у Discord",
"404_claim_entity_user": "Виберіть собі ім’я користувача та почніть планувати заходи",
"popular_pages": "Популярні сторінки",
"register_now": "Зареєструватися",
@@ -248,7 +248,7 @@
"organization_general_description": "Налаштуйте параметри мови й часового поясу для своєї команди",
"few_sentences_about_yourself": "Кілька речень про вас. Ця інформація з’явиться на сторінці за вашою URL-адресою.",
"nearly_there": "Майже готово!",
"nearly_there_instructions": "І останнє: стислі відомості про вас і ваше фото заохочуватимуть інших здійснювати бронювання. Так інші бачитимуть, з ким вони домовляються.",
"nearly_there_instructions": "І останнє: стислі відомості про вас і ваше фото заохочуватимуть інших бронюванювати ваш час, адже вони бачитимуть, з ким домовляються.",
"set_availability_instructions": "Визначте повторювані діапазони часу, у які ви доступні. Ви зможете додати більше таких діапазонів пізніше та призначити їх різним календарям.",
"set_availability": "Укажіть, коли ви доступні",
"continue_without_calendar": "Продовжити без календаря",
@@ -305,17 +305,17 @@
"failed": "Не виконано",
"password_has_been_reset_login": "Ваш пароль скинуто. Тепер ви можете ввійти в систему з новим паролем.",
"layout": "Макет",
"bookerlayout_default_title": "Вид за замовчуванням",
"bookerlayout_description": "Ви можете вибрати кілька макетів, а користувачі, які здійснюють бронювання, зможуть перемикатися між ними.",
"bookerlayout_default_title": "Макет за замовчуванням",
"bookerlayout_description": "Виберіть кілька макетів, і користувачі, які здійснюють бронювання, зможуть перемикатися між ними.",
"bookerlayout_user_settings_title": "Макет бронювання",
"bookerlayout_user_settings_description": "Ви можете вибрати кілька макетів, а користувачі, які здійснюють бронювання зможуть перемикатися між ними. Цей параметр можна змінювати для кожного заходу.",
"bookerlayout_user_settings_description": "Виберіть кілька макетів, і користувачі, які здійснюють бронювання, зможуть перемикатися між ними. Цей параметр можна змінити для кожного заходу.",
"bookerlayout_month_view": "Місяць",
"bookerlayout_week_view": "Щотижня",
"bookerlayout_column_view": "Колонка",
"bookerlayout_week_view": "Тиждень",
"bookerlayout_column_view": "Стовпець",
"bookerlayout_error_min_one_enabled": "Потрібно ввімкнути принаймні один макет.",
"bookerlayout_error_default_not_enabled": "Макет, який ви вибрали як макет за замовчуванням, не є одним з увімкнених макетів.",
"bookerlayout_error_unknown_layout": "Вибраний макет не допустимий.",
"bookerlayout_override_global_settings": "Ви можете керувати цим параметром для всіх типів заходів у розділі <2>«Параметри» / «Вигляд»</2> або <6>перевизначити його лише для цього заходу</6>.",
"bookerlayout_error_default_not_enabled": "Макет, який ви вибрали як макет за замовчуванням, не ввімкнено.",
"bookerlayout_error_unknown_layout": "Вибраний макет недійсний.",
"bookerlayout_override_global_settings": "Ви можете налаштувати цей параметр для всіх типів заходів у розділі <2>«Параметри» / «Вигляд»</2> або <6>перевизначити його лише для цього заходу</6>.",
"unexpected_error_try_again": "Сталася неочікувана помилка. Повторіть спробу.",
"sunday_time_error": "Неприпустимий час у неділю",
"monday_time_error": "Неприпустимий час у понеділок",
@@ -339,7 +339,7 @@
"error_with_status_code_occured": "Сталася помилка з кодом стану: {{status}}.",
"error_event_type_url_duplicate": "Тип заходу із цією URL-адресою вже існує.",
"error_event_type_unauthorized_create": "Ви не можете створити цей захід",
"error_event_type_unauthorized_update": "Ви не можете редагувати цей захід",
"error_event_type_unauthorized_update": "Ви не можете змінити цей захід",
"error_workflow_unauthorized_create": "Ви не можете створити цей робочий процес",
"error_schedule_unauthorized_create": "Ви не можете створити цей розклад",
"booking_already_cancelled": "Це бронювання вже скасовано",
@@ -403,7 +403,7 @@
"recording_ready": "Посилання для завантаження запису готове",
"booking_created": "Бронювання створено",
"booking_rejected": "Бронювання відхилено",
"booking_requested": "Бронювання запитано",
"booking_requested": "Запит на бронювання надіслано",
"meeting_ended": "Нарада завершилася",
"form_submitted": "Форму надіслано",
"event_triggers": "Тригери заходів",
@@ -413,8 +413,8 @@
"team_webhooks": "Вебгуки команди",
"create_new_webhook_to_account": "Створіть новий вебгук у своєму обліковому записі",
"new_webhook": "Новий вебгук",
"receive_cal_meeting_data": "Отримуйте дані про нараду в {{appName}} за вказаною URL-адресою: у реальному часі, а також під час планування та скасовування.",
"receive_cal_event_meeting_data": "Отримуйте дані про нараду в {{appName}} за вказаною URL-адресою: у реальному часі, а також під час її планування та скасовування.",
"receive_cal_meeting_data": "Отримуйте дані про нараду в застосунку {{appName}} за вказаною URL-адресою: у реальному часі, а також під час планування й скасування.",
"receive_cal_event_meeting_data": "Отримуйте дані про нараду в застосунку {{appName}} за вказаною URL-адресою: у реальному часі, а також під час її планування й скасування.",
"responsive_fullscreen_iframe": "Адаптивний повноекранний компонент iframe",
"loading": "Завантаження…",
"deleting": "Видалення…",
@@ -587,7 +587,7 @@
"disband_team": "Розпустити команду",
"disband_team_confirmation_message": "Справді розпустити цю команду? Ніхто з тих, кому ви надали посилання на неї, більше не зможе скористати ним, щоб забронювати час команди.",
"disband_org": "Розформувати організацію",
"disband_org_confirmation_message": "Ви дійсно бажаєте розформувати цю організацію? Усі команди й учасники будуть видалені.",
"disband_org_confirmation_message": "Справді розформувати цю організацію? Усі команди й учасників буде видалено.",
"remove_member_confirmation_message": "Справді вилучити цього учасника з команди?",
"confirm_disband_team": "Так, розпустити команду",
"confirm_remove_member": "Так, вилучити учасника",
@@ -695,7 +695,7 @@
"create_new_team": "Створити нову команду",
"open_invitations": "Відкриті запрошення",
"new_team": "Нова команда",
"create_first_team_and_invite_others": "Створіть свою першу команду та запросіть інших, щоб працювати разом.",
"create_first_team_and_invite_others": "Створіть свою першу команду й запросіть учасників, щоб працювати разом.",
"create_team_to_get_started": "Створіть команду, щоб почати",
"teams": "Команди",
"team": "Команда",
@@ -865,15 +865,15 @@
"installed_apps": "Установлені додатки",
"free_to_use_apps": "Безкоштовні",
"no_category_apps": "{{category}} — немає додатків",
"all_apps": "Усі додатки",
"all_apps": "Усі застосунки",
"no_category_apps_description_calendar": "Додайте додаток для календаря, щоб перевіряти, чи немає конфліктів у розкладі, і уникати подвійних бронювань",
"no_category_apps_description_conferencing": "Спробуйте додати додаток для конференцій, щоб здійснювати відеорозмови зі своїми клієнтами",
"no_category_apps_description_conferencing": "Спробуйте додати застосунок для відеоконференцій, щоб взаємодіяти зі своїми клієнтами",
"no_category_apps_description_payment": "Додайте платіжний додаток, щоб спростити трансакції між вами й вашими клієнтами",
"no_category_apps_description_analytics": "Вибрати аналітичний додаток для своїх сторінок бронювання",
"no_category_apps_description_automation": "Вибрати додаток для автоматизації",
"no_category_apps_description_other": "Додавайте інші додатки з різноманітними функціями",
"no_category_apps_description_web3": "Вибрати додаток web3 для своїх сторінок бронювання",
"no_category_apps_description_messaging": "Додайте застосунок для обміну повідомленнями, щоб налаштувати сповіщення та нагадування",
"no_category_apps_description_messaging": "Додайте застосунок для обміну повідомленнями, щоб налаштувати сповіщення й нагадування",
"no_category_apps_description_crm": "Додайте застосунок для CRM, щоб вести облік користувачів, з якими ви зустрічалися",
"installed_app_calendar_description": "Налаштуйте календарі, щоб перевіряти, чи немає конфліктів у розкладі, і уникати подвійних бронювань.",
"installed_app_payment_description": "Укажіть, які служби обробки платежів використовувати, коли клієнти вам платять.",
@@ -1004,7 +1004,7 @@
"team_impersonation_description": "Дозвольте власникам або адміністраторам своєї команди тимчасово входити під вашим іменем.",
"make_team_private": "Зробити команду приватною",
"make_team_private_description": "Учасники вашої команди не зможуть бачити інших учасників, якщо цей параметр ввімкнено.",
"you_cannot_see_team_members": "Ви не зможете бачити всіх учасників приватної команди.",
"you_cannot_see_team_members": "Ви не можете бачити всіх учасників приватної команди.",
"allow_booker_to_select_duration": "Дозволити автору бронювання вибирати тривалість",
"impersonate_user_tip": "Усі випадки використання цієї функції підпадають під аудит.",
"impersonating_user_warning": "Виконується роль користувача {{user}}.",
@@ -1292,7 +1292,7 @@
"conferencing_description": "Керуйте додатками для відеоконференцій і нарад",
"add_conferencing_app": "Додати застосунок для відеоконференцій",
"password_description": "Налаштуйте параметри паролів облікових записів",
"set_up_two_factor_authentication": "Налаштуйте двофакторну автентифікацію",
"set_up_two_factor_authentication": "Налаштувати двофакторну автентифікацію",
"we_just_need_basic_info": "Щоб налаштувати ваш профіль, нам потрібні базові дані.",
"skip": "Пропустити",
"do_this_later": "Зробити це пізніше",
@@ -1306,7 +1306,7 @@
"connect_analytics_apps": "Підключити аналітичні додатки",
"connect_other_apps": "Підключити інші додатки",
"connect_web3_apps": "Підключити додатки web3",
"connect_messaging_apps": "Підключити застосунки для обміну повідомленнями",
"connect_messaging_apps": "Підключити застосунки для повідомлень",
"connect_crm_apps": "Підключити застосунки CRM",
"current_step_of_total": "Крок {{currentStep}} із {{maxSteps}}",
"add_variable": "Додати змінну",
@@ -1327,7 +1327,7 @@
"download_responses_description": "Завантажте всі відповіді у свою форму у форматі CSV.",
"download": "Завантажити",
"download_recording": "Завантажити запис",
"recording_from_your_recent_call": "Запис вашого попереднього дзвінка в {{appName}} готовий до завантаження",
"recording_from_your_recent_call": "Запис вашого останнього дзвінка в застосунку {{appName}} готовий до завантаження",
"create_your_first_form": "Створіть свою першу форму",
"create_your_first_form_description": "Форми переспрямування дають змогу надавати уточнювальні запитання та переходити до відповідної особи або типу заходу.",
"create_your_first_webhook": "Створіть свій перший вебгук",
@@ -1338,7 +1338,7 @@
"profile_team_description": "Керуйте налаштуваннями профілю своєї команди",
"profile_org_description": "Керуйте налаштуваннями профілю своєї організації",
"members_team_description": "Користувачі в цій групі",
"organization_description": "Керуйте адміністраторами та учасниками вашої організації",
"organization_description": "Керуйте адміністраторами й учасниками своєї організації",
"team_url": "URL команди",
"team_members": "Учасники команди",
"more": "Більше",
@@ -1379,7 +1379,7 @@
"routing_forms_send_email_owner": "Надіслати власнику електронний лист",
"routing_forms_send_email_owner_description": "Коли надсилається форма, власник отримує електронний лист",
"add_new_form": "Додати нову форму",
"add_new_team_form": "Додайте нову форму для своєї команди",
"add_new_team_form": "Додати нову форму для своєї команди",
"create_your_first_route": "Створіть перше переспрямування",
"route_to_the_right_person": "Переспрямовуйте клієнтів відповідній особі з урахуванням відповідей на запитання форми",
"form_description": "Створіть власну форму для переспрямування автора бронювання",
@@ -1494,7 +1494,7 @@
"must_enter_team_name": "Потрібно ввести назву команди",
"team_url_required": "Потрібно ввести URL-адресу команди",
"url_taken": "Цю URL-адресу вже зайнято",
"problem_registering_domain": "Сталася помилка під час реєстрації піддомену. Спробуйте ще раз або зверніться до адміністратора.",
"problem_registering_domain": "Сталася помилка під час реєстрації піддомену. Повторіть спробу або зверніться до адміністратора.",
"team_publish": "Опублікувати команду",
"number_text_notifications": "Номер телефону (текстові сповіщення)",
"attendee_email_variable": "Адреса ел. пошти учасника",
@@ -1519,7 +1519,7 @@
"find_the_best_person": "Знайдіть найвідповіднішого доступного члена команди та почергово залучайте інших.",
"fixed_round_robin": "Фіксоване циклічне планування",
"add_one_fixed_attendee": "Додайте одного постійного учасника та циклічно замінюйте кількох інших учасників.",
"calcom_is_better_with_team": "З {{appName}} краще працювати в командах",
"calcom_is_better_with_team": "Командна робота ефективніша із застосунком {{appName}}",
"the_calcom_team": "Команда {{companyName}}",
"add_your_team_members": "Додавайте членів своєї команди в типи заходів. Колективне планування дає змогу включати всіх або знаходити найвідповіднішого члена завдяки циклічній ротації.",
"booking_limit_reached": "Для цього типу заходу досягнуто ліміт бронювання",
@@ -1539,7 +1539,7 @@
"navigate_installed_apps": "Перейти до встановлених додатків",
"disabled_calendar": "Якщо ви встановите інший календар, у нього буде додано нові бронювання. Якщо цього не станеться, підключіть новий календар, щоб не пропускати нові бронювання.",
"enable_apps": "Увімкнути додатки",
"enable_apps_description": "Активуйте додатки, які користувачі зможуть інтегрувати з {{appName}}",
"enable_apps_description": "Активуйте застосунки, які користувачі зможуть інтегрувати із застосунком {{appName}}",
"purchase_license": "Придбати ліцензію",
"already_have_key": "У мене вже є ключ:",
"already_have_key_suggestion": "Скопіюйте сюди наявну змінну оточення CALCOM_LICENSE_KEY.",
@@ -1553,8 +1553,8 @@
"no_available_apps": "Немає доступних додатків",
"no_available_apps_description": "Переконайтеся, що packages/app-store містить додатки для розгортання",
"no_apps": "У цьому екземплярі Cal немає ввімкнених додатків",
"no_apps_configured": "Поки що ніяких додатків не налаштовано",
"enable_in_settings": "Ви можете увімкнути додатки в налаштуваннях",
"no_apps_configured": "Поки немає налаштованих застосунків",
"enable_in_settings": "Ви можете ввімкнути застосунки в налаштуваннях",
"please_contact_admin": "Зверніться до адміністратора",
"apps_settings": "Налаштування додатків",
"fill_this_field": "Заповніть це поле",
@@ -1659,10 +1659,10 @@
"delete_sso_configuration_confirmation_description": "Справді видалити конфігурацію {{connectionType}}? Учасники вашої команди, які входять через {{connectionType}}, не зможуть ввійти в Cal.com.",
"organizer_timezone": "Часовий пояс організатора",
"email_user_cta": "Переглянути запрошення",
"email_no_user_invite_heading": "Вас запрошено приєднатися до {{entity}} в {{appName}}",
"email_no_user_invite_heading": "Вас запрошено приєднатися: {{entity}} в застосунку {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} запрошує вас приєднатися до команди в {{appName}}. {{appName}} — планувальник подій, який дає змогу вам і вашій команді планувати зустрічі без тривалої переписки електронною поштою.",
"email_user_invite_subheading": "{{invitedBy}} запрошує вас приєднатися до {{entity}} «{{teamName}}» в {{appName}}. {{appName}} — планувальник подій, завдяки якому ви й ваша {{entity}} можете планувати зустрічі без тривалої переписки електронною поштою.",
"email_no_user_invite_steps_intro": "Ми ознайомимо вас із додатком, і вже скоро ви й ваша {{entity}} насолоджуватиметеся плануванням без жодного клопоту.",
"email_user_invite_subheading": "{{invitedBy}} запрошує вас приєднатися до {{entity}} «{{teamName}}» в застосунку {{appName}}. {{appName}} — планувальник подій, завдяки якому ви й ваша {{entity}} можете планувати наради без довгого листування.",
"email_no_user_invite_steps_intro": "Ми ознайомимо вас із застосунком, і вже скоро ви й ваша {{entity}} насолоджуватиметеся плануванням без жодного клопоту.",
"email_no_user_step_one": "Виберіть ім’я користувача",
"email_no_user_step_two": "Підключіть обліковий запис календаря",
"email_no_user_step_three": "Укажіть, коли ви доступні",
@@ -1740,14 +1740,14 @@
"no_responses_yet": "Поки немає відповідей",
"no_routes_defined": "Переспрямування не визначено",
"this_will_be_the_placeholder": "Це заповнювач",
"error_booking_event": "Сталася помилка під час бронювання заходу, оновіть сторінку й повторіть спробу",
"error_booking_event": "Сталася помилка під час бронювання заходу. Оновіть сторінку й повторіть спробу.",
"timeslot_missing_title": "Не вибрано проміжок часу",
"timeslot_missing_description": "Виберіть проміжок часу, щоб забронювати захід.",
"timeslot_missing_cta": "Вибрати проміжок часу",
"switch_monthly": "Перейти в перегляд місяця",
"switch_weekly": "Перейти в перегляд тижня",
"switch_multiday": "Перейти в перегляд дня",
"switch_columnview": "Перейти в перегляд колонки",
"switch_columnview": "Перейти в перегляд стовпця",
"num_locations": "Варіантів місць проведення: {{num}}",
"select_on_next_step": "Вибрати на наступному етапі",
"this_meeting_has_not_started_yet": "Ця нарада ще не почалася",
@@ -1841,7 +1841,7 @@
"invite_link_copied": "Посилання на запрошення скопійовано",
"invite_link_deleted": "Посилання на запрошення видалено",
"invite_link_updated": "Параметри посилання на запрошення збережено",
"link_expires_after": "Строк дії посилань",
"link_expires_after": "Термін дії посилань минає через...",
"one_day": "1 день",
"seven_days": "7 днів",
"thirty_days": "30 днів",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "Запрошено стільки користувачів: {{userCount}}",
"error_collecting_card": "Не вдалось опрацювати картку",
"image_size_limit_exceed": "Розмір переданого зображення не може перевищувати 5 МБ",
"unauthorized_workflow_error_message": "{{errorCode}}: потрібно авторизуватися, щоб вмикати або вимикати цей робочий процес",
"unauthorized_workflow_error_message": "{{errorCode}}: авторизуйтеся, щоб вмикати або вимикати цей робочий процес",
"inline_embed": "Вбудовування",
"load_inline_content": "Завантажує ваш тип заходу, безпосередньо вбудовуючи його у ваш інший контент на вебсайті.",
"floating_pop_up_button": "Спливаюча кнопка",
@@ -1876,54 +1876,54 @@
"connect_google_workspace": "Підключити Google Workspace",
"google_workspace_admin_tooltip": "Ви повинні бути адміністратором Workspace, щоб використовувати цю функцію",
"first_event_type_webhook_description": "Створіть свій перший вебгук для цього типу заходів",
"install_app_on": "Установити додаток в",
"install_app_on": "Установити застосунок у",
"create_for": "Створити для",
"setup_organization": "Налаштувати організацію",
"organization_banner_description": "Створіть середовище, де ваші команди можуть створювати спільні застосунки, робочі процеси та типи заходів із циклічним і колективним плануванням.",
"organization_banner_title": "Керування організаціями з декількома командами",
"organization_banner_description": "Підготуйте середовища, де ваші команди можуть створювати спільні застосунки, робочі процеси й типи заходів із циклічним і колективним плануванням.",
"organization_banner_title": "Керування організаціями з кількома командами",
"set_up_your_organization": "Налаштуйте свою організацію",
"organizations_description": "Організації — це спільне середовище, де команди можуть створювати спільні типи заходів, застосунки, робочі процеси тощо.",
"must_enter_organization_name": "Потрібно ввести назву організації",
"must_enter_organization_admin_email": "Потрібно ввести електронну адресу вашої організації",
"must_enter_organization_admin_email": "Потрібно ввести електронну адресу організації",
"admin_email": "Електронна адреса вашої організації",
"admin_username": "Ім’я користувача адміністратора",
"organization_name": "Назва організації",
"organization_url": "URL-адреса організації",
"organization_verify_header": "Підтвердьте ел. адресу своєї організації",
"organization_verify_email_body": "Використайте наведений нижче код для підтвердження електронної адреси, щоб продовжити налаштування організації.",
"organization_verify_email_body": "Використайте наведений нижче код, щоб підтвердити електронну адресу, і продовжте налаштування організації.",
"additional_url_parameters": "Додаткові параметри URL-адреси",
"about_your_organization": "Про вашу організацію",
"about_your_organization_description": "Організації — це спільне середовище, де можна створити декілька команд зі спільними учасниками, типами заходів, застосунками, робочими процесами тощо.",
"about_your_organization_description": "Організації — це спільне середовище, де можна створити кілька команд зі спільними учасниками, типами заходів, додатками, робочими процесами тощо.",
"create_your_teams": "Створіть свої команди",
"create_your_teams_description": "Почніть планування разом, додавши учасників команди до вашої організації",
"invite_organization_admins": "Запросіть адміністраторів вашої організації",
"create_your_teams_description": "Почніть спільне планування, додавши учасників команди у свою організацію",
"invite_organization_admins": "Запросіть адміністраторів організації",
"invite_organization_admins_description": "Ці адміністратори матимуть доступ до всіх команд у вашій організації. Ви можете додати адміністраторів команди й учасників пізніше.",
"set_a_password": "Налаштуйте пароль",
"set_a_password_description": "Буде створено новий обліковий запис з електронною поштою вашої організації та цим паролем.",
"set_a_password_description": "Буде створено новий обліковий запис з електронною адресою вашої організації і цим паролем.",
"organization_logo": "Логотип організації",
"organization_about_description": "Кілька речень про вашу організацію. Ця інформація з’явиться в публічному профілі вашої організації.",
"organization_about_description": "Кілька речень про вашу організацію. Ця інформація з’явиться в публічному профілі організації.",
"ill_do_this_later": "Я зроблю це пізніше",
"verify_your_email": "Підтвердьте свою ел. адресу",
"verify_your_email": "Підтвердьте ел. адресу",
"enter_digit_code": "Введіть 6-значний код, який ми надіслали на адресу {{email}}",
"verify_email_organization": "Підтвердьте свою електронну пошту, щоб створити організацію",
"code_provided_invalid": "Вказаний код недійсний, спробуйте ще раз",
"verify_email_organization": "Підтвердьте свою електронну адресу, щоб створити організацію",
"code_provided_invalid": "Введено недійсний код. Спробуйте ще раз.",
"email_already_used": "Ця електронна адреса вже використовується",
"organization_admin_invited_heading": "Вас запрошено приєднатися до організації «{{orgName}}»",
"organization_admin_invited_body": "Приєднайтеся до вашої команди в організації «{{orgName}}» і зосереджуйтеся на нарадах, а не на підготовці до них!",
"duplicated_slugs_warning": "Не вдалося створити нижчезазначені команди через дубльовані адреси: {{slugs}}",
"organization_admin_invited_heading": "Вас запрошено приєднатися до організації {{orgName}}",
"organization_admin_invited_body": "Приєднайтеся до своєї команди в організації {{orgName}} і зосереджуйтеся на нарадах, а не на підготовці до них!",
"duplicated_slugs_warning": "Не вдалося створити такі команди через дубльовані адреси: {{slugs}}",
"team_names_empty": "Потрібно вказати назву команди",
"team_names_repeated": "Назви команд не можуть повторюватися",
"user_belongs_organization": "Користувач належить до організації",
"org_no_teams_yet": "У організації поки що немає команд",
"org_no_teams_yet_description": "Якщо ви адміністратор, не забудьте створити команди, які показуватимуться тут.",
"org_no_teams_yet": "В організації поки немає команд",
"org_no_teams_yet_description": "Якщо ви адміністратор, не забудьте створити команди, які з’являться тут.",
"set_up": "Налаштувати",
"set_up_your_profile": "Налаштуйте свій профіль",
"set_up_your_profile_description": "Нехай люди знають, яку функцію ви виконуєте в організації «{{orgName}}», коли вони взаємодіють із вашим публічним посиланням.",
"set_up_your_profile": "Налаштуйте профіль",
"set_up_your_profile_description": "Повідомте, яку функцію ви виконуєте в організації {{orgName}}. Ця інформація буде також доступна за вашим публічним посиланням.",
"my_profile": "Мій профіль",
"my_settings": "Мої налаштування",
"crm": "CRM",
"messaging": "Обмін повідомленнями",
"sender_id_info": "Ім’я або число, яке вказано в полі «Відправник SMS» (деякі країни не допускають використання літер у цьому полі)",
"sender_id_info": "Ім’я або число, яке вказано в полі «Відправник SMS» (для деяких країн не можна використовувати буквено-цифрові ідентифікатори відправників)",
"org_admins_can_create_new_teams": "Нові команди може створювати лише адміністратор вашої організації",
"google_new_spam_policy": "Через нову політику Google щодо спаму ви можете не отримати електронний лист або сповіщення календаря щодо цього бронювання.",
"resolve": "Вирішити",
@@ -1933,12 +1933,12 @@
"copy_link_org": "Копіювати посилання на організацію",
"404_the_org": "Організація",
"404_the_team": "Команда",
"404_claim_entity_org": "Отримайте піддомен для вашої організації",
"404_claim_entity_team": "Отримайте цю команду й почніть керувати розкладом разом",
"404_claim_entity_org": "Отримайте піддомен для своєї організації",
"404_claim_entity_team": "Приєднайтеся до цієї команди й почніть спільно керувати розкладами",
"insights_all_org_filter": "Усі",
"insights_team_filter": "Команда: {{teamName}}",
"insights_user_filter": "Користувач: {{userName}}",
"insights_subtitle": "Переглядайте аналітичні дані бронювання для своїх заходів",
"insights_subtitle": "Переглядайте аналітичні дані про бронювання для своїх заходів",
"custom_plan": "Користувацький план",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Додайте нові рядки вище ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+29 -29
View File
@@ -11,23 +11,23 @@
"calcom_explained_new_user": "Hoàn tất thiết lập tài khoản của bạn trong {{appName}}! Bạn chỉ còn vài bước nữa là giải quyết được mọi vấn đề về việc lên lịch kế hoạch.",
"have_any_questions": "Có câu hỏi? Chúng tôi luôn ở đây để giúp bạn.",
"reset_password_subject": "{{appName}}: Hướng dẫn thay đổi mật khẩu",
"verify_email_subject": "{{appName}}; Xác minh tài khoản của bạn",
"verify_email_subject": "{{appName}}: Xác minh tài khoản của bạn",
"check_your_email": "Kiểm tra email của bạn",
"verify_email_page_body": "Chúng tôi đã gửi một email đến {{email}}. Điều quan trọng là cần xác minh địa chỉ email để bảo đảm {{appName}} có thể gửi được email và lịch đến một cách ổn thoả nhất.",
"verify_email_banner_body": "Xác minh địa chỉ email của bạn nhằm bảo đảm gửi đi được email và lịch hẹn thật ổn thoả",
"verify_email_page_body": "Chúng tôi đã gửi một email đến {{email}}. Bạn cần xác minh địa chỉ email để bảo đảm {{appName}} có thể gửi được email và lịch một cách ổn thoả nhất.",
"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",
"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_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_sent": "Email đã gửi thành công",
"event_declined_subject": "Đã từ chối: {{title}} tại {{date}}",
"event_cancelled_subject": "Đã huỷ: {{title}} vào {{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",
"event_request_declined_recurring": "Lời mời sự kiện định kỳ của bạn đã bị từ chối",
"event_request_cancelled": "Sự kiện của bạn đã bị huỷ",
"event_request_cancelled": "Sự kiện của bạn đã bị hủy",
"organizer": "Tổ chức",
"need_to_reschedule_or_cancel": "Cần phải đổi lịch hẹn hoặc huỷ?",
"no_options_available": "Không tuỳ chọn nào khả dụng",
"no_options_available": "Không tùy chọn nào khả dụng",
"cancellation_reason": "Lý do hủy",
"cancellation_reason_placeholder": "Lý do bạn muốn hủy?",
"rejection_reason": "Lý do từ chối",
@@ -87,9 +87,9 @@
"your_meeting_has_been_booked": "Cuộc họp của bạn đã được đặt",
"event_type_has_been_rescheduled_on_time_date": "{{title}} của bạn đã được chuyển sang ngày {{date}}.",
"event_has_been_rescheduled": "Đã cập nhật - Sự kiện của bạn đã được đổi",
"request_reschedule_subtitle": "{{organizer}} đã huỷ đặt chỗ đó và yêu cầu bạn chọn thời gian khác.",
"request_reschedule_subtitle": "{{organizer}} đã hủy đặt chỗ đó và yêu cầu bạn chọn thời gian khác.",
"request_reschedule_title_organizer": "Bạn đã yêu cầu {{attendee}} xếp lại lịch",
"request_reschedule_subtitle_organizer": "Bạn đã huỷ mục đặt chỗ này và {{attendee}} nên chọn thời gian đặt chỗ mới với bạn.",
"request_reschedule_subtitle_organizer": "Bạn đã hủy đặt lịch này và {{attendee}} nên chọn thời gian đặt lịch mới với bạn.",
"rescheduled_event_type_subject": "Đã gửi yêu cầu xếp lại lịch: {{eventType}} với {{name}} lúc {{date}}",
"requested_to_reschedule_subject_attendee": "Thao tác cần làm để xếp lại lịch: Vui lòng đặt thời gian mới cho {{eventType}} với {{name}}",
"hi_user_name": "Xin chào {{name}}",
@@ -205,7 +205,7 @@
"page_doesnt_exist": "Trang này không tồn tại.",
"check_spelling_mistakes_or_go_back": "Kiểm tra lỗi chính tả hoặc quay lại trang trước.",
"404_page_not_found": "404: Không thể tìm thấy trang này.",
"booker_event_not_found": "Chúng tôi không thể tìm thấy sự kiện mà bạn đang tìm cách đặt hẹn.",
"booker_event_not_found": "Chúng tôi không thể tìm thấy sự kiện mà bạn đang tìm cách đặt lịch.",
"getting_started": "Bắt Đầu",
"15min_meeting": "Cuộc họp 15 phút",
"30min_meeting": "Cuộc họp 30 phút",
@@ -306,16 +306,16 @@
"password_has_been_reset_login": "Mật khẩu của bạn đã được thiết lập lại. Bây giờ bạn có thể đăng nhập bằng mật khẩu mới tạo của mình.",
"layout": "Bố trí",
"bookerlayout_default_title": "Giao diện mặc định",
"bookerlayout_description": "Bạn có thể chọn nhiều dạng và người đặt lịch hẹn có thể chuyển đổi qua lại các giao diện.",
"bookerlayout_user_settings_title": "Bố trí lịch hẹn",
"bookerlayout_description": "Bạn có thể chọn nhiều chế độ xem và người đặt lịch hẹn có thể chuyển đổi qua lại các chế độ xem.",
"bookerlayout_user_settings_title": "Bố cục đặt lịch",
"bookerlayout_user_settings_description": "Bạn có thể chọn nhiều dạng và người đặt lịch hẹn có thể chuyển đổi qua lại các giao diện. Dạng này có thể được thay thế tuỳ theo loại sự kiện.",
"bookerlayout_month_view": "Tháng",
"bookerlayout_week_view": "Hằng tuần",
"bookerlayout_column_view": "Cột",
"bookerlayout_error_min_one_enabled": "Ít nhất phải bật một bố trí.",
"bookerlayout_error_default_not_enabled": "Bố trí mà bạn chọn làm giao diện mặc định không phải là một phần của những bố trí đã bật.",
"bookerlayout_error_unknown_layout": "Bố trí mà bạn chọn không phải là bố trí hợp lệ.",
"bookerlayout_override_global_settings": "Bạn có thể quản lý cái này cho tất cả những loại sự kiện của bạn, trong phần <2>cài đặt / hiển thị</2> hoặc <6>ghi đè chỉ cho sự kiện này</6>.",
"bookerlayout_error_min_one_enabled": "Ít nhất phải bật một bố cục.",
"bookerlayout_error_default_not_enabled": "Bố cục mà bạn chọn làm giao diện mặc định không phải là một phần của những bố cục đã bật.",
"bookerlayout_error_unknown_layout": "Bố cục mà bạn chọn không phải là bố cục hợp lệ.",
"bookerlayout_override_global_settings": "Bạn có thể quản lý cái này cho tất cả những loại sự kiện của bạn, trong phần <2>cài đặt / giao diện</2> hoặc <6>ghi đè chỉ cho sự kiện này</6>.",
"unexpected_error_try_again": "Đã xảy ra lỗi không mong muốn. Hãy thử lại.",
"sunday_time_error": "Thời gian không hợp lệ vào Chủ Nhật",
"monday_time_error": "Thời gian không hợp lệ vào Thứ Hai",
@@ -340,7 +340,7 @@
"error_event_type_url_duplicate": "Đã tồn tại một loại sự kiện với URL này.",
"error_event_type_unauthorized_create": "Bạn không thể tạo sự kiện này",
"error_event_type_unauthorized_update": "Bạn không thể sửa sự kiện này",
"error_workflow_unauthorized_create": "Bạn không thể tạo tiến dộ công việc này",
"error_workflow_unauthorized_create": "Bạn không thể tạo tiến độ công việc này",
"error_schedule_unauthorized_create": "Bạn không thể tạo lịch này",
"booking_already_cancelled": "Lịch hẹn này đã bị hủy",
"booking_already_accepted_rejected": "Lịch hẹn này đã được chấp nhận hoặc từ chối",
@@ -352,7 +352,7 @@
"no_status_bookings_yet_description": "Bạn không có lịch hẹn {{status}} nào. {{description}}",
"event_between_users": "{{eventName}} giữa {{host}} và {{attendeeName}}",
"bookings": "Các lịch hẹn",
"booking_not_found": "Lịch hẹn không tìm thấy",
"booking_not_found": "Không tìm thấy lịch hẹn",
"bookings_description": "Xem các sự kiện sắp tới và \btrong quá khứ mà đã đặt thông qua các liên kết loại sự kiện của bạn.",
"upcoming_bookings": "Ngay sau khi ai đó đặt lịch với bạn, nó sẽ hiển thị ở đây.",
"recurring_bookings": "Ngay sau khi ai đó đặt hẹn một cuộc họp định kỳ với bạn, nó sẽ hiển thị ở đây.",
@@ -505,7 +505,7 @@
"additional_guests": "Thêm khách",
"your_name": "Tên của bạn",
"your_full_name": "Tên đầy đủ của bạn",
"no_name": "Vô danh",
"no_name": "Không tên",
"email_address": "Địa chỉ email",
"enter_valid_email": "Vui lòng điền vào email hợp lệ",
"location": "Vị trí",
@@ -909,7 +909,7 @@
"create_events_on": "Tạo sự kiện trên",
"enterprise_license": "Đây là tính năng doanh nghiệp",
"enterprise_license_description": "Để bật tính năng này, nhận khoá triển khai tại console {{consoleUrl}} và thêm nó vào .env của bạn ở dạng CALCOM_LICENSE_KEY. Nếu nhóm của bạn đã có giấy phép, vui lòng liên hệ {{supportMail}} để được trợ giúp.",
"enterprise_license_development": "Bạn có thể kiểm tra tính năng này ở thể thức phát triển. Để sử dụng ở dạng sản xuất, hãy nhờ quản trị viên vào phần <2>/auth/setup</2> để nhập một khoá giấy phép.",
"enterprise_license_development": "Bạn có thể thử nghiệm tính năng này ở chế độ phát triển. Để sử dụng cho sản xuất, hãy nhờ quản trị viên vào phần <2>/auth/setup</2> để nhập một khoá giấy phép.",
"missing_license": "Giấy phép bị thiếu",
"signup_requires": "Yêu cầu giấy phép thương mại",
"signup_requires_description": "{{companyName}} hiện không cung cấp phiên bản nguồn mở miễn phí của trang đăng ký. Để nhận toàn quyền truy cập vào các thành phần đăng ký, bạn cần có giấy phép thương mại. Đối với mục đích sử dụng cá nhân, chúng tôi khuyên bạn nên sử dụng Nền tảng dữ liệu Prisma hoặc bất kỳ giao diện Postgres nào khác để tạo tài khoản.",
@@ -1072,7 +1072,7 @@
"event_location": "Địa điểm sự kiện",
"reschedule_optional": "Lí do xếp lịch lại (tuỳ chọn)",
"reschedule_placeholder": "Cho người khác biết nguyên do bạn cần xếp lịch lại",
"event_cancelled": "Sự kiệnn này bị huỷ",
"event_cancelled": "Sự kiện này bị huỷ",
"emailed_information_about_cancelled_event": "Chúng tôi đã gửi email cho bạn và những người tham dự khác để cho họ biết.",
"this_input_will_shown_booking_this_event": "Trường này sẽ được hiển thị khi đặt sự kiện này",
"meeting_url_in_conformation_email": "Url cuộc họp nằm trong email xác nhận",
@@ -1496,7 +1496,7 @@
"url_taken": "URL này đã có người lấy rồi",
"problem_registering_domain": "Có vấn đề với việc đăng ký tên miền phụ, vui lòng thử lại hoặc liên lạc với quản trị viên",
"team_publish": "Đăng nhóm",
"number_text_notifications": "Số điện thoại (thông báo tin nhắn van bản)",
"number_text_notifications": "Số điện thoại (thông báo tin nhắn văn bản)",
"attendee_email_variable": "Email người tham dự",
"attendee_email_info": "Email người tham gia lịch hẹn",
"kbar_search_placeholder": "Nhập một lệnh hoặc tìm kiếm...",
@@ -1809,7 +1809,7 @@
"redirect_url_warning": "Thêm mục chuyển hướng sẽ tắt đi trang thành công. Hãy bảo đảm có đề cập \"Lịch hẹn đã xác nhận\" trên trang thành công tuỳ chỉnh riêng của bạn.",
"event_trends": "Xu hướng sự kiện",
"clear_filters": "Xóa bộ lọc",
"clear": "Xoá",
"clear": "Xóa",
"hold": "Tạm giữ",
"on_booking_option": "Thu tiền thanh toán cho lịch hẹn",
"hold_option": "Tính phí vắng mặt",
@@ -1856,7 +1856,7 @@
"email_invite_team_bulk": "{{userCount}} người dùng đã được mời",
"error_collecting_card": "Lỗi khi thu thập thẻ",
"image_size_limit_exceed": "Ảnh tải lên không được vượt quá giới hạn kích cỡ 5mb",
"unauthorized_workflow_error_message": "{{errorCode}}: Bạn không được uỷ quyền để bật hoặc tắt tiến độ công việc này",
"unauthorized_workflow_error_message": "{{errorCode}}: Bạn không được ủy quyền để bật hoặc tắt tiến độ công việc này",
"inline_embed": "Nhúng inline",
"load_inline_content": "Tải trực tiếp loại sự kiện của bạn ở dạng nội tuyến với nội dung khác trên website của bạn.",
"floating_pop_up_button": "Nút popup dạng nổi",
@@ -1882,7 +1882,7 @@
"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",
"organizations_description": "Tổ chức là môi trường chia sẻ tại đó các nhóm có thể tạo loại sự kiện, ứng dụng, tiến độ công việc, v. v. vốn được chia sẻ dùng chung.",
"organizations_description": "Tổ chức là môi trường chia sẻ tại đó các nhóm có thể tạo loại sự kiện, ứng dụng, tiến độ công việc, v.v. để dùng chung.",
"must_enter_organization_name": "Cần phải nhập tên tổ chức",
"must_enter_organization_admin_email": "Cần phải nhập địa chỉ email của tổ chức",
"admin_email": "Địa chỉ email của tổ chức",
@@ -1892,8 +1892,8 @@
"organization_verify_header": "Xác minh email của tổ chức",
"organization_verify_email_body": "Vui lòng sử dụng mã bên dưới để xác minh địa chỉ email của bạn để tiếp tục thiết lập tổ chức của bạn.",
"additional_url_parameters": "Tham số URL bổ sung",
"about_your_organization": "Giới thiệu tổ chức của bạn",
"about_your_organization_description": "Tổ chức là môi trường chia sẻ tại đó bạn có thể tạo nhiều nhóm có thành viên chung, loại sự kiện chung, ứng dụng chung, tiến độ công việc chung, v.v..",
"about_your_organization": "Giới thiệu về tổ chức của bạn",
"about_your_organization_description": "Tổ chức là môi trường chia sẻ tại đó bạn có thể tạo nhiều nhóm có thành viên chung, loại sự kiện chung, ứng dụng chung, tiến độ công việc chung, v.v...",
"create_your_teams": "Tạo nhóm của bạn",
"create_your_teams_description": "Bắt đầu đặt lịch cùng nhau bằng cách thêm thành viên nhóm bạn vào tổ chức",
"invite_organization_admins": "Mời những quản trị viên của tổ chức",
@@ -1908,7 +1908,7 @@
"verify_email_organization": "Xác minh email của bạn để tạo một tổ chức",
"code_provided_invalid": "Mã cung cấp là mã không hợp lệ, hãy thử lại",
"email_already_used": "Email đã được dùng",
"organization_admin_invited_heading": "Bạn đã được mời để gia nhập {{orgName}}",
"organization_admin_invited_heading": "Bạn đã được mời gia nhập {{orgName}}",
"organization_admin_invited_body": "Gia nhập nhóm của bạn tại {{orgName}} và bắt đầu tập trung vào cuộc họp, chứ không còn lo tạo ra cuộc họp!",
"duplicated_slugs_warning": "Những nhóm sau không thể tạo do có slug trùng lặp: {{slugs}}",
"team_names_empty": "Tên nhóm không được để trống",
@@ -1925,7 +1925,7 @@
"messaging": "Nhắn tin",
"sender_id_info": "Tên hoặc số hiển thị ở chỗ người gửi SMS (một số quốc gia không cho phép ID người gửi dạng chữ lẫn số)",
"org_admins_can_create_new_teams": "Chỉ quản trị viên của tổ chức mới tạo được nhóm mới",
"google_new_spam_policy": "Chính sách spam mới của Google có thể ngăn bạn không cho nhận bất kì thông báo nào về email và lịch liên quan đến lịch hẹn này.",
"google_new_spam_policy": "Chính sách thư rác mới của Google có thể ngăn bạn nhận bất kì thông báo nào về email và lịch liên quan đến lịch hẹn này.",
"resolve": "Giải quyết",
"no_organization_slug": "Có lỗi khi tạo nhóm cho tổ chức này. Slug URL bị thiếu.",
"org_name": "Tên tổ chức",
@@ -1938,7 +1938,7 @@
"insights_all_org_filter": "Tất cả",
"insights_team_filter": "Nhóm: {{teamName}}",
"insights_user_filter": "Người dùng: {{userName}}",
"insights_subtitle": "Xem insights của lịch hẹn ở mọi sự kiện của bạn",
"insights_subtitle": "Xem insights của đặt lịch ở mọi sự kiện của bạn",
"custom_plan": "Gói Tuỳ chỉnh",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -13,7 +13,7 @@
"reset_password_subject": "{{appName}}: 重置密码教程",
"verify_email_subject": "{{appName}}:验证您的账户",
"check_your_email": "查看您的电子邮件",
"verify_email_page_body": "我们已向 {{email}} 发送了一封电子邮件。请务必验证您的电子邮件地址,以确保 {{appName}} 发挥最佳的电子邮件和日历的递送能力。",
"verify_email_page_body": "我们已向 {{email}} 发送了一封电子邮件。请务必验证您的电子邮件地址,以确保让 {{appName}} 发挥最佳的电子邮件和日历递送能力。",
"verify_email_banner_body": "验证您的电子邮件地址以确保最佳的电子邮件和日历递送能力",
"verify_email_email_header": "验证您的电子邮件地址",
"verify_email_email_button": "验证电子邮件",
@@ -88,7 +88,7 @@
"your_meeting_has_been_booked": "您的会议已预定",
"event_type_has_been_rescheduled_on_time_date": "您的 {{title}} 已改期至 {{date}}。",
"event_has_been_rescheduled": "已更新 - 您的活动已被重新安排",
"request_reschedule_subtitle": "{{organizer}} 已取消预约并要求您选择其他时间。",
"request_reschedule_subtitle": "{{organizer}} 已取消预约并请求您选择其他时间。",
"request_reschedule_title_organizer": "您已请求 {{attendee}} 重新安排",
"request_reschedule_subtitle_organizer": "您已取消预约,{{attendee}} 应该与您选择新的预约时间。",
"rescheduled_event_type_subject": "重新安排请求已发送: 和 {{name}} 在 {{date}} 的 {{eventType}}",
@@ -119,7 +119,7 @@
"team_info": "团队信息",
"request_another_invitation_email": "如果您不希望使用 {{toEmail}} 作为您的 {{appName}} 邮箱或已经有一个 {{appName}} 账户,请使用您希望使用的邮箱再次请求一封邮件。",
"you_have_been_invited": "您已被邀请加入团队 {{teamName}}",
"user_invited_you": "{{user}} 邀请您在 {{appName}} 上加入{{entity}} {{team}}",
"user_invited_you": "{{user}} 邀请您在 {{appName}} 上加入 {{entity}} {{team}}",
"hidden_team_member_title": "您在这个团队中被隐藏",
"hidden_team_member_message": "您的位置尚未付费,请升级到专业版或通知团队管理员为您付费。",
"hidden_team_owner_message": "需要一个专业版账户才能使用团队,在升级前您将一直被隐藏。",
@@ -316,9 +316,9 @@
"bookerlayout_week_view": "每周",
"bookerlayout_column_view": "列",
"bookerlayout_error_min_one_enabled": "至少要启用一个布局。",
"bookerlayout_error_default_not_enabled": "您选择作为默认视图的布局不是启用布局的一部分。",
"bookerlayout_error_default_not_enabled": "您选择作为默认视图的布局不是已启用布局的一部分。",
"bookerlayout_error_unknown_layout": "您选择的布局不是有效的布局。",
"bookerlayout_override_global_settings": "您可以在<2>设置/外观</2>或<6>只针对此事件替换</6>中管理所有事件类型的布局。",
"bookerlayout_override_global_settings": "您可以在<2>设置/外观</2>或<6>仅针对此事件替代</6>中管理所有事件类型的布局。",
"unexpected_error_try_again": "发生意外错误,请重试。",
"sunday_time_error": "周日有无效时间",
"monday_time_error": "周一有无效时间",
@@ -417,8 +417,8 @@
"team_webhooks": "团队 Webhook",
"create_new_webhook_to_account": "为您的账户创建一个新的 Webhook",
"new_webhook": "新建 Webhook",
"receive_cal_meeting_data": "当安排或取消活动后,在指定链接实时接收 {{appName}} 会议数据。",
"receive_cal_event_meeting_data": "当安排或取消此活动后,在指定链接实时接收 {{appName}} 会议数据。",
"receive_cal_meeting_data": "当安排或取消活动后,会在指定的链接实时接收 {{appName}} 会议数据。",
"receive_cal_event_meeting_data": "当安排或取消此活动后,会在指定的链接实时接收 {{appName}} 会议数据。",
"responsive_fullscreen_iframe": "全屏响应式 iframe",
"loading": "加载中...",
"deleting": "正在删除...",
@@ -1006,9 +1006,9 @@
"user_impersonation_heading": "用户模拟",
"user_impersonation_description": "允许我们的支持团队临时以您的身份登录,帮助我们快速解决您报告给我们的问题。",
"team_impersonation_description": "允许您的团队所有者/管理员以您的身份临时登录。",
"make_team_private": "将团队设为私有",
"make_team_private": "将团队设为私密",
"make_team_private_description": "开启此选项后,您的团队成员将无法看到其他团队成员。",
"you_cannot_see_team_members": "您无法看到私有团队的所有团队成员。",
"you_cannot_see_team_members": "您无法看到私密团队的所有团队成员。",
"allow_booker_to_select_duration": "允许预约者选择时长",
"impersonate_user_tip": "此功能的所有使用都已审核。",
"impersonating_user_warning": "正在模拟用户名“{{user}}”。",
@@ -1296,7 +1296,7 @@
"conferencing_description": "为您的会议添加最喜欢的视频会议应用",
"add_conferencing_app": "添加会议应用",
"password_description": "管理账户密码的设置",
"set_up_two_factor_authentication": "设置双因素身份验证",
"set_up_two_factor_authentication": "设置两步验证",
"we_just_need_basic_info": "我们只需要一些基本信息来设置您的个人资料。",
"skip": "跳过",
"do_this_later": "以后再说",
@@ -1500,7 +1500,7 @@
"url_taken": "此链接已被占用",
"problem_registering_domain": "注册子域时出现问题,请重试或与管理员联系",
"team_publish": "发布团队",
"number_text_notifications": "电话号码(短信通知)",
"number_text_notifications": "电话号码 (短信通知)",
"attendee_email_variable": "参与者电子邮件",
"attendee_email_info": "预约人的电子邮件",
"kbar_search_placeholder": "输入命令或搜索...",
@@ -1665,8 +1665,8 @@
"email_user_cta": "查看邀请",
"email_no_user_invite_heading": "您已被邀请加入 {{appName}} {{entity}}",
"email_no_user_invite_subheading": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的团队。{{appName}} 是一个活动安排调度程序,让您和您的团队无需通过电子邮件沟通即可安排会议。",
"email_user_invite_subheading": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的{{entity}}“{{teamName}}”。{{appName}} 是一个活动安排调度程序,让您和您的{{entity}}无需通过电子邮件沟通即可安排会议。",
"email_no_user_invite_steps_intro": "我们将引导您完成几个简短步骤,您将立即与您的{{entity}}一起享受无压力的日程安排。",
"email_user_invite_subheading": "{{invitedBy}} 已邀请您加入他们在 {{appName}} 上的 {{entity}}“{{teamName}}”。{{appName}} 是一个活动日程安排程序,让您和您的 {{entity}} 无需通过电子邮件沟通即可安排会议。",
"email_no_user_invite_steps_intro": "我们将引导您完成几个简短步骤,您将立即与您的 {{entity}} 一起享受无压力的日程安排。",
"email_no_user_step_one": "选择您的用户名",
"email_no_user_step_two": "连接您的日历账户",
"email_no_user_step_three": "设置您的可预约时间",
@@ -1691,7 +1691,7 @@
"attendee_no_longer_attending": "一名参与者不再参加您的活动",
"attendee_no_longer_attending_subtitle": "{{name}} 已取消。这意味着该时段有一个位置空出来",
"create_event_on": "创建活动于",
"create_routing_form_on": "创建途径表格的账户",
"create_routing_form_on": "创建途径表格的账户类型",
"default_app_link_title": "设置默认应用链接",
"default_app_link_description": "设置默认应用链接可以让所有新创建的活动类型使用您设置的应用链接。",
"organizer_default_conferencing_app": "组织者的默认应用",
@@ -1845,7 +1845,7 @@
"invite_link_copied": "邀请链接已复制",
"invite_link_deleted": "邀请链接已删除",
"invite_link_updated": "邀请链接设置已保存",
"link_expires_after": "设置的链接过期时间为...",
"link_expires_after": "设置链接过期时间为...",
"one_day": "1 天",
"seven_days": "7 天",
"thirty_days": "30 天",
@@ -1883,13 +1883,13 @@
"install_app_on": "安装应用的账户",
"create_for": "创建",
"setup_organization": "设置组织",
"organization_banner_description": "创建一个环境,让团队可以在其中通过轮流和集体日程安排来创建共享的应用、工作流程和活动类型。",
"organization_banner_description": "创建环境,以便让您的团队可以在其中通过轮流和集体日程安排来创建共享的应用、工作流程和活动类型。",
"organization_banner_title": "管理具有多个团队的组织",
"set_up_your_organization": "设置您的组织",
"organizations_description": "组织是一个共享环境,团队可以在其中创建共享的活动类型、应用、工作流程等。",
"organizations_description": "组织是一种共享环境,团队可以在其中创建共享的活动类型、应用、工作流程等。",
"must_enter_organization_name": "必须输入组织名称",
"must_enter_organization_admin_email": "必须输入您组织的电子邮件地址",
"admin_email": "您组织的电子邮件地址",
"admin_email": "您在组织中的电子邮件地址",
"admin_username": "管理员用户名",
"organization_name": "组织名称",
"organization_url": "组织链接",
@@ -1897,7 +1897,7 @@
"organization_verify_email_body": "请使用下面的代码验证您的电子邮件地址以继续设置您的组织。",
"additional_url_parameters": "其他链接参数",
"about_your_organization": "关于您的组织",
"about_your_organization_description": "组织是一个共享环境,您可以在其中创建多个具有共享的成员、活动类型、应用、工作流程等要素的团队。",
"about_your_organization_description": "组织是共享环境,您可以在其中创建多个具有共享的成员、活动类型、应用、工作流程等要素的团队。",
"create_your_teams": "创建您的团队",
"create_your_teams_description": "通过向您的组织添加团队成员,开始一起进行日程安排",
"invite_organization_admins": "邀请您的组织管理员",
@@ -1905,7 +1905,7 @@
"set_a_password": "设置密码",
"set_a_password_description": "这将使用您的组织电子邮件和此密码创建一个新的用户账户。",
"organization_logo": "组织标志",
"organization_about_description": "关于您的组织的几句话。这将显示在您组织的公开资料页面上。",
"organization_about_description": "关于您组织的简介。这将显示在您组织的公开资料页面上。",
"ill_do_this_later": "稍后再做",
"verify_your_email": "验证您的电子邮件",
"enter_digit_code": "输入我们发送至 {{email}} 的 6 位代码",
@@ -1922,7 +1922,7 @@
"org_no_teams_yet_description": "如果您是管理员,请务必创建要在此处显示的团队。",
"set_up": "设置",
"set_up_your_profile": "设置您的个人资料",
"set_up_your_profile_description": "让人们知道您在 {{orgName}} 中的身份,以及他们何时与您的公共链接互动。",
"set_up_your_profile_description": "让人们知道您在 {{orgName}} 中的身份,以及他们何时可与您的公共链接互动。",
"my_profile": "我的个人资料",
"my_settings": "我的设置",
"crm": "CRM",
@@ -1938,11 +1938,11 @@
"404_the_org": "组织",
"404_the_team": "团队",
"404_claim_entity_org": "为您的组织声明子域",
"404_claim_entity_team": "声明此团队并开始集体管理时间表",
"404_claim_entity_team": "声明成为此团队的一员并开始集体管理时间表",
"insights_all_org_filter": "所有应用",
"insights_team_filter": "团队:{{teamName}}",
"insights_user_filter": "用户:{{userName}}",
"insights_subtitle": "查看您的活动的预约 insights",
"insights_subtitle": "查看您活动的预约 insights",
"custom_plan": "自定义计划",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 在此上方添加您的新字符串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
@@ -17,14 +17,14 @@
"verify_email_banner_body": "驗證您的電子郵件地址,以確保能準確收到遞送的電子郵件和行事曆",
"verify_email_email_header": "驗證您的電子郵件地址",
"verify_email_email_button": "驗證電子郵件",
"verify_email_email_body": "請按一下下方的按鈕來驗證您的電子郵件地址。",
"verify_email_email_body": "請按一下下方的按鈕來驗證電子郵件地址。",
"verify_email_email_link_text": "若您不喜歡點擊按鈕,也可以使用以下連結:",
"email_sent": "電子郵件已成功傳送",
"event_declined_subject": "已拒絕:{{date}} 與 {{title}}",
"event_cancelled_subject": "已取消:{{date}} 的 {{title}}",
"event_request_declined": "活動請求遭到拒絕",
"event_request_declined_recurring": "您的定期活動請求已遭到拒絕",
"event_request_cancelled": "您預定的活動已取消了",
"event_request_cancelled": "您預定的活動取消了",
"organizer": "主辦",
"need_to_reschedule_or_cancel": "要重新規劃還是取消嗎?",
"no_options_available": "沒有可用的選項",
@@ -130,7 +130,7 @@
"upgrade_banner_action": "在此處升級",
"team_upgraded_successfully": "團隊成功升級!",
"org_upgrade_banner_description": "謝謝您試用我們的 Organization 方案。我們注意到您的組織「{{teamName}}」需要升級。",
"org_upgraded_successfully": "組織成功升級!",
"org_upgraded_successfully": "您的 Organization 成功升級!",
"use_link_to_reset_password": "使用以下連結重置密碼",
"hey_there": "哈囉,",
"forgot_your_password_calcom": "忘記密碼了? - {{appName}}",
@@ -245,7 +245,7 @@
"available_apps": "可用的應用程式",
"check_email_reset_password": "請檢查信箱。已經把重設密碼的連結寄出。",
"finish": "結束",
"organization_general_description": "管理貴團隊的語言和時區設定",
"organization_general_description": "管理團隊的語言和時區設定",
"few_sentences_about_yourself": "一些關於自己的句子,這會顯示在個人網址頁。",
"nearly_there": "就快好了",
"nearly_there_instructions": "最後,簡單的個人簡介和照片能幫助您獲得預約,也能讓人們知道目前預約的對象是誰。",
@@ -306,15 +306,15 @@
"password_has_been_reset_login": "密碼已經重置。現在即可使用新建立的密碼登入。",
"layout": "版面",
"bookerlayout_default_title": "預設檢視",
"bookerlayout_description": "您可以選擇多個版面,以便預約者切換檢視。",
"bookerlayout_description": "您可以選取多個版面,以便預約者切換檢視。",
"bookerlayout_user_settings_title": "預約版面",
"bookerlayout_user_settings_description": "您可以選擇多個版面,以便預約者切換檢視。您可根據不同活動來覆寫此設定。",
"bookerlayout_user_settings_description": "您可以選取多個版面,以便預約者切換檢視。您可根據不同活動來覆寫此設定。",
"bookerlayout_month_view": "月",
"bookerlayout_week_view": "週",
"bookerlayout_column_view": "欄",
"bookerlayout_error_min_one_enabled": "至少要啟用一種版面。",
"bookerlayout_error_default_not_enabled": "已啟用的版面不包含您選擇作為預設檢視的版面。",
"bookerlayout_error_unknown_layout": "您選擇的版面不是有效的版面。",
"bookerlayout_error_default_not_enabled": "您選為預設檢視的版面並不屬於已啟用的版面。",
"bookerlayout_error_unknown_layout": "您所選取的版面並非有效的版面。",
"bookerlayout_override_global_settings": "您可以在<2>設定/外觀</2>中針對所有活動類型管理此設定,或<6>只針對此活動進行覆寫</6>。",
"unexpected_error_try_again": "發生無法預期的錯誤,請再試一次。",
"sunday_time_error": "星期日的時間無效",
@@ -398,11 +398,11 @@
"browse_api_documentation": "瀏覽 API 文件",
"leverage_our_api": "請充分利用 API 徹底掌握與客製化。",
"create_webhook": "建立 Webhook",
"booking_cancelled": "已取消預約",
"booking_cancelled": "預約已取消",
"booking_rescheduled": "已重新安排預約",
"recording_ready": "錄製內容下載連結已就緒",
"booking_created": "已建立預約",
"booking_rejected": "預約已拒絕",
"booking_rejected": "預約已遭拒",
"booking_requested": "預約已提出",
"meeting_ended": "會議已結束",
"form_submitted": "表單已提交",
@@ -551,7 +551,7 @@
"team_description": "請提供關於團隊的簡介,這會顯示在團隊網址的頁面上。",
"org_description": "請提供關於組織的簡介,這會顯示在組織的網頁上。",
"members": "成員",
"organization_members": "組織成員",
"organization_members": "Organization 成員",
"member": "成員",
"number_member_one": "{{count}} 名成員",
"number_member_other": "{{count}} 名成員",
@@ -695,7 +695,7 @@
"create_new_team": "新增團隊",
"open_invitations": "開放邀請",
"new_team": "新增團隊",
"create_first_team_and_invite_others": "建立第一個團隊,並邀請其他使用者來一起做事。",
"create_first_team_and_invite_others": "建立第一個團隊,並邀請其他使用者來合作。",
"create_team_to_get_started": "從建立團隊開始",
"teams": "團隊",
"team": "團隊",
@@ -867,14 +867,14 @@
"no_category_apps": "沒有{{category}}應用程式",
"all_apps": "所有應用程式",
"no_category_apps_description_calendar": "新增行事曆應用程式來檢查衝突,以避免重複預約",
"no_category_apps_description_conferencing": "試著新增與會議進行視訊通話時所用的會議應用程式",
"no_category_apps_description_conferencing": "試著新增與客戶進行視訊通話時所用的會議應用程式",
"no_category_apps_description_payment": "新增付款應用程式,簡化您和您客戶之間的交易",
"no_category_apps_description_analytics": "為您的預約頁面加入分析應用程式",
"no_category_apps_description_automation": "加入自動化應用程式來使用",
"no_category_apps_description_other": "新增任何其他類型的應用程式以完成各種操作",
"no_category_apps_description_web3": "為您的預約頁面加入 web3 應用程式",
"no_category_apps_description_messaging": "新增傳訊應用程式,以設定自訂通知和提醒",
"no_category_apps_description_crm": "新增 CRM 應用程式,以追蹤您已會面過的人員",
"no_category_apps_description_crm": "新增 CRM 應用程式,追蹤您已見過面的人",
"installed_app_calendar_description": "設定行事曆來檢查衝突,以避免重複預約。",
"installed_app_payment_description": "設定向客戶收費時要使用的付款處理服務。",
"installed_app_analytics_description": "設定要為您的預約頁面使用哪些分析應用程式",
@@ -882,8 +882,8 @@
"installed_app_conferencing_description": "設定要使用哪些會議應用程式",
"installed_app_automation_description": "設定要使用哪些自動化應用程式",
"installed_app_web3_description": "設定要為您的預約頁面使用哪些 web3 應用程式",
"installed_app_messaging_description": "設定要使用哪些傳訊應用程式,以便設定自訂通知與提醒",
"installed_app_crm_description": "設定要使用哪些 CRM 應用程式,以便追蹤您已會面過的人員",
"installed_app_messaging_description": "設定要使用哪些傳訊應用程式來設定自訂通知與提醒",
"installed_app_crm_description": "設定要使用哪些 CRM 應用程式來追蹤您已見過面的人",
"analytics": "分析",
"empty_installed_apps_headline": "沒有已安裝的應用程式",
"empty_installed_apps_description": "應用程式使您能夠增強您的工作流程並顯著改善您的日程安排。",
@@ -909,7 +909,7 @@
"create_events_on": "建立活動時間:",
"enterprise_license": "此為企業版功能",
"enterprise_license_description": "若要啟用此功能,請在 {{consoleUrl}} 主控台取得部署金鑰,並在您的 .env 中新增為 CALCOM_LICENSE_KEY。如果您的團隊已經取得授權,請聯絡 {{supportMail}} 取得協助。",
"enterprise_license_development": "您可以在開發模式下測試此功能。若要用於生產環境,請由管理員前往<2>/auth/setup</2>輸入授權金鑰。",
"enterprise_license_development": "您可以在開發模式下測試此功能。若要用於生產環境,請由管理員前往 <2>/auth/setup</2> 輸入授權金鑰。",
"missing_license": "遺失授權",
"signup_requires": "必須有商業授權",
"signup_requires_description": "{{companyName}} 目前不提供註冊頁面的免費開源版本。如果要完整獲得註冊元件,就得要取得商業授權。個人使用的情況,我們推薦 Prisma Data Platform 或其它 Postgres 介面來建立帳號。",
@@ -1336,9 +1336,9 @@
"event_one": "活動",
"event_other": "活動",
"profile_team_description": "管理團隊資料設定",
"profile_org_description": "管理組織資料設定",
"profile_org_description": "管理組織的資料設定",
"members_team_description": "群組中的使用者",
"organization_description": "管理您組織的管理者和成員",
"organization_description": "管理組織的管理者和成員",
"team_url": "團隊網址",
"team_members": "團隊成員",
"more": "更多",
@@ -1484,7 +1484,7 @@
"yearly": "每年",
"checkout": "結帳",
"your_team_disbanded_successfully": "已成功解散您的團隊",
"your_org_disbanded_successfully": "已成功解散您的組織",
"your_org_disbanded_successfully": "已成功解散組織",
"error_creating_team": "建立團隊時發生錯誤",
"you": "您",
"resend_email": "重新傳送電子郵件",
@@ -1555,7 +1555,7 @@
"no_apps": "此 Cal 實例中並未啟用任何應用程式",
"no_apps_configured": "尚未設定任何應用程式",
"enable_in_settings": "您可以在設定中啟用應用程式",
"please_contact_admin": "請聯絡您的管理員",
"please_contact_admin": "請聯絡管理員",
"apps_settings": "應用程式設定",
"fill_this_field": "請填寫此欄位",
"options": "選項",
@@ -1661,7 +1661,7 @@
"email_user_cta": "檢視邀請",
"email_no_user_invite_heading": "您已獲邀加入 {{appName}} {{entity}}",
"email_no_user_invite_subheading": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的團隊。{{appName}} 是活動多工排程工具,可讓您和您的團隊無須透過繁複的電子郵件往來就能輕鬆預定會議。",
"email_user_invite_subheading": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的「{{teamName}}」{{entity}}。{{appName}} 為一款活動多功能排程工具,可讓您和 {{entity}} 無須透過繁複的電子郵件往來,就能輕鬆預定會議。",
"email_user_invite_subheading": "{{invitedBy}} 已邀請您加入對方在 {{appName}} 上的「{{teamName}}」{{entity}}。{{appName}} 為一款靈活的日程管理工具,可讓您和 {{entity}} 輕鬆預定會議,而無須透過繁複的電子郵件往來。",
"email_no_user_invite_steps_intro": "我們會逐步引導您完成幾個簡短的步驟,然後您就能馬上與 {{entity}} 享受沒有壓力的排程預定功能。",
"email_no_user_step_one": "選擇使用者名稱",
"email_no_user_step_two": "連結行事曆帳號",
@@ -1687,7 +1687,7 @@
"attendee_no_longer_attending": "一位與會者不再參加您的活動",
"attendee_no_longer_attending_subtitle": "{{name}} 已取消,這代表此時段空出了一個座位",
"create_event_on": "活動建立日期",
"create_routing_form_on": "引導表單建立位置",
"create_routing_form_on": "引導表單的建立位置",
"default_app_link_title": "設定預設應用程式連結",
"default_app_link_description": "設定預設應用程式連結,即可讓所有全新建立的活動類型使用您設定的應用程式連結。",
"organizer_default_conferencing_app": "主辦者的預設應用程式",
@@ -1876,46 +1876,46 @@
"connect_google_workspace": "連接 Google Workspace",
"google_workspace_admin_tooltip": "您必須是 Workspace 管理員才能使用此功能",
"first_event_type_webhook_description": "為此活動類型建立第一個 Webhook",
"install_app_on": "安裝應用程式於",
"install_app_on": "應用程式安裝帳號",
"create_for": "建立",
"setup_organization": "設定組織",
"organization_banner_description": "建立環境,供團隊利用輪流制和全體預定功能建立共用的應用程式、工作流程和活動類型。",
"organization_banner_title": "管理有多個團隊的組織",
"set_up_your_organization": "設定您的組織",
"organizations_description": "團隊可在組織這個共用環境中建立共用的活動類型、應用程式、工作流程等。",
"set_up_your_organization": "設定組織",
"organizations_description": "組織是一種共用環境,團隊可以在其中建立共用的活動類型、應用程式、工作流程等。",
"must_enter_organization_name": "必須輸入組織名稱",
"must_enter_organization_admin_email": "必須輸入您的組織電子郵件地址",
"admin_email": "您的組織電子郵件地址",
"must_enter_organization_admin_email": "必須輸入組織電子郵件地址",
"admin_email": "組織的電子郵件地址",
"admin_username": "管理員使用者名稱",
"organization_name": "組織名稱",
"organization_url": "組織網址",
"organization_verify_header": "驗證您的組織電子郵件",
"organization_verify_email_body": "請使用以下驗證碼驗證您的電子郵件地址,以便繼續設定您的組織。",
"organization_verify_email_body": "請使用以下驗證碼驗證您的電子郵件地址,以便繼續設定組織。",
"additional_url_parameters": "其他網址參數",
"about_your_organization": "關於您的組織",
"about_your_organization_description": "您可在組織這個共用環境中建立多個團隊,包括共享成員、活動類型、應用程式、工作流程等。",
"create_your_teams": "建立您的團隊",
"about_your_organization_description": "組織是一種共用環境,您可以在其中建立多個團隊,而這些團隊則可共享成員、活動類型、應用程式、工作流程等。",
"create_your_teams": "建立團隊",
"create_your_teams_description": "將團隊成員新增到組織,開始一起排程",
"invite_organization_admins": "邀請組織管理員",
"invite_organization_admins_description": "這些管理員將可存取組織中的所有團隊。您可稍後再新增團隊管理員和成員。",
"set_a_password": "設定密碼",
"set_a_password_description": "這麼做會使用貴組織電子郵件和此密碼建立新的使用者帳戶。",
"set_a_password_description": "這麼做會使用您的組織電子郵件和此密碼建立新的使用者帳戶。",
"organization_logo": "組織標誌",
"organization_about_description": "請提供關於組織的簡介,這會顯示在組織的公開簡介網頁上。",
"organization_about_description": "請提供貴組織的簡介,這會顯示在組織的公開簡介網頁上。",
"ill_do_this_later": "之後再說",
"verify_your_email": "驗證電子郵件",
"enter_digit_code": "輸入我們傳送至 {{email}} 的 6 位數驗證碼",
"verify_email_organization": "驗證您的電子郵件,以建立組織",
"code_provided_invalid": "提供的驗證碼無效,再試一次",
"verify_email_organization": "驗證您的電子郵件以建立組織",
"code_provided_invalid": "提供的驗證碼無效,請再試一次",
"email_already_used": "電子郵件已有人使用",
"organization_admin_invited_heading": "您已獲邀加入 {{orgName}}",
"organization_admin_invited_body": "加入您在 {{orgName}} 的團隊,開始專注於會議本身,不必費心於會議的前置作業!",
"duplicated_slugs_warning": "由於 slug 重複,無法建立下列團隊:{{slugs}}",
"team_names_empty": "團隊名稱不得留空",
"team_names_repeated": "團隊名稱不得重複",
"user_belongs_organization": "使用者屬於組織",
"org_no_teams_yet": "此組織尚未有團隊",
"org_no_teams_yet_description": "若您是管理員,請務必建立團隊,團隊才會顯示在這裡。",
"user_belongs_organization": "使用者屬於某個組織",
"org_no_teams_yet": "此組織尚無團隊",
"org_no_teams_yet_description": "若您是管理員,請務必建立團隊,才會顯示在這裡。",
"set_up": "設定",
"set_up_your_profile": "設定個人資料",
"set_up_your_profile_description": "向大家介紹您在 {{orgName}} 擔任的職務,以及他們何時可以使用您的公開連結。",
@@ -1925,7 +1925,7 @@
"messaging": "傳訊",
"sender_id_info": "顯示為簡訊傳送者的名稱或電話號碼 (部分國家/地區不允許英數字元的傳送者 ID)",
"org_admins_can_create_new_teams": "只有組織管理員才能建立新團隊",
"google_new_spam_policy": "Google 新的垃圾郵件政策可能會使您收不到關於此預約的任何電子郵件和行事曆通知。",
"google_new_spam_policy": "新的 Google 垃圾郵件政策可能會使您收不到任何關於此預約的電子郵件和行事曆通知。",
"resolve": "解決",
"no_organization_slug": "為此組織建立團隊時發生錯誤。缺少網址 slug。",
"org_name": "組織名稱",
@@ -1933,12 +1933,12 @@
"copy_link_org": "複製組織連結",
"404_the_org": "組織",
"404_the_team": "團隊",
"404_claim_entity_org": "認領組織的子網域",
"404_claim_entity_team": "認領此團隊並開始共同管理行程表",
"404_claim_entity_org": "為您的組織預留子網域",
"404_claim_entity_team": "加入此團隊並開始共同管理行程表",
"insights_all_org_filter": "所有應用程式",
"insights_team_filter": "團隊:{{teamName}}",
"insights_user_filter": "使用者:{{userName}}",
"insights_subtitle": "查看所有活動的預約洞見",
"custom_plan": "自訂方案",
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 在此上方添加您的新字符串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
"ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 請在此處新增您的字串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑"
}
+2 -1
View File
@@ -2,6 +2,7 @@ import type { GetStaticPropsContext } from "next";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
import superjson from "superjson";
import { CALCOM_VERSION } from "@calcom/lib/constants";
import prisma from "@calcom/prisma";
import { createProxySSGHelpers } from "@calcom/trpc/react/ssg";
import { appRouter } from "@calcom/trpc/server/routers/_app";
@@ -37,7 +38,7 @@ export async function ssgInit<TParams extends { locale?: string }>(opts: GetStat
});
// always preload i18n
await ssg.viewer.public.i18n.fetch();
await ssg.viewer.public.i18n.fetch({ locale, CalComVersion: CALCOM_VERSION });
return ssg;
}
+13 -11
View File
@@ -2,7 +2,8 @@ import type { GetServerSidePropsContext } from "next";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
import superjson from "superjson";
import { getLocaleFromHeaders } from "@calcom/lib/i18n";
import { CALCOM_VERSION } from "@calcom/lib/constants";
import { getLocaleFromRequest } from "@calcom/lib/getLocaleFromRequest";
import { createProxySSGHelpers } from "@calcom/trpc/react/ssg";
import { createContext } from "@calcom/trpc/server/createContext";
import { appRouter } from "@calcom/trpc/server/routers/_app";
@@ -15,8 +16,8 @@ import { appRouter } from "@calcom/trpc/server/routers/_app";
*/
export async function ssrInit(context: GetServerSidePropsContext) {
const ctx = await createContext(context);
const locale = getLocaleFromHeaders(context.req);
const i18n = await serverSideTranslations(getLocaleFromHeaders(context.req), ["common", "vital"]);
const locale = await getLocaleFromRequest(context.req);
const i18n = await serverSideTranslations(locale, ["common", "vital"]);
const ssr = createProxySSGHelpers({
router: appRouter,
@@ -24,14 +25,15 @@ export async function ssrInit(context: GetServerSidePropsContext) {
ctx: { ...ctx, locale, i18n },
});
// always preload "viewer.public.i18n"
await ssr.viewer.public.i18n.fetch();
// So feature flags are available on first render
await ssr.viewer.features.map.prefetch();
// Provides a better UX to the users who have already upgraded.
await ssr.viewer.teams.hasTeamPlan.prefetch();
await ssr.viewer.public.session.prefetch();
await Promise.allSettled([
// always preload "viewer.public.i18n"
ssr.viewer.public.i18n.prefetch({ locale, CalComVersion: CALCOM_VERSION }),
// So feature flags are available on first render
ssr.viewer.features.map.prefetch(),
// Provides a better UX to the users who have already upgraded.
ssr.viewer.teams.hasTeamPlan.prefetch(),
ssr.viewer.public.session.prefetch(),
]);
return ssr;
}
+129 -97
View File
@@ -269,12 +269,14 @@ describe("getSchedule", () => {
createBookingScenario(scenarioData);
const scheduleForDayWithAGoogleCalendarBooking = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
},
});
// As per Google Calendar Availability, only 4PM(4-4:45PM) GMT slot would be available
@@ -353,13 +355,15 @@ describe("getSchedule", () => {
// Day Plus 2 is completely free - It only has non accepted bookings
const scheduleOnCompletelyFreeDay = await getSchedule({
eventTypeId: 1,
// EventTypeSlug doesn't matter for non-dynamic events
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
// EventTypeSlug doesn't matter for non-dynamic events
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
// getSchedule returns timeslots in GMT
@@ -384,12 +388,14 @@ describe("getSchedule", () => {
// Day plus 3
const scheduleForDayWithOneBooking = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForDayWithOneBooking).toHaveTimeSlots(
@@ -448,12 +454,14 @@ describe("getSchedule", () => {
const { dateString: plus1DateString } = getDate({ dateIncrement: 1 });
const { dateString: plus2DateString } = getDate({ dateIncrement: 2 });
const scheduleForEventWith30Length = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventWith30Length).toHaveTimeSlots(
@@ -482,12 +490,14 @@ describe("getSchedule", () => {
);
const scheduleForEventWith30minsLengthAndSlotInterval2hrs = await getSchedule({
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
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
@@ -545,12 +555,14 @@ describe("getSchedule", () => {
const { dateString: todayDateString } = getDate();
const { dateString: minus1DateString } = getDate({ dateIncrement: -1 });
const scheduleForEventWithBookingNotice13Hrs = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${minus1DateString}T18:30:00.000Z`,
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${minus1DateString}T18:30:00.000Z`,
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventWithBookingNotice13Hrs).toHaveTimeSlots(
[
@@ -564,12 +576,14 @@ describe("getSchedule", () => {
);
const scheduleForEventWithBookingNotice10Hrs = await getSchedule({
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${minus1DateString}T18:30:00.000Z`,
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${minus1DateString}T18:30:00.000Z`,
endTime: `${todayDateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventWithBookingNotice10Hrs).toHaveTimeSlots(
[
@@ -627,12 +641,14 @@ describe("getSchedule", () => {
createBookingScenario(scenarioData);
const scheduleForEventOnADayWithNonCalBooking = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventOnADayWithNonCalBooking).toHaveTimeSlots(
@@ -700,12 +716,14 @@ describe("getSchedule", () => {
createBookingScenario(scenarioData);
const scheduleForEventOnADayWithCalBooking = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventOnADayWithCalBooking).toHaveTimeSlots(
@@ -757,12 +775,14 @@ describe("getSchedule", () => {
createBookingScenario(scenarioData);
const schedule = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(schedule).toHaveTimeSlots(
@@ -820,12 +840,14 @@ describe("getSchedule", () => {
createBookingScenario(scenarioData);
const scheduleForEventOnADayWithDateOverride = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(scheduleForEventOnADayWithDateOverride).toHaveTimeSlots(
@@ -905,12 +927,14 @@ describe("getSchedule", () => {
// Requesting this user's availability for their
// individual Event Type
const thisUserAvailability = await getSchedule({
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
input: {
eventTypeId: 2,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: false,
}
});
expect(thisUserAvailability).toHaveTimeSlots(
@@ -1002,12 +1026,14 @@ describe("getSchedule", () => {
});
const scheduleForTeamEventOnADayWithNoBooking = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${todayDateString}T18:30:00.000Z`,
endTime: `${plus1DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${todayDateString}T18:30:00.000Z`,
endTime: `${plus1DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
}
});
expect(scheduleForTeamEventOnADayWithNoBooking).toHaveTimeSlots(
@@ -1030,12 +1056,14 @@ describe("getSchedule", () => {
);
const scheduleForTeamEventOnADayWithOneBookingForEachUser = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
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
@@ -1137,12 +1165,14 @@ describe("getSchedule", () => {
hosts: [],
});
const scheduleForTeamEventOnADayWithOneBookingForEachUserButOnDifferentTimeslots = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
endTime: `${plus2DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus1DateString}T18:30:00.000Z`,
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(
@@ -1163,12 +1193,14 @@ describe("getSchedule", () => {
);
const scheduleForTeamEventOnADayWithOneBookingForEachUserOnSameTimeSlot = await getSchedule({
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
endTime: `${plus3DateString}T18:29:59.999Z`,
timeZone: Timezones["+5:30"],
isTeamEvent: true,
input: {
eventTypeId: 1,
eventTypeSlug: "",
startTime: `${plus2DateString}T18:30:00.000Z`,
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(
@@ -303,6 +303,7 @@ describe("handleChildrenEventTypes", () => {
timeZone: _timeZone,
parentId: _parentId,
userId: _userId,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
requiresBookerEmailVerification,
...evType
} = mockFindFirstEventType({
+9 -2
View File
@@ -8,7 +8,13 @@
"@lib/*": ["lib/*"],
"@server/*": ["server/*"],
"@prisma/client/*": ["@calcom/prisma/client/*"]
}
},
"plugins": [
{
"name": "next"
}
],
"strictNullChecks": true
},
"include": [
/* Find a way to not require this - App files don't belong here. */
@@ -17,7 +23,8 @@
"../../packages/types/*.d.ts",
"../../packages/types/next-auth.d.ts",
"**/*.ts",
"**/*.tsx"
"**/*.tsx",
".next/types/**/*.ts"
],
"exclude": ["node_modules"]
}
-1
View File
@@ -77,7 +77,6 @@
"@playwright/test": "^1.31.2",
"@snaplet/copycat": "^0.3.0",
"@testing-library/jest-dom": "^5.16.5",
"@types/dompurify": "^2.4.0",
"c8": "^7.13.0",
"dotenv-checker": "^1.1.5",
"husky": "^8.0.0",
+46 -7
View File
@@ -1,5 +1,6 @@
import chokidar from "chokidar";
import fs from "fs";
// eslint-disable-next-line no-restricted-imports
import { debounce } from "lodash";
import path from "path";
import prettier from "prettier";
@@ -7,7 +8,7 @@ import prettier from "prettier";
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
import prettierConfig from "@calcom/config/prettier-preset";
import { AppMeta } from "@calcom/types/App";
import type { AppMeta } from "@calcom/types/App";
import { APP_STORE_PATH } from "./constants";
import { getAppName } from "./utils/getAppName";
@@ -39,6 +40,7 @@ type App = Partial<AppMeta> & {
function generateFiles() {
const browserOutput = [`import dynamic from "next/dynamic"`];
const metadataOutput = [];
const bookerMetadataOutput = [];
const schemasOutput = [];
const appKeysSchemasOutput = [];
const serverOutput = [];
@@ -69,22 +71,30 @@ function generateFiles() {
}
});
function forEachAppDir(callback: (arg: App) => void) {
function forEachAppDir(callback: (arg: App) => void, filter: (arg: App) => boolean = () => true) {
for (let i = 0; i < appDirs.length; i++) {
const configPath = path.join(APP_STORE_PATH, appDirs[i].path, "config.json");
const metadataPath = path.join(APP_STORE_PATH, appDirs[i].path, "_metadata.ts");
let app;
if (fs.existsSync(configPath)) {
app = JSON.parse(fs.readFileSync(configPath).toString());
} else if (fs.existsSync(metadataPath)) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
app = require(metadataPath).metadata;
} else {
app = {};
}
callback({
const finalApp = {
...app,
name: appDirs[i].name,
path: appDirs[i].path,
});
};
if (filter(finalApp)) {
callback(finalApp);
}
}
}
@@ -129,7 +139,8 @@ function generateFiles() {
lazyImport?: boolean;
importConfig: ImportConfig;
entryObjectKeyGetter?: (arg: App, importName?: string) => string;
}
},
filter?: (arg: App) => boolean
) {
const output: string[] = [];
@@ -173,7 +184,7 @@ function generateFiles() {
}
}
}
});
}, filter);
}
function createExportObject() {
@@ -200,7 +211,7 @@ function generateFiles() {
}
}
}
});
}, filter);
output.push(`};`);
}
@@ -246,6 +257,25 @@ function generateFiles() {
})
);
bookerMetadataOutput.push(
...getExportedObject(
"appStoreMetadata",
{
// Try looking for config.json and if it's not found use _metadata.ts to generate appStoreMetadata
importConfig: [
{
fileToBeImported: "config.json",
importName: "default",
},
{
fileToBeImported: "_metadata.ts",
importName: "metadata",
},
],
},
isBookerApp
)
);
schemasOutput.push(
...getExportedObject("appDataSchemas", {
// Import path must have / even for windows and not \
@@ -311,6 +341,7 @@ function generateFiles() {
["apps.browser.generated.tsx", browserOutput],
["apps.schemas.generated.ts", schemasOutput],
["apps.keys-schemas.generated.ts", appKeysSchemasOutput],
["bookerApps.metadata.generated.ts", bookerMetadataOutput],
];
filesToGenerate.forEach(([fileName, output]) => {
fs.writeFileSync(`${APP_STORE_PATH}/${fileName}`, formatOutput(`${banner}${output.join("\n")}`));
@@ -346,3 +377,11 @@ if (isInWatchMode) {
} else {
generateFiles();
}
function isBookerApp(app: App) {
// Right now there are only two types of Apps that booker needs.
// Note that currently payment apps' meta don't need to be accessed on booker. We just access from DB eventType.metadata
// 1. It is a location app(e.g. any Conferencing App)
// 2. It is a tag manager app(e.g. Google Analytics, GTM, Fathom)
return !!(app.appData?.location || app.appData?.tag);
}
+1 -1
View File
@@ -1,7 +1,7 @@
import Script from "next/script";
import { getEventTypeAppData } from "@calcom/app-store/_utils/getEventTypeAppData";
import { appStoreMetadata } from "@calcom/app-store/appStoreMetaData";
import { appStoreMetadata } from "@calcom/app-store/bookerAppsMetaData";
import type { appDataSchemas } from "./apps.schemas.generated";
+2 -15
View File
@@ -1,7 +1,7 @@
import type { AppMeta } from "@calcom/types/App";
import { appStoreMetadata as rawAppStoreMetadata } from "./apps.metadata.generated";
import { getAppAssetFullPath } from "./getAppAssetFullPath";
import { getNormalizedAppMetadata } from "./getNormalizedAppMetadata";
type RawAppStoreMetaData = typeof rawAppStoreMetadata;
type AppStoreMetaData = {
@@ -10,18 +10,5 @@ type AppStoreMetaData = {
export const appStoreMetadata = {} as AppStoreMetaData;
for (const [key, value] of Object.entries(rawAppStoreMetadata)) {
const dirName = "dirName" in value ? value.dirName : value.slug;
if (!dirName) {
throw new Error(`Couldn't derive dirName for app ${key}`);
}
const metadata = (appStoreMetadata[key as keyof typeof appStoreMetadata] = {
appData: null,
dirName,
__template: "",
...value,
} as AppStoreMetaData[keyof AppStoreMetaData]);
metadata.logo = getAppAssetFullPath(metadata.logo, {
dirName,
isTemplate: metadata.isTemplate,
});
appStoreMetadata[key as keyof typeof appStoreMetadata] = getNormalizedAppMetadata(value);
}

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