From ef1b5067c2023aa5c905b7059cb80c6758f644dc Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Tue, 27 Aug 2024 09:43:04 +0900 Subject: [PATCH 01/64] fix: Undefined user in insights data (#16365) * fix: Null user in insights data * renaming --- .../features/insights/components/TotalBookingUsersTable.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/features/insights/components/TotalBookingUsersTable.tsx b/packages/features/insights/components/TotalBookingUsersTable.tsx index 405cfb85906ab2..772a63406c8512 100644 --- a/packages/features/insights/components/TotalBookingUsersTable.tsx +++ b/packages/features/insights/components/TotalBookingUsersTable.tsx @@ -17,12 +17,13 @@ export const TotalBookingUsersTable = ({ }[] | undefined; }) => { + const filteredData = data && data?.length > 0 ? data?.filter((item) => !!item.user) : []; return ( <> - {data && data?.length > 0 ? ( - data?.map((item) => ( + {filteredData.length > 0 ? ( + filteredData.map((item) => ( Date: Tue, 27 Aug 2024 09:46:55 +0200 Subject: [PATCH 02/64] fix: Avoid typescript error for Nextjs usePathname() (#16368) * Avoid typescript error for Nextjs usePathname() #fixes 16323 * Update Shell.tsx --------- Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> --- packages/features/shell/Shell.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/features/shell/Shell.tsx b/packages/features/shell/Shell.tsx index 1d78879fb74edf..7a8a7fead3b6af 100644 --- a/packages/features/shell/Shell.tsx +++ b/packages/features/shell/Shell.tsx @@ -215,7 +215,7 @@ const useBanners = () => { const Layout = (props: LayoutProps) => { const banners = useBanners(); const pathname = usePathname(); - const isFullPageWithoutSidebar = pathname.startsWith("/apps/routing-forms/reporting/"); + const isFullPageWithoutSidebar = pathname?.startsWith("/apps/routing-forms/reporting/"); const { data: user } = trpc.viewer.me.useQuery(); const { boot } = useIntercom(); const pageTitle = typeof props.heading === "string" && !props.title ? props.heading : props.title; From 6104add6bd45c549f9d16170924aaa4f82ef84bb Mon Sep 17 00:00:00 2001 From: Hariom Balhara Date: Tue, 27 Aug 2024 17:44:19 +0530 Subject: [PATCH 03/64] fix: More Stability for FormBuilder by unit tests (#16129) * Remove use of location from FormBuilder * Add tests * Improve error message in test * Bust cache --- .../components/eventtype/EventAdvancedTab.tsx | 14 +- apps/web/playwright/fixtures/users.ts | 3 +- .../form-builder/FormBuilder.test.tsx | 177 +++++++++++++ .../features/form-builder/FormBuilder.tsx | 41 +-- packages/features/form-builder/testUtils.ts | 234 ++++++++++++++++++ packages/prisma/schema.prisma | 2 + .../all-questions/tests/allQuestions.test.tsx | 76 ------ .../components/all-questions/tests/utils.ts | 106 -------- vitest.workspace.ts | 10 + 9 files changed, 463 insertions(+), 200 deletions(-) create mode 100644 packages/features/form-builder/FormBuilder.test.tsx create mode 100644 packages/features/form-builder/testUtils.ts delete mode 100644 packages/ui/components/all-questions/tests/allQuestions.test.tsx delete mode 100644 packages/ui/components/all-questions/tests/utils.ts diff --git a/apps/web/components/eventtype/EventAdvancedTab.tsx b/apps/web/components/eventtype/EventAdvancedTab.tsx index a35486141b95eb..f66606129d6f4b 100644 --- a/apps/web/components/eventtype/EventAdvancedTab.tsx +++ b/apps/web/components/eventtype/EventAdvancedTab.tsx @@ -15,6 +15,7 @@ import { } from "@calcom/features/ee/workflows/lib/allowDisablingStandardEmails"; import type { FormValues } from "@calcom/features/eventtypes/lib/types"; import { FormBuilder } from "@calcom/features/form-builder/FormBuilder"; +import type { fieldSchema } from "@calcom/features/form-builder/schema"; import type { EditableSchema } from "@calcom/features/form-builder/schema"; import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector"; import { classNames } from "@calcom/lib"; @@ -46,6 +47,8 @@ import { import RequiresConfirmationController from "./RequiresConfirmationController"; import { DisableAllEmailsSetting } from "./settings/DisableAllEmailsSetting"; +type BookingField = z.infer; + const CustomEventTypeModal = dynamic(() => import("@components/eventtype/CustomEventTypeModal")); export const EventAdvancedTab = ({ eventType, team }: Pick) => { @@ -163,7 +166,6 @@ export const EventAdvancedTab = ({ eventType, team }: Pick ({ label: secondaryEmail.email, value: secondaryEmail.id })), ]; const selectedSecondaryEmailId = formMethods.getValues("secondaryEmailId") || -1; - return (
{/** @@ -269,9 +271,17 @@ export const EventAdvancedTab = ({ eventType, team }: Pick { + // Location field has a default value at backend so API can send no location but we don't allow it in UI and thus we want to show it as required to user + return field.name === "location" ? true : field.required; + }} />
({ + useAutoAnimate: () => [null], +})); + +const renderComponent = ({ + formBuilderProps: formBuilderProps, + formDefaultValues: formDefaultValues, +}: { + formBuilderProps: Parameters[0]; + formDefaultValues; +}) => { + const Wrapper = ({ children }: { children: ReactNode }) => { + const form = useForm({ + defaultValues: formDefaultValues, + }); + return ( + + {children} + + ); + }; + + return render(, { wrapper: Wrapper }); +}; + +describe("FormBuilder", () => { + beforeAll(() => { + setMockMatchMedia(); + setMockIntersectionObserver(); + }); + + describe("Basic Tests", () => { + const fieldTypes = [ + { fieldType: "email", label: "Email Field" }, + { fieldType: "phone", label: "Phone Field" }, + { fieldType: "address", label: "Address Field" }, + { fieldType: "text", label: "Short Text Field" }, + { fieldType: "number", label: "Number Field" }, + { fieldType: "textarea", label: "LongText Field" }, + { fieldType: "select", label: "Select Field" }, + { fieldType: "multiselect", label: "MultiSelect Field" }, + { fieldType: "multiemail", label: "Multiple Emails Field" }, + { fieldType: "checkbox", label: "CheckBox Group Field" }, + { fieldType: "radio", label: "Radio Group Field" }, + { fieldType: "boolean", label: "Checkbox Field" }, + ]; + beforeEach(() => { + renderComponent({ formBuilderProps: mockProps, formDefaultValues: {} }); + }); + + for (const { fieldType, label } of fieldTypes) { + it(`Should add new field of type ${fieldType} `, async () => { + const defaultIdentifier = `${fieldType}-id`; + const newIdentifier = `${defaultIdentifier}-edited`; + + await verifier.verifyFieldAddition({ + fieldType, + identifier: defaultIdentifier, + label, + }); + + await verifier.verifyIdentifierChange({ + newIdentifier: newIdentifier, + existingIdentifier: defaultIdentifier, + }); + + await verifier.verifyThatFieldCanBeMarkedOptional({ + identifier: newIdentifier, + }); + + await verifier.verifyFieldToggle({ identifier: newIdentifier }); + + await verifier.verifyFieldDeletion({ identifier: newIdentifier }); + }); + } + }); + + describe("radioInput type field with options available in dataStore", () => { + test('Should add new field of type "radioInput" and select option from dataStore', async () => { + const field = { + identifier: "location", + type: "radioInput", + }; + renderComponent({ + formBuilderProps: { + ...mockProps, + dataStore: { + options: { + locations: { + value: [ + { + label: "Attendee Phone", + value: "phone", + inputPlaceholder: "Phone Number", + }, + ], + source: { label: "Location" }, + }, + }, + }, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + shouldConsiderRequired: ({ field: any }) => { + field.name === "location" ? true : false; + }, + }, + // TODO: May be we should get this from getBookingFields directly which tests more practical cases + formDefaultValues: { + fields: [ + { + defaultLabel: "location", + type: field.type, + name: field.identifier, + editable: "system", + hideWhenJustOneOption: true, + required: false, + getOptionsAt: "locations", + optionsInputs: { + attendeeInPerson: { + type: "address", + required: true, + placeholder: "", + }, + phone: { + type: "phone", + required: true, + placeholder: "", + }, + }, + }, + ], + }, + }); + + // editable:'system' field can't be deleted + expect(pageObject.queryDeleteButton({ identifier: field.identifier })).toBeNull(); + // editable:'system' field can't be toggled + expect(pageObject.queryToggleButton({ identifier: field.identifier })).toBeNull(); + + const newFieldDialog = pageObject.openAddFieldDialog(); + + // radioInput type field isn't selectable by the user. + expect( + pageObject.dialog.fieldTypeDropdown.queryOptionForFieldType({ + dialog: newFieldDialog, + fieldType: "radioInput", + }) + ).toBeNull(); + + pageObject.dialog.close({ dialog: newFieldDialog }); + + const dialog = pageObject.openEditFieldDialog({ identifier: field.identifier }); + + expectScenario.toHaveFieldTypeDropdownDisabled({ dialog }); + expectScenario.toHaveIdentifierChangeDisabled({ dialog }); + expectScenario.toHaveRequirablityToggleDisabled({ dialog }); + expectScenario.toHaveLabelChangeAllowed({ dialog }); + expect(pageObject.dialog.isFieldShowingAsRequired({ dialog })).toBe(true); + }); + }); +}); diff --git a/packages/features/form-builder/FormBuilder.tsx b/packages/features/form-builder/FormBuilder.tsx index ebb0b8de3db9a2..88ee25f90fd67e 100644 --- a/packages/features/form-builder/FormBuilder.tsx +++ b/packages/features/form-builder/FormBuilder.tsx @@ -45,13 +45,6 @@ function getCurrentFieldType(fieldForm: UseFormReturn) { return fieldTypesConfigMap[fieldForm.watch("type") || "text"]; } -function isRequiredField(field: RhfFormField) { - // 'location' must be shown as required in the UI(but at backend it is not required because not specifying it defaults to CalVideo) - // So, handle it in UI only instead of updating bookingFields config in getBookingFields - // TODO: FormBuilder must not be made aware of BookingFields, so move this "location" check to outside FormBuilder where the component is used. - return field.name === "location" ? true : field.required; -} - /** * It works with a react-hook-form only. * `formProp` specifies the name of the property in the react-hook-form that has the fields. This is where fields would be updated. @@ -64,6 +57,7 @@ export const FormBuilder = function FormBuilder({ disabled, LockedIcon, dataStore, + shouldConsiderRequired, }: { formProp: string; title: string; @@ -75,8 +69,19 @@ export const FormBuilder = function FormBuilder({ * A readonly dataStore that is used to lookup the options for the fields. It works in conjunction with the field.getOptionAt property which acts as the key in options */ dataStore: { - options: Record; + options: Record< + string, + { + source: { label: string }; + value: { label: string; value: string; inputPlaceholder?: string }[]; + } + >; }; + /** + * This is kind of a hack to allow certain fields to be just shown as required when they might not be required in a strict sense + * e.g. Location field has a default value at backend so API can send no location but formBuilder in UI doesn't allow it. + */ + shouldConsiderRequired?: (field: RhfFormField) => boolean | undefined; }) { // I would have liked to give Form Builder it's own Form but nested Forms aren't something that browsers support. // So, this would reuse the same Form as the parent form. @@ -128,12 +133,13 @@ export const FormBuilder = function FormBuilder({ {fields.map((field, index) => { let options = field.options ?? null; const sources = [...(field.sources || [])]; - const isRequired = isRequiredField(field); + const isRequired = shouldConsiderRequired ? shouldConsiderRequired(field) : field.required; if (!options && field.getOptionsAt) { - options = dataStore.options[field.getOptionsAt as keyof typeof dataStore] ?? []; - // TODO: The dataStore should itself provide the label directly - // This is important because FormBuilder isn't aware of what a location is. It is a generic Form Builder - const sourceLabel = field.getOptionsAt === "locations" ? "Location" : field.getOptionsAt; + const { + source: { label: sourceLabel }, + value, + } = dataStore.options[field.getOptionsAt as keyof typeof dataStore] ?? []; + options = value; options.forEach((option) => { sources.push({ id: option.value, @@ -321,6 +327,7 @@ export const FormBuilder = function FormBuilder({ data: null, }); }} + shouldConsiderRequired={shouldConsiderRequired} /> )} @@ -418,10 +425,12 @@ function FieldEditDialog({ dialog, onOpenChange, handleSubmit, + shouldConsiderRequired, }: { dialog: { isOpen: boolean; fieldIndex: number; data: RhfFormField | null }; onOpenChange: (isOpen: boolean) => void; handleSubmit: SubmitHandler; + shouldConsiderRequired?: (field: RhfFormField) => boolean | undefined; }) { const { t } = useLocale(); const fieldForm = useForm({ @@ -531,8 +540,10 @@ function FieldEditDialog({ { - const isRequired = isRequiredField(fieldForm.getValues()); + render={({ field: { value, onChange } }) => { + const isRequired = shouldConsiderRequired + ? shouldConsiderRequired(fieldForm.getValues()) + : value; return ( ; + +export const mockProps: FormBuilderProps = { + formProp: "fields", + title: "FormBuilder Title", + description: "FormBuilder Description", + addFieldLabel: "Add Field", + disabled: false, + LockedIcon: false, + dataStore: { options: {} }, +}; + +export const setMockMatchMedia = () => { + Object.defineProperty(window, "matchMedia", { + value: vi.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + dispatchEvent: vi.fn(), + })), + }); +}; + +export const setMockIntersectionObserver = () => { + Object.defineProperty(window, "IntersectionObserver", { + value: vi.fn().mockImplementation(() => ({ + observe: vi.fn(), + unobserve: vi.fn(), + disconnect: vi.fn(), + takeRecords: vi.fn(() => []), + })), + }); +}; + +type TestingLibraryElement = ReturnType; + +const getFieldDomElementInTheList = ({ identifier }: { identifier: string }) => { + return screen.getByTestId(`field-${identifier}`); +}; + +const queryFieldDomElementInTheList = ({ identifier }: { identifier: string }) => { + return screen.queryByTestId(`field-${identifier}`); +}; + +const getFieldInTheList = ({ identifier }: { identifier: string }) => { + const domElement = getFieldDomElementInTheList({ identifier }); + return within(domElement); +}; + +const getEditDialogForm = () => { + const formBuilder = document.getElementById("form-builder"); + if (!formBuilder) { + throw new Error("Form Builder not found"); + } + return within(formBuilder); +}; + +export const pageObject = { + openAddFieldDialog: () => { + fireEvent.click(screen.getByTestId("add-field")); + return getEditDialogForm(); + }, + openEditFieldDialog: ({ identifier }: { identifier: string }) => { + fireEvent.click(getFieldInTheList({ identifier }).getByTestId("edit-field-action")); + return getEditDialogForm(); + }, + dialog: { + isFieldShowingAsRequired: ({ dialog }: { dialog: TestingLibraryElement }) => { + return ( + within(dialog.getByTestId("field-required")).getByText("Yes").getAttribute("aria-checked") === "true" + ); + }, + makeFieldOptional: ({ dialog }: { dialog: TestingLibraryElement }) => { + fireEvent.click(within(dialog.getByTestId("field-required")).getByText("No")); + }, + makeFieldRequired: ({ dialog }: { dialog: TestingLibraryElement }) => { + fireEvent.click(within(dialog.getByTestId("field-required")).getByText("Yes")); + }, + queryIdentifierInput: ({ dialog }: { dialog: TestingLibraryElement }) => { + return dialog.getByLabelText("identifier"); + }, + saveField: ({ dialog }: { dialog: ReturnType }) => { + fireEvent.click(dialog.getByTestId("field-add-save")); + }, + openFieldTypeDropdown: ({ dialog }: { dialog: TestingLibraryElement }) => { + fireEvent.keyDown(dialog.getByTestId("test-field-type"), { key: "ArrowDown", code: "ArrowDown" }); + }, + fieldTypeDropdown: { + queryOptionForFieldType: ({ + dialog, + fieldType, + }: { + dialog: TestingLibraryElement; + fieldType: string; + }) => { + const fieldTypeEl = within(dialog.getByTestId("test-field-type")); + return fieldTypeEl.queryByTestId(`select-option-${fieldType}`); + }, + queryAllOptions: ({ dialog }: { dialog: TestingLibraryElement }) => { + const fieldTypeElementWithOptions = within(dialog.getByTestId("test-field-type").parentElement); + return fieldTypeElementWithOptions.queryAllByTestId(/^select-option-/); + }, + }, + selectFieldType: ({ dialog, fieldType }: { dialog: TestingLibraryElement; fieldType: string }) => { + pageObject.dialog.openFieldTypeDropdown({ dialog }); + fireEvent.click(dialog.getByTestId(`select-option-${fieldType}`)); + }, + fillInFieldIdentifier: ({ + dialog, + identifier, + }: { + dialog: TestingLibraryElement; + identifier: string; + }) => { + fireEvent.change(dialog.getAllByRole("textbox")[0], { target: { value: identifier } }); + }, + fillInFieldLabel: ({ dialog, label }: { dialog: TestingLibraryElement; label: string }) => { + fireEvent.change(dialog.getAllByRole("textbox")[1], { target: { value: label } }); + }, + close: ({ dialog }: { dialog: TestingLibraryElement }) => { + fireEvent.click(dialog.getByTestId("dialog-rejection")); + }, + }, + queryDeleteButton: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + return field.queryByTestId("delete-field-action"); + }, + getDeleteButton: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + return field.queryByTestId("delete-field-action"); + }, + deleteField: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + fireEvent.click(field.getByTestId("delete-field-action")); + }, + queryToggleButton: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + return field.queryByTestId("toggle-field"); + }, + getToggleButton: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + return field.getByTestId("toggle-field"); + }, + toggleField: ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + fireEvent.click(field.getByTestId("toggle-field")); + }, +}; + +export const verifier = { + verifyFieldAddition: async (props: FieldProps) => { + const dialog = pageObject.openAddFieldDialog(); + pageObject.dialog.selectFieldType({ dialog, fieldType: props.fieldType }); + pageObject.dialog.fillInFieldIdentifier({ dialog, identifier: props.identifier }); + pageObject.dialog.fillInFieldLabel({ dialog, label: props.label }); + pageObject.dialog.saveField({ dialog: getEditDialogForm() }); + + await waitFor(() => { + expect(getFieldDomElementInTheList({ identifier: props.identifier })).toBeInTheDocument(); + }); + }, + verifyIdentifierChange: async (props: { newIdentifier: string; existingIdentifier: string }) => { + const dialog = pageObject.openEditFieldDialog({ identifier: props.existingIdentifier }); + pageObject.dialog.fillInFieldIdentifier({ dialog, identifier: props.newIdentifier }); + pageObject.dialog.saveField({ dialog }); + + await waitFor(() => { + expect(getFieldDomElementInTheList({ identifier: props.newIdentifier })).toBeInTheDocument(); + expect(queryFieldDomElementInTheList({ identifier: props.existingIdentifier })).not.toBeInTheDocument(); + }); + }, + verifyFieldDeletion: async ({ identifier }: { identifier: string }) => { + pageObject.deleteField({ identifier }); + + await waitFor(() => { + expect(queryFieldDomElementInTheList({ identifier })).not.toBeInTheDocument(); + }); + }, + verifyFieldToggle: async ({ identifier }: { identifier: string }) => { + pageObject.toggleField({ identifier }); + + await waitFor(() => { + expect(screen.queryByText(/hidden/i)).toBeInTheDocument(); + }); + }, + verifyThatFieldCanBeMarkedOptional: async ({ identifier }: { identifier: string }) => { + const field = getFieldInTheList({ identifier }); + expect(field.getByTestId("required")).toBeInTheDocument(); + const editDialogForm = pageObject.openEditFieldDialog({ identifier }); + pageObject.dialog.makeFieldOptional({ dialog: editDialogForm }); + pageObject.dialog.saveField({ dialog: editDialogForm }); + + await waitFor(() => { + expect(screen.getByTestId("optional")).toBeInTheDocument(); + }); + }, +}; + +export const expectScenario = { + toHaveFieldTypeDropdownDisabled: ({ dialog }: { dialog: TestingLibraryElement }) => { + pageObject.dialog.openFieldTypeDropdown({ dialog }); + const allOptions = pageObject.dialog.fieldTypeDropdown.queryAllOptions({ dialog }); + if (allOptions.length > 0) { + throw new Error(`Field type dropdown should be disabled`); + } + }, + toHaveIdentifierChangeDisabled: ({ dialog }: { dialog: TestingLibraryElement }) => { + const identifierInput = pageObject.dialog.queryIdentifierInput({ dialog }); + expect(identifierInput.disabled).toBe(true); + }, + toHaveRequirablityToggleDisabled: ({ dialog }: { dialog: TestingLibraryElement }) => { + const no = within(dialog.getByTestId("field-required")).getByText("No"); + const yes = within(dialog.getByTestId("field-required")).getByText("Yes"); + expect(no.disabled).toBe(true); + expect(yes.disabled).toBe(true); + }, + toHaveLabelChangeAllowed: ({ dialog }: { dialog: TestingLibraryElement }) => { + const labelInput = dialog.getByLabelText("label"); + expect(labelInput.disabled).toBe(false); + }, +}; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 8005f83c029877..d1127071b82643 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -58,6 +58,8 @@ model Host { @@index([eventTypeId]) } + + model EventType { id Int @id @default(autoincrement()) /// @zod.min(1) diff --git a/packages/ui/components/all-questions/tests/allQuestions.test.tsx b/packages/ui/components/all-questions/tests/allQuestions.test.tsx deleted file mode 100644 index 5ba1fe06340b9b..00000000000000 --- a/packages/ui/components/all-questions/tests/allQuestions.test.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { TooltipProvider } from "@radix-ui/react-tooltip"; -import { render } from "@testing-library/react"; -import type { ReactNode } from "react"; -import { FormProvider, useForm } from "react-hook-form"; -import { vi } from "vitest"; - -import { FormBuilder } from "@calcom/features/form-builder/FormBuilder"; - -import { mockProps, questionUtils, setMockIntersectionObserver, setMockMatchMedia } from "./utils"; - -vi.mock("@formkit/auto-animate/react", () => ({ - useAutoAnimate: () => [null], -})); - -const renderComponent = () => { - const Wrapper = ({ children }: { children: ReactNode }) => { - const methods = useForm(); - return ( - - {children} - - ); - }; - - return render(, { wrapper: Wrapper }); -}; - -describe("MultiSelect Question", () => { - beforeEach(() => { - renderComponent(); - }); - - beforeAll(() => { - setMockMatchMedia(); - setMockIntersectionObserver(); - }); - - const questionTypes = [ - { questionType: "email", label: "Email Field" }, - { questionType: "phone", label: "Phone Field" }, - { questionType: "address", label: "Address Field" }, - { questionType: "text", label: "Short Text Field" }, - { questionType: "number", label: "Number Field" }, - { questionType: "textarea", label: "LongText Field" }, - { questionType: "select", label: "Select Field" }, - { questionType: "multiselect", label: "MultiSelect Field" }, - { questionType: "multiemail", label: "Multiple Emails Field" }, - { questionType: "checkbox", label: "CheckBox Group Field" }, - { questionType: "radio", label: "Radio Group Field" }, - { questionType: "boolean", label: "Checkbox Field" }, - ]; - - for (const { questionType, label } of questionTypes) { - it(`Should handle ${label}`, async () => { - const defaultIdentifier = `${questionType}-id`; - const newIdentifier = `${defaultIdentifier}-edited`; - - await questionUtils.addQuestion({ - questionType, - identifier: defaultIdentifier, - label, - }); - - await questionUtils.editQuestion({ - identifier: newIdentifier, - existingQuestionId: defaultIdentifier, - }); - - await questionUtils.requiredAndOptionalQuestion(); - - await questionUtils.hideQuestion(); - - await questionUtils.deleteQuestion(newIdentifier); - }); - } -}); diff --git a/packages/ui/components/all-questions/tests/utils.ts b/packages/ui/components/all-questions/tests/utils.ts deleted file mode 100644 index 25cd236450c9d6..00000000000000 --- a/packages/ui/components/all-questions/tests/utils.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { fireEvent, waitFor, screen } from "@testing-library/react"; -import { vi } from "vitest"; - -export interface QuestionProps { - questionType: string; - identifier: string; - label: string; -} - -interface FormBuilderProps { - formProp: string; - title: string; - description: string; - addFieldLabel: string; - disabled: boolean; - LockedIcon: false | JSX.Element; - dataStore: { - options: Record; - }; -} - -export const mockProps: FormBuilderProps = { - formProp: "formProp", - title: "FormBuilder Title", - description: "FormBuilder Description", - addFieldLabel: "Add Field", - disabled: false, - LockedIcon: false, - dataStore: { options: {} }, -}; - -export const setMockMatchMedia = () => { - Object.defineProperty(window, "matchMedia", { - value: vi.fn().mockImplementation((query) => ({ - matches: false, - media: query, - onchange: null, - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - dispatchEvent: vi.fn(), - })), - }); -}; - -export const setMockIntersectionObserver = () => { - Object.defineProperty(window, "IntersectionObserver", { - value: vi.fn().mockImplementation(() => ({ - observe: vi.fn(), - unobserve: vi.fn(), - disconnect: vi.fn(), - takeRecords: vi.fn(() => []), - })), - }); -}; - -export const questionUtils = { - addQuestion: async (props: QuestionProps) => { - fireEvent.click(screen.getByTestId("add-field")); - fireEvent.keyDown(screen.getByTestId("test-field-type"), { key: "ArrowDown", code: "ArrowDown" }); - fireEvent.click(screen.getByTestId("select-option-email")); - fireEvent.change(screen.getAllByRole("textbox")[0], { target: { value: props.identifier } }); - fireEvent.change(screen.getAllByRole("textbox")[1], { target: { value: props.label } }); - fireEvent.click(screen.getByTestId("field-add-save")); - - await waitFor(() => { - expect(screen.queryByTestId(`field-${props.identifier}`)).toBeInTheDocument(); - }); - }, - editQuestion: async (props: { identifier: string; existingQuestionId: string }) => { - fireEvent.click(screen.getByTestId("edit-field-action")); - fireEvent.change(screen.getAllByRole("textbox")[0], { target: { value: props.identifier } }); - fireEvent.click(screen.getByTestId("field-add-save")); - - await waitFor(() => { - expect(screen.queryByTestId(`field-${props.identifier}`)).toBeInTheDocument(); - expect(screen.queryByTestId(`field-${props.existingQuestionId}`)).not.toBeInTheDocument(); - }); - }, - deleteQuestion: async (existingQuestionId: string) => { - expect(screen.queryByTestId(`field-${existingQuestionId}`)).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId("delete-field-action")); - - await waitFor(() => { - expect(screen.queryByTestId(`field-${existingQuestionId}`)).not.toBeInTheDocument(); - }); - }, - hideQuestion: async () => { - fireEvent.click(screen.getByTestId("toggle-field")); - - await waitFor(() => { - expect(screen.queryByText(/hidden/i)).toBeInTheDocument(); - }); - }, - requiredAndOptionalQuestion: async () => { - expect(screen.queryByTestId("required")).toBeInTheDocument(); - - fireEvent.click(screen.getByTestId("edit-field-action")); - fireEvent.click(screen.getAllByRole("radio")[1]); - fireEvent.click(screen.getByTestId("field-add-save")); - - await waitFor(() => { - expect(screen.getByTestId("optional")).toBeInTheDocument(); - }); - }, -}; diff --git a/vitest.workspace.ts b/vitest.workspace.ts index ae6537e1c34528..3ee1abb9965984 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -107,6 +107,7 @@ const workspaces = packagedEmbedTestsOnly globals: true, name: "@calcom/features", include: ["packages/features/**/*.{test,spec}.tsx"], + exclude: ["packages/features/form-builder/**/*"], environment: "jsdom", setupFiles: ["setupVitest.ts", "packages/ui/components/test-setup.ts"], }, @@ -149,6 +150,15 @@ const workspaces = packagedEmbedTestsOnly setupFiles: ["packages/ui/components/test-setup.ts"], }, }, + { + test: { + globals: true, + name: "@calcom/features/form-builder", + include: ["packages/features/form-builder/**/*.{test,spec}.[jt]s?(x)"], + environment: "jsdom", + setupFiles: ["packages/ui/components/test-setup.ts"], + }, + }, { test: { globals: true, From 8839f08257257cb39148492e4f1a07623f7cccbd Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Tue, 27 Aug 2024 21:25:53 +0900 Subject: [PATCH 04/64] fix: API v2 E2E Docker rate limiting (#16374) --- .github/workflows/e2e-api-v2.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/e2e-api-v2.yml b/.github/workflows/e2e-api-v2.yml index fc6a92107b6f91..91682e2fd6bbc3 100644 --- a/.github/workflows/e2e-api-v2.yml +++ b/.github/workflows/e2e-api-v2.yml @@ -45,6 +45,9 @@ jobs: - 5432:5432 redis: image: redis:latest + credentials: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} ports: - 6379:6379 options: >- From d6096f459bac5e0d769c4ddad2fd46d1ec946088 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Tue, 27 Aug 2024 22:38:34 +0900 Subject: [PATCH 05/64] chore: v4.4.4 (#16372) --- apps/web/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/package.json b/apps/web/package.json index 752f61ff734b00..6e3fc23cbd5a2d 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@calcom/web", - "version": "4.4.3", + "version": "4.4.4", "private": true, "scripts": { "analyze": "ANALYZE=true next build", From 47e8907184ba7541d32caece8e6cbe9d20927cbf Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Tue, 27 Aug 2024 13:28:09 -0400 Subject: [PATCH 06/64] chore: App Router Migration - Fix metadata util used in App Router and remove duplicate code (#16346) --- apps/web/app/future/[user]/[type]/page.tsx | 21 ++--- apps/web/app/future/[user]/page.tsx | 14 +--- .../future/apps/[slug]/[...pages]/page.tsx | 19 +---- apps/web/app/future/apps/[slug]/page.tsx | 12 +-- .../web/app/future/apps/[slug]/setup/page.tsx | 3 +- .../apps/categories/[category]/page.tsx | 2 +- apps/web/app/future/apps/categories/page.tsx | 4 +- .../future/apps/installed/[category]/page.tsx | 4 +- apps/web/app/future/auth/login/page.tsx | 4 +- apps/web/app/future/booking/[uid]/page.tsx | 3 +- .../app/future/event-types/[type]/page.tsx | 4 +- apps/web/app/future/maintenance/page.tsx | 2 +- .../app/future/org/[orgSlug]/embed/page.tsx | 5 +- apps/web/app/future/org/[orgSlug]/page.tsx | 5 +- .../org/[orgSlug]/team/[slug]/[type]/page.tsx | 3 +- .../future/org/[orgSlug]/team/[slug]/page.tsx | 5 +- apps/web/app/future/payment/[uid]/page.tsx | 3 +- apps/web/app/future/routing-forms/page.tsx | 2 +- .../organizations/[id]/about/page.tsx | 4 +- .../organizations/[id]/add-teams/page.tsx | 4 +- .../settings/organizations/new/page.tsx | 4 +- .../app/future/team/[slug]/[type]/page.tsx | 16 ++-- apps/web/app/future/team/[slug]/page.tsx | 18 ++--- .../app/future/workflows/[workflow]/page.tsx | 14 +--- apps/web/lib/metadata.ts | 36 +++++---- .../settings/organizations/[id]/about.tsx | 10 +-- .../settings/organizations/[id]/add-teams.tsx | 12 +-- .../organizations/[id]/onboard-members.tsx | 6 +- .../settings/organizations/new/index.tsx | 12 +-- .../web/pages/settings/platform/new/index.tsx | 12 +-- packages/ui/index.tsx | 1 - packages/ui/layouts/WizardLayoutAppDir.tsx | 76 ------------------- 32 files changed, 82 insertions(+), 258 deletions(-) delete mode 100644 packages/ui/layouts/WizardLayoutAppDir.tsx diff --git a/apps/web/app/future/[user]/[type]/page.tsx b/apps/web/app/future/[user]/[type]/page.tsx index 2c5ebe455904d1..7e32f5a80a47ad 100644 --- a/apps/web/app/future/[user]/[type]/page.tsx +++ b/apps/web/app/future/[user]/[type]/page.tsx @@ -1,24 +1,19 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { headers, cookies } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; import LegacyPage from "~/users/views/users-type-public-view"; -import { getServerSideProps, type PageProps } from "~/users/views/users-type-public-view.getServerSideProps"; +import { + getServerSideProps, + type PageProps as LegacyPageProps, +} from "~/users/views/users-type-public-view.getServerSideProps"; -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); +export const generateMetadata = async ({ params, searchParams }: PageProps) => { + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const { eventData, booking, user, slug } = props; const rescheduleUid = booking?.uid; @@ -42,7 +37,7 @@ export const generateMetadata = async ({ (t) => `${rescheduleUid ? t("reschedule") : ""} ${title}` ); }; -const getData = withAppDirSsr(getServerSideProps); +const getData = withAppDirSsr(getServerSideProps); export default WithLayout({ getData, diff --git a/apps/web/app/future/[user]/page.tsx b/apps/web/app/future/[user]/page.tsx index 016a383a2e4f95..76871c3848e734 100644 --- a/apps/web/app/future/[user]/page.tsx +++ b/apps/web/app/future/[user]/page.tsx @@ -1,7 +1,7 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { headers, cookies } from "next/headers"; import { getLayout } from "@calcom/features/MainLayoutAppDir"; @@ -11,16 +11,8 @@ import { buildLegacyCtx } from "@lib/buildLegacyCtx"; import LegacyPage from "~/users/views/users-public-view"; import { getServerSideProps, type UserPageProps } from "~/users/views/users-public-view.getServerSideProps"; -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); +export const generateMetadata = async ({ params, searchParams }: PageProps) => { + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const { profile, markdownStrippedBio } = props; return await _generateMetadata( diff --git a/apps/web/app/future/apps/[slug]/[...pages]/page.tsx b/apps/web/app/future/apps/[slug]/[...pages]/page.tsx index a1220f7bd85756..8370bbd36a08ec 100644 --- a/apps/web/app/future/apps/[slug]/[...pages]/page.tsx +++ b/apps/web/app/future/apps/[slug]/[...pages]/page.tsx @@ -13,7 +13,6 @@ import RoutingFormsRoutingConfig, { } from "@calcom/app-store/routing-forms/pages/app-routing.config"; import TypeformRoutingConfig from "@calcom/app-store/typeform/pages/app-routing.config"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; -import { APP_NAME } from "@calcom/lib/constants"; import prisma from "@calcom/prisma"; import type { AppGetServerSideProps } from "@calcom/types/AppGetServerSideProps"; @@ -65,21 +64,16 @@ export const generateMetadata = async ({ if (mainPage === "forms") { return await _generateMetadata( - () => `Forms | ${APP_NAME}`, + () => `Forms`, () => "" ); } - const legacyContext = buildLegacyCtx( - headers(), - cookies(), - params, - searchParams - ) as unknown as GetServerSidePropsContext; + const legacyContext = buildLegacyCtx(headers(), cookies(), params, searchParams); const { form } = await getPageProps(legacyContext); return await _generateMetadata( - () => `${form.name} | ${APP_NAME}`, + () => `${form.name}`, () => form.description ); }; @@ -182,12 +176,7 @@ export default async function Page({ params, searchParams }: PageProps) { const h = headers(); const nonce = h.get("x-nonce") ?? undefined; - const legacyContext = buildLegacyCtx( - h, - cookies(), - params, - searchParams - ) as unknown as GetServerSidePropsContext; + const legacyContext = buildLegacyCtx(h, cookies(), params, searchParams); const props = await getPageProps(legacyContext); return ( diff --git a/apps/web/app/future/apps/[slug]/page.tsx b/apps/web/app/future/apps/[slug]/page.tsx index f3795d4b934151..ee7681c0d6a58a 100644 --- a/apps/web/app/future/apps/[slug]/page.tsx +++ b/apps/web/app/future/apps/[slug]/page.tsx @@ -1,12 +1,12 @@ import Page from "@pages/apps/[slug]/index"; import { Prisma } from "@prisma/client"; import { withAppDirSsg } from "app/WithAppDirSsg"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; import type { InferGetStaticPropsType } from "next"; import { cookies, headers } from "next/headers"; -import { APP_NAME } from "@calcom/lib/constants"; import prisma from "@calcom/prisma"; import { getStaticProps } from "@lib/apps/[slug]/getStaticProps"; @@ -15,18 +15,12 @@ import { buildLegacyCtx } from "@lib/buildLegacyCtx"; type Y = InferGetStaticPropsType; const getData = withAppDirSsg(getStaticProps); -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { +export const generateMetadata = async ({ params, searchParams }: PageProps) => { const legacyContext = buildLegacyCtx(headers(), cookies(), params, searchParams); const res = await getData(legacyContext); return await _generateMetadata( - () => `${res?.data.name} | ${APP_NAME}`, + () => res?.data.name ?? "", () => res?.data.description ?? "" ); }; diff --git a/apps/web/app/future/apps/[slug]/setup/page.tsx b/apps/web/app/future/apps/[slug]/setup/page.tsx index acd61513eccdac..5dc4737df1399a 100644 --- a/apps/web/app/future/apps/[slug]/setup/page.tsx +++ b/apps/web/app/future/apps/[slug]/setup/page.tsx @@ -5,11 +5,10 @@ import { WithLayout } from "app/layoutHOC"; import type { InferGetServerSidePropsType } from "next"; import { getServerSideProps } from "@calcom/app-store/_pages/setup/_getServerSideProps"; -import { APP_NAME } from "@calcom/lib/constants"; export const generateMetadata = async ({ params }: { params: Record }) => { return await _generateMetadata( - () => `${params.slug} | ${APP_NAME}`, + () => `${params.slug}`, () => "" ); }; diff --git a/apps/web/app/future/apps/categories/[category]/page.tsx b/apps/web/app/future/apps/categories/[category]/page.tsx index cae4ba87a7d2a9..4901b1086141fc 100644 --- a/apps/web/app/future/apps/categories/[category]/page.tsx +++ b/apps/web/app/future/apps/categories/[category]/page.tsx @@ -11,7 +11,7 @@ import { getStaticProps } from "@lib/apps/categories/[category]/getStaticProps"; export const generateMetadata = async () => { return await _generateMetadata( - () => `${APP_NAME} | ${APP_NAME}`, + () => `${APP_NAME}`, () => "" ); }; diff --git a/apps/web/app/future/apps/categories/page.tsx b/apps/web/app/future/apps/categories/page.tsx index 8fcb079dbe388a..79e6b63319016e 100644 --- a/apps/web/app/future/apps/categories/page.tsx +++ b/apps/web/app/future/apps/categories/page.tsx @@ -3,13 +3,11 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { APP_NAME } from "@calcom/lib/constants"; - import { getServerSideProps } from "@lib/apps/categories/getServerSideProps"; export const generateMetadata = async () => { return await _generateMetadata( - () => `Categories | ${APP_NAME}`, + () => `Categories`, () => "" ); }; diff --git a/apps/web/app/future/apps/installed/[category]/page.tsx b/apps/web/app/future/apps/installed/[category]/page.tsx index 829a6a0e40c049..f67c1a588f174d 100644 --- a/apps/web/app/future/apps/installed/[category]/page.tsx +++ b/apps/web/app/future/apps/installed/[category]/page.tsx @@ -3,13 +3,11 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { APP_NAME } from "@calcom/lib/constants"; - import { getServerSideProps } from "@lib/apps/installed/[category]/getServerSideProps"; export const generateMetadata = async () => { return await _generateMetadata( - (t) => `${t("installed_apps")} | ${APP_NAME}`, + (t) => `${t("installed_apps")}`, (t) => t("manage_your_connected_apps") ); }; diff --git a/apps/web/app/future/auth/login/page.tsx b/apps/web/app/future/auth/login/page.tsx index 41565c1e6b8604..31309f48ff8ad3 100644 --- a/apps/web/app/future/auth/login/page.tsx +++ b/apps/web/app/future/auth/login/page.tsx @@ -4,13 +4,11 @@ import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; import type { InferGetServerSidePropsType } from "next"; -import { APP_NAME } from "@calcom/lib/constants"; - import { getServerSideProps } from "@server/lib/auth/login/getServerSideProps"; export const generateMetadata = async () => { return await _generateMetadata( - (t) => `${t("login")} | ${APP_NAME}`, + (t) => `${t("login")}`, (t) => t("login") ); }; diff --git a/apps/web/app/future/booking/[uid]/page.tsx b/apps/web/app/future/booking/[uid]/page.tsx index 9b44dc7899dfde..238dd365eea6c5 100644 --- a/apps/web/app/future/booking/[uid]/page.tsx +++ b/apps/web/app/future/booking/[uid]/page.tsx @@ -2,7 +2,6 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import type { Params, SearchParams } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { BookingStatus } from "@calcom/prisma/enums"; @@ -20,7 +19,7 @@ export const generateMetadata = async ({ searchParams: SearchParams; }) => { const { bookingInfo, eventType, recurringBookings } = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext + buildLegacyCtx(headers(), cookies(), params, searchParams) ); const needsConfirmation = bookingInfo.status === BookingStatus.PENDING && eventType.requiresConfirmation; diff --git a/apps/web/app/future/event-types/[type]/page.tsx b/apps/web/app/future/event-types/[type]/page.tsx index e3dc4cb0f5012a..a595aee4a34cba 100644 --- a/apps/web/app/future/event-types/[type]/page.tsx +++ b/apps/web/app/future/event-types/[type]/page.tsx @@ -4,8 +4,6 @@ import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; import { cookies, headers } from "next/headers"; -import { APP_NAME } from "@calcom/lib/constants"; - import { buildLegacyCtx } from "@lib/buildLegacyCtx"; import EventTypePageWrapper from "~/event-types/views/event-types-single-view"; @@ -22,7 +20,7 @@ export const generateMetadata = async ({ const { eventType } = await getData(legacyCtx); return await _generateMetadata( - (t) => `${eventType.title} | ${t("event_type")} | ${APP_NAME}`, + (t) => `${eventType.title} | ${t("event_type")}`, () => "" ); }; diff --git a/apps/web/app/future/maintenance/page.tsx b/apps/web/app/future/maintenance/page.tsx index 4995ffb7727ee5..919c1757757266 100644 --- a/apps/web/app/future/maintenance/page.tsx +++ b/apps/web/app/future/maintenance/page.tsx @@ -6,7 +6,7 @@ import { APP_NAME } from "@calcom/lib/constants"; export const generateMetadata = async () => await _generateMetadata( - (t) => `${t("under_maintenance")} | ${APP_NAME}`, + (t) => `${t("under_maintenance")}`, (t) => t("under_maintenance_description", { appName: APP_NAME }) ); diff --git a/apps/web/app/future/org/[orgSlug]/embed/page.tsx b/apps/web/app/future/org/[orgSlug]/embed/page.tsx index 9146f8baaa0ba3..18a1fd11dc8f24 100644 --- a/apps/web/app/future/org/[orgSlug]/embed/page.tsx +++ b/apps/web/app/future/org/[orgSlug]/embed/page.tsx @@ -5,7 +5,6 @@ import withEmbedSsrAppDir from "app/WithEmbedSSR"; import type { Params, SearchParams } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; @@ -20,9 +19,7 @@ export const generateMetadata = async ({ params: Params; searchParams: SearchParams; }) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const teamName = props.team.name || "Nameless Team"; return await _generateMetadata( diff --git a/apps/web/app/future/org/[orgSlug]/page.tsx b/apps/web/app/future/org/[orgSlug]/page.tsx index 2ac5e96d171e62..c64eb8bd1b44ea 100644 --- a/apps/web/app/future/org/[orgSlug]/page.tsx +++ b/apps/web/app/future/org/[orgSlug]/page.tsx @@ -3,7 +3,6 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import type { Params, SearchParams } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; @@ -16,9 +15,7 @@ export const generateMetadata = async ({ params: Params; searchParams: SearchParams; }) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const teamName = props.team.name || "Nameless Team"; return await _generateMetadata( diff --git a/apps/web/app/future/org/[orgSlug]/team/[slug]/[type]/page.tsx b/apps/web/app/future/org/[orgSlug]/team/[slug]/[type]/page.tsx index af76fb00167f11..7e75d5bb9bcb66 100644 --- a/apps/web/app/future/org/[orgSlug]/team/[slug]/[type]/page.tsx +++ b/apps/web/app/future/org/[orgSlug]/team/[slug]/[type]/page.tsx @@ -3,7 +3,6 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import type { Params, SearchParams } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; @@ -17,7 +16,7 @@ export const generateMetadata = async ({ searchParams: SearchParams; }) => { const legacyCtx = buildLegacyCtx(headers(), cookies(), params, searchParams); - const props = await getData(legacyCtx as unknown as GetServerSidePropsContext); + const props = await getData(legacyCtx); const { eventData, user, slug, booking } = props; const entity = eventData.entity; const { trpc } = await import("@calcom/trpc"); diff --git a/apps/web/app/future/org/[orgSlug]/team/[slug]/page.tsx b/apps/web/app/future/org/[orgSlug]/team/[slug]/page.tsx index 2ac5e96d171e62..c64eb8bd1b44ea 100644 --- a/apps/web/app/future/org/[orgSlug]/team/[slug]/page.tsx +++ b/apps/web/app/future/org/[orgSlug]/team/[slug]/page.tsx @@ -3,7 +3,6 @@ import { withAppDirSsr } from "app/WithAppDirSsr"; import type { Params, SearchParams } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; @@ -16,9 +15,7 @@ export const generateMetadata = async ({ params: Params; searchParams: SearchParams; }) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const teamName = props.team.name || "Nameless Team"; return await _generateMetadata( diff --git a/apps/web/app/future/payment/[uid]/page.tsx b/apps/web/app/future/payment/[uid]/page.tsx index f5d38cec8da108..38883bcd3dc233 100644 --- a/apps/web/app/future/payment/[uid]/page.tsx +++ b/apps/web/app/future/payment/[uid]/page.tsx @@ -4,12 +4,11 @@ import { WithLayout } from "app/layoutHOC"; import PaymentPage from "@calcom/features/ee/payments/components/PaymentPage"; import { getServerSideProps, type PaymentPageProps } from "@calcom/features/ee/payments/pages/payment"; -import { APP_NAME } from "@calcom/lib/constants"; export const generateMetadata = async () => await _generateMetadata( // the title does not contain the eventName as in the legacy page - (t) => `${t("payment")} | ${APP_NAME}`, + (t) => `${t("payment")}`, () => "" ); diff --git a/apps/web/app/future/routing-forms/page.tsx b/apps/web/app/future/routing-forms/page.tsx index eb67e8796cc3e2..52375eb67770e4 100644 --- a/apps/web/app/future/routing-forms/page.tsx +++ b/apps/web/app/future/routing-forms/page.tsx @@ -28,7 +28,7 @@ type PageProps = Readonly<{ const Page = async ({ params, searchParams }: PageProps) => { const legacyCtx = buildLegacyCtx(headers(), cookies(), params, searchParams); - await getPageProps(legacyCtx as unknown as GetServerSidePropsContext); + await getPageProps(legacyCtx); return null; }; diff --git a/apps/web/app/future/settings/organizations/[id]/about/page.tsx b/apps/web/app/future/settings/organizations/[id]/about/page.tsx index 5141efa323d495..4e3e45e4cf5aab 100644 --- a/apps/web/app/future/settings/organizations/[id]/about/page.tsx +++ b/apps/web/app/future/settings/organizations/[id]/about/page.tsx @@ -1,4 +1,4 @@ -import LegacyPage, { WrappedAboutOrganizationPage } from "@pages/settings/organizations/[id]/about"; +import LegacyPage, { LayoutWrapper } from "@pages/settings/organizations/[id]/about"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; @@ -8,4 +8,4 @@ export const generateMetadata = async () => (t) => t("about_your_organization_description") ); -export default WithLayout({ Page: LegacyPage, getLayout: WrappedAboutOrganizationPage }); +export default WithLayout({ Page: LegacyPage, getLayout: LayoutWrapper }); diff --git a/apps/web/app/future/settings/organizations/[id]/add-teams/page.tsx b/apps/web/app/future/settings/organizations/[id]/add-teams/page.tsx index de3c76b58dd7fe..b9c1805632c6cc 100644 --- a/apps/web/app/future/settings/organizations/[id]/add-teams/page.tsx +++ b/apps/web/app/future/settings/organizations/[id]/add-teams/page.tsx @@ -1,4 +1,4 @@ -import LegacyPage, { WrapperAddNewTeamsPage } from "@pages/settings/organizations/[id]/add-teams"; +import LegacyPage, { LayoutWrapper } from "@pages/settings/organizations/[id]/add-teams"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; @@ -8,4 +8,4 @@ export const generateMetadata = async () => (t) => t("create_your_teams_description") ); -export default WithLayout({ Page: LegacyPage, getLayout: WrapperAddNewTeamsPage }); +export default WithLayout({ Page: LegacyPage, getLayout: LayoutWrapper }); diff --git a/apps/web/app/future/settings/organizations/new/page.tsx b/apps/web/app/future/settings/organizations/new/page.tsx index 9fa3554c59e2bd..0b77da050844be 100644 --- a/apps/web/app/future/settings/organizations/new/page.tsx +++ b/apps/web/app/future/settings/organizations/new/page.tsx @@ -1,4 +1,4 @@ -import LegacyPage, { getServerSideProps, LayoutWrapperAppDir } from "@pages/settings/organizations/new/index"; +import LegacyPage, { getServerSideProps, LayoutWrapper } from "@pages/settings/organizations/new/index"; import { withAppDirSsr } from "app/WithAppDirSsr"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; @@ -12,7 +12,7 @@ export const generateMetadata = async () => ); export default WithLayout({ - getLayout: LayoutWrapperAppDir, + getLayout: LayoutWrapper, Page: LegacyPage, getData: withAppDirSsr>(getServerSideProps), }); diff --git a/apps/web/app/future/team/[slug]/[type]/page.tsx b/apps/web/app/future/team/[slug]/[type]/page.tsx index 043af611b56d8f..948291446d378f 100644 --- a/apps/web/app/future/team/[slug]/[type]/page.tsx +++ b/apps/web/app/future/team/[slug]/[type]/page.tsx @@ -1,21 +1,15 @@ -import LegacyPage, { type PageProps, getServerSideProps } from "@pages/team/[slug]/[type]"; +import LegacyPage, { type PageProps as LegacyPageProps, getServerSideProps } from "@pages/team/[slug]/[type]"; import { withAppDirSsr } from "app/WithAppDirSsr"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { +export const generateMetadata = async ({ params, searchParams }: PageProps) => { const legacyCtx = buildLegacyCtx(headers(), cookies(), params, searchParams); - const props = await getData(legacyCtx as unknown as GetServerSidePropsContext); + const props = await getData(legacyCtx); const { eventData, user, slug, booking } = props; const entity = eventData.entity; const { trpc } = await import("@calcom/trpc"); @@ -38,7 +32,7 @@ export const generateMetadata = async ({ (t) => `${booking?.uid ? t("reschedule") : ""} ${title}` ); }; -const getData = withAppDirSsr(getServerSideProps); +const getData = withAppDirSsr(getServerSideProps); export default WithLayout({ Page: LegacyPage, diff --git a/apps/web/app/future/team/[slug]/page.tsx b/apps/web/app/future/team/[slug]/page.tsx index f1f447eebe38f0..df553afa9a1fd8 100644 --- a/apps/web/app/future/team/[slug]/page.tsx +++ b/apps/web/app/future/team/[slug]/page.tsx @@ -1,22 +1,14 @@ -import LegacyPage, { getServerSideProps, type PageProps } from "@pages/team/[slug]"; +import LegacyPage, { getServerSideProps, type PageProps as LegacyPageProps } from "@pages/team/[slug]"; import { withAppDirSsr } from "app/WithAppDirSsr"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { cookies, headers } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { - const props = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); +export const generateMetadata = async ({ params, searchParams }: PageProps) => { + const props = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); const teamName = props.team.name || "Nameless Team"; return await _generateMetadata( @@ -25,7 +17,7 @@ export const generateMetadata = async ({ ); }; -const getData = withAppDirSsr(getServerSideProps); +const getData = withAppDirSsr(getServerSideProps); export default WithLayout({ Page: LegacyPage, diff --git a/apps/web/app/future/workflows/[workflow]/page.tsx b/apps/web/app/future/workflows/[workflow]/page.tsx index 903593fc0862c7..9aa90e2f25925d 100644 --- a/apps/web/app/future/workflows/[workflow]/page.tsx +++ b/apps/web/app/future/workflows/[workflow]/page.tsx @@ -1,22 +1,14 @@ import LegacyPage, { getStaticProps } from "@pages/workflows/[workflow]"; import { withAppDirSsg } from "app/WithAppDirSsg"; +import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; import { WithLayout } from "app/layoutHOC"; -import { type GetServerSidePropsContext } from "next"; import { headers, cookies } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; -export const generateMetadata = async ({ - params, - searchParams, -}: { - params: Record; - searchParams: { [key: string]: string | string[] | undefined }; -}) => { - const { workflow } = await getData( - buildLegacyCtx(headers(), cookies(), params, searchParams) as unknown as GetServerSidePropsContext - ); +export const generateMetadata = async ({ params, searchParams }: PageProps) => { + const { workflow } = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); return await _generateMetadata( () => workflow ?? "Untitled", () => "" diff --git a/apps/web/lib/metadata.ts b/apps/web/lib/metadata.ts index a1adf8d165e1d6..b3b576ce6d4d7f 100644 --- a/apps/web/lib/metadata.ts +++ b/apps/web/lib/metadata.ts @@ -1,5 +1,6 @@ import type { Metadata } from "next"; +import { APP_NAME } from "@calcom/lib/constants"; import { truncateOnWord } from "@calcom/lib/text"; type RootMetadataRecipe = Readonly<{ @@ -65,18 +66,23 @@ export const prepareRootMetadata = (recipe: RootMetadataRecipe): Metadata => ({ }, }); -export const preparePageMetadata = (recipe: PageMetadataRecipe): Metadata => ({ - title: recipe.title, - alternates: { - canonical: recipe.canonical, - }, - openGraph: { - description: truncateOnWord(recipe.description, 158), - url: recipe.canonical, - type: "website", - siteName: recipe.siteName, - title: recipe.title, - images: [recipe.image], - }, - metadataBase: recipe.metadataBase, -}); +export const preparePageMetadata = (recipe: PageMetadataRecipe): Metadata => { + const titleSuffix = `| ${APP_NAME}`; + const { description } = recipe; + return { + title: recipe.title.includes(titleSuffix) ? recipe.title : `${recipe.title} ${titleSuffix}`, + description, + alternates: { + canonical: recipe.canonical, + }, + openGraph: { + description: truncateOnWord(description, 158), + url: recipe.canonical, + type: "website", + siteName: recipe.siteName, + title: recipe.title, + images: [recipe.image], + }, + metadataBase: recipe.metadataBase, + }; +}; diff --git a/apps/web/pages/settings/organizations/[id]/about.tsx b/apps/web/pages/settings/organizations/[id]/about.tsx index 2388ac3c4de903..5f324067c85009 100644 --- a/apps/web/pages/settings/organizations/[id]/about.tsx +++ b/apps/web/pages/settings/organizations/[id]/about.tsx @@ -2,7 +2,7 @@ import { AboutOrganizationForm } from "@calcom/features/ee/organizations/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Meta, WizardLayout, WizardLayoutAppDir } from "@calcom/ui"; +import { Meta, WizardLayout } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; @@ -25,14 +25,6 @@ export const LayoutWrapper = (page: React.ReactElement) => { ); }; -export const WrappedAboutOrganizationPage = (page: React.ReactElement) => { - return ( - - {page} - - ); -}; - AboutOrganizationPage.getLayout = LayoutWrapper; AboutOrganizationPage.PageWrapper = PageWrapper; diff --git a/apps/web/pages/settings/organizations/[id]/add-teams.tsx b/apps/web/pages/settings/organizations/[id]/add-teams.tsx index 9f3e21221c96fe..c70840c3fb099d 100644 --- a/apps/web/pages/settings/organizations/[id]/add-teams.tsx +++ b/apps/web/pages/settings/organizations/[id]/add-teams.tsx @@ -3,7 +3,6 @@ import { AddNewTeamsForm } from "@calcom/features/ee/organizations/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Meta, WizardLayout } from "@calcom/ui"; -import { WizardLayoutAppDir } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; @@ -19,7 +18,7 @@ const AddNewTeamsPage = () => { ); }; -AddNewTeamsPage.getLayout = (page: React.ReactElement) => { +export const LayoutWrapper = (page: React.ReactElement) => { return ( {page} @@ -27,14 +26,7 @@ AddNewTeamsPage.getLayout = (page: React.ReactElement) => { ); }; +AddNewTeamsPage.getLayout = LayoutWrapper; AddNewTeamsPage.PageWrapper = PageWrapper; -export const WrapperAddNewTeamsPage = (page: React.ReactElement) => { - return ( - - {page} - - ); -}; - export default AddNewTeamsPage; diff --git a/apps/web/pages/settings/organizations/[id]/onboard-members.tsx b/apps/web/pages/settings/organizations/[id]/onboard-members.tsx index 475d8bb7513f54..dfe0c8f0c24f29 100644 --- a/apps/web/pages/settings/organizations/[id]/onboard-members.tsx +++ b/apps/web/pages/settings/organizations/[id]/onboard-members.tsx @@ -5,7 +5,7 @@ import { redirect, useRouter } from "next/navigation"; import AddNewTeamMembers from "@calcom/features/ee/teams/components/AddNewTeamMembers"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Meta, WizardLayout, WizardLayoutAppDir } from "@calcom/ui"; +import { Meta, WizardLayout } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; @@ -48,14 +48,14 @@ export const buildWrappedOnboardTeamMembersPage = ( page: React.ReactElement ) => { return ( - { redirect(`/settings/organizations/${id}/add-teams`); }}> {page} - + ); }; diff --git a/apps/web/pages/settings/organizations/new/index.tsx b/apps/web/pages/settings/organizations/new/index.tsx index 28dd02043b0947..2ff5cc9d77086a 100644 --- a/apps/web/pages/settings/organizations/new/index.tsx +++ b/apps/web/pages/settings/organizations/new/index.tsx @@ -3,7 +3,7 @@ import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { CreateANewOrganizationForm } from "@calcom/features/ee/organizations/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { WizardLayout, Meta, WizardLayoutAppDir } from "@calcom/ui"; +import { WizardLayout, Meta } from "@calcom/ui"; import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; import type { inferSSRProps } from "@lib/types/inferSSRProps"; @@ -19,7 +19,7 @@ const CreateNewOrganizationPage = ({ querySlug }: inferSSRProps ); }; -const LayoutWrapper = (page: React.ReactElement) => { +export const LayoutWrapper = (page: React.ReactElement) => { return ( {page} @@ -27,14 +27,6 @@ const LayoutWrapper = (page: React.ReactElement) => { ); }; -export const LayoutWrapperAppDir = (page: React.ReactElement) => { - return ( - - {page} - - ); -}; - CreateNewOrganizationPage.getLayout = LayoutWrapper; CreateNewOrganizationPage.PageWrapper = PageWrapper; diff --git a/apps/web/pages/settings/platform/new/index.tsx b/apps/web/pages/settings/platform/new/index.tsx index 2c25a4e4d97748..40070a6db84552 100644 --- a/apps/web/pages/settings/platform/new/index.tsx +++ b/apps/web/pages/settings/platform/new/index.tsx @@ -3,7 +3,7 @@ import LicenseRequired from "@calcom/features/ee/common/components/LicenseRequired"; import { CreateANewPlatformForm } from "@calcom/features/ee/platform/components/index"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { WizardLayout, Meta, WizardLayoutAppDir } from "@calcom/ui"; +import { WizardLayout, Meta } from "@calcom/ui"; import { getServerSideProps } from "@lib/settings/organizations/new/getServerSideProps"; @@ -21,7 +21,7 @@ const CreateNewOrganizationPage = () => { ); }; -const LayoutWrapper = (page: React.ReactElement) => { +export const LayoutWrapper = (page: React.ReactElement) => { return ( {page} @@ -29,14 +29,6 @@ const LayoutWrapper = (page: React.ReactElement) => { ); }; -export const LayoutWrapperAppDir = (page: React.ReactElement) => { - return ( - - {page} - - ); -}; - CreateNewOrganizationPage.getLayout = LayoutWrapper; CreateNewOrganizationPage.PageWrapper = PageWrapper; diff --git a/packages/ui/index.tsx b/packages/ui/index.tsx index 5c3c97c14f541d..0a4b0e68b96ad5 100644 --- a/packages/ui/index.tsx +++ b/packages/ui/index.tsx @@ -172,7 +172,6 @@ export { CreateButton, CreateButtonWithTeamsList } from "./components/createButt export { useCalcomTheme } from "./styles/useCalcomTheme"; export { ScrollableArea } from "./components/scrollable/ScrollableArea"; export { WizardLayout } from "./layouts/WizardLayout"; -export { WizardLayoutAppDir } from "./layouts/WizardLayoutAppDir"; export { DataTable } from "./components/data-table"; export { Sheet, diff --git a/packages/ui/layouts/WizardLayoutAppDir.tsx b/packages/ui/layouts/WizardLayoutAppDir.tsx deleted file mode 100644 index c818aff5331ead..00000000000000 --- a/packages/ui/layouts/WizardLayoutAppDir.tsx +++ /dev/null @@ -1,76 +0,0 @@ -"use client"; - -// eslint-disable-next-line no-restricted-imports -import { noop } from "lodash"; -import { usePathname } from "next/navigation"; -import React, { useEffect, useState } from "react"; -import { Toaster } from "react-hot-toast"; - -import { APP_NAME } from "@calcom/lib/constants"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, SkeletonText, StepCard, Steps } from "@calcom/ui"; - -export function WizardLayoutAppDir({ - children, - maxSteps = 2, - currentStep = 0, - isOptionalCallback, -}: { - children: React.ReactNode; -} & { maxSteps?: number; currentStep?: number; isOptionalCallback?: () => void }) { - const { t, isLocaleReady } = useLocale(); - const [meta, setMeta] = useState({ title: "", subtitle: " " }); - const pathname = usePathname(); - const { title, subtitle } = meta; - - useEffect(() => { - setMeta({ - title: window.document.title, - subtitle: window.document.querySelector('meta[name="description"]')?.getAttribute("content") || "", - }); - }, [pathname]); - - return ( -
-
- -
-
-
-
-
-
- {isLocaleReady ? ( - <> -

- {title.replace(` | ${APP_NAME}`, "")}  -

-

{subtitle} 

- - ) : ( - <> - - - - )} -
- -
- {children} -
-
- {isOptionalCallback && ( -
- -
- )} -
-
- ); -} - -export const getLayout = (page: React.ReactElement) => {page}; From 6a90518231230244ddab1f6767f917bfe4d77e03 Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Tue, 27 Aug 2024 23:30:18 +0100 Subject: [PATCH 07/64] use goblin url (#16370) --- apps/api/v2/src/modules/deployments/deployments.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/v2/src/modules/deployments/deployments.service.ts b/apps/api/v2/src/modules/deployments/deployments.service.ts index 361f901c9390d0..86425f15f2565c 100644 --- a/apps/api/v2/src/modules/deployments/deployments.service.ts +++ b/apps/api/v2/src/modules/deployments/deployments.service.ts @@ -33,7 +33,7 @@ export class DeploymentsService { if (!licenseKey) { return false; } - const licenseKeyUrl = this.configService.get("api.licenseKeyUrl") + `?key=${licenseKey}`; + const licenseKeyUrl = this.configService.get("api.licenseKeyUrl") + `/${licenseKey}`; const cachedData = await this.redisService.redis.get(getLicenseCacheKey(licenseKey)); if (cachedData) { return (JSON.parse(cachedData) as LicenseCheckResponse)?.valid; From d938e67e650d70c425a4a689a1c2ff9760b9c8bd Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Wed, 28 Aug 2024 04:10:00 +0530 Subject: [PATCH 08/64] fix: require confirmation cal video bug (#16376) * fix: require confirmation cal video bug * chore: update location * fix: tests * chore * test: add confirm booking test * chore: add location in test * fix: types --- packages/core/EventManager.ts | 18 ++- packages/emails/lib/generateIcsFile.ts | 2 +- .../viewer/bookings/confirm.handler.test.ts | 110 ++++++++++++++++++ 3 files changed, 123 insertions(+), 7 deletions(-) create mode 100644 packages/trpc/server/routers/viewer/bookings/confirm.handler.test.ts diff --git a/packages/core/EventManager.ts b/packages/core/EventManager.ts index 1803c58b092e8a..700b1c52d2b943 100644 --- a/packages/core/EventManager.ts +++ b/packages/core/EventManager.ts @@ -186,9 +186,12 @@ export default class EventManager { result.type = result.createdEvent.type; //responses data is later sent to webhook if (evt.location && evt.responses) { - evt.responses["location"].value = { - optionValue: "", - value: evt.location, + evt.responses["location"] = { + ...(evt.responses["location"] ?? {}), + value: { + optionValue: "", + value: evt.location, + }, }; } } @@ -256,9 +259,12 @@ export default class EventManager { result.type = result.createdEvent.type; //responses data is later sent to webhook if (evt.location && evt.responses) { - evt.responses["location"].value = { - optionValue: "", - value: evt.location, + evt.responses["location"] = { + ...(evt.responses["location"] ?? {}), + value: { + optionValue: "", + value: evt.location, + }, }; } } diff --git a/packages/emails/lib/generateIcsFile.ts b/packages/emails/lib/generateIcsFile.ts index cb63bbadfa9be6..6f3a99fcef9277 100644 --- a/packages/emails/lib/generateIcsFile.ts +++ b/packages/emails/lib/generateIcsFile.ts @@ -31,7 +31,7 @@ export default function generateIcsFile({ if ( role !== GenerateIcsRole.ATTENDEE && calEvent.destinationCalendar && - calEvent.destinationCalendar[0].integration === "office365_calendar" + calEvent.destinationCalendar[0]?.integration === "office365_calendar" ) return null; diff --git a/packages/trpc/server/routers/viewer/bookings/confirm.handler.test.ts b/packages/trpc/server/routers/viewer/bookings/confirm.handler.test.ts new file mode 100644 index 00000000000000..5fcba1c5d6e70f --- /dev/null +++ b/packages/trpc/server/routers/viewer/bookings/confirm.handler.test.ts @@ -0,0 +1,110 @@ +import { + createBookingScenario, + TestData, + getOrganizer, + getScenarioData, + mockSuccessfulVideoMeetingCreation, + getDate, +} from "@calcom/web/test/utils/bookingScenario/bookingScenario"; +import { setupAndTeardown } from "@calcom/web/test/utils/bookingScenario/setupAndTeardown"; + +import { describe, it, beforeEach, vi, expect } from "vitest"; + +import { BookingStatus } from "@calcom/prisma/enums"; + +import type { TrpcSessionUser } from "../../../trpc"; +import { confirmHandler } from "./confirm.handler"; + +describe("confirmHandler", () => { + setupAndTeardown(); + beforeEach(() => { + // Reset all mocks before each test + vi.clearAllMocks(); + }); + + it("should successfully confirm booking when event type doesn't have any default location", async () => { + const attendeeUser = getOrganizer({ + email: "test@example.com", + name: "test name", + id: 102, + schedules: [TestData.schedules.IstWorkHours], + }); + + const organizer = getOrganizer({ + name: "Organizer", + email: "organizer@example.com", + id: 101, + schedules: [TestData.schedules.IstWorkHours], + }); + + const uidOfBooking = "n5Wv3eHgconAED2j4gcVhP"; + const iCalUID = `${uidOfBooking}@Cal.com`; + + const { dateString: plus1DateString } = getDate({ dateIncrement: 1 }); + + await createBookingScenario( + getScenarioData({ + webhooks: [ + { + userId: organizer.id, + eventTriggers: ["BOOKING_CREATED"], + subscriberUrl: "http://my-webhook.example.com", + active: true, + eventTypeId: 1, + appId: null, + }, + ], + eventTypes: [ + { + id: 1, + slotInterval: 15, + length: 15, + locations: [], + users: [ + { + id: 101, + }, + ], + }, + ], + bookings: [ + { + id: 101, + uid: uidOfBooking, + eventTypeId: 1, + status: BookingStatus.PENDING, + startTime: `${plus1DateString}T05:00:00.000Z`, + endTime: `${plus1DateString}T05:15:00.000Z`, + references: [], + iCalUID, + location: "integrations:daily", + attendees: [attendeeUser], + responses: { name: attendeeUser.name, email: attendeeUser.email, guests: [] }, + }, + ], + organizer, + apps: [TestData.apps["daily-video"]], + }) + ); + + mockSuccessfulVideoMeetingCreation({ + metadataLookupKey: "dailyvideo", + }); + + const ctx = { + user: { + id: organizer.id, + name: organizer.name, + timeZone: organizer.timeZone, + username: organizer.username, + } as NonNullable, + }; + + const res = await confirmHandler({ + ctx, + input: { bookingId: 101, confirmed: true, reason: "" }, + }); + + expect(res?.status).toBe(BookingStatus.ACCEPTED); + }); +}); From 3c5ab5e8d24836311f913c358245d8b99dd63707 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Wed, 28 Aug 2024 17:16:47 +0900 Subject: [PATCH 09/64] chore: add replexica to ci (#16306) * chore: Add replexica for AI i18n * Add write permission * moved i18n to repo root * Added checkout to i18n job * Added contents:read * Added actions: write for testing * Updated contents: write * feat: add missing translations * Checking out the i18n files from PR head sha * Added the rest of the languages * Added i18n to list of required checks * Added a comment explaining the custom common.json checkout * Commented out languages to not crush Replexica usage * Add a fetch-depth: 2 * Supporting fetch of external fork branch * Put back the dynamic sha * Added a check for null so this can run manually and not just on PRs * Removed comments * feat: update translations * Reverted de and fr to re-run with new settings * feat: update translations * Reverted de and fr to re-run with new settings * feat: update translations * Removed crowdin * Limited languages to major ones for 1st pass * feat: update translations * Fixing es test * Reverted yarn.lock changes --------- Co-authored-by: Replexica --- .github/workflows/crowdin.yml | 42 - .github/workflows/pr.yml | 22 + apps/api/v1/lib/validations/user.ts | 2 +- apps/web/playwright/locale.e2e.ts | 2 +- apps/web/public/static/locales/cs/common.json | 481 ++- apps/web/public/static/locales/de/common.json | 106 +- .../public/static/locales/es-419/common.json | 2574 ++++++++++++++++- apps/web/public/static/locales/es/common.json | 483 +++- apps/web/public/static/locales/fr/common.json | 106 +- apps/web/public/static/locales/he/common.json | 161 +- apps/web/public/static/locales/it/common.json | 106 +- apps/web/public/static/locales/nl/common.json | 484 +++- apps/web/public/static/locales/pl/common.json | 481 ++- .../public/static/locales/pt-BR/common.json | 131 +- apps/web/public/static/locales/pt/common.json | 106 +- apps/web/public/static/locales/ru/common.json | 478 ++- .../public/static/locales/zh-CN/common.json | 229 +- crowdin.yml | 126 - i18n.json | 28 + i18n.lock | 2574 +++++++++++++++++ packages/config/next-i18next.config.js | 2 +- .../src/templates/OrganizerScheduledEmail.tsx | 6 +- 22 files changed, 8396 insertions(+), 334 deletions(-) delete mode 100644 .github/workflows/crowdin.yml delete mode 100644 crowdin.yml create mode 100644 i18n.json create mode 100644 i18n.lock diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml deleted file mode 100644 index b37240eb12766e..00000000000000 --- a/.github/workflows/crowdin.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Crowdin Action - -on: - push: - branches: - - main -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - synchronize-with-crowdin: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - token: ${{ secrets.GH_ACCESS_TOKEN }} - - - name: crowdin action - uses: crowdin/github-action@v1.13.0 - with: - # upload sources - upload_sources: true - - # upload translations (& auto-approve 'em) - upload_translations_args: '--auto-approve-imported' - upload_translations: true - push_translations: true - - # download translations - download_translations: true - - # GH config - commit_message: "New Crowdin translations by Github Action" - localization_branch_name: main - create_pull_request: false - env: - GITHUB_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 0dff38fd34f68c..3ac2732202938d 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -97,6 +97,27 @@ jobs: if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/yarn-install.yml + i18n: + name: Run i18n + runs-on: buildjet-2vcpu-ubuntu-2204 + permissions: + actions: write + contents: write + pull-requests: write + steps: + - uses: actions/checkout@v4 + # Doing this custom checkout of the common.json files from the PR since we don't + # want to checkout the entire branch for security reasons as this job is granted + # write permissions. + - run: git fetch --depth=2 origin ${{ github.event.pull_request.head.sha }} + if: ${{ github.event.pull_request.head.sha != '' }} + - run: find apps/web/public/static/locales/** -name "common.json" | xargs git checkout ${{ github.event.pull_request.head.sha }} -- + if: ${{ github.event.pull_request.head.sha != '' }} + shell: bash + - uses: replexica/replexica@main + with: + api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} + type-check: name: Type check needs: [changes, check-label, deps] @@ -217,6 +238,7 @@ jobs: [ changes, lint, + i18n, type-check, unit-test, integration-test, diff --git a/apps/api/v1/lib/validations/user.ts b/apps/api/v1/lib/validations/user.ts index cf237f8045b01f..d9846130665f82 100644 --- a/apps/api/v1/lib/validations/user.ts +++ b/apps/api/v1/lib/validations/user.ts @@ -30,7 +30,7 @@ enum locales { RO = "ro", NL = "nl", PT_BR = "pt-BR", - // ES_419 = "es-419", // Disabled until Crowdin reaches at least 80% completion + ES_419 = "es-419", KO = "ko", JA = "ja", PL = "pl", diff --git a/apps/web/playwright/locale.e2e.ts b/apps/web/playwright/locale.e2e.ts index 6158db37eda230..6099bb91d6007a 100644 --- a/apps/web/playwright/locale.e2e.ts +++ b/apps/web/playwright/locale.e2e.ts @@ -175,7 +175,7 @@ test.describe("unauthorized user sees correct translations (pt-br)", async () => test.describe("unauthorized user sees correct translations (es-419)", async () => { test.use({ - locale: "es-419", + locale: "es", }); test("should use correct translations and html attributes", async ({ page }) => { diff --git a/apps/web/public/static/locales/cs/common.json b/apps/web/public/static/locales/cs/common.json index 85cdab84094a96..49e87e98b0df8b 100644 --- a/apps/web/public/static/locales/cs/common.json +++ b/apps/web/public/static/locales/cs/common.json @@ -7,16 +7,27 @@ "second_other": "{{count}} s", "upgrade_now": "Přejít na vyšší tarif", "accept_invitation": "Přijmout pozvánku", + "max_characters": "Max. znaků", + "min_characters": "Min. znaků", "calcom_explained": "{{appName}} je open source alternativa, která vám dává kontrolu nad vlastními daty, workflow a vzhledem.", "calcom_explained_new_user": "Dokončete nastavení svého účtu {{appName}}! Jste jen několik kroků od vyřešení všech svých problémů s plánováním.", "have_any_questions": "Máte otázky? Jsme tu, abychom vám pomohli.", "reset_password_subject": "{{appName}}: Pokyny pro obnovení hesla", "verify_email_subject": "{{appName}}: Ověřte svůj účet", + "verify_email_subject_verifying_email": "{{appName}}: Ověřte svůj e-mail", "check_your_email": "Zkontrolujte svůj e-mail", + "old_email_address": "Starý e-mail", + "new_email_address": "Nový e-mail", "verify_email_page_body": "Odeslali jsme e-mail na adresu {{email}}. E-mailovou adresu je důležité ověřit, aby byla zaručena co nejlepší doručitelnost e-mailů a kalendářů z {{appName}}.", "verify_email_banner_body": "Ověřte svoji e-mailovou adresu, abyste zaručili co nejlepší doručitelnost e-mailů a kalendáře", "verify_email_email_header": "Ověřte svoji e-mailovou adresu", "verify_email_email_button": "Ověřit e-mail", + "cal_ai_assistant": "Cal AI asistent", + "verify_email_change_description": "Nedávno jste požádali o změnu e-mailové adresy, kterou používáte k přihlášení do svého účtu {{appName}}. Klikněte prosím na tlačítko níže, abyste potvrdili svou novou e-mailovou adresu.", + "verify_email_change_success_toast": "Vaše e-mailová adresa byla aktualizována na {{email}}", + "verify_email_change_failure_toast": "Nepodařilo se aktualizovat e-mail.", + "change_of_email": "Ověřte svůj nový e-mail pro {{appName}}", + "change_of_email_toast": "Odeslali jsme ověřovací odkaz na {{email}}. Vaše e-mailová adresa bude aktualizována, jakmile na tento odkaz kliknete.", "copy_somewhere_safe": "Uložte si tento klíč API na bezpečné místo. Možnost dalšího zobrazení mít nebudete.", "verify_email_email_body": "Ověřte svoji e-mailovou adresu kliknutím na tlačítko níže.", "verify_email_by_code_email_body": "Ověřte prosím svoji e-mailovou adresu pomocí níže uvedeného kódu.", @@ -36,6 +47,7 @@ "no_options_available": "Nejsou k dispozici žádné možnosti", "cancellation_reason": "Důvod zrušení", "cancellation_reason_placeholder": "Proč rušíte?\n", + "rejection_reason_placeholder": "Proč odmítáte?", "rejection_reason": "Důvod odmítnutí", "rejection_reason_title": "Odmítnout žádost o rezervaci?", "rejection_reason_description": "Opravdu chcete rezervaci odmítnout? Osobě, která se váš čas pokusila rezervovat, dáme vědět. Níž můžete uvést důvod.", @@ -56,6 +68,19 @@ "a_refund_failed": "Vrácení platby selhalo", "awaiting_payment_subject": "Čekám na platbu: {{title}} během {{date}}", "meeting_awaiting_payment": "Vaše schůzka čeká na platbu", + "dark_theme_contrast_error": "Barva tmavého motivu neprošla kontrolou kontrastu. Doporučujeme změnit tuto barvu, aby byly vaše tlačítka viditelnější.", + "light_theme_contrast_error": "Barva světlého motivu neprošla kontrolou kontrastu. Doporučujeme změnit tuto barvu, aby byly vaše tlačítka viditelnější.", + "event_type_color_light_theme_contrast_error": "Barva světlého motivu neprošla kontrolou kontrastu. Doporučujeme změnit tuto barvu, aby byly barvy vašich typů událostí viditelnější.", + "event_type_color_dark_theme_contrast_error": "Barva tmavého motivu neprošla kontrolou kontrastu. Doporučujeme změnit tuto barvu, aby byly barvy vašich typů událostí viditelnější.", + "payment_not_created_error": "Platbu se nepodařilo vytvořit", + "couldnt_charge_card_error": "Nepodařilo se strhnout platbu z karty", + "no_available_users_found_error": "Nebyli nalezeni žádní dostupní uživatelé. Můžete zkusit jiný časový slot?", + "request_body_end_time_internal_error": "Interní chyba. Tělo požadavku neobsahuje čas ukončení", + "create_calendar_event_error": "Nelze vytvořit událost v kalendáři organizátora", + "update_calendar_event_error": "Nelze aktualizovat událost v kalendáři.", + "delete_calendar_event_error": "Nelze smazat událost v kalendáři.", + "already_signed_up_for_this_booking_error": "Již jste se zaregistrovali na tuto rezervaci.", + "hosts_unavailable_for_booking": "Někteří hostitelé nejsou k dispozici pro rezervaci.", "help": "Nápověda", "price": "Cena", "paid": "Zaplaceno", @@ -63,6 +88,8 @@ "payment": "Platba", "missing_card_fields": "Chybějící údaje karty", "pay_now": "Zaplatit", + "general_prompt": "Obecná výzva", + "begin_message": "Zahájit zprávu", "codebase_has_to_stay_opensource": "Zdrojové kódy musí zůstat jako open source, bez ohledu na to, jestli je upravujete nebo ne", "cannot_repackage_codebase": "Zdrojové kódy nelze vydat upravené nebo přeprodávat", "acquire_license": "Kontaktujte nás e-mailem, abyste získali komerční licenci a odstranili tyto podmínky", @@ -80,6 +107,9 @@ "new_event_request": "Nový požadavek na událost: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Potvrdit nebo zamítnout žádost", "check_bookings_page_to_confirm_or_reject": "Pokračujte na stránku s rezervacemi a potvrďte nebo odmítněte rezervaci.", + "check_in_assistant": "Asistent pro přihlášení", + "check_in_assistant_description": "Provádí odchozí hovor, aby zjistil, zda naplánovaná schůzka vyhovuje, nebo zda chcete přeplánovat.", + "create_your_own_prompt": "Vytvořte si vlastní výzvu a použijte ji k odchozímu hovoru.", "event_awaiting_approval": "Událost stále čeká na schválení", "event_awaiting_approval_recurring": "Opakovaná událost čeká na schválení", "someone_requested_an_event": "Někdo požádal o naplánování události ve vašem kalendáři.", @@ -90,7 +120,9 @@ "event_still_awaiting_approval": "Událost stále čeká na schválení", "booking_submitted_subject": "Rezervace odeslána: {{title}} během {{date}}", "download_recording_subject": "Stáhnout nahrávku: {{title}}, den {{date}}", + "download_transcript_email_subject": "Stáhnout přepis: {{title}} dne {{date}}", "download_your_recording": "Stáhněte si nahrávku", + "download_your_transcripts": "Stáhněte si své přepisy", "your_meeting_has_been_booked": "Vaše schůzka byla rezervována", "event_type_has_been_rescheduled_on_time_date": "Váš {{title}} byl přeplánován na {{date}}.", "event_has_been_rescheduled": "Změna - Vaše událost byla přesunuta na jindy", @@ -101,6 +133,7 @@ "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}}", "ics_event_title": "{{eventType}} s {{name}}", + "please_book_a_time_sometime_later": "Jejda, tentokrát jsme vás nemohli spojit. Prosím, naplánujte si hovor na později.", "new_event_subject": "Nová událost: {{attendeeName}} - {{date}} - {{eventType}}", "join_by_entrypoint": "Připojit se k {{entryPoint}}", "notes": "Poznámky", @@ -112,26 +145,35 @@ "invitee_timezone": "Časová zóna pozvaného", "time_left": "Zbývající čas", "event_type": "Typ události", + "duplicate_event_type": "Duplicitní typ události", "enter_meeting": "Připojit se ke schůzce", "video_call_provider": "Řešení pro video cally", "meeting_id": "Meeting ID", "meeting_password": "Heslo ke schůzce", "meeting_url": "URL ke schůzce", + "meeting_url_not_found": "URL schůzky nebyla nalezena", + "token_not_found": "Token nebyl nalezen", + "some_other_host_already_accepted_the_meeting": "Jiný hostitel již schůzku přijal. Chcete se přesto připojit? <1>Pokračovat na schůzku", "meeting_request_rejected": "Vaše žádost o schůzku byla zamítnuta", "rejected_event_type_with_organizer": "Zamítnuto: {{eventType}} s {{organizer}} během {{date}}", "hi": "Zdravíme", "join_team": "Připojit se k týmu", "manage_this_team": "Spravovat tento tým", "team_info": "Informace o týmu", + "join_meeting": "Připojit se ke schůzce", "request_another_invitation_email": "Pokud si nepřejete použít e-mail {{toEmail}} pro {{appName}} nebo už účet na {{appName}} máte, požádejte prosím o další pozvánku na jiný e-mail.", "you_have_been_invited": "Byli jste pozváni do týmu {{teamName}}", "user_invited_you": "Uživatel {{user}} vás pozval, abyste se připojili k {{entity}} {{team}} v aplikaci {{appName}}", + "user_invited_you_to_subteam": "{{user}} vás pozval do týmu {{team}} organizace {{parentTeamName}} na {{appName}}", "hidden_team_member_title": "V tomto týmu nejste viditelní", "hidden_team_member_message": "Vaše místo není zaplacené. Buď přejděte na tarif Pro, nebo informujte vlastníka týmu, že za vaše místo může zaplatit.", "hidden_team_owner_message": "Pro využívání týmů potřebujete tarif Pro, budete skrytí, než přejdete na vyšší verzi.", "link_expires": "P.S. Platnost vyprší za {{expiresIn}} hodin.", "upgrade_to_per_seat": "Přejít na placení za místo", "seat_options_doesnt_support_confirmation": "Možnost Místa nevyžaduje potvrzení", + "multilocation_doesnt_support_seats": "Více lokalit nepodporuje možnost míst.", + "no_show_fee_doesnt_support_seats": "Poplatek za neúčast nepodporuje možnost míst.", + "seats_option_doesnt_support_multi_location": "Možnost míst nepodporuje více lokalit.", "team_upgrade_seats_details": "Z {{memberCount}} členů ve vašem týmů je {{unpaidCount}} míst neplacených. Při ${{seatPrice}} měsíčně za místo je odhad celkové částky za členství ${{totalCost}} měsíčně.", "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", @@ -225,8 +267,10 @@ "create_account": "Vytvořit účet", "confirm_password": "Potvrdit heslo", "reset_your_password": "Nastavte si nové heslo podle pokynů odeslaných na vaši e-mailovou adresu.", + "org_banner_instructions": "Nahrajte prosím obrázek o šířce {{width}} a výšce {{height}}.", "email_change": "Přihlaste se znovu pomocí nové e-mailové adresy a hesla.", "create_your_account": "Vytvořit účet", + "create_your_calcom_account": "Vytvořte si účet na Cal.com", "sign_up": "Přihlásit se", "youve_been_logged_out": "Byli jste odhlášeni", "hope_to_see_you_soon": "Brzy naviděnou!", @@ -264,6 +308,9 @@ "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í", + "set_availbility_description": "Nastavte si rozvrhy pro časy, kdy chcete být rezervováni.", + "share_a_link_or_embed": "Sdílejte odkaz nebo vložte", + "share_a_link_or_embed_description": "Sdílejte svůj odkaz {{appName}} nebo vložte na svůj web.", "availability_settings": "Nastavení dostupnosti", "continue_without_calendar": "Pokračovat bez kalendáře", "continue_with": "Pokračovat přes {{appName}}", @@ -279,6 +326,7 @@ "welcome_to_calcom": "Vítejte na webu {{appName}}", "welcome_instructions": "Řekněte nám vaše jméno a v jaké časové zóně se pohybujete. Později můžete tyto informace změnit.", "connect_caldav": "Připojit se k CalDav (Beta)", + "connect_ics_feed": "Připojit k ICS feedu", "connect": "Připojit", "try_for_free": "Vyzkoušet zdarma", "create_booking_link_with_calcom": "Vytvořte si vlastní rezervační odkaz s {{appName}}", @@ -292,8 +340,10 @@ "add_another_calendar": "Přidat další kalendář", "other": "Ostatní", "email_sign_in_subject": "Váš přihlašovací odkaz pro {{appName}}", + "round_robin_emailed_you_and_attendees": "Setkáte se s {{user}}. Poslali jsme e-mail s pozvánkou do kalendáře a podrobnostmi všem účastníkům.", "emailed_you_and_attendees": "Poslali jsme vám a ostatním účastníkům e-mail s pozvánkou a podrobnostmi.", "emailed_you_and_attendees_recurring": "Na první z těchto opakovaných událostí jsme vám a ostatním účastníkům poslali e-mail s pozvánkou a podrobnostmi.", + "round_robin_emailed_you_and_attendees_recurring": "Setkáte se s {{user}}. Poslali jsme e-mail s pozvánkou do kalendáře a podrobnostmi všem účastníkům pro první z těchto opakujících se událostí.", "emailed_you_and_any_other_attendees": "Poslali jsme vám a ostatním účastníkům e-mail s těmito informacemi.", "needs_to_be_confirmed_or_rejected": "Vaše rezervace bude teprve schválena nebo zamítnuta.", "needs_to_be_confirmed_or_rejected_recurring": "Vaše opakovaná schůzka musí být ještě potvrzena nebo zamítnuta.", @@ -417,9 +467,11 @@ "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", + "instant_meeting": "Okamžitá schůzka vytvořena", "booking_cancelled": "Rezervace byla zrušena", "booking_rescheduled": "Rezervace přesunuta", "recording_ready": "Odkaz ke stažení záznamu je připraven", + "recording_transcription_generated": "Přepis vygenerován", "booking_created": "Rezervace vytvořena", "booking_rejected": "Rezervace byla zamítnuta", "booking_requested": "Váš požadavek na rezervaci byl úspěšně odeslán", @@ -427,6 +479,7 @@ "meeting_ended": "Schůzka skončila", "form_submitted": "Formulář byl odeslán", "booking_paid": "Rezervace uhrazena", + "booking_no_show_updated": "Aktualizováno: Nepřítomnost na rezervaci", "event_triggers": "Eventy na základě akce", "subscriber_url": "URL pro odběry", "create_new_webhook": "Vytvořit nový webhook", @@ -531,6 +584,7 @@ "enter_number_between_range": "Zadejte prosím číslo v rozpětí 1 a {{maxOccurences}}", "email_address": "E-mailová adresa", "enter_valid_email": "Zadejte platný e-mail", + "please_schedule_future_call": "Naplánujte prosím budoucí hovor, pokud nebudeme dostupní za {{seconds}} sekund", "location": "Místo", "address": "Adresa", "enter_address": "Zadejte adresu", @@ -583,6 +637,7 @@ "number_selected": "Vybráno: {{count}}", "owner": "Vlastník", "admin": "Administrátor", + "admin_api": "Admin API", "administrator_user": "Uživatel administrátor", "lets_create_first_administrator_user": "Pojďme vytvořit prvního uživatele administrátora.", "admin_user_created": "Nastavení uživatele administrátora", @@ -590,6 +645,7 @@ "new_member": "Nový člen", "invite": "Pozvat", "add_team_members": "Přidat členy týmu", + "add_org_members": "Přidat členy", "add_team_members_description": "Pozvěte další, aby se připojili k vašemu týmu", "add_team_member": "Přidat člena týmu", "invite_new_member": "Pozvat nového člena", @@ -604,6 +660,7 @@ "hide_book_a_team_member_description": "Skrýt tlačítko Rezervovat člena týmu na veřejných stránkách.", "danger_zone": "Nebezpečná zóna", "account_deletion_cannot_be_undone": "Pozor. Odstranění účtu nelze vrátit.", + "team_deletion_cannot_be_undone": "Buďte opatrní. Smazání týmu nelze vrátit zpět.", "back": "Zpět", "cancel": "Zrušit", "cancel_all_remaining": "Zrušit vše zbývající", @@ -639,6 +696,7 @@ "user_from_team": "{{user}} z {{team}}", "preview": "Zobrazit náhled", "link_copied": "Odkaz zkopírován!", + "copied": "Zkopírováno!", "private_link_copied": "Soukromý odkaz byl zkopírován!", "link_shared": "Odkaz nasdílen!", "title": "Název", @@ -655,7 +713,9 @@ "default_duration_no_options": "Nejprve vyberte dostupné doby trvání", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "min", + "use_cal_ai_to_make_call_description": "Použijte Cal.ai k získání telefonního čísla s podporou AI nebo k volání hostům.", "round_robin": "Plánování Round Robin", "round_robin_description": "Schůzky v řadě mezi několika členy týmu.", "managed_event": "Spravovaná událost", @@ -667,9 +727,12 @@ "add_members": "Přidat členy...", "no_assigned_members": "Žádní přiřazení členové", "assigned_to": "Přiřazeno k", + "you_must_be_logged_in_to": "Musíte být přihlášeni k {{url}}", "start_assigning_members_above": "Začněte přiřazovat členy výše", "locked_fields_admin_description": "Členové to nebudou mít možnost upravovat", + "unlocked_fields_admin_description": "Členové mohou upravovat", "locked_fields_member_description": "Tato možnost byla uzamčena správcem týmu", + "unlocked_fields_member_description": "Odemknuto administrátorem týmu", "url": "URL", "hidden": "Skrytý", "readonly": "Jen pro čtení", @@ -716,6 +779,8 @@ "brand_color": "Barva značky", "light_brand_color": "Barva vašeho brandu (světlý motiv)", "dark_brand_color": "Barva vašeho brandu (tmavý motiv)", + "light_event_type_color": "Barva typu události (světlé téma)", + "dark_event_type_color": "Barva typu události (tmavé téma)", "file_not_named": "Soubor není pojmenován [idOrSlug]/[user]", "create_team": "Vytvořit tým", "name": "Jméno", @@ -771,6 +836,10 @@ "additional_input_description": "Před potvrzením rezervace vyžadovat od plánující osoby zadání dalších vstupů", "label": "Popisek", "placeholder": "Placeholder", + "display_add_to_calendar_organizer": "Použijte e-mail „Přidat do kalendáře“ jako organizátor", + "display_email_as_organizer": "Zobrazíme tuto e-mailovou adresu jako organizátora a pošleme sem potvrzovací e-maily.", + "if_enabled_email_address_as_organizer": "Pokud je povoleno, zobrazíme e-mailovou adresu z vašeho „Přidat do kalendáře“ jako organizátora a pošleme sem potvrzovací e-maily.", + "reconnect_calendar_to_use": "Vezměte prosím na vědomí, že možná budete muset odpojit a znovu připojit svůj účet 'Přidat do kalendáře', abyste mohli tuto funkci používat.", "type": "Typ", "edit": "Upravit", "add_input": "Přidat položku", @@ -779,6 +848,9 @@ "requires_confirmation_description": "Rezervace musí být ručně potvrzena, než bude odeslána do integrovaných systémů a dojde k odeslání e-mailu s potvrzením.", "recurring_event": "Opakovaná událost", "recurring_event_description": "Lidé se mohou přihlásit k opakovaným událostem", + "cannot_be_used_with_paid_event_types": "Nelze použít s placenými typy událostí", + "warning_payment_instant_meeting_event": "Okamžité schůzky nejsou zatím podporovány s opakujícími se událostmi a platebními aplikacemi", + "warning_instant_meeting_experimental": "Experimentální: Okamžité schůzky jsou momentálně ve fázi experimentu.", "starting": "Začátek", "disable_guests": "Zakázat hosty", "disable_guests_description": "Zakázat přidávání dalších hostů během rezervace.", @@ -787,6 +859,7 @@ "private_link_label": "Soukromý odkaz", "private_link_hint": "Váš soukromý odkaz se po každém použití obnoví", "copy_private_link": "Zkopírovat soukromý odkaz", + "copy_private_link_to_event": "Zkopírovat soukromý odkaz na událost", "private_link_description": "Vygenerujte soukromou adresu URL, kterou budete sdílet, aniž byste odhalili své uživatelské jméno ve službě {{appName}}", "invitees_can_schedule": "Pozvaní mohou plánovat", "date_range": "Časové rozmezí", @@ -846,6 +919,7 @@ "next_step": "Přeskočit krok", "prev_step": "Předchozí krok", "install": "Nainstalovat", + "start_paid_trial": "Začít bezplatnou zkušební verzi", "installed": "Nainstalováno", "active_install_one": "Aktivní instalace: {{count}}", "active_install_other": "Aktivní instalace: {{count}}", @@ -860,6 +934,7 @@ "toggle_calendars_conflict": "Zapněte kalendáře, u kterých chcete mít přehled o konfliktech a zabránit dvojí rezervaci.", "connect_additional_calendar": "Připojit další kalendář", "calendar_updated_successfully": "Kalendář byl úspěšně aktualizován", + "check_here": "Zkontrolujte zde", "conferencing": "Konference", "calendar": "Kalendář", "payments": "Platby", @@ -937,6 +1012,8 @@ "verify_wallet": "Ověřit peněženku", "create_events_on": "Vytvořit události v:", "enterprise_license": "Jedná se o firemní funkci", + "enterprise_license_locally": "Tuto funkci můžete testovat lokálně, ale ne v produkčním prostředí.", + "enterprise_license_sales": "Pro upgrade na enterprise edici kontaktujte náš prodejní tým. Pokud již máte licenční klíč, kontaktujte prosím support@cal.com pro pomoc.", "missing_license": "Chybějící licence", "next_steps": "Další kroky", "acquire_commercial_license": "Získat komerční licenci", @@ -978,6 +1055,7 @@ "seats_nearly_full": "Místa jsou téměř obsazena", "seats_half_full": "Místa se rychle zaplňují", "number_of_seats": "Počet míst na rezervaci", + "set_instant_meeting_expiry_time_offset_description": "Nastavit časové okno pro připojení ke schůzce (v sekundách): Časový rámec v sekundách, během kterého se hostitel může připojit a zahájit schůzku. Po uplynutí této doby odkaz na připojení ke schůzce vyprší.", "enter_number_of_seats": "Zadejte počet míst", "you_can_manage_your_schedules": "Své plány můžete spravovat na stránce Dostupnost.", "booking_full": "Nejsou k dispozici žádná další místa", @@ -1029,15 +1107,21 @@ "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.", + "cal_signup_description": "Zdarma pro jednotlivce. Týmové plány pro kolaborativní funkce.", + "make_org_private": "Nastavit organizaci jako soukromou", + "make_org_private_description": "Členové vaší organizace nebudou moci vidět ostatní členy organizace, když je tato možnost zapnutá.", "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.", + "you_cannot_see_teams_of_org": "Nemůžete vidět týmy soukromé organizace.", "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.", "impersonating_user_warning": "Zosobnění uživatelského jména „{{user}}“.", "impersonating_stop_instructions": "Kliknutím sem zastavíte", "event_location_changed": "Aktualizováno – u vaší události se změnilo místo", + "new_guests_added": "Přidáno - Noví hosté přidáni k vaší události", "location_changed_event_type_subject": "Změna místa: událost {{eventType}} jménem {{name}} v den {{date}}", + "guests_added_event_type_subject": "Hosté přidáni: {{eventType}} s {{name}} v {{date}}", "current_location": "Současné místo", "new_location": "Nové místo", "session": "Relace", @@ -1049,7 +1133,11 @@ "set_location": "Nastavit místo", "update_location": "Aktualizovat místo", "location_updated": "Místo aktualizováno", + "guests_added": "Hosté přidáni", + "unable_to_add_guests": "Nelze přidat hosty", "email_validation_error": "Tohle nevypadá jako e-mailová adresa", + "emails_must_be_unique_valid": "E-maily musí být jedinečné a platné", + "url_validation_error": "To nevypadá jako URL", "place_where_cal_widget_appear": "Dejte tento kód do HTML na místo, kde chcete, aby se zobrazil widget služby {{appName}}.", "create_update_react_component": "Vytvořte nebo aktualizujte stávající komponentu React podle obrázku níže.", "copy_code": "Kopírovat kód", @@ -1066,9 +1154,12 @@ "make_setup_instructions": "<0>Přejděte na <1><0>odkaz s pozvánkou pro Make a nainstalujte aplikaci Cal.com.<1>Přihlaste se ke svému účtu Make a vytvořte nový scénář.<2>Jako spouštěcí aplikaci vyberte Cal.com. Dále vyberte událost spouštěče.<3>Vyberte svůj účet a následně zadejte svůj unikátní klíč API.<4>Otestujte svůj spouštěč.<5>Všechno je připraveno!", "install_zapier_app": "Nejdřív si z App Store nainstalujte aplikaci Zapier.", "install_make_app": "Nejprve si nainstalujte aplikaci Make z obchodu s aplikacemi.", + "app_not_installed": "Aplikace není nainstalována", + "visit_our_app_store": "Omlouváme se, tato aplikace není nainstalována na vašem účtu. Navštivte náš obchod s aplikacemi a objevte tuto a další skvělé aplikace.", "connect_apple_server": "Připojit se k serveru Apple", "calendar_url": "URL kalendáře", "apple_server_generate_password": "Vygenerujte si specifické heslo pro aplikaci {{appName}} na", + "unable_to_add_apple_calendar": "Nelze přidat tento účet Apple Kalendáře. Ujistěte se, že používáte heslo specifické pro aplikaci, nikoli heslo k účtu.", "credentials_stored_encrypted": "Vaše přihlašovací údaje budou uloženy a zašifrovány.", "it_stored_encrypted": "Bude uložen a zašifrován.", "go_to_app_store": "Přejít do App Store", @@ -1088,6 +1179,7 @@ "developer_documentation": "Dokumentace vývojáře", "get_in_touch": "Kontaktujte nás", "contact_support": "Kontaktujte podporu", + "premium_support": "Prémiová podpora", "community_support": "Podpora komunity", "feedback": "Zpětná vazba", "submitted_feedback": "Děkujeme za vaši zpětnou vazbu!", @@ -1138,6 +1230,8 @@ "day_timeUnit": "dny", "hour_timeUnit": "h", "minute_timeUnit": "min", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Vytvořte svůj první pracovní postup", "new_workflow_description": "Pracovní postupy umožňují automatizovat zasílání upomínek a oznámení.", "active_on": "Aktivní pro:", @@ -1165,6 +1259,8 @@ "may_require_confirmation": "Může vyžadovat potvrzení", "nr_event_type_one": "Typ události: {{count}}", "nr_event_type_other": "Typy událostí: {{count}}", + "count_team_one": "{{count}} tým", + "count_team_other": "{{count}} týmy", "add_action": "Přidat akci", "set_whereby_link": "Nastavte odkaz Whereby", "invalid_whereby_link": "Zadejte platný odkaz Whereby", @@ -1185,11 +1281,14 @@ "reminder": "Upomínka", "rescheduled": "Změna termínu", "completed": "Dokončeno", + "rating": "Hodnocení", "reminder_email": "Upomínka: událost {{eventType}} s uživatelem {{name}} dne {{date}}", "not_triggering_existing_bookings": "Nespustí se u již existujících rezervací, protože uživatel bude při rezervaci události požádán o zadání telefonního čísla.", "minute_one": "{{count}} min", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} min", "hour_one": "{{count}} h", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} h", "invalid_input": "Neplatný vstup", "broken_video_action": "Nelze přidat odkaz na schůzku <1>{{location}} k vaší plánované události. Kontaktujte pozvané nebo aktualizujte událost ve svém kalendáři a přidejte podrobnosti. Můžete buď <3>změnit místo u typu události, nebo zkusit <5>aplikaci odstranit a znovu přidat.", @@ -1201,7 +1300,12 @@ "problem_updating_calendar": "Při aktualizaci kalendáře došlo k chybě", "active_on_event_types_one": "Aktivní pro {{count}} typ události", "active_on_event_types_other": "Aktivní pro {{count}} typů událostí", + "active_on_teams_one": "Aktivní v {{count}} týmu", + "active_on_teams_other": "Aktivní v {{count}} týmech", + "active_on_all_event_types": "Aktivní ve všech typech událostí", + "active_on_all_teams": "Aktivní ve všech týmech", "no_active_event_types": "Žádné aktivní typy událostí", + "no_active_teams": "Žádné aktivní týmy", "new_seat_subject": "Nový účastník {{name}} události {{eventType}} dne {{date}}", "new_seat_title": "Někdo se přidal k události", "variable": "Proměnná", @@ -1219,6 +1323,7 @@ "upgrade": "Upgradovat", "upgrade_to_access_recordings_title": "Získejte po upgradu přístup k nahrávkám", "upgrade_to_access_recordings_description": "Nahrávky jsou dostupné pouze v rámci našeho tarifu pro týmy. Proveďte upgrade a začněte nahrávat své hovory", + "upgrade_to_cal_ai_phone_number_description": "Upgradujte na Enterprise a získejte telefonní číslo AI agenta, který může volat hostům a plánovat hovory", "recordings_are_part_of_the_teams_plan": "Nahrávky jsou součástí tarifu pro týmy", "team_feature_teams": "Toto je funkce verze Team. Pokud chcete zobrazit dostupnost svého týmu, upgradujte na verzi Team.", "team_feature_workflows": "Jedná se o funkci verze Team. Upgradujte na verzi Team, abyste mohli automatizovat upozornění na události a upomínky pomocí pracovních postupů.", @@ -1251,6 +1356,7 @@ "default_calendar_selected": "Výchozí kalendář", "hide_from_profile": "Nezobrazovat v profilu", "event_setup_tab_title": "Nastavení události", + "availability_not_found_in_schedule_error": "V rozvrhu nebyla nalezena žádná dostupnost", "event_limit_tab_title": "Omezení", "event_limit_tab_description": "Jak často lze u vás provést rezervaci", "event_advanced_tab_description": "Nastavení kalendáře a další...", @@ -1265,12 +1371,16 @@ "2fa_required": "Vyžadováno dvoufázové ověření", "incorrect_2fa": "Nesprávný kód dvoufázového ověření", "which_event_type_apply": "Na jaký typ události se to bude vztahovat?", + "apply_to_all_event_types": "Použít na všechny, včetně budoucích typů událostí", + "apply_to_all_teams": "Použít na všechny týmové a uživatelské typy událostí", + "which_team_apply": "Na který tým se to bude vztahovat?", "no_workflows_description": "Pracovní postupy umožňují jednoduchou automatizaci zasílání oznámení a připomínek, což vám umožní vytvářet procesy v souvislosti s vašimi událostmi.", "timeformat_profile_hint": "Jedná se o interní nastavení, které nemá vliv na to, jak se vám nebo komukoli, kdo vás rezervuje, na veřejných rezervačních stránkách zobrazují časy.", "create_workflow": "Vytvoření pracovního postupu", "do_this": "Provést", "turn_off": "Vypnout", "turn_on": "Zapnout", + "cancelled_bookings_cannot_be_rescheduled": "Zrušené rezervace nelze přeplánovat", "settings_updated_successfully": "Nastavení aktualizováno", "error_updating_settings": "Chyba při aktualizaci nastavení", "personal_cal_url": "Moje osobní adresa URL {{appName}}", @@ -1294,6 +1404,7 @@ "customize_your_brand_colors": "Vytvořte si rezervační stránku na míru v barvách své značky.", "pro": "Pro", "removes_cal_branding": "Odstraní všechny značky související s {{appName}}, tj. „Běží na platformě {{appName}}.“", + "instant_meeting_with_title": "Okamžitá schůzka s {{name}}", "profile_picture": "Profilová fotka", "upload": "Nahrát", "add_profile_photo": "Přidat profilovou fotku", @@ -1348,7 +1459,9 @@ "add_dynamic_variables": "Přidání dynamických textových proměnných", "event_name_info": "Název typu události", "event_date_info": "Datum události", + "event_duration_info": "Délka události", "event_time_info": "Čas začátku události", + "event_type_not_found": "Typ události nebyl nalezen", "location_variable": "Místo", "location_info": "Místo události", "additional_notes_variable": "Doplňující poznámky", @@ -1361,7 +1474,12 @@ "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", + "transcription_enabled": "Přepisy jsou nyní povoleny", + "transcription_stopped": "Přepisy byly zastaveny", + "download_transcript": "Stáhnout přepis", "recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru v {{appName}} je připravena ke stažení", + "transcript_from_previous_call": "Přepis z vašeho nedávného hovoru na {{appName}} je připraven ke stažení. Odkazy jsou platné pouze 1 hodinu", + "link_valid_for_12_hrs": "Poznámka: Odkaz ke stažení je platný pouze 12 hodin. Nový odkaz ke stažení můžete vygenerovat podle pokynů <1>zde.", "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", @@ -1391,10 +1509,12 @@ "slot_length": "Délka slotu", "booking_appearance": "Vzhled rezervace", "appearance_team_description": "Správa nastavení vzhledu rezervace vašeho týmu", + "appearance_org_description": "Spravujte nastavení vzhledu rezervací vaší organizace", "only_owner_change": "Změny v rezervaci týmu může provádět pouze jeho vlastník ", "team_disable_cal_branding_description": "Odstraní všechny značky související s {{appName}}, tj. „Běží na platformě {{appName}}.“", "invited_by_team": "Tým {{teamName}} vás pozval do svého týmu na pozici {{role}}", "token_invalid_expired": "Token je buď neplatný, nebo vypršela jeho platnost.", + "view_booking": "Zobrazit rezervaci", "exchange_add": "Propojit s Microsoft Exchange", "exchange_authentication": "Způsob ověřování", "exchange_authentication_standard": "Základní ověřování", @@ -1412,6 +1532,7 @@ "routing_forms_description": "Vytvořit formuláře pro přesměrování účastníků do správných destinací", "routing_forms_send_email_owner": "Odeslat e-mail vlastníkovi", "routing_forms_send_email_owner_description": "Po odeslání formuláře bude vlastníkovi odeslán e-mail", + "routing_forms_send_email_to": "Odeslat e-mail na", "add_new_form": "Přidat nový formulář", "add_new_team_form": "Přidání nového formuláře do vašeho týmu", "create_your_first_route": "Vytvořte svoje první směrování", @@ -1446,6 +1567,7 @@ "password_updated": "Heslo bylo úspěšně změněno!", "pending_payment": "Čeká se na platbu", "pending_invites": "Čekající pozvánky", + "pending_organization_invites": "Čekající pozvánky do organizace", "not_on_cal": "Nenachází se na {{appName}}", "no_calendar_installed": "Není nainstalován kalendář", "no_calendar_installed_description": "Ještě jste nepropojili žádný ze svých kalendářů", @@ -1457,6 +1579,8 @@ "report_app": "Nahlásit aplikaci", "limit_booking_frequency": "Omezit četnost rezervací", "limit_booking_frequency_description": "Omezit, kolikrát lze tuto událost rezervovat", + "only_show_first_available_slot": "Zobrazit pouze první dostupný časový slot", + "only_show_first_available_slot_description": "Tímto omezíte svou dostupnost pro tento typ události na jeden časový slot denně, naplánovaný na nejbližší dostupný čas.", "limit_total_booking_duration": "Omezení celkové doby trvání rezervace", "limit_total_booking_duration_description": "Omezení celkové doby, po kterou je možné tuto událost rezervovat", "add_limit": "Přidat limit", @@ -1496,6 +1620,7 @@ "how_long_after": "Jak dlouho po ukončení události?", "no_available_slots": "Žádné dostupné sloty", "time_available": "Dostupný čas", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Nemůžete najít správnou konferenční aplikaci? Navštivte náš <1>App Store.", "install_new_calendar_app": "Nainstalovat novou aplikaci kalendáře", "make_phone_number_required": "Pro rezervaci události vyžadovat telefonní číslo", "new_event_type_availability": "Dostupnost pro {{eventTypeTitle}}", @@ -1523,10 +1648,14 @@ "your_org_disbanded_successfully": "Vaše organizace byla rozpuštěna", "error_creating_team": "Chyba při vytváření týmu", "you": "Vy", + "or_continue_with": "Nebo pokračujte s", "resend_email": "Znovu odeslat e-mail", "member_already_invited": "Člen byl už pozván", "already_in_use_error": "Uživatelské jméno se již používá", "enter_email_or_username": "Zadejte e-mail nebo uživatelské jméno", + "enter_email": "Zadejte e-mail", + "enter_emails": "Zadejte e-maily", + "too_many_invites": "Můžete pozvat maximálně {{nbUsers}} uživatelů najednou.", "team_name_taken": "Toto jméno je už obsazeno", "must_enter_team_name": "Musíte zadat název týmu", "team_url_required": "Musíte zadat adresu URL týmu", @@ -1539,6 +1668,7 @@ "attendee_email_info": "E-mail osoby provádějící rezervaci", "kbar_search_placeholder": "Zadejte příkaz nebo vyhledejte...", "invalid_credential": "Ale ne! Zdá se, že platnost oprávnění vypršela nebo byla zrušena. Proveďte novou instalaci.", + "invalid_credential_action": "Přeinstalovat aplikaci", "reschedule_reason": "Důvod změny termínu", "choose_common_schedule_team_event": "Vyberte společný plán", "choose_common_schedule_team_event_description": "Tuto možnost povolte, pokud chcete používat společný plán mezi hostiteli. Při zakázání této možnosti bude každý hostitel rezervován na základě svého výchozího plánu.", @@ -1552,6 +1682,8 @@ "test_routing": "Test směrování", "payment_app_disabled": "Správce zakázal platební aplikaci", "edit_event_type": "Upravit typ události", + "only_admin_can_see_members_of_org": "Tato organizace je soukromá a pouze administrátor nebo vlastník organizace může vidět její členy.", + "only_admin_can_manage_sso_org": "Pouze administrátor nebo vlastník organizace může spravovat nastavení SSO", "collective_scheduling": "Kolektivní plánování", "make_it_easy_to_book": "Usnadněte si rezervaci týmu, pokud jsou všichni k dispozici.", "find_the_best_person": "Najděte nejlepší dostupnou osobu a procházejte tým.", @@ -1606,10 +1738,12 @@ "individual": "Jedinec", "all_bookings_filter_label": "Všechny rezervace", "all_users_filter_label": "Všichni uživatelé", + "all_event_types_filter_label": "Všechny typy událostí", "your_bookings_filter_label": "Vaše rezervace", "meeting_url_variable": "Adresa URL schůzky", "meeting_url_info": "Adresa URL konferenční schůzky k události", "date_overrides": "Změna dnů", + "date_overrides_delete_on_date": "Smazat přepsání data k {{date}}", "date_overrides_subtitle": "Přidejte dny, kdy se změní vaše dostupnost oproti vaší každodenní době.", "date_overrides_info": "Změna dnů se po uplynutí daného data automaticky archivuje.", "date_overrides_dialog_which_hours": "V jakých hodinách máte volno?", @@ -1651,6 +1785,7 @@ "new_attendee": "Nový účastník", "awaiting_approval": "Čeká na schválení", "requires_google_calendar": "Tato aplikace vyžaduje připojení ke Kalendáři Google", + "event_type_requires_google_calendar": "Pro funkci „Přidat do kalendáře“ u tohoto typu události je potřeba Google Kalendář pro Meet. Připojte ho <1>zde.", "connected_google_calendar": "Připojili jste účet Kalendáře Google.", "using_meet_requires_calendar": "Používání služby Google Meet vyžaduje připojení Kalendáře Google", "continue_to_install_google_calendar": "Pokračovat v instalaci Kalendáře Google", @@ -1683,6 +1818,7 @@ "configure": "Konfigurovat", "sso_configuration": "Single Sign-On", "sso_configuration_description": "Konfigurace SAML/OIDC SSO a umožnění členům týmu přihlašování prostřednictvím poskytovatele identity", + "sso_configuration_description_orgs": "Nastavte SAML/OIDC SSO a umožněte členům organizace přihlásit se pomocí poskytovatele identity", "sso_oidc_heading": "SSO s OIDC", "sso_oidc_description": "Konfigurace OIDC SSO s poskytovatelem identity podle vlastního výběru.", "sso_oidc_configuration_title": "Konfigurace OIDC", @@ -1702,9 +1838,11 @@ "organizer_timezone": "Časové pásmo organizátora", "email_user_cta": "Zobrazit pozvánku", "email_no_user_invite_heading_team": "Byli jste pozváni do týmu {{appName}}", + "email_no_user_invite_heading_subteam": "Byli jste pozváni, abyste se připojili k týmu organizace {{parentTeamName}}", "email_no_user_invite_heading_org": "Byli jste pozváni do organizace {{appName}}", "email_no_user_invite_subheading": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez e-mailového ping-pongu.", "email_user_invite_subheading_team": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu „{{teamName}}“ v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez e-mailového pingpongu.", + "email_user_invite_subheading_subteam": "{{invitedBy}} vás pozval(a) k připojení k týmu {{teamName}} v jejich organizaci {{parentTeamName}} na {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez zbytečných e-mailů.", "email_user_invite_subheading_org": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k týmu {{teamName}} jeho organizace v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vaší organizaci umožňuje plánovat schůzky bez e-mailového pingpongu.", "email_no_user_invite_steps_intro": "Provedeme vás několika krátkými kroky a za malou chvíli si budete se svým subjektem {{entity}} užívat plánování bez stresu.", "email_no_user_step_one": "Vyberte si uživatelské jméno", @@ -1821,7 +1959,15 @@ "requires_at_least_one_schedule": "Musíte mít alespoň jeden rozvrh", "default_conferencing_bulk_description": "Aktualizujte místa pro vybrané typy událostí", "locked_for_members": "Zamčeno pro členy", + "unlocked_for_members": "Odemčeno pro členy", "apps_locked_for_members_description": "Členové uvidí aktivní aplikace, ale nastavení aplikací upravovat nemohou", + "apps_unlocked_for_members_description": "Členové budou moci vidět aktivní aplikace a budou moci upravovat jakékoli nastavení aplikací", + "apps_locked_by_team_admins_description": "Budete moci vidět aktivní aplikace, ale nebudete moci upravovat žádné nastavení aplikací", + "apps_unlocked_by_team_admins_description": "Budete moci vidět aktivní aplikace a upravovat jakékoli nastavení aplikací.", + "workflows_locked_for_members_description": "Členové nemohou přidávat své osobní pracovní postupy k tomuto typu události. Členové budou moci vidět aktivní týmové pracovní postupy, ale nebudou moci upravovat žádná nastavení pracovních postupů.", + "workflows_unlocked_for_members_description": "Členové budou moci přidávat své osobní pracovní postupy k tomuto typu události. Členové budou moci vidět aktivní týmové pracovní postupy, ale nebudou moci upravovat žádná nastavení pracovních postupů.", + "workflows_locked_by_team_admins_description": "Budete moci vidět aktivní týmové pracovní postupy, ale nebudete moci upravovat žádná nastavení pracovních postupů ani přidávat své osobní pracovní postupy k tomuto typu události.", + "workflows_unlocked_by_team_admins_description": "Budete moci povolit/zakázat osobní pracovní postupy u tohoto typu události. Budete moci vidět aktivní týmové pracovní postupy, ale nebudete moci upravovat žádná nastavení týmových pracovních postupů.", "locked_by_team_admin": "Uzamčeno správcem týmu", "app_not_connected": "Nemáte připojený účet {{appName}}.", "connect_now": "Připojte se", @@ -1835,7 +1981,10 @@ "review_event_type": "Revidovat typ události", "looking_for_more_analytics": "Hledáte další analytické informace?", "looking_for_more_insights": "Hledáte další přehledy?", + "filters": "Filtry", "add_filter": "Přidat filtr", + "remove_filters": "Vymazat všechny filtry", + "email_verified": "E-mail ověřen", "select_user": "Vybrat uživatele", "select_event_type": "Vybrat typ události", "select_date_range": "Vybrat rozpětí dat", @@ -1926,18 +2075,23 @@ "connect_google_workspace": "Propojit s Google Workspace", "google_workspace_admin_tooltip": "Používání této funkce vyžaduje, abyste byli administrátory pracovního prostoru", "first_event_type_webhook_description": "Vytvořte svůj první webhook pro tento typ události", + "create_instant_meeting_webhook_description": "Vytvořte svůj první webhook s 'Instant Meeting Created' jako spouštěčem pro tento typ události.", "install_app_on": "Nainstalovat aplikaci v", "create_for": "Vytvořit pro", "currency": "Měna", "organization_banner_description": "Vytvořte prostředí, ve kterém budou moct vaše týmy vytvářet sdílené aplikace, pracovní postupy a typy událostí s kolektivním plánováním nebo plánováním typu round-robin.", "organization_banner_title": "Správa organizace s více týmy", "set_up_your_organization": "Nastavení organizace", + "set_up_your_platform_organization": "Nastavte svou platformu", "organizations_description": "Organizace jsou sdílená prostředí, ve kterých mohou týmy vytvářet sdílené typy událostí, aplikace, pracovní postupy a mnoho dalšího.", + "platform_organization_description": "Platforma Cal.com vám umožňuje snadno integrovat plánování do vaší aplikace pomocí platformových API a atomů.", "must_enter_organization_name": "Je nutné zadat název organizace", "must_enter_organization_admin_email": "Je nutné zadat e-mailovou adresu organizace", "admin_email": "E-mailová adresa vaší organizace", + "platform_admin_email": "E-mailová adresa vašeho administrátora", "admin_username": "Uživatelské jméno správce", "organization_name": "Název organizace", + "platform_name": "Název platformy", "organization_url": "Adresa URL organizace", "organization_verify_header": "Ověřte svou e-mailovou adresu organizace", "organization_verify_email_body": "Pomocí uvedeného kódu ověřte vaši e-mailovou adresu, abyste mohli pokračovat v nastavení vaší organizace.", @@ -1990,6 +2144,8 @@ "add_times_to_your_email": "Vyberte několik dostupných časů a vložte je do e-mailu", "select_time": "Vyberte čas", "select_date": "Vyberte datum", + "connecting_you_to_someone": "Spojujeme vás s někým.", + "please_do_not_close_this_tab": "Prosím, nezavírejte tuto kartu.", "see_all_available_times": "Zobrazit všechny dostupné časy", "org_team_names_example_1": "Např. marketingový tým", "org_team_names_example_2": "Např. obchodní tým", @@ -2007,8 +2163,13 @@ "description_requires_booker_email_verification": "Zajištění ověření e-mailu rezervujícího před plánováním událostí", "requires_confirmation_mandatory": "SMS zprávy lze účastníkům zasílat pouze v případě, že typ události vyžaduje potvrzení.", "organizations": "Organizace", + "upload_cal_video_logo": "Nahrát logo Cal Video", + "update_cal_video_logo": "Aktualizovat logo Cal Video", + "upload_banner": "Nahrát banner", + "cal_video_logo_upload_instruction": "Aby bylo vaše logo viditelné na tmavém pozadí Cal video, nahrajte prosím světlý obrázek ve formátu PNG nebo SVG, aby byla zachována průhlednost.", "org_admin_other_teams": "Ostatní týmy", "org_admin_other_teams_description": "Zde můžete vidět týmy uvnitř vaší organizace, kterých nejste součástí, a případně se do nich můžete přidat.", + "not_part_of_org": "Nejste součástí žádné organizace", "no_other_teams_found": "Nenalezeny žádné další týmy", "no_other_teams_found_description": "V této organizaci nejsou žádné další týmy.", "attendee_first_name_variable": "Jméno účastníka", @@ -2044,7 +2205,9 @@ "org_error_processing": "Při zpracování této organizace došlo k chybě", "orgs_page_description": "Seznam všech organizací. Přijetí organizace umožní všem uživatelům s touto e-mailovou doménou registraci BEZ ověření e-mailu.", "unverified": "Neověřeno", + "verified": "Ověřeno", "dns_missing": "Chybí DNS", + "dns_configured": "DNS nakonfigurováno", "mark_dns_configured": "Označit jako s nakonfigurovaným DNS", "value": "Hodnota", "your_organization_updated_sucessfully": "Vaše organizace byla aktualizována", @@ -2054,10 +2217,30 @@ "oAuth": "OAuth", "recently_added": "Nedávno přidáno", "connect_all_calendars": "Propojte všechny své kalendáře", + "connect_all_calendars_description": "{{appName}} čte dostupnost ze všech vašich stávajících kalendářů.", "workflow_automation": "Automatizace pracovních postupů", + "workflow_automation_description": "Přizpůsobte si své plánování pomocí workflow", "scheduling_for_your_team": "Automatizace pracovních postupů", + "scheduling_for_your_team_description": "Plánujte pro svůj tým s kolektivním a round-robin plánováním", "no_members_found": "Nenalezeni žádní členové", "directory_sync": "Synchronizace adresářů", + "directory_name": "Název adresáře", + "directory_provider": "Poskytovatel adresáře", + "directory_scim_url": "Základní URL SCIM", + "directory_scim_token": "SCIM Bearer Token", + "directory_scim_url_copied": "Základní URL SCIM zkopírována", + "directory_scim_token_copied": "SCIM Bearer Token zkopírován", + "directory_sync_info_description": "Váš poskytovatel identity bude požadovat následující informace pro konfiguraci SCIM. Postupujte podle pokynů k dokončení nastavení.", + "directory_sync_configure": "Nakonfigurovat synchronizaci adresáře", + "directory_sync_configure_description": "Vyberte poskytovatele identity pro konfiguraci adresáře pro váš tým.", + "directory_sync_title": "Nakonfigurujte poskytovatele identity pro zahájení s SCIM.", + "directory_sync_created": "Připojení synchronizace adresáře vytvořeno.", + "directory_sync_description": "Zajišťujte a rušte zajištění uživatelů pomocí vašeho poskytovatele adresáře.", + "directory_sync_deleted": "Připojení synchronizace adresáře smazáno.", + "directory_sync_delete_connection": "Smazat připojení", + "directory_sync_delete_title": "Smazat připojení synchronizace adresáře", + "directory_sync_delete_description": "Opravdu chcete smazat toto připojení synchronizace adresáře?", + "directory_sync_delete_confirmation": "Tuto akci nelze vrátit zpět. Toto trvale smaže připojení synchronizace adresáře.", "event_setup_length_error": "Nastavení události: Doba trvání musí být alespoň 1 minuta.", "availability_schedules": "Plány dostupnosti", "unauthorized": "Neautorizováno", @@ -2073,6 +2256,8 @@ "access_bookings": "Číst, upravovat a odstraňovat rezervace", "allow_client_to_do": "Chcete povolit klientovi {{clientName}} provádět uvedené akce?", "oauth_access_information": "Kliknutím na tlačítko Povolit této aplikaci umožníte používat vaše údaje v souladu s podmínkami služby a zásadami ochrany osobních údajů. Přístup k aplikaci {{appName}} můžete odebrat přes App Store.", + "oauth_form_title": "Formulář pro vytvoření OAuth klienta", + "oauth_form_description": "Toto je formulář pro vytvoření nového OAuth klienta", "allow": "Povolit", "view_only_edit_availability_not_onboarded": "Tento uživatel ještě nedokončil onboarding. Dokud nedokončí onboarding, dostupnost nebude možné nastavit.", "view_only_edit_availability": "Právě máte zobrazenou dostupnost tohoto uživatele. Upravovat lze pouze vlastní dostupnost.", @@ -2089,42 +2274,300 @@ "overlay_my_calendar": "Překryv mého kalendáře", "overlay_my_calendar_toc": "Připojením ke svému kalendáři přijímáte naše zásady ochrany osobních údajů a podmínky používání. Přístup můžete kdykoli odvolat.", "view_overlay_calendar_events": "Zobrazení událostí v kalendáři, aby se zabránilo kolidujícím rezervacím.", + "join_event_location": "Připojit se k {{eventLocationType}}", + "troubleshooting": "Řešení problémů", + "calendars_were_checking_for_conflicts": "Kalendáře, které kontrolujeme na konflikty", + "availabilty_schedules": "Plány dostupnosti", + "manage_calendars": "Spravovat kalendáře", + "manage_availability_schedules": "Spravovat plány dostupnosti", + "locked": "Uzamčeno", + "unlocked": "Odemčeno", "lock_timezone_toggle_on_booking_page": "Uzamčení časového pásma na stránce rezervace", "description_lock_timezone_toggle_on_booking_page": "Uzamčení časového pásma na stránce rezervace (užitečné pro osobní události).", + "event_setup_multiple_payment_apps_error": "Pro každý typ události můžete mít povolenou pouze jednu platební aplikaci.", + "number_in_international_format": "Zadejte číslo v mezinárodním formátu.", + "install_calendar": "Nainstalovat kalendář", + "branded_subdomain": "Brandovaný subdoména", + "branded_subdomain_description": "Získejte vlastní brandovanou subdoménu, například acme.cal.com", + "org_insights": "Přehledy celé organizace", + "org_insights_description": "Pochopte, jak vaše celá organizace tráví čas", "extensive_whitelabeling": "Vyhrazená podpora zaškolovací a inženýrská podpora", + "extensive_whitelabeling_description": "Přizpůsobte si své plánování pomocí vlastního loga, barev a dalších prvků", + "unlimited_teams": "Neomezené týmy", + "unlimited_teams_description": "Přidejte do své organizace tolik podtýmů, kolik potřebujete", + "unified_billing": "Sjednocené fakturování", + "unified_billing_description": "Přidejte jednu kreditní kartu pro platby za všechny předplatné vašeho týmu", + "advanced_managed_events": "Pokročilé spravované typy událostí", + "advanced_managed_events_description": "Přidejte jednu kreditní kartu pro platbu všech předplatných vašeho týmu", + "enterprise_description": "Upgradujte na Enterprise a vytvořte svou organizaci", + "create_your_org": "Vytvořte svou organizaci", + "create_your_org_description": "Upgradujte na Organizace a získejte subdoménu, sjednocené fakturace, Insights, rozsáhlé whitelabeling a další", + "create_your_enterprise_description": "Upgradujte na Enterprise a získejte přístup k synchronizaci Active Directory, automatickému poskytování uživatelů SCIM, hlasovým agentům Cal.ai, administrátorským API a dalším funkcím!", + "other_payment_app_enabled": "Pro každý typ události můžete povolit pouze jednu platební aplikaci", + "admin_delete_organization_description": "
  • Týmy, které jsou členy této organizace, budou také smazány spolu s jejich typy událostí
  • Uživatelé, kteří byli součástí organizace, nebudou smazáni, ale jejich uživatelská jména budou změněna, aby mohli existovat mimo organizaci
  • Typy událostí vytvořené uživatelem po jeho vstupu do organizace budou smazány
  • Migrované typy událostí uživatele nebudou smazány
", + "admin_delete_organization_title": "Smazat {{organizationName}}?", + "published": "Publikováno", + "unpublished": "Nepublikováno", + "publish": "Publikovat", + "org_publish_error": "Organizaci se nepodařilo publikovat", + "troubleshooter_tooltip": "Otevřete nástroj pro řešení problémů a zjistěte, co je špatně s vaším rozvrhem", "need_help": "Potřebujete pomoc?", + "troubleshooter": "Nástroj pro řešení problémů", + "number_to_call": "Číslo k zavolání", + "guest_name": "Jméno hosta", + "guest_email": "Email hosta", + "guest_company": "Společnost hosta", + "please_install_a_calendar": "Nainstalujte si kalendář", + "instant_tab_title": "Okamžité rezervace", + "instant_event_tab_description": "Umožněte lidem rezervovat okamžitě", + "uprade_to_create_instant_bookings": "Upgradujte na Enterprise a umožněte hostům připojit se k okamžitému hovoru, do kterého se mohou účastníci ihned zapojit. Toto je pouze pro týmové typy událostí", + "dont_want_to_wait": "Nechcete čekat?", + "meeting_started": "Schůzka začala", + "pay_and_book": "Zaplatit a rezervovat", + "cal_ai_event_tab_description": "Nechte AI agenty rezervovat za vás", + "booking_not_found_error": "Rezervaci nelze najít", + "booking_seats_full_error": "Všechny místa jsou obsazena", + "missing_payment_credential_error": "Chybí platební údaje", + "missing_payment_app_id_error": "Chybí ID platební aplikace", + "not_enough_available_seats_error": "Rezervace nemá dostatek volných míst", + "user_redirect_title": "{{username}} je momentálně na krátkou dobu pryč.", + "user_redirect_description": "Mezitím bude {{profile.username}} zodpovědný za všechny nové naplánované schůzky jménem {{username}}.", + "out_of_office": "Mimo kancelář", + "out_of_office_description": "Dejte svým rezervujícím vědět, kdy jste mimo kancelář.", + "send_request": "Odeslat žádost", + "start_date_and_end_date_required": "Počáteční a koncové datum jsou povinné", + "start_date_must_be_before_end_date": "Počáteční datum musí být před koncovým datem", + "start_date_must_be_in_the_future": "Počáteční datum musí být v budoucnosti", + "user_not_found": "Uživatel nenalezen", + "out_of_office_entry_already_exists": "Záznam o nepřítomnosti již existuje", + "out_of_office_id_required": "ID záznamu o nepřítomnosti je povinné", + "booking_redirect_infinite_not_allowed": "Již existuje přesměrování rezervace od tohoto uživatele k vám.", + "success_entry_created": "Nový záznam byl úspěšně vytvořen", + "booking_redirect_email_subject": "Oznámení o přesměrování rezervace", + "booking_redirect_email_title": "Oznámení o přesměrování rezervace", + "booking_redirect_email_description": "Obdrželi jste přesměrování rezervace od {{toName}}, takže jejich profilové odkazy budou přesměrovány na vaše po dobu časového intervalu: ", + "success_accept_booking_redirect": "Přijali jste tuto žádost o přesměrování rezervace.", + "success_reject_booking_redirect": "Odmítli jste tuto žádost o přesměrování rezervace.", + "copy_link_booking_redirect_request": "Zkopírovat odkaz pro sdílení žádosti", + "booking_redirect_request_title": "Žádost o přesměrování rezervace", + "select_team_member": "Vyberte člena týmu", + "going_away_title": "Odcházíte? Jednoduše označte svůj profilový odkaz jako nedostupný na určitou dobu.", + "redirect_team_enabled": "Poskytněte odkaz na člena týmu, když jste mimo kancelář", + "redirect_team_disabled": "Poskytněte odkaz na člena týmu, když jste mimo kancelář (vyžaduje týmový plán)", + "out_of_office_unavailable_list": "Seznam nedostupnosti mimo kancelář", + "success_deleted_entry_out_of_office": "Položka byla úspěšně smazána", + "temporarily_out_of_office": "Dočasně mimo kancelář?", + "add_a_redirect": "Přidat přesměrování", + "create_entry": "Vytvořit položku", + "time_range": "Časový rozsah", + "automatically_add_all_team_members": "Přidat všechny členy týmu, včetně budoucích členů", + "redirect_to": "Přesměrovat na", + "having_trouble_finding_time": "Máte potíže s nalezením času?", "show_more": "Zobrazit více", + "forward_params_redirect": "Předat parametry jako ?email=...&name=... a další", + "assignment_description": "Naplánujte schůzky, když jsou všichni k dispozici, nebo rotujte mezi členy týmu", + "lowest": "nejnižší", + "low": "nízká", + "medium": "střední", + "high": "vysoká", + "Highest": "nejvyšší", + "send_booker_to": "Odeslat rezervujícího na", + "set_priority": "Nastavit prioritu", + "set_weight": "Nastavit váhu", + "enable_weights": "Povolit váhy", + "priority_for_user": "Priorita pro {{userName}}", + "weights_description": "Váhy určují, jak jsou schůzky rozdělovány mezi hostitele. <1>Více informací", + "weight_for_user": "Váha pro {{userName}}", + "change_priority": "změnit prioritu", + "field_identifiers_as_variables": "Použijte identifikátory polí jako proměnné pro vlastní přesměrování události", + "field_identifiers_as_variables_with_example": "Použijte identifikátory polí jako proměnné pro vlastní přesměrování události (např. {{variable}})", + "account_already_linked": "Účet je již propojen", "send_email": "Odeslat e-mail", + "mark_as_no_show": "Označit jako nepřítomný", + "unmark_as_no_show": "Odznačit nepřítomnost", + "account_unlinked_success": "Účet byl úspěšně odpojen", + "account_unlinked_error": "Při odpojování účtu došlo k chybě", + "travel_schedule": "Cestovní plán", + "travel_schedule_description": "Naplánujte si cestu předem, abyste si udrželi stávající rozvrh v jiném časovém pásmu a zabránili rezervacím o půlnoci.", + "schedule_timezone_change": "Naplánovat změnu časového pásma", + "date": "Datum", + "overlaps_with_existing_schedule": "Toto se překrývá s existujícím rozvrhem. Vyberte prosím jiné datum.", + "org_admin_no_slots|subject": "Nebyly nalezeny žádné dostupné termíny pro {{name}}", + "org_admin_no_slots|heading": "Nebyly nalezeny žádné dostupné termíny pro {{name}}", + "org_admin_no_slots|content": "Dobrý den, administrátoři organizace,

Upozorňujeme, že {{username}} neměl žádné dostupné termíny, když uživatel navštívil {{username}}/{{slug}}

Existuje několik důvodů, proč se to může stát:
Uživatel nemá připojené žádné kalendáře
Jejich rozvrhy připojené k této události nejsou povoleny

Doporučujeme zkontrolovat jejich dostupnost, aby se tento problém vyřešil.", + "org_admin_no_slots|cta": "Otevřít dostupnost uživatelů", + "organization_no_slots_notification_switch_title": "Dostávejte upozornění, když váš tým nemá žádnou dostupnost", + "organization_no_slots_notification_switch_description": "Administrátoři budou dostávat e-mailová upozornění, když se uživatel pokusí rezervovat člena týmu a zjistí, že není žádná dostupnost. Tento e-mail spustíme po dvou výskytech a připomeneme vám to každých 7 dní na uživatele.", + "email_team_invite|subject|added_to_org": "{{user}} vás přidal(a) do organizace {{team}} na {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} vás pozval(a) k připojení do organizace {{team}} na {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} vás přidal(a) do týmu {{team}} v organizaci {{parentTeamName}} na {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} vás pozval(a) k připojení do týmu {{team}} v organizaci {{parentTeamName}} na {{appName}}", "email_team_invite|subject|invited_to_regular_team": "{{user}} vás pozval, abyste se připojili k týmu {{team}} na {{appName}}", + "email_team_invite|heading|added_to_org": "Byli jste přidáni do organizace {{appName}}", + "email_team_invite|heading|invited_to_org": "Byli jste pozváni do organizace {{appName}}", + "email_team_invite|heading|added_to_subteam": "Byli jste přidáni do týmu v organizaci {{parentTeamName}}", + "email_team_invite|heading|invited_to_subteam": "Byli jste pozváni do týmu v organizaci {{parentTeamName}}", "email_team_invite|heading|invited_to_regular_team": "Byli jste pozváni do týmu {{appName}}", + "email_team_invite|content|added_to_org": "{{invitedBy}} vás přidal(a) do organizace {{teamName}}.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} vás pozval(a) k připojení do organizace {{teamName}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} vás přidal(a) do týmu {{teamName}} v jejich organizaci {{parentTeamName}}. {{appName}} je plánovač, který vám a vašemu týmu umožňuje plánovat schůzky bez zbytečných e-mailů.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} vás pozval(a) k připojení do týmu {{teamName}} v jejich organizaci {{parentTeamName}}. {{appName}} je plánovač, který vám a vašemu týmu umožňuje plánovat schůzky bez zbytečných e-mailů.", "email_team_invite|content|invited_to_regular_team": "Uživatel {{invitedBy}} vás pozval, abyste se připojili k jeho týmu „{{teamName}}“ v aplikaci {{appName}}. {{appName}} je plánovač událostí, který vám a vašemu týmu umožňuje plánovat schůzky bez e-mailového pingpongu.", + "email|existing_user_added_link_will_change": "Po přijetí pozvánky se váš odkaz změní na doménu vaší organizace, ale nebojte se, všechny předchozí odkazy budou stále fungovat a přesměrovávat správně.

Upozornění: Všechny vaše osobní typy událostí budou přesunuty do organizace {{teamName}}, což může zahrnovat i potenciální osobní odkaz.

Pro osobní události doporučujeme vytvořit nový účet s osobní e-mailovou adresou.", + "email|existing_user_added_link_changed": "Váš odkaz byl změněn z {prevLinkWithoutProtocol} na {newLinkWithoutProtocol}, ale nebojte se, všechny předchozí odkazy stále fungují a přesměrovávají správně.

Upozornění: Všechny vaše osobní typy událostí byly přesunuty do organizace {teamName}, což může zahrnovat i potenciální osobní odkaz.

Přihlaste se a ujistěte se, že na svém novém organizačním účtu nemáte žádné soukromé události.

Pro osobní události doporučujeme vytvořit nový účet s osobní e-mailovou adresou.

Užijte si svůj nový čistý odkaz: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Vaše organizace byla vytvořena", + "your_current_plan": "Váš aktuální plán", + "organization_price_per_user_month": "$37 za uživatele měsíčně (minimálně 30 míst)", + "privacy_organization_description": "Spravujte nastavení soukromí pro vaši organizaci", "privacy": "Ochrana soukromí", - "signing_up_terms": "Pokračováním souhlasíte s našimi <0>Podmínkami a <1>Zásadami ochrany osobních údajů.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "hod", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} hod", - "travel_schedule": "Cestovní plán", - "travel_schedule_description": "Naplánujte svou cestu dopředu, abyste zachovali svůj stávající plán v jiné časové zóně a zabránili rezervaci v půlnoci.", - "schedule_timezone_change": "Změna časové zóny v plánu", - "schedule_tz_without_end_date": "Plán časové zóny bez koncového data", - "ooo_reasons_unspecified": "Nespecifikováno", + "team_will_be_under_org": "Nové týmy budou pod vaší organizací", + "add_group_name": "Přidat název skupiny", + "group_name": "Název skupiny", + "routers": "Routery", + "primary": "Primární", + "make_primary": "Nastavit jako primární", + "add_email": "Přidat e-mail", + "add_emails": "Přidat e-maily", + "add_email_description": "Přidejte e-mailovou adresu, která nahradí vaši primární nebo bude použita jako alternativní e-mail pro vaše typy událostí.", + "confirm_email": "Potvrďte svůj e-mail", + "scheduler_first_name": "Křestní jméno osoby, která rezervuje", + "scheduler_last_name": "Příjmení osoby, která rezervuje", + "scheduler_name": "Jméno plánovače", + "organizer_first_name": "Vaše křestní jméno", + "confirm_email_description": "Poslali jsme e-mail na {{email}}. Klikněte na odkaz v e-mailu, abyste tuto adresu ověřili.", + "send_event_details_to": "Poslat podrobnosti o události na", + "schedule_tz_without_end_date": "Naplánovat časové pásmo bez koncového data", + "select_members": "Vyberte členy", + "lock_event_types_modal_header": "Co bychom měli udělat s existujícími typy událostí vašich členů?", + "org_delete_event_types_org_admin": "Všechny individuální typy událostí vašich členů (kromě spravovaných) budou trvale smazány. Nebudou moci vytvářet nové.", + "org_hide_event_types_org_admin": "Individuální typy událostí vašich členů (kromě spravovaných) budou skryty z profilů, ale odkazy zůstanou aktivní. Nebudou moci vytvářet nové.", + "hide_org_eventtypes": "Skrýt individuální typy událostí", + "delete_org_eventtypes": "Smazat individuální typy událostí", + "lock_org_users_eventtypes": "Zamknout vytváření individuálních typů událostí", + "lock_org_users_eventtypes_description": "Zabránit členům ve vytváření vlastních typů událostí.", + "add_to_event_type": "Přidat k typu události", + "create_account_password": "Vytvořit heslo k účtu", + "error_creating_account_password": "Nepodařilo se vytvořit heslo k účtu", + "cannot_create_account_password_cal_provider": "Nelze vytvořit heslo k účtu pro cal účty", + "cannot_create_account_password_already_existing": "Nelze vytvořit heslo k účtu pro již vytvořené účty", + "create_account_password_hint": "Nemáte heslo k účtu, vytvořte ho navigací na Zabezpečení -> Heslo. Nelze se odpojit, dokud není vytvořeno heslo k účtu.", + "disconnect_account": "Odpojit připojený účet", + "disconnect_account_hint": "Odpojení připojeného účtu změní způsob, jakým se přihlašujete. Budete se moci přihlásit pouze pomocí e-mailu a hesla.", + "cookie_consent_checkbox": "Souhlasím s našimi zásadami ochrany osobních údajů a používáním cookies", + "make_a_call": "Zavolat", + "skip_rr_assignment_label": "Přeskočit round robin přiřazení, pokud kontakt existuje v Salesforce", + "skip_rr_description": "URL musí obsahovat e-mail kontaktu jako parametr, např. ?email=contactEmail", + "select_account_header": "Vybrat účet", + "select_account_description": "Nainstalujte {{appName}} na svůj osobní účet nebo na týmový účet.", + "select_event_types_header": "Vybrat typy událostí", + "select_event_types_description": "Na který typ události chcete nainstalovat {{appName}}?", + "configure_app_header": "Nastavit {{appName}}", + "configure_app_description": "Dokončete nastavení aplikace. Tyto nastavení můžete později změnit.", + "already_installed": "již nainstalováno", + "ooo_reasons_unspecified": "Neurčeno", "ooo_reasons_vacation": "Dovolená", "ooo_reasons_travel": "Cestování", "ooo_reasons_sick_leave": "Nemocenská", "ooo_reasons_public_holiday": "Státní svátek", - "ooo_forwarding_to": "Předávání na {{username}}", - "ooo_not_forwarding": "Žádné předávání", + "ooo_forwarding_to": "Přesměrování na {{username}}", + "ooo_not_forwarding": "Bez přesměrování", "ooo_empty_title": "Vytvořit OOO", - "ooo_empty_description": "Komunikujte se svými rezervátory, když nejste k dispozici pro rezervace. Mohou vás stále rezervovat při vašem návratu nebo je můžete předat členovi týmu.", + "ooo_empty_description": "Informujte své rezervující, když nejste k dispozici pro rezervace. Mohou si vás rezervovat po vašem návratu nebo je můžete přesměrovat na člena týmu.", "ooo_user_is_ooo": "{{displayName}} je OOO", - "ooo_slots_returning": "<0>{{displayName}} může mít své schůzky, když je pryč.", + "ooo_slots_returning": "<0>{{displayName}} může přijímat schůzky, když je pryč.", "ooo_slots_book_with": "Rezervovat {{displayName}}", "ooo_create_entry_modal": "Jít mimo kancelář", - "ooo_select_reason": "Vybrat důvod", - "enterprise_license_locally": "Tuto funkci můžete testovat lokálně, ale ne ve výrobním prostředí.", - "enterprise_license_sales": "Chcete-li upgradovat na podnikovou verzi, obraťte se na náš obchodní tým. Pokud již máte licenční klíč, kontaktujte support@cal.com pro pomoc.", - "apply_to_all_event_types": "Aplikovat na všechny, včetně budoucích typů událostí", + "ooo_select_reason": "Vyberte důvod", + "create_an_out_of_office": "Jít mimo kancelář", + "submit_feedback": "Odeslat zpětnou vazbu", + "host_no_show": "Váš hostitel se nedostavil", + "no_show_description": "Můžete si s nimi naplánovat další schůzku", + "how_can_we_improve": "Jak můžeme zlepšit naše služby?", + "most_liked": "Co se vám nejvíce líbilo?", + "review": "Recenze", + "reviewed": "Recenzováno", + "unreviewed": "Nezrecenzováno", + "rating_url_info": "URL pro formulář zpětné vazby hodnocení", + "no_show_url_info": "URL pro zpětnou vazbu o neúčasti", + "no_support_needed": "Nepotřebujete podporu?", + "hide_support": "Skrýt podporu", + "event_ratings": "Průměrné hodnocení", + "event_no_show": "Hostitel se nedostavil", + "recent_ratings": "Nedávná hodnocení", + "no_ratings": "Žádná hodnocení nebyla odeslána", + "no_ratings_description": "Přidejte workflow s 'Hodnocením' pro sběr hodnocení po schůzkách", + "most_no_show_host": "Členové s nejčastější neúčastí", + "highest_rated_members": "Členové s nejvyšším hodnocením schůzek", + "lowest_rated_members": "Členové s nejnižším hodnocením schůzek", + "csat_score": "CSAT skóre", + "lockedSMS": "Uzamčené SMS", + "leave_without_assigning_anyone": "Odejít bez přiřazení někoho?", + "leave_without_adding_attendees": "Opravdu chcete opustit tuto událost bez přidání účastníků?", + "no_availability_shown_to_bookers": "Pokud pro tuto událost nikoho nepřiřadíte, nebude pro rezervující k dispozici žádná dostupnost.", + "go_back_and_assign": "Vrátit se a přiřadit", + "leave_without_assigning": "Odejít bez přiřazení", + "signing_up_terms": "Pokračováním souhlasíte s našimi <0>Podmínkami a <1>Zásadami ochrany osobních údajů.", + "always_show_x_days": "Vždy dostupné {{x}} dní", + "unable_to_subscribe_to_the_platform": "Při pokusu o přihlášení k plánu platformy došlo k chybě, zkuste to prosím znovu později", + "updating_oauth_client_error": "Při aktualizaci OAuth klienta došlo k chybě, zkuste to prosím znovu později", + "creating_oauth_client_error": "Při vytváření OAuth klienta došlo k chybě, zkuste to prosím znovu později", + "event_type_color": "Barva typu události", + "event_type_color_description": "Toto se používá pouze pro rozlišení typu události a rezervace v aplikaci. Není to zobrazeno rezervujícím.", + "mark_as_no_show_title": "Označit jako nepřítomný", + "x_marked_as_no_show": "{{x}} označen jako nepřítomný", + "x_unmarked_as_no_show": "{{x}} odznačen jako nepřítomný", + "team_select_info": "spouští se pro všechny typy týmových událostí a osobní typy událostí všech členů týmu", + "no_show_updated": "Stav nepřítomnosti aktualizován pro účastníky", + "email_copied": "E-mail zkopírován", + "USER_PENDING_MEMBER_OF_THE_ORG": "Uživatel je čekajícím členem organizace", + "USER_ALREADY_INVITED_OR_MEMBER": "Uživatel je již pozván nebo je členem", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "Uživatel je členem organizace, která není součástí tohoto týmu.", + "booking_reassigned": "Rezervace byla přeřazena", + "reassign": "Přeřadit", + "reassign_to_another_rr_host": "Přeřadit rezervaci jinému dostupnému round robin hostiteli", + "assign_team_member": "Přiřadit člena týmu", + "override_team_member_to_assign": "Přepsat, kterého člena týmu chcete přiřadit.", + "no_available_hosts": "Žádní dostupní hostitelé", + "reassign_round_robin_host": "Přeřadit round robin hostitele", + "skip_writing_to_calendar": "Nezapisovat do ICS feedu", + "rescheduling_not_possible": "Přeplánování není možné, protože událost vypršela", + "event_expired": "Tato událost vypršela", + "skip_contact_creation": "Přeskočit vytváření kontaktů, pokud neexistují v {{appName}}", + "skip_writing_to_calendar_note": "Pokud je váš ICS odkaz pouze pro čtení (např. Proton Calendar), zaškrtněte výše uvedené políčko, abyste se vyhnuli chybám. Budete také muset ručně aktualizovat svůj kalendář pro změny.", + "attributes": "Atributy", + "new_attribute": "Nový atribut", + "add_attributes": "Přidat atributy", + "add_attributes_description": "Přidejte atributy členům svého týmu", + "new_option": "Nová možnost", + "update_profile": "Aktualizovat člena", + "attribute_updated_successfully": "Atribut úspěšně aktualizován", + "attributes_edited_successfully": "Atributy úspěšně upraveny", + "attribute_meta_description": "Spravujte atributy pro členy svého týmu", + "attributes_edit_description": "Upravte atributy pro členy svého týmu", + "back_to_attributes": "Zpět k atributům", + "delete_attribute": "Opravdu chcete tuto možnost smazat?", + "delete_attribute_description": "Tato možnost je přiřazena k {{numberOfUsers}} členům. Smazáním bude odstraněna z jejich profilu.", + "disable_all_emails_to_attendees": "Zakázat standardní e-maily účastníkům týkající se tohoto typu události", + "disable_all_emails_description": "Zakáže standardní e-mailovou komunikaci týkající se tohoto typu události, včetně potvrzení rezervace, připomínek a zrušení.", + "disable_all_emails_to_hosts": "Zakázat standardní e-maily hostitelům týkající se tohoto typu události", + "type_confirm_to_continue": "Pro pokračování napište potvrdit", + "disable_email": "Zakázat e-mail", + "grant_admin_api": "Udělit přístup k Admin API", + "revoke_admin_api": "Odebrat přístup k Admin API", + "apple_connect_atom_label": "Připojit Apple Kalendář", + "apple_connect_atom_already_connected_label": "Připojený Apple Kalendář", + "apple_connect_atom_loading_label": "Kontrola Apple Kalendáře", + "google_connect_atom_label": "Připojit Google Kalendář", + "google_connect_atom_already_connected_label": "Připojený Google Kalendář", + "google_connect_atom_loading_label": "Kontrola Google Kalendáře", + "outlook_connect_atom_label": "Připojit Outlook Kalendář", + "outlook_connect_atom_already_connected_label": "Připojený Outlook Kalendář", + "outlook_connect_atom_loading_label": "Kontrola kalendáře Outlook", + "booking_question_response_variables": "Proměnné odpovědí na otázky při rezervaci", + "managed_by_teamAdmins": "Spravováno {{teamAdmins}}", + "number_of_options": "{{count}} možností", + "reschedule_with_same_round_robin_host_title": "Přeplánovat se stejným hostitelem Round-Robin", + "reschedule_with_same_round_robin_host_description": "Přeplánované události budou přiřazeny stejnému hostiteli jako původně", + "disable_input_if_prefilled": "Zakázat vstup, pokud je identifikátor URL předvyplněn", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Přidejte své nové řetězce nahoru ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/de/common.json b/apps/web/public/static/locales/de/common.json index aff3068ba12180..63afe666cad97d 100644 --- a/apps/web/public/static/locales/de/common.json +++ b/apps/web/public/static/locales/de/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} Sekunden", "upgrade_now": "Jetzt upgraden", "accept_invitation": "Einladung annehmen", + "max_characters": "Max. Zeichen", + "min_characters": "Min. Zeichen", "calcom_explained": "{{appName}} stellt die Planungsinfrastruktur für absolut jeden bereit.", "calcom_explained_new_user": "Beenden Sie die Einrichtung Ihres {{appName}} -Kontos! Sie sind nur ein paar Schritte von der Lösung aller Probleme in der Zeitplanung entfernt.", "have_any_questions": "Haben Sie Fragen? Wir sind hier um Ihnen zu helfen.", @@ -45,6 +47,7 @@ "no_options_available": "Keine Optionen verfügbar", "cancellation_reason": "Grund für Ihre Absage (optional)", "cancellation_reason_placeholder": "Warum sagen Sie ab? (optional)", + "rejection_reason_placeholder": "Warum lehnen Sie ab?", "rejection_reason": "Grund für die Ablehnung", "rejection_reason_title": "Die Buchungsanfrage ablehnen?", "rejection_reason_description": "Sind Sie sicher, dass Sie die Buchung ablehnen möchten? Wir werden die Person, die versucht hat zu buchen, informieren. Sie können einen Grund angeben.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "Zahlung für den Termin noch offen", "dark_theme_contrast_error": "Die Farbe des dunklen Designs hat die Kontrastprüfung nicht bestanden. Wir empfehlen Ihnen, diese Farbe zu ändern, damit Ihre Schaltflächen sichtbarer sind.", "light_theme_contrast_error": "Die Farbe des hellen Designs hat die Kontrastprüfung nicht bestanden. Wir empfehlen Ihnen, diese Farbe zu ändern, damit Ihre Schaltflächen sichtbarer sind.", + "event_type_color_light_theme_contrast_error": "Die Farbe für das helle Design besteht den Kontrasttest nicht. Wir empfehlen, diese Farbe zu ändern, damit Ihre Ereignistypen besser sichtbar sind.", + "event_type_color_dark_theme_contrast_error": "Die Farbe für das dunkle Design besteht den Kontrasttest nicht. Wir empfehlen, diese Farbe zu ändern, damit Ihre Ereignistypen besser sichtbar sind.", "payment_not_created_error": "Zahlung konnte nicht erstellt werden", "couldnt_charge_card_error": "Karte konnte nicht für die Zahlung belastet werden", "no_available_users_found_error": "Keine verfügbaren Benutzer gefunden. Können Sie es mit einem anderen Zeitfenster versuchen?", @@ -102,6 +107,9 @@ "new_event_request": "Neue Termin-Anfrage: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Anfrage bestätigen oder ablehnen", "check_bookings_page_to_confirm_or_reject": "Überprüfen Sie Ihre Buchungsseite, um die Buchung zu bestätigen oder abzulehnen.", + "check_in_assistant": "Check-in-Assistent", + "check_in_assistant_description": "Führt einen ausgehenden Anruf durch, um zu prüfen, ob der geplante Termin funktioniert oder ob Sie ihn verschieben möchten.", + "create_your_own_prompt": "Erstellen Sie Ihre eigene Aufforderung und verwenden Sie sie für einen ausgehenden Anruf.", "event_awaiting_approval": "Ein neuer Termin wartet auf Ihre Bestätigung", "event_awaiting_approval_recurring": "Ein wiederkehrender Termin wartet auf Ihre Bestätigung", "someone_requested_an_event": "Jemand hat eine Terminanfrage gestellt.", @@ -463,6 +471,7 @@ "booking_cancelled": "Termin abgesagt", "booking_rescheduled": "Termin verlegt", "recording_ready": "Download-Link der Aufnahme ist nun verfügbar", + "recording_transcription_generated": "Transkript erstellt", "booking_created": "Termin erstellt", "booking_rejected": "Termin abgelehnt", "booking_requested": "Buchung angefragt", @@ -470,6 +479,7 @@ "meeting_ended": "Meeting beendet", "form_submitted": "Formular gesendet", "booking_paid": "Buchung bezahlt", + "booking_no_show_updated": "Buchung als Nichterscheinen aktualisiert", "event_triggers": "Event-Auslöser", "subscriber_url": "Subscriber-URL", "create_new_webhook": "Einen neuen Webhook erstellen", @@ -703,6 +713,7 @@ "default_duration_no_options": "Bitte wählen Sie zuerst die verfügbaren Laufzeiten aus", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minuten", "use_cal_ai_to_make_call_description": "Benutzen Sie Cal.ai, um eine KI-betriebene Nummer zu erhalten oder Anrufe an Gäste zu tätigen.", "round_robin": "Round Robin", @@ -768,6 +779,8 @@ "brand_color": "Markenfarbe", "light_brand_color": "Markenfarbe (Helles Theme)", "dark_brand_color": "Markenfarbe (Dunkles Theme)", + "light_event_type_color": "Ereignistyp-Farbe (Helles Design)", + "dark_event_type_color": "Ereignistyp-Farbe (Dunkles Design)", "file_not_named": "Datei heißt nicht [idOrSlug]/[user]", "create_team": "Team anlegen", "name": "Name", @@ -1042,6 +1055,7 @@ "seats_nearly_full": "Plätze fast voll", "seats_half_full": "Plätze werden schnell belegt", "number_of_seats": "Anzahl der Plätze pro Termin", + "set_instant_meeting_expiry_time_offset_description": "Beitrittszeitfenster festlegen (Sekunden): Der Zeitraum in Sekunden, in dem der Gastgeber beitreten und das Meeting starten kann. Nach dieser Zeit läuft die Beitritts-URL ab.", "enter_number_of_seats": "Anzahl der Plätze eingeben", "you_can_manage_your_schedules": "Sie können Ihren Verfügbarkeitsplan bei Ihren Verfügbarkeiten ändern.", "booking_full": "Keine weiteren Plätze verfügbar", @@ -1105,7 +1119,9 @@ "impersonating_user_warning": "Imitiere den Account {{user}}.", "impersonating_stop_instructions": "Klicken Sie hier, um zu stoppen", "event_location_changed": "Aktualisiert - Ihr Termin hat den Standort geändert", + "new_guests_added": "Hinzugefügt - Neue Gäste zu Ihrem Ereignis hinzugefügt", "location_changed_event_type_subject": "Ort geändert: {{eventType}} mit {{name}} am {{date}}", + "guests_added_event_type_subject": "Gäste hinzugefügt: {{eventType}} mit {{name}} am {{date}}", "current_location": "Aktueller Ort", "new_location": "Neuer Ort", "session": "Sitzung", @@ -1117,7 +1133,11 @@ "set_location": "Ort festlegen", "update_location": "Ort aktualisieren", "location_updated": "Ort aktualisiert", + "guests_added": "Gäste hinzugefügt", + "unable_to_add_guests": "Gäste konnten nicht hinzugefügt werden", "email_validation_error": "Das sieht nicht wie eine E-Mail-Adresse aus", + "emails_must_be_unique_valid": "E-Mail-Adressen müssen eindeutig und gültig sein", + "url_validation_error": "Das sieht nicht wie eine gültige URL aus", "place_where_cal_widget_appear": "Kopieren Sie diesen Code an die Stelle in Ihrem HTML, an der Ihr {{appName}}-Widget erscheinen soll.", "create_update_react_component": "Erstellen oder Aktualisieren einer existierenden Reaktionskomponente wie unten gezeigt.", "copy_code": "Code kopieren", @@ -1134,6 +1154,8 @@ "make_setup_instructions": "<0>Gehen Sie zu: <1><0>Make-Einladungs-Linkund installieren Sie die Cal.com-App.<1> Loggen Sie sich in Ihr Make-Konto ein und erstellen Sie ein neues Szenario.<2>Wählen Sie Cal.com als ihre Auslöser-App aus. Wählen Sie auch ein Auslöserereignis aus.<3>Wählen Sie ihr Konto aus und geben Sie dann Ihren eindeutigen API-Key ein.<4>Probierne Sie den Auslöser aus.<5>Und fertig!", "install_zapier_app": "Bitte installieren Sie zuerst die Zapier-App im App Store.", "install_make_app": "Bitte installieren Sie zuerst die Make-App im App Store.", + "app_not_installed": "App nicht installiert", + "visit_our_app_store": "Entschuldigung, diese App ist nicht auf Ihrem Konto installiert. Bitte besuchen Sie unseren App-Store, um diese und andere großartige Apps zu entdecken und zu erkunden.", "connect_apple_server": "Mit Apple-Server verbinden", "calendar_url": "Kalender-URL", "apple_server_generate_password": "Generieren Sie ein App-spezifisches Passwort für {{appName}} unter", @@ -1208,6 +1230,8 @@ "day_timeUnit": "Tage", "hour_timeUnit": "Stunden", "minute_timeUnit": "Minuten", + "minute_short": "Min", + "hour_short": "Std", "new_workflow_heading": "Erstellen Sie Ihren ersten Workflow", "new_workflow_description": "Workflows ermöglichen Ihnen das automatisierte Versenden von Erinnerungen und Benachrichtigungen.", "active_on": "Aktiv am", @@ -1235,6 +1259,8 @@ "may_require_confirmation": "Kann Bestätigung erfordern", "nr_event_type_one": "{{count}} Ereignistyp", "nr_event_type_other": "{{count}} Ereignistypen", + "count_team_one": "{{count}} Team", + "count_team_other": "{{count}} Teams", "add_action": "Aktion hinzufügen", "set_whereby_link": "Whereby Link festlegen", "invalid_whereby_link": "Bitte geben Sie einen gültigen Whereby Link ein", @@ -1259,8 +1285,10 @@ "reminder_email": "Erinnerung: {{eventType}} mit {{name}} bei {{date}}", "not_triggering_existing_bookings": "Wird nicht für bereits bestehende Buchungen ausgelöst, da der Benutzer bei der Buchung nach einer Telefonnummer gefragt wird.", "minute_one": "{{count}} Minute", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} Minuten", "hour_one": "{{count}} Stunde", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} Stunden", "invalid_input": "Ungültige Eingabe", "broken_video_action": "Wir konnten den <1>{{location}} Meeting-Link nicht zu Ihrem geplanten Ereignis hinzufügen. Kontaktieren Sie Ihre Eingeladenen oder aktualisieren Sie Ihr Kalenderereignis, um die Einzelheiten hinzuzufügen. Sie können entweder <3> Ihren Standort im Ereignistyp ändern oder <5>die App entfernen und erneut hinzufügen.", @@ -1272,7 +1300,12 @@ "problem_updating_calendar": "Es gab ein Problem beim Aktualisieren Ihres Kalenders", "active_on_event_types_one": "Aktiv bei {{count}} Ereignistyp", "active_on_event_types_other": "Aktiv bei {{count}} Termintypen", + "active_on_teams_one": "Aktiv in {{count}} Team", + "active_on_teams_other": "Aktiv in {{count}} Teams", + "active_on_all_event_types": "Aktiv für alle Ereignistypen", + "active_on_all_teams": "Aktiv in allen Teams", "no_active_event_types": "Keine aktiven Termintypen", + "no_active_teams": "Keine aktiven Teams", "new_seat_subject": "Neuer Teilnehmer {{name}} beim {{eventType}} am {{date}}", "new_seat_title": "Jemand hat sich zu einem Ereignis hinzugefügt", "variable": "Variable", @@ -1338,6 +1371,9 @@ "2fa_required": "Zwei-Faktor-Authentifizierung erforderlich", "incorrect_2fa": "Falscher Zwei-Faktor-Authentifizierungscode", "which_event_type_apply": "Auf welchen Termintyp wird dies angewandt?", + "apply_to_all_event_types": "Auf alle anwenden, einschließlich zukünftiger Ereignistypen", + "apply_to_all_teams": "Auf alle Team- und Benutzer-Ereignistypen anwenden", + "which_team_apply": "Für welches Team soll dies gelten?", "no_workflows_description": "Workflows ermöglichen die einfache Automatisierung des Versands von Benachrichtigungen und Erinnerungen, so dass Sie Prozesse rund um Ihre Termine erstellen können.", "timeformat_profile_hint": "Dies ist eine interne Einstellung, die keinen Einfluss darauf hat, wie die Zeiten auf den öffentlichen Buchungsseiten für Sie oder jemanden, der Sie buchen möchte, angezeigt werden.", "create_workflow": "Einen Workflow erstellen", @@ -1423,6 +1459,7 @@ "add_dynamic_variables": "Dynamische Textvariablen hinzufügen", "event_name_info": "Name des Ereignistyps", "event_date_info": "Das Datum der Veranstaltung", + "event_duration_info": "Die Dauer des Ereignisses", "event_time_info": "Die Startzeit des Termins", "event_type_not_found": "Ereignistyp nicht gefunden", "location_variable": "Ort", @@ -1477,6 +1514,7 @@ "team_disable_cal_branding_description": "Entfernt alle {{appName}}-bezogenen Markenzeichen, z. B. „Powered by {{appName}}“", "invited_by_team": "{{teamName}} hat Sie eingeladen, dem Team als {{role}} beizutreten", "token_invalid_expired": "Token ist entweder ungültig oder abgelaufen.", + "view_booking": "Buchung anzeigen", "exchange_add": "Mit Microsoft Exchange verbinden", "exchange_authentication": "Authentifizierungsmethode", "exchange_authentication_standard": "Basisauthentifizierung", @@ -1541,6 +1579,8 @@ "report_app": "App melden", "limit_booking_frequency": "Buchungsfrequenz begrenzen", "limit_booking_frequency_description": "Begrenzen, wie oft dieses Ereignis gebucht werden kann", + "only_show_first_available_slot": "Nur den ersten verfügbaren Zeitslot pro Tag anzeigen", + "only_show_first_available_slot_description": "Dies beschränkt Ihre Verfügbarkeit für diesen Ereignistyp auf einen Zeitslot pro Tag, der zum frühestmöglichen Zeitpunkt geplant wird.", "limit_total_booking_duration": "Gesamtbuchungsdauer beschränken", "limit_total_booking_duration_description": "Begrenzt die Gesamtanzahl, die dieser Termin gebucht werden kann", "add_limit": "Begrenzung hinzufügen", @@ -1580,6 +1620,7 @@ "how_long_after": "Wie lange nach Ende des Termins?", "no_available_slots": "Keine verfügbaren Plätze", "time_available": "Zeit verfügbar", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Können Sie die richtige Konferenz-App nicht finden? Besuchen Sie unseren <1>App Store.", "install_new_calendar_app": "Neue Kalender-App installieren", "make_phone_number_required": "Telefonnummer für die Buchung des Termins erforderlich machen", "new_event_type_availability": "{{eventTypeTitle}} | Verfügbarkeit", @@ -1744,6 +1785,7 @@ "new_attendee": "Neuer Teilnehmer", "awaiting_approval": "Wartet auf Genehmigung", "requires_google_calendar": "Diese App erfordert eine Verbindung mit Google Calendar", + "event_type_requires_google_calendar": "Für diesen Ereignistyp muss 'Zum Kalender hinzufügen' ein Google-Kalender sein, damit Meet funktioniert. Verbinden Sie ihn <1>hier.", "connected_google_calendar": "Sie haben ein Google Calendar-Konto verbunden.", "using_meet_requires_calendar": "Die Nutzung von Google Meet erfordert einen verbundenen Google Calendar", "continue_to_install_google_calendar": "Installation von Google Calender fortsetzen", @@ -2331,7 +2373,11 @@ "Highest": "Höchste", "send_booker_to": "Bucher senden an", "set_priority": "Priorität festlegen", + "set_weight": "Gewichtung festlegen", + "enable_weights": "Gewichtungen aktivieren", "priority_for_user": "Priorität von {{userName}}", + "weights_description": "Gewichtungen bestimmen, wie Meetings unter den Gastgebern verteilt werden. <1>Mehr erfahren", + "weight_for_user": "Gewichtung für {{userName}}", "change_priority": "Priorität ändern", "field_identifiers_as_variables": "Verwenden Sie Feldbezeichner als Variablen für Ihre benutzerdefinierte Ereignisumleitung", "field_identifiers_as_variables_with_example": "Verwenden Sie Feldbezeichner als Variablen für Ihre benutzerdefinierte Ereignisumleitung (z. B. {{variable}})", @@ -2381,10 +2427,12 @@ "primary": "Primär", "make_primary": "Zur Primäradresse machen", "add_email": "E-Mail-Adresse hinzufügen", + "add_emails": "E-Mails hinzufügen", "add_email_description": "Fügen Sie eine E-Mail-Adresse hinzu, um die Ihre primäre E-Mail-Adresse ersetzt, oder als alternative E-Mail in Ihren Ereignistypen verwendet wird.", "confirm_email": "Bestätigen Sie Ihre E-Mail-Adresse", "scheduler_first_name": "Der Vorname der buchenden Person", "scheduler_last_name": "Der Nachname der buchenden Person", + "scheduler_name": "Name des Planers", "organizer_first_name": "Ihr Vorname", "confirm_email_description": "Wir haben eine E-Mail an {{email}} gesendet. Klicken Sie auf den Link in der E-Mail, um diese Adresse zu bestätigen.", "send_event_details_to": "Termindetails senden an", @@ -2453,29 +2501,73 @@ "lowest_rated_members": "Mitglieder mit den am niedrigsten bewerteten Meetings", "csat_score": "CSAT-Bewertung", "lockedSMS": "Gesperrte SMS", - "signing_up_terms": "Indem Sie fortfahren, stimmen Sie unseren <0>Nutzungsbedingungen und unserer <1>Datenschutzerklärung zu.", "leave_without_assigning_anyone": "Verlassen, ohne jemanden zuzuordnen?", "leave_without_adding_attendees": "Sind Sie sicher, dass Sie diesen Termin verlassen möchten, ohne Teilnehmer hinzuzufügen?", "no_availability_shown_to_bookers": "Wenn Sie niemanden für diesen Termin zuweisen, wird den Buchenden keine Verfügbarkeit angezeigt.", "go_back_and_assign": "Zurück und zuweisen", "leave_without_assigning": "Ohne Zuordnung verlassen", + "signing_up_terms": "Indem Sie fortfahren, stimmen Sie unseren <0>Nutzungsbedingungen und unserer <1>Datenschutzerklärung zu.", "always_show_x_days": "Immer für {{x}} Tage verfügbar", "unable_to_subscribe_to_the_platform": "Beim Abonnieren des Platform-Plans ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut", "updating_oauth_client_error": "Beim Aktualisieren des OAuth-Clients ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut", "creating_oauth_client_error": "Beim Erstellen des OAuth-Clients ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut", + "event_type_color": "Farbe des Ereignistyps", + "event_type_color_description": "Dies wird nur zur Unterscheidung von Ereignistypen und Buchungen innerhalb der App verwendet. Es wird den Buchenden nicht angezeigt.", "mark_as_no_show_title": "Als nicht erschienen markieren", "x_marked_as_no_show": "{{x}} als No-Show markiert", "x_unmarked_as_no_show": "No-Show-Markierung von {{x}} entfernt", + "team_select_info": "Auslöser für alle Team-Ereignistypen und persönliche Ereignistypen aller Teammitglieder", "no_show_updated": "No-Show-Status für Teilnehmer aktualisiert", "email_copied": "E-Mail kopiert", "USER_PENDING_MEMBER_OF_THE_ORG": "Benutzer ist ein ausstehendes Mitglied der Organisation", "USER_ALREADY_INVITED_OR_MEMBER": "Benutzer ist bereits ein Mitglied oder eingeladen", "USER_MEMBER_OF_OTHER_ORGANIZATION": "Benutzer ist Mitglied einer Organisation, zu der dieses Team nicht angehört.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "Min.", - "hour_short": "Std.", - "minute_one_short": "{{count}} Min.", - "hour_one_short": "{{count}} Std.", - "apply_to_all_event_types": "Gilt für alle, einschließlich zukünftiger Ereignistypen", + "booking_reassigned": "Buchung wurde neu zugewiesen", + "reassign": "Neu zuweisen", + "reassign_to_another_rr_host": "Buchung einem anderen verfügbaren Round-Robin-Gastgeber zuweisen", + "assign_team_member": "Teammitglied zuweisen", + "override_team_member_to_assign": "Überschreiben Sie, welches Teammitglied Sie zuweisen möchten.", + "no_available_hosts": "Keine verfügbaren Gastgeber", + "reassign_round_robin_host": "Round-Robin-Gastgeber neu zuweisen", + "skip_writing_to_calendar": "Nicht in den ICS-Feed schreiben", + "rescheduling_not_possible": "Eine Umbuchung ist nicht möglich, da das Ereignis abgelaufen ist", + "event_expired": "Dieses Ereignis ist abgelaufen", + "skip_contact_creation": "Kontakte nicht erstellen, wenn sie in {{appName}} nicht existieren", + "skip_writing_to_calendar_note": "Wenn Ihr ICS-Link schreibgeschützt ist (z.B. Proton Calendar), aktivieren Sie das obige Kontrollkästchen, um Fehler zu vermeiden. Sie müssen Ihren Kalender auch manuell aktualisieren, um Änderungen zu übernehmen.", + "attributes": "Attribute", + "new_attribute": "Neues Attribut", + "add_attributes": "Attribute hinzufügen", + "add_attributes_description": "Fügen Sie Ihren Teammitgliedern Attribute hinzu", + "new_option": "Neue Option", + "update_profile": "Mitglied aktualisieren", + "attribute_updated_successfully": "Attribut erfolgreich aktualisiert", + "attributes_edited_successfully": "Attribute erfolgreich bearbeitet", + "attribute_meta_description": "Verwalten Sie Attribute für Ihre Teammitglieder", + "attributes_edit_description": "Bearbeiten Sie Attribute für Ihre Teammitglieder", + "back_to_attributes": "Zurück zu den Attributen", + "delete_attribute": "Sind Sie sicher, dass Sie diese Option löschen möchten?", + "delete_attribute_description": "Diese Option ist {{numberOfUsers}} Mitgliedern zugewiesen. Durch das Löschen wird sie aus deren Profil entfernt.", + "disable_all_emails_to_attendees": "Standardmäßige E-Mails an Teilnehmer für diesen Ereignistyp deaktivieren", + "disable_all_emails_description": "Deaktiviert die standardmäßige E-Mail-Kommunikation für diesen Ereignistyp, einschließlich Buchungsbestätigungen, Erinnerungen und Stornierungen.", + "disable_all_emails_to_hosts": "Standardmäßige E-Mails an Gastgeber für diesen Ereignistyp deaktivieren", + "type_confirm_to_continue": "Geben Sie 'bestätigen' ein, um fortzufahren", + "disable_email": "E-Mail deaktivieren", + "grant_admin_api": "Admin-API-Zugriff gewähren", + "revoke_admin_api": "Admin-API-Zugriff widerrufen", + "apple_connect_atom_label": "Apple Kalender verbinden", + "apple_connect_atom_already_connected_label": "Apple Kalender verbunden", + "apple_connect_atom_loading_label": "Apple Kalender wird überprüft", + "google_connect_atom_label": "Google Kalender verbinden", + "google_connect_atom_already_connected_label": "Google Kalender verbunden", + "google_connect_atom_loading_label": "Google Kalender wird überprüft", + "outlook_connect_atom_label": "Outlook Kalender verbinden", + "outlook_connect_atom_already_connected_label": "Outlook Kalender verbunden", + "outlook_connect_atom_loading_label": "Outlook Kalender wird überprüft", + "booking_question_response_variables": "Variablen für Buchungsfragen-Antworten", + "managed_by_teamAdmins": "Verwaltet von {{teamAdmins}}", + "number_of_options": "{{count}} Optionen", + "reschedule_with_same_round_robin_host_title": "Mit demselben Round-Robin-Gastgeber neu planen", + "reschedule_with_same_round_robin_host_description": "Neu geplante Ereignisse werden demselben Gastgeber zugewiesen wie ursprünglich geplant", + "disable_input_if_prefilled": "Eingabe deaktivieren, wenn die URL-Kennung vorausgefüllt ist", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Fügen Sie Ihre neuen Code-Zeilen über dieser hinzu ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/es-419/common.json b/apps/web/public/static/locales/es-419/common.json index 0967ef424bce67..6dc8f5d9292121 100644 --- a/apps/web/public/static/locales/es-419/common.json +++ b/apps/web/public/static/locales/es-419/common.json @@ -1 +1,2573 @@ -{} +{ + "identity_provider": "Proveedor de identidad", + "trial_days_left": "Te quedan $t(day, {\"count\": {{days}} }) en tu prueba PRO", + "day_one": "{{count}} día", + "day_other": "{{count}} días", + "second_one": "{{count}} segundo", + "second_other": "{{count}} segundos", + "upgrade_now": "Actualizar ahora", + "accept_invitation": "Aceptar invitación", + "max_characters": "Máx. caracteres", + "min_characters": "Mín. caracteres", + "calcom_explained": "{{appName}} proporciona infraestructura de programación para absolutamente todos.", + "calcom_explained_new_user": "¡Termina de configurar tu cuenta de {{appName}}! Estás a solo unos pasos de resolver todos tus problemas de programación.", + "have_any_questions": "¿Tienes preguntas? Estamos aquí para ayudarte.", + "reset_password_subject": "{{appName}}: Instrucciones para restablecer la contraseña", + "verify_email_subject": "{{appName}}: Verifica tu cuenta", + "verify_email_subject_verifying_email": "{{appName}}: Verifica tu correo electrónico", + "check_your_email": "Revisa tu correo electrónico", + "old_email_address": "Correo electrónico antiguo", + "new_email_address": "Correo electrónico nuevo", + "verify_email_page_body": "Hemos enviado un correo electrónico a {{email}}. Es importante verificar tu dirección de correo electrónico para garantizar la mejor entrega de correos y calendarios desde {{appName}}.", + "verify_email_banner_body": "Verifica tu dirección de correo electrónico para garantizar la mejor entrega de correos y calendarios", + "verify_email_email_header": "Verifica tu dirección de correo electrónico", + "verify_email_email_button": "Verificar correo electrónico", + "cal_ai_assistant": "Asistente de IA de Cal", + "verify_email_change_description": "Recientemente has solicitado cambiar la dirección de correo electrónico que usas para iniciar sesión en tu cuenta de {{appName}}. Por favor, haz clic en el botón de abajo para confirmar tu nueva dirección de correo electrónico.", + "verify_email_change_success_toast": "Actualizaste tu correo electrónico a {{email}}", + "verify_email_change_failure_toast": "No se pudo actualizar el correo electrónico.", + "change_of_email": "Verifica tu nueva dirección de correo electrónico de {{appName}}", + "change_of_email_toast": "Hemos enviado un enlace de verificación a {{email}}. Actualizaremos tu dirección de correo electrónico una vez que hagas clic en este enlace.", + "copy_somewhere_safe": "Guarda esta clave API en un lugar seguro. No podrás verla de nuevo.", + "verify_email_email_body": "Por favor, verifica tu dirección de correo electrónico haciendo clic en el botón de abajo.", + "verify_email_by_code_email_body": "Por favor, verifica tu dirección de correo electrónico usando el código a continuación.", + "verify_email_email_link_text": "Aquí está el enlace en caso de que no te guste hacer clic en botones:", + "email_verification_code": "Ingresa el código de verificación", + "email_verification_code_placeholder": "Ingresa el código de verificación enviado a tu correo", + "incorrect_email_verification_code": "El código de verificación es incorrecto.", + "email_sent": "Correo enviado con éxito", + "email_not_sent": "Ocurrió un error al enviar el correo", + "event_declined_subject": "Rechazado: {{title}} el {{date}}", + "event_cancelled_subject": "Cancelado: {{title}} el {{date}}", + "event_request_declined": "Tu solicitud de evento ha sido rechazada", + "event_request_declined_recurring": "Tu solicitud de evento recurrente ha sido rechazada", + "event_request_cancelled": "Tu evento programado fue cancelado", + "organizer": "Organizador", + "need_to_reschedule_or_cancel": "¿Necesitas reprogramar o cancelar?", + "no_options_available": "No hay opciones disponibles", + "cancellation_reason": "Razón de la cancelación (opcional)", + "cancellation_reason_placeholder": "¿Por qué estás cancelando?", + "rejection_reason_placeholder": "¿Por qué estás rechazando?", + "rejection_reason": "Razón del rechazo", + "rejection_reason_title": "¿Rechazar la solicitud de reserva?", + "rejection_reason_description": "¿Estás seguro de que quieres rechazar la reserva? Informaremos a la persona que intentó reservar. Puedes proporcionar una razón a continuación.", + "rejection_confirmation": "Rechazar la reserva", + "manage_this_event": "Gestionar este evento", + "invite_team_member": "Invitar a un miembro del equipo", + "invite_team_individual_segment": "Invitar a un individuo", + "invite_team_bulk_segment": "Importación masiva", + "invite_team_notifcation_badge": "Inv.", + "your_event_has_been_scheduled": "Tu evento ha sido programado", + "your_event_has_been_scheduled_recurring": "Tu evento recurrente ha sido programado", + "accept_our_license": "Acepta nuestra licencia cambiando la variable .env <1>NEXT_PUBLIC_LICENSE_CONSENT a '{{agree}}'.", + "remove_banner_instructions": "Para eliminar este banner, abre tu archivo .env y cambia la variable <1>NEXT_PUBLIC_LICENSE_CONSENT a '{{agree}}'.", + "error_message": "El mensaje de error fue: '{{errorMessage}}'", + "refund_failed_subject": "Reembolso fallido: {{name}} - {{date}} - {{eventType}}", + "refund_failed": "El reembolso para el evento {{eventType}} con {{userName}} el {{date}} falló.", + "check_with_provider_and_user": "Por favor, consulta con tu proveedor de pagos y con {{user}} cómo manejar esto.", + "a_refund_failed": "Un reembolso falló", + "awaiting_payment_subject": "Esperando Pago: {{title}} el {{date}}", + "meeting_awaiting_payment": "Tu reunión está esperando pago", + "dark_theme_contrast_error": "El color del Tema Oscuro no pasa la verificación de contraste. Recomendamos cambiar este color para que tus botones sean más visibles.", + "light_theme_contrast_error": "El color del Tema Claro no pasa la verificación de contraste. Recomendamos cambiar este color para que tus botones sean más visibles.", + "event_type_color_light_theme_contrast_error": "El color del Tema Claro no pasa la verificación de contraste. Recomendamos cambiar este color para que el color de tus tipos de eventos sea más visible.", + "event_type_color_dark_theme_contrast_error": "El color del Tema Oscuro no pasa la verificación de contraste. Recomendamos cambiar este color para que el color de tus tipos de eventos sea más visible.", + "payment_not_created_error": "No se pudo crear el pago", + "couldnt_charge_card_error": "No se pudo cargar la tarjeta para el pago", + "no_available_users_found_error": "No se encontraron usuarios disponibles. ¿Podrías intentar en otro horario?", + "request_body_end_time_internal_error": "Error interno. El cuerpo de la solicitud no contiene la hora de finalización", + "create_calendar_event_error": "No se pudo crear el evento en el calendario del organizador", + "update_calendar_event_error": "No se pudo actualizar el evento del calendario.", + "delete_calendar_event_error": "No se pudo eliminar el evento del calendario.", + "already_signed_up_for_this_booking_error": "Ya estás registrado para esta reserva.", + "hosts_unavailable_for_booking": "Algunos de los anfitriones no están disponibles para la reserva.", + "help": "Ayuda", + "price": "Precio", + "paid": "Pagado", + "refunded": "Reembolsado", + "payment": "Pago", + "missing_card_fields": "Faltan campos de la tarjeta", + "pay_now": "Pagar ahora", + "general_prompt": "Mensaje general", + "begin_message": "Iniciar mensaje", + "codebase_has_to_stay_opensource": "El código base debe permanecer de código abierto, ya sea modificado o no", + "cannot_repackage_codebase": "No puedes reempaquetar o vender el código base", + "acquire_license": "Adquiere una licencia comercial para eliminar estos términos enviando un correo electrónico a", + "terms_summary": "Resumen de términos", + "open_env": "Abre .env y acepta nuestra licencia", + "env_changed": "He cambiado mi .env", + "accept_license": "Aceptar licencia", + "still_waiting_for_approval": "Un evento aún está esperando aprobación", + "event_is_still_waiting": "La solicitud de evento aún está esperando: {{attendeeName}} - {{date}} - {{eventType}}", + "no_more_results": "No hay más resultados", + "no_results": "No hay resultados", + "load_more_results": "Cargar más resultados", + "integration_meeting_id": "ID de reunión de {{integrationName}}: {{meetingId}}", + "confirmed_event_type_subject": "Confirmado: {{eventType}} con {{name}} el {{date}}", + "new_event_request": "Nueva solicitud de evento: {{attendeeName}} - {{date}} - {{eventType}}", + "confirm_or_reject_request": "Confirma o rechaza la solicitud", + "check_bookings_page_to_confirm_or_reject": "Revisa tu página de reservas para confirmar o rechazar la reserva.", + "check_in_assistant": "Asistente de Check-in", + "check_in_assistant_description": "Realiza una llamada saliente para verificar si la cita programada funciona o si deseas reprogramarla.", + "create_your_own_prompt": "Crea tu propio mensaje y úsalo para hacer una llamada saliente.", + "event_awaiting_approval": "Un evento está esperando tu aprobación", + "event_awaiting_approval_recurring": "Un evento recurrente está esperando tu aprobación", + "someone_requested_an_event": "Alguien ha solicitado programar un evento en tu calendario.", + "someone_requested_password_reset": "Alguien ha solicitado un enlace para cambiar tu contraseña.", + "password_reset_email_sent": "Si este correo electrónico existe en nuestro sistema, deberías recibir un correo de restablecimiento.", + "password_reset_instructions": "Si no solicitaste esto, puedes ignorar este correo de manera segura y tu contraseña no será cambiada.", + "event_awaiting_approval_subject": "Esperando Aprobación: {{title}} el {{date}}", + "event_still_awaiting_approval": "Un evento aún está esperando tu aprobación", + "booking_submitted_subject": "Reserva Enviada: {{title}} el {{date}}", + "download_recording_subject": "Descargar Grabación: {{title}} el {{date}}", + "download_transcript_email_subject": "Descargar Transcripción: {{title}} el {{date}}", + "download_your_recording": "Descarga tu grabación", + "download_your_transcripts": "Descarga tus transcripciones", + "your_meeting_has_been_booked": "Tu reunión ha sido reservada", + "event_type_has_been_rescheduled_on_time_date": "Tu {{title}} ha sido reprogramado para {{date}}.", + "event_has_been_rescheduled": "Actualización - Tu evento ha sido reprogramado", + "request_reschedule_subtitle": "{{organizer}} ha cancelado la reserva y te ha solicitado elegir otro horario.", + "request_reschedule_title_organizer": "Has solicitado a {{attendee}} reprogramar", + "request_reschedule_subtitle_organizer": "Has cancelado la reserva y {{attendee}} debe elegir un nuevo horario contigo.", + "rescheduled_event_type_subject": "Solicitud de reprogramación enviada: {{eventType}} con {{name}} a las {{date}}", + "requested_to_reschedule_subject_attendee": "Acción requerida para reprogramar: Por favor, reserva un nuevo horario para {{eventType}} con {{name}}", + "hi_user_name": "Hola {{name}}", + "ics_event_title": "{{eventType}} con {{name}}", + "please_book_a_time_sometime_later": "Ups, no pudimos conectarte esta vez. Por favor, programa una llamada futura en su lugar", + "new_event_subject": "Nuevo evento: {{attendeeName}} - {{date}} - {{eventType}}", + "join_by_entrypoint": "Únete por {{entryPoint}}", + "notes": "Notas", + "manage_my_bookings": "Gestionar mis reservas", + "need_to_make_a_change": "¿Necesitas hacer un cambio?", + "new_event_scheduled": "Se ha programado un nuevo evento.", + "new_event_scheduled_recurring": "Se ha programado un nuevo evento recurrente.", + "invitee_email": "Correo electrónico del invitado", + "invitee_timezone": "Zona horaria del invitado", + "time_left": "Tiempo restante", + "event_type": "Tipo de evento", + "duplicate_event_type": "Tipo de evento duplicado", + "enter_meeting": "Entrar a la reunión", + "video_call_provider": "Proveedor de videollamadas", + "meeting_id": "ID de la reunión", + "meeting_password": "Contraseña de la reunión", + "meeting_url": "URL de la reunión", + "meeting_url_not_found": "URL de la reunión no encontrada", + "token_not_found": "Token no encontrado", + "some_other_host_already_accepted_the_meeting": "Otro anfitrión ya aceptó la reunión. ¿Aún quieres unirte? <1>Continuar a la reunión", + "meeting_request_rejected": "Tu solicitud de reunión ha sido rechazada", + "rejected_event_type_with_organizer": "Rechazado: {{eventType}} con {{organizer}} el {{date}}", + "hi": "Hola", + "join_team": "Unirse al equipo", + "manage_this_team": "Gestionar este equipo", + "team_info": "Información del equipo", + "join_meeting": "Unirse a la reunión", + "request_another_invitation_email": "Si prefieres no usar {{toEmail}} como tu correo electrónico de {{appName}} o ya tienes una cuenta de {{appName}}, por favor solicita otra invitación a ese correo.", + "you_have_been_invited": "Has sido invitado a unirte al equipo {{teamName}}", + "user_invited_you": "{{user}} te invitó a unirte al {{entity}} {{team}} en {{appName}}", + "user_invited_you_to_subteam": "{{user}} te invitó a unirte al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", + "hidden_team_member_title": "Estás oculto en este equipo", + "hidden_team_member_message": "Tu asiento no está pagado, actualiza a PRO o informa al propietario del equipo para que pague tu asiento.", + "hidden_team_owner_message": "Necesitas una cuenta pro para usar equipos, estás oculto hasta que actualices.", + "link_expires": "P.D. Expira en {{expiresIn}} horas.", + "upgrade_to_per_seat": "Actualizar a por asiento", + "seat_options_doesnt_support_confirmation": "La opción de asientos no admite el requisito de confirmación", + "multilocation_doesnt_support_seats": "Múltiples ubicaciones no admiten la opción de asientos", + "no_show_fee_doesnt_support_seats": "La tarifa por no presentarse no admite la opción de asientos", + "seats_option_doesnt_support_multi_location": "La opción de asientos no admite múltiples ubicaciones", + "team_upgrade_seats_details": "De los {{memberCount}} miembros de tu equipo, {{unpaidCount}} asiento(s) no están pagados. A ${{seatPrice}}/mes por asiento, el costo total estimado de tu membresía es de ${{totalCost}}/mes.", + "team_upgrade_banner_description": "No has terminado la configuración de tu equipo. Tu equipo \"{{teamName}}\" necesita ser actualizado.", + "upgrade_banner_action": "Actualiza aquí", + "team_upgraded_successfully": "¡Tu equipo se actualizó con éxito!", + "org_upgrade_banner_description": "Gracias por probar nuestro plan de Organización. Notamos que tu Organización \"{{teamName}}\" necesita ser actualizada.", + "org_upgraded_successfully": "¡Tu Organización se actualizó con éxito!", + "use_link_to_reset_password": "Usa el enlace a continuación para restablecer tu contraseña", + "hey_there": "Hola,", + "forgot_your_password_calcom": "¿Olvidaste tu contraseña? - {{appName}}", + "delete_webhook_confirmation_message": "¿Estás seguro de que deseas eliminar este webhook? Ya no recibirás datos de reuniones de {{appName}} en una URL especificada, en tiempo real, cuando se programe o cancele un evento.", + "confirm_delete_webhook": "Sí, eliminar webhook", + "edit_webhook": "Editar Webhook", + "delete_webhook": "Eliminar Webhook", + "webhook_status": "Estado del Webhook", + "webhook_enabled": "Webhook Habilitado", + "webhook_disabled": "Webhook Deshabilitado", + "webhook_response": "Respuesta del Webhook", + "webhook_test": "Prueba de Webhook", + "manage_your_webhook": "Gestiona tu webhook", + "webhook_created_successfully": "¡Webhook creado con éxito!", + "webhook_updated_successfully": "¡Webhook actualizado con éxito!", + "webhook_removed_successfully": "¡Webhook eliminado con éxito!", + "payload_template": "Plantilla de Payload", + "dismiss": "Descartar", + "no_data_yet": "Aún no hay datos", + "ping_test": "Prueba de ping", + "add_to_homescreen": "Agrega esta aplicación a tu pantalla de inicio para un acceso más rápido y una mejor experiencia.", + "upcoming": "Próximos", + "recurring": "Recurrente", + "past": "Pasado", + "choose_a_file": "Elige un archivo...", + "upload_image": "Subir imagen", + "upload_target": "Subir {{target}}", + "no_target": "No hay {{target}}", + "slide_zoom_drag_instructions": "Desliza para hacer zoom, arrastra para reposicionar", + "view_notifications": "Ver notificaciones", + "view_public_page": "Ver página pública", + "copy_public_page_link": "Copiar enlace de la página pública", + "sign_out": "Cerrar sesión", + "add_another": "Agregar otro", + "install_another": "Instalar otro", + "until": "hasta", + "powered_by": "impulsado por", + "unavailable": "No disponible", + "set_work_schedule": "Establecer tu horario de trabajo", + "change_bookings_availability": "Cambiar tu disponibilidad para reservas", + "select": "Seleccionar...", + "2fa_confirm_current_password": "Confirma tu contraseña actual para comenzar.", + "2fa_scan_image_or_use_code": "Escanea la imagen a continuación con la aplicación de autenticación en tu teléfono o ingresa manualmente el código de texto.", + "text": "Texto", + "your_phone_number": "Tu número de teléfono", + "multiline_text": "Texto multilínea", + "number": "Número", + "checkbox": "Casilla de verificación", + "is_required": "Es requerido", + "required": "Requerido", + "optional": "Opcional", + "input_type": "Tipo de entrada", + "rejected": "Rechazado", + "unconfirmed": "No confirmado", + "guests": "Invitados", + "guest": "Invitado", + "web_conferencing_details_to_follow": "Los detalles de la conferencia web se enviarán en el correo de confirmación.", + "404_the_user": "El nombre de usuario", + "username": "Nombre de usuario", + "is_still_available": "aún está disponible.", + "documentation": "Documentación", + "documentation_description": "Aprende cómo integrar nuestras herramientas con tu aplicación", + "api_reference": "Referencia de API", + "api_reference_description": "Una referencia completa de API para nuestras bibliotecas", + "blog": "Blog", + "blog_description": "Lee nuestras últimas noticias y artículos", + "join_our_community": "Únete a nuestra comunidad", + "404_claim_entity_user": "Reclama tu nombre de usuario y programa eventos", + "popular_pages": "Páginas populares", + "register_now": "Regístrate ahora", + "register": "Registrarse", + "page_doesnt_exist": "Esta página no existe.", + "check_spelling_mistakes_or_go_back": "Revisa si hay errores ortográficos o vuelve a la página anterior.", + "404_page_not_found": "404: No se pudo encontrar esta página.", + "booker_event_not_found": "No pudimos encontrar el evento que estás tratando de reservar.", + "getting_started": "Comenzando", + "15min_meeting": "Reunión de 15 Min", + "30min_meeting": "Reunión de 30 Min", + "secret": "Secreto", + "leave_blank_to_remove_secret": "Déjalo en blanco para eliminar el secreto", + "webhook_secret_key_description": "Asegúrate de que tu servidor solo reciba las solicitudes esperadas de {{appName}} por razones de seguridad", + "secret_meeting": "Reunión Secreta", + "login_instead": "Inicia sesión en su lugar", + "already_have_an_account": "¿Ya tienes una cuenta?", + "create_account": "Crear cuenta", + "confirm_password": "Confirmar contraseña", + "reset_your_password": "Establece tu nueva contraseña con las instrucciones enviadas a tu dirección de correo electrónico.", + "org_banner_instructions": "Por favor, sube una imagen de {{width}} de ancho y {{height}} de alto.", + "email_change": "Vuelve a iniciar sesión con tu nueva dirección de correo electrónico y contraseña.", + "create_your_account": "Crea tu cuenta", + "create_your_calcom_account": "Crea tu cuenta de Cal.com", + "sign_up": "Regístrate", + "youve_been_logged_out": "Has sido desconectado", + "hope_to_see_you_soon": "¡Esperamos verte de nuevo pronto!", + "logged_out": "Desconectado", + "please_try_again_and_contact_us": "Por favor, inténtalo de nuevo y contáctanos si el problema persiste.", + "incorrect_2fa_code": "El código de autenticación de dos factores es incorrecto.", + "no_account_exists": "No existe una cuenta con esa dirección de correo electrónico.", + "2fa_enabled_instructions": "Autenticación de dos factores habilitada. Por favor, ingresa el código de seis dígitos de tu aplicación de autenticación.", + "2fa_enter_six_digit_code": "Ingresa el código de seis dígitos de tu aplicación de autenticación a continuación.", + "create_an_account": "Crear una cuenta", + "dont_have_an_account": "¿No tienes una cuenta?", + "2fa_code": "Código de dos factores", + "sign_in_account": "Inicia sesión en tu cuenta", + "sign_in": "Iniciar sesión", + "go_back_login": "Volver a la página de inicio de sesión", + "error_during_login": "Ocurrió un error al iniciar sesión. Vuelve a la pantalla de inicio de sesión e inténtalo de nuevo.", + "request_password_reset": "Enviar correo de restablecimiento", + "send_invite": "Enviar invitación", + "forgot_password": "¿Olvidaste tu contraseña?", + "forgot": "¿Olvidaste?", + "done": "Hecho", + "all_done": "¡Todo listo!", + "all": "Todo", + "yours": "Tu cuenta", + "available_apps": "Aplicaciones disponibles", + "available_apps_lower_case": "aplicaciones disponibles", + "available_apps_desc": "Ver las aplicaciones populares a continuación y explorar más en nuestra <1>Tienda de Aplicaciones", + "fixed_host_helper": "Agrega a cualquier persona que necesite asistir al evento. <1>Aprende más", + "round_robin_helper": "Las personas en el grupo se turnan y solo una persona asistirá al evento.", + "check_email_reset_password": "Revisa tu correo electrónico. Te enviamos un enlace para restablecer tu contraseña.", + "finish": "Finalizar", + "organization_general_description": "Administra la configuración del idioma y la zona horaria de tu equipo", + "few_sentences_about_yourself": "Unas pocas oraciones sobre ti. Esto aparecerá en la página de tu URL personal.", + "nearly_there": "¡Casi listo!", + "nearly_there_instructions": "Por último, una breve descripción sobre ti y una foto realmente ayudan a que te reserven y a que las personas sepan con quién están reservando.", + "set_availability_instructions": "Define rangos de tiempo en los que estás disponible de manera recurrente. Puedes crear más de estos más tarde y asignarlos a diferentes calendarios.", + "set_availability": "Establecer tu disponibilidad", + "set_availbility_description": "Establece horarios para los momentos en que deseas ser reservado.", + "share_a_link_or_embed": "Comparte un enlace o incrusta", + "share_a_link_or_embed_description": "Comparte tu enlace de {{appName}} o incrústalo en tu sitio.", + "availability_settings": "Configuración de disponibilidad", + "continue_without_calendar": "Continuar sin calendario", + "continue_with": "Continuar con {{appName}}", + "connect_your_calendar": "Conecta tu calendario", + "connect_your_video_app": "Conecta tus aplicaciones de video", + "connect_your_video_app_instructions": "Conecta tus aplicaciones de video para usarlas en tus tipos de eventos.", + "connect_your_calendar_instructions": "Conecta tu calendario para verificar automáticamente los tiempos ocupados y los nuevos eventos a medida que se programan.", + "set_up_later": "Configurar más tarde", + "current_time": "Hora actual", + "details": "Detalles", + "welcome": "Bienvenido", + "welcome_back": "Bienvenido de nuevo", + "welcome_to_calcom": "Bienvenido a {{appName}}", + "welcome_instructions": "Dinos cómo te llamas y en qué zona horaria te encuentras. Podrás editar esto más tarde.", + "connect_caldav": "Conectar a CalDav (Beta)", + "connect_ics_feed": "Conectar a una fuente ICS", + "connect": "Conectar", + "try_for_free": "Pruébalo gratis", + "create_booking_link_with_calcom": "Crea tu propio enlace de reserva con {{appName}}", + "who": "Quién", + "what": "Qué", + "when": "Cuándo", + "where": "Dónde", + "add_to_calendar": "Agregar al calendario", + "add_to_calendar_description": "Selecciona dónde agregar eventos cuando se reserven.", + "add_events_to": "Agregar eventos a", + "add_another_calendar": "Agregar otro calendario", + "other": "Otro", + "email_sign_in_subject": "Tu enlace de inicio de sesión para {{appName}}", + "round_robin_emailed_you_and_attendees": "Te reunirás con {{user}}. Enviamos un correo electrónico con una invitación de calendario con los detalles a todos.", + "emailed_you_and_attendees": "Enviamos un correo electrónico con una invitación de calendario con los detalles a todos.", + "emailed_you_and_attendees_recurring": "Enviamos un correo electrónico con una invitación de calendario con los detalles a todos para el primero de estos eventos recurrentes.", + "round_robin_emailed_you_and_attendees_recurring": "Te reunirás con {{user}}. Enviamos un correo electrónico con una invitación de calendario con los detalles a todos para el primero de estos eventos recurrentes.", + "emailed_you_and_any_other_attendees": "Enviamos un correo electrónico a todos con esta información.", + "needs_to_be_confirmed_or_rejected": "Tu reserva aún necesita ser confirmada o rechazada.", + "needs_to_be_confirmed_or_rejected_recurring": "Tu reunión recurrente aún necesita ser confirmada o rechazada.", + "user_needs_to_confirm_or_reject_booking": "{{user}} aún necesita confirmar o rechazar la reserva.", + "user_needs_to_confirm_or_reject_booking_recurring": "{{user}} aún necesita confirmar o rechazar cada reserva de la reunión recurrente.", + "meeting_is_scheduled": "Esta reunión está programada", + "meeting_is_scheduled_recurring": "Los eventos recurrentes están programados", + "booking_submitted": "Tu reserva ha sido enviada", + "booking_submitted_recurring": "Tu reunión recurrente ha sido enviada", + "booking_confirmed": "Tu reserva ha sido confirmada", + "booking_confirmed_recurring": "Tu reunión recurrente ha sido confirmada", + "warning_recurring_event_payment": "Los pagos aún no son compatibles con eventos recurrentes", + "warning_payment_recurring_event": "Los eventos recurrentes aún no son compatibles con los pagos", + "enter_new_password": "Ingresa la nueva contraseña que deseas para tu cuenta.", + "reset_password": "Restablecer contraseña", + "change_your_password": "Cambia tu contraseña", + "show_password": "Mostrar contraseña", + "hide_password": "Ocultar contraseña", + "try_again": "Inténtalo de nuevo", + "request_is_expired": "Esa solicitud ha expirado.", + "reset_instructions": "Ingresa la dirección de correo electrónico asociada con tu cuenta y te enviaremos un enlace para restablecer tu contraseña.", + "request_is_expired_instructions": "Esa solicitud ha expirado. Regresa e ingresa el correo electrónico asociado con tu cuenta y te enviaremos otro enlace para restablecer tu contraseña.", + "whoops": "Ups", + "login": "Iniciar sesión", + "success": "Éxito", + "failed": "Fallido", + "password_has_been_reset_login": "Tu contraseña ha sido restablecida. Ahora puedes iniciar sesión con tu nueva contraseña.", + "layout": "Diseño", + "bookerlayout_default_title": "Vista predeterminada", + "bookerlayout_description": "Puedes seleccionar múltiples opciones y tus reservadores pueden cambiar de vista.", + "bookerlayout_user_settings_title": "Diseño de reservas", + "bookerlayout_user_settings_description": "Puedes seleccionar múltiples opciones y los reservadores pueden cambiar de vista. Esto se puede anular para cada evento.", + "bookerlayout_month_view": "Mes", + "bookerlayout_week_view": "Semanal", + "bookerlayout_column_view": "Columna", + "bookerlayout_error_min_one_enabled": "Debe habilitarse al menos un diseño.", + "bookerlayout_error_default_not_enabled": "El diseño que seleccionaste como vista predeterminada no está entre los diseños habilitados.", + "bookerlayout_error_unknown_layout": "El diseño que seleccionaste no es válido.", + "bookerlayout_override_global_settings": "Puedes gestionar esto para todos tus tipos de eventos en Configuración -> <2>Apariencia o <6>Anular solo para este evento.", + "unexpected_error_try_again": "Ocurrió un error inesperado. Inténtalo de nuevo.", + "sunday_time_error": "Hora inválida el domingo", + "monday_time_error": "Hora inválida el lunes", + "tuesday_time_error": "Hora inválida el martes", + "wednesday_time_error": "Hora inválida el miércoles", + "thursday_time_error": "Hora inválida el jueves", + "friday_time_error": "Hora inválida el viernes", + "saturday_time_error": "Hora inválida el sábado", + "error_end_time_before_start_time": "La hora de finalización no puede ser antes de la hora de inicio", + "error_end_time_next_day": "La hora de finalización no puede ser mayor a 24 horas", + "back_to_bookings": "Volver a las reservas", + "free_to_pick_another_event_type": "Siéntete libre de elegir otro evento en cualquier momento.", + "cancelled": "Cancelado", + "cancellation_successful": "Cancelación exitosa", + "really_cancel_booking": "¿Realmente quieres cancelar tu reserva?", + "cannot_cancel_booking": "No puedes cancelar esta reserva", + "reschedule_instead": "En su lugar, podrías reprogramarla.", + "event_is_in_the_past": "El evento ya pasó", + "cancelling_event_recurring": "El evento es una instancia de un evento recurrente.", + "cancelling_all_recurring": "Estas son todas las instancias restantes del evento recurrente.", + "error_with_status_code_occured": "Ocurrió un error con el código de estado {{status}}.", + "error_event_type_url_duplicate": "Ya existe un tipo de evento con esta URL.", + "error_event_type_unauthorized_create": "No tienes permiso para crear este evento", + "error_event_type_unauthorized_update": "No tienes permiso para editar este evento", + "error_workflow_unauthorized_create": "No tienes permiso para crear este flujo de trabajo", + "error_schedule_unauthorized_create": "No tienes permiso para crear este horario", + "booking_already_cancelled": "Esta reserva ya fue cancelada", + "booking_already_accepted_rejected": "Esta reserva ya fue aceptada o rechazada", + "go_back_home": "Volver a inicio", + "or_go_back_home": "O volver a inicio", + "no_meeting_found": "No se encontró la reunión", + "no_meeting_found_description": "Esta reunión no existe. Contacta al propietario de la reunión para obtener un enlace actualizado.", + "no_status_bookings_yet": "No hay reservas {{status}}", + "no_status_bookings_yet_description": "No tienes reservas {{status}}. {{description}}", + "event_between_users": "{{eventName}} entre {{host}} y {{attendeeName}}", + "bookings": "Reservas", + "booking_not_found": "Reserva no encontrada", + "bookings_description": "Consulta los eventos próximos y pasados reservados a través de tus enlaces de tipo de evento.", + "upcoming_bookings": "Tan pronto como alguien reserve un horario contigo, aparecerá aquí.", + "recurring_bookings": "Tan pronto como alguien reserve una reunión recurrente contigo, aparecerá aquí.", + "past_bookings": "Tus reservas pasadas aparecerán aquí.", + "cancelled_bookings": "Tus reservas canceladas aparecerán aquí.", + "unconfirmed_bookings": "Tus reservas no confirmadas aparecerán aquí.", + "unconfirmed_bookings_tooltip": "Reservas no confirmadas", + "on": "en", + "and": "y", + "calendar_shows_busy_between": "Tu calendario te muestra ocupado entre", + "troubleshoot": "Solucionar problemas", + "troubleshoot_description": "Entiende por qué ciertos horarios están disponibles y otros están bloqueados.", + "overview_of_day": "Aquí tienes un resumen de tu día en", + "hover_over_bold_times_tip": "Consejo: Pasa el cursor sobre los horarios en negrita para ver la hora completa", + "start_time": "Hora de inicio", + "end_time": "Hora de finalización", + "buffer_time": "Tiempo de buffer", + "before_event": "Antes del evento", + "after_event": "Después del evento", + "event_buffer_default": "Sin tiempo de buffer", + "buffer": "Buffer", + "your_day_starts_at": "Tu día comienza a las", + "your_day_ends_at": "Tu día termina a las", + "launch_troubleshooter": "Iniciar solucionador de problemas", + "troubleshoot_availability": "Soluciona tu disponibilidad para explorar por qué tus horarios se muestran como están.", + "change_available_times": "Cambiar horarios disponibles", + "change_your_available_times": "Cambia tus horarios disponibles", + "change_start_end": "Cambia las horas de inicio y fin de tu día", + "change_start_end_buffer": "Establece la hora de inicio y fin de tu día y un buffer mínimo entre tus reuniones.", + "current_start_date": "Actualmente, tu día está configurado para comenzar a las", + "start_end_changed_successfully": "Las horas de inicio y fin de tu día se han cambiado con éxito.", + "and_end_at": "y terminar a las", + "light": "Claro", + "dark": "Oscuro", + "automatically_adjust_theme": "Ajustar automáticamente el tema según las preferencias del invitado", + "user_dynamic_booking_disabled": "Algunos de los usuarios en el grupo han deshabilitado actualmente las reservas dinámicas de grupo", + "allow_dynamic_booking_tooltip": "Enlaces de reserva de grupo que se pueden crear dinámicamente agregando múltiples nombres de usuario con un '+'. ejemplo: '{{appName}}/bailey+peer'", + "allow_dynamic_booking": "Permitir a los asistentes reservar a través de reservas dinámicas de grupo", + "dynamic_booking": "Enlaces de grupo dinámicos", + "allow_seo_indexing": "Permitir que los motores de búsqueda accedan a tu contenido público", + "seo_indexing": "Permitir Indexación SEO", + "email": "Correo electrónico", + "email_placeholder": "jdoe@example.com", + "full_name": "Nombre completo", + "browse_api_documentation": "Explora nuestra documentación API", + "leverage_our_api": "Aprovecha nuestra API para un control total y personalización.", + "create_webhook": "Crear Webhook", + "instant_meeting": "Reunión Instantánea Creada", + "booking_cancelled": "Reserva Cancelada", + "booking_rescheduled": "Reserva Reprogramada", + "recording_ready": "Enlace de Descarga de Grabación Listo", + "recording_transcription_generated": "Transcripción Generada", + "booking_created": "Reserva creada", + "booking_rejected": "Reserva rechazada", + "booking_requested": "Reserva solicitada", + "booking_payment_initiated": "Pago de reserva iniciado", + "meeting_ended": "Reunión finalizada", + "form_submitted": "Formulario enviado", + "booking_paid": "Reserva pagada", + "booking_no_show_updated": "Actualización de no presentación de reserva", + "event_triggers": "Disparadores de eventos", + "subscriber_url": "URL del suscriptor", + "create_new_webhook": "Crear un nuevo webhook", + "webhooks": "Webhooks", + "team_webhooks": "Webhooks del equipo", + "create_new_webhook_to_account": "Crear un nuevo webhook para tu cuenta", + "new_webhook": "Nuevo webhook", + "receive_cal_meeting_data": "Recibe los datos de reuniones de {{appName}} en una URL especificada, en tiempo real, cuando se programe o cancele un evento.", + "receive_cal_event_meeting_data": "Recibe los datos de reuniones de {{appName}} en una URL especificada, en tiempo real, cuando se programe o cancele este evento.", + "responsive_fullscreen_iframe": "Iframe de pantalla completa responsivo", + "loading": "Cargando...", + "deleting": "Eliminando...", + "standard_iframe": "Iframe estándar", + "developer": "Desarrollador", + "manage_developer_settings": "Administra tus configuraciones de desarrollador.", + "iframe_embed": "Incrustar iframe", + "embed_calcom": "La manera más fácil de incrustar {{appName}} en tu sitio web.", + "integrate_using_embed_or_webhooks": "Integra con tu sitio web usando nuestras opciones de incrustación, o recibe información de reservas en tiempo real usando webhooks personalizados.", + "schedule_a_meeting": "Programar una reunión", + "view_and_manage_billing_details": "Ver y gestionar tus detalles de facturación", + "view_and_edit_billing_details": "Ver y editar tus detalles de facturación, así como cancelar tu suscripción.", + "go_to_billing_portal": "Ir al portal de facturación", + "need_anything_else": "¿Necesitas algo más?", + "further_billing_help": "Si necesitas más ayuda con la facturación, nuestro equipo de soporte está aquí para ayudarte.", + "contact": "Contacto", + "our_support_team": "nuestro equipo de soporte", + "contact_our_support_team": "Contacta a nuestro equipo de soporte", + "uh_oh": "¡Uy!", + "no_event_types_have_been_setup": "Este usuario no ha configurado ningún tipo de evento aún.", + "edit_logo": "Editar logo", + "upload_a_logo": "Subir un logo", + "upload_logo": "Subir logo", + "remove_logo": "Eliminar logo", + "enable": "Habilitar", + "code": "Código", + "code_is_incorrect": "El código es incorrecto.", + "add_time_availability": "Agregar nuevo horario", + "add_an_extra_layer_of_security": "Agrega una capa extra de seguridad a tu cuenta en caso de que tu contraseña sea robada.", + "2fa": "Autenticación de dos factores", + "2fa_disabled": "La autenticación de dos factores solo puede habilitarse para la autenticación por correo electrónico y contraseña", + "enable_2fa": "Habilitar autenticación de dos factores", + "disable_2fa": "Deshabilitar autenticación de dos factores", + "disable_2fa_recommendation": "Si necesitas desactivar la autenticación de dos factores (2FA), te recomendamos volver a activarla lo antes posible.", + "error_disabling_2fa": "Error al desactivar la autenticación de dos factores", + "error_enabling_2fa": "Error al configurar la autenticación de dos factores", + "security": "Seguridad", + "manage_account_security": "Gestiona la seguridad de tu cuenta.", + "password": "Contraseña", + "password_updated_successfully": "Contraseña actualizada con éxito", + "password_has_been_changed": "Tu contraseña ha sido cambiada exitosamente.", + "error_changing_password": "Error al cambiar la contraseña", + "session_timeout_changed": "La configuración de tu sesión ha sido actualizada con éxito.", + "session_timeout_change_error": "Error al actualizar la configuración de la sesión", + "something_went_wrong": "Algo salió mal.", + "something_doesnt_look_right": "¿Algo no se ve bien?", + "please_try_again": "Por favor, inténtalo de nuevo.", + "super_secure_new_password": "Tu nueva contraseña súper segura", + "new_password": "Nueva Contraseña", + "your_old_password": "Tu contraseña anterior", + "current_password": "Contraseña Actual", + "change_password": "Cambiar Contraseña", + "change_secret": "Cambiar Secreto", + "new_password_matches_old_password": "La nueva contraseña coincide con tu contraseña anterior. Por favor, elige una contraseña diferente.", + "forgotten_secret_description": "Si has perdido u olvidado este secreto, puedes cambiarlo, pero ten en cuenta que todas las integraciones que usen este secreto necesitarán ser actualizadas", + "current_incorrect_password": "La contraseña actual es incorrecta", + "password_hint_caplow": "Mezcla de letras mayúsculas y minúsculas", + "password_hint_min": "Mínimo 7 caracteres de longitud", + "password_hint_admin_min": "Mínimo 15 caracteres", + "password_hint_num": "Contener al menos 1 número", + "max_limit_allowed_hint": "Debe tener {{limit}} o menos caracteres", + "invalid_password_hint": "La contraseña debe tener un mínimo de {{passwordLength}} caracteres, contener al menos un número y tener una mezcla de letras mayúsculas y minúsculas", + "incorrect_password": "La contraseña es incorrecta.", + "incorrect_email_password": "El correo electrónico o la contraseña son incorrectos.", + "use_setting": "Usar configuración", + "am_pm": "a.m./p.m.", + "time_options": "Opciones de tiempo", + "january": "Enero", + "february": "Febrero", + "march": "Marzo", + "april": "Abril", + "may": "Mayo", + "june": "Junio", + "july": "Julio", + "august": "Agosto", + "september": "Septiembre", + "october": "Octubre", + "november": "Noviembre", + "december": "Diciembre", + "monday": "Lunes", + "tuesday": "Martes", + "wednesday": "Miércoles", + "thursday": "Jueves", + "friday": "Viernes", + "saturday": "Sábado", + "sunday": "Domingo", + "all_booked_today": "Todo reservado.", + "slots_load_fail": "No se pudieron cargar los horarios disponibles.", + "additional_guests": "Agregar invitados", + "your_name": "Tu nombre", + "your_full_name": "Tu nombre completo", + "no_name": "Sin nombre", + "enter_number_between_range": "Por favor, ingresa un número entre 1 y {{maxOccurences}}", + "email_address": "Correo electrónico", + "enter_valid_email": "Por favor, ingresa un correo electrónico válido", + "please_schedule_future_call": "Por favor, programa una llamada futura si no estamos disponibles en {{seconds}} segundos", + "location": "Ubicación", + "address": "Dirección", + "enter_address": "Ingresa la dirección", + "in_person_attendee_address": "En persona (Dirección del asistente)", + "yes": "Sí", + "no": "No", + "additional_notes": "Notas adicionales", + "booking_fail": "No se pudo reservar la reunión.", + "reschedule_fail": "No se pudo reprogramar la reunión.", + "share_additional_notes": "Por favor, comparte cualquier información que ayude a prepararnos para nuestra reunión.", + "booking_confirmation": "Confirma tu {{eventTypeTitle}} con {{profileName}}", + "booking_reschedule_confirmation": "Reprograma tu {{eventTypeTitle}} con {{profileName}}", + "in_person_meeting": "Reunión en persona", + "in_person": "En persona (Dirección del organizador)", + "link_meeting": "Reunión por enlace", + "phone_number": "Número de teléfono", + "attendee_phone_number": "Número de teléfono del asistente", + "organizer_phone_number": "Número de teléfono del organizador", + "enter_phone_number": "Ingrese el número de teléfono", + "reschedule": "Reprogramar", + "reschedule_this": "Reprogramar en su lugar", + "book_a_team_member": "Reservar un miembro del equipo en su lugar", + "or": "O", + "go_back": "Regresar", + "email_or_username": "Correo electrónico o nombre de usuario", + "send_invite_email": "Enviar un correo electrónico de invitación", + "role": "Rol", + "edit_role": "Editar rol", + "edit_team": "Editar equipo", + "reject": "Rechazar", + "reject_all": "Rechazar todo", + "accept": "Aceptar", + "leave": "Salir", + "profile": "Perfil", + "my_team_url": "URL de mi equipo", + "my_teams": "Mis equipos", + "team_name": "Nombre del equipo", + "your_team_name": "Nombre de tu equipo", + "team_updated_successfully": "Equipo actualizado con éxito", + "your_team_updated_successfully": "Tu equipo ha sido actualizado con éxito.", + "your_org_updated_successfully": "Tu organización ha sido actualizada con éxito.", + "about": "Acerca de", + "team_description": "Unas pocas oraciones sobre tu equipo. Esto aparecerá en la página de la URL de tu equipo.", + "org_description": "Unas pocas oraciones sobre tu organización. Esto aparecerá en la página de la URL de tu organización.", + "members": "Miembros", + "organization_members": "Miembros de la organización", + "member": "Miembro", + "number_member_one": "{{count}} miembro", + "number_member_other": "{{count}} miembros", + "number_selected": "{{count}} seleccionados", + "owner": "Propietario", + "admin": "Administrador", + "admin_api": "Admin API", + "administrator_user": "Usuario administrador", + "lets_create_first_administrator_user": "Vamos a crear el primer usuario administrador.", + "admin_user_created": "Usuario administrador configurado", + "admin_user_created_description": "Ya has creado un usuario administrador. Ahora puedes iniciar sesión en tu cuenta.", + "new_member": "Nuevo miembro", + "invite": "Invitar", + "add_team_members": "Agregar miembros al equipo", + "add_org_members": "Agregar miembros", + "add_team_members_description": "Invita a otros a unirse a tu equipo", + "add_team_member": "Agregar miembro del equipo", + "invite_new_member": "Invitar a un nuevo miembro del equipo", + "invite_new_member_description": "Nota: Esto <1>costará un asiento extra ($15/mes) en tu suscripción.", + "invite_new_team_member": "Invitar a alguien a tu equipo.", + "upload_csv_file": "Subir un archivo .csv", + "invite_via_email": "Invitar por correo electrónico", + "change_member_role": "Cambiar el rol del miembro del equipo", + "disable_cal_branding": "Desactivar la marca de {{appName}}", + "disable_cal_branding_description": "Ocultar toda la marca de {{appName}} de tus páginas públicas.", + "hide_book_a_team_member": "Ocultar el botón de Reservar un Miembro del Equipo", + "hide_book_a_team_member_description": "Ocultar el botón de Reservar un Miembro del Equipo de tus páginas públicas.", + "danger_zone": "Zona de peligro", + "account_deletion_cannot_be_undone": "Ten cuidado. La eliminación de la cuenta no se puede deshacer.", + "team_deletion_cannot_be_undone": "Ten cuidado. La eliminación del equipo no se puede deshacer.", + "back": "Atrás", + "cancel": "Cancelar", + "cancel_all_remaining": "Cancelar todo lo restante", + "apply": "Aplicar", + "cancel_event": "Cancelar evento", + "continue": "Continuar", + "confirm": "Confirmar", + "confirm_all": "Confirmar todo", + "disband_team": "Disolver equipo", + "disband_team_confirmation_message": "¿Estás seguro de que quieres disolver este equipo? Cualquiera con quien hayas compartido este enlace de equipo ya no podrá reservar usando él.", + "disband_org": "Disolver organización", + "disband_org_confirmation_message": "¿Estás seguro de que quieres disolver esta organización? Todos los equipos y miembros serán eliminados.", + "remove_member_confirmation_message": "¿Estás seguro de que quieres eliminar a este miembro del equipo?", + "confirm_disband_team": "Sí, disolver equipo", + "confirm_remove_member": "Sí, eliminar miembro", + "remove_member": "Eliminar miembro", + "manage_your_team": "Gestiona tu equipo", + "no_teams": "Aún no tienes equipos.", + "no_teams_description": "Los equipos permiten que otros reserven eventos compartidos entre tus compañeros de trabajo.", + "submit": "Enviar", + "delete": "Eliminar", + "update": "Actualizar", + "save": "Guardar", + "pending": "Pendiente", + "open_options": "Abrir opciones", + "copy_link": "Copiar enlace del evento", + "share": "Compartir", + "share_event": "¿Te importaría reservar en mi cal o enviarme tu enlace?", + "copy_link_team": "Copiar enlace del equipo", + "leave_team": "Dejar equipo", + "confirm_leave_team": "Sí, dejar equipo", + "leave_team_confirmation_message": "¿Estás seguro de que quieres dejar este equipo? Ya no podrás reservar usando este equipo.", + "user_from_team": "{{user}} del equipo {{team}}", + "preview": "Vista previa", + "link_copied": "¡Enlace copiado!", + "copied": "¡Copiado!", + "private_link_copied": "¡Enlace privado copiado!", + "link_shared": "¡Enlace compartido!", + "title": "Título", + "description": "Descripción", + "apps_status": "Estado de las aplicaciones", + "quick_video_meeting": "Una reunión rápida por video.", + "scheduling_type": "Tipo de programación", + "preview_team": "Vista previa del equipo", + "collective": "Colectivo", + "collective_description": "Programa reuniones cuando todos los miembros seleccionados del equipo estén disponibles.", + "duration": "Duración", + "available_durations": "Duraciones disponibles", + "default_duration": "Duración predeterminada", + "default_duration_no_options": "Por favor, elige primero las duraciones disponibles", + "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", + "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", + "minutes": "Minutos", + "use_cal_ai_to_make_call_description": "Usa Cal.ai para obtener un número de teléfono con inteligencia artificial o hacer llamadas a los invitados.", + "round_robin": "Round Robin", + "round_robin_description": "Alterna reuniones entre varios miembros del equipo.", + "managed_event": "Evento gestionado", + "username_placeholder": "nombre de usuario", + "managed_event_description": "Crea y distribuye tipos de eventos en masa a los miembros del equipo", + "managed": "Gestionado", + "managed_event_url_clarification": "\"username\" será reemplazado por el nombre de usuario de los miembros asignados", + "assign_to": "Asignar a", + "add_members": "Agregar miembros...", + "no_assigned_members": "No hay miembros asignados", + "assigned_to": "Asignado a", + "you_must_be_logged_in_to": "Debes iniciar sesión en {{url}}", + "start_assigning_members_above": "Comienza a asignar miembros arriba", + "locked_fields_admin_description": "Los miembros no pueden editar", + "unlocked_fields_admin_description": "Los miembros pueden editar", + "locked_fields_member_description": "Bloqueado por el administrador del equipo", + "unlocked_fields_member_description": "Desbloqueado por el administrador del equipo", + "url": "URL", + "hidden": "Oculto", + "readonly": "Solo lectura", + "one_time_link": "Enlace de un solo uso", + "plan_description": "Actualmente estás en el plan {{plan}}.", + "plan_upgrade_invitation": "Actualiza tu cuenta al plan PRO para desbloquear todas las funciones que ofrecemos.", + "plan_upgrade": "Necesitas actualizar tu plan para tener más de un tipo de evento activo.", + "plan_upgrade_teams": "Necesitas actualizar tu plan para crear un equipo.", + "plan_upgrade_instructions": "Puedes <1>actualizar aquí.", + "event_types_page_title": "Tipos de Eventos", + "event_types_page_subtitle": "Crea eventos para compartir y que las personas puedan reservar en tu calendario.", + "new": "Nuevo", + "new_event_type_btn": "Nuevo tipo de evento", + "new_event_type_heading": "Crea tu primer tipo de evento", + "new_event_type_description": "Los tipos de eventos te permiten compartir enlaces que muestran los horarios disponibles en tu calendario y permiten que las personas reserven contigo.", + "event_type_created_successfully": "Tipo de evento {{eventTypeTitle}} creado con éxito", + "event_type_updated_successfully": "Tipo de evento {{eventTypeTitle}} actualizado con éxito", + "event_type_deleted_successfully": "Tipo de evento eliminado con éxito", + "hours": "Horas", + "people": "Personas", + "your_email": "Tu correo electrónico", + "change_avatar": "Cambiar avatar", + "upload_avatar": "Subir avatar", + "language": "Idioma", + "timezone": "Zona horaria", + "first_day_of_week": "Primer día de la semana", + "repeats_up_to_one": "Se repite hasta {{count}} vez", + "repeats_up_to_other": "Se repite hasta {{count}} veces", + "every_for_freq": "Cada {{freq}} por", + "event_remaining_one": "{{count}} evento restante", + "event_remaining_other": "{{count}} eventos restantes", + "repeats_every": "Se repite cada", + "occurrence_one": "ocurrencia", + "occurrence_other": "ocurrencias", + "weekly_one": "semana", + "weekly_other": "semanas", + "monthly_one": "mes", + "monthly_other": "meses", + "yearly_one": "año", + "yearly_other": "años", + "plus_more": "{{count}} más", + "max": "Máx", + "single_theme": "Tema Único", + "brand_color": "Color de Marca", + "light_brand_color": "Color de Marca (Tema Claro)", + "dark_brand_color": "Color de Marca (Tema Oscuro)", + "light_event_type_color": "Color del Tipo de Evento (Tema Claro)", + "dark_event_type_color": "Color del Tipo de Evento (Tema Oscuro)", + "file_not_named": "El archivo no está nombrado [idOrSlug]/[user]", + "create_team": "Crear Equipo", + "name": "Nombre", + "create_new_team_description": "Crea un nuevo equipo para colaborar con otros usuarios.", + "create_new_team": "Crear un nuevo equipo", + "open_invitations": "Invitaciones Abiertas", + "new_team": "Nuevo Equipo", + "create_first_team_and_invite_others": "Crea tu primer equipo e invita a otros usuarios a trabajar juntos.", + "create_team_to_get_started": "Crea un equipo para comenzar", + "teams": "Equipos", + "team": "Equipo", + "organization": "Organización", + "team_billing": "Facturación del Equipo", + "team_billing_description": "Gestiona la facturación de tu equipo", + "upgrade_to_flexible_pro_title": "Hemos cambiado la facturación para equipos", + "upgrade_to_flexible_pro_message": "Hay miembros en tu equipo sin asiento. Actualiza tu plan pro para cubrir los asientos faltantes.", + "changed_team_billing_info": "A partir de enero de 2022, cobramos por miembro del equipo. Los miembros de tu equipo que tenían PRO gratis ahora están en una prueba de 14 días. Una vez que su prueba expire, estos miembros serán ocultos de tu equipo a menos que actualices ahora.", + "create_manage_teams_collaborative": "Crea y gestiona equipos para usar funciones colaborativas.", + "only_available_on_pro_plan": "Esta función solo está disponible en el plan Pro.", + "remove_cal_branding_description": "Para eliminar la marca de {{appName}} de tus páginas de reserva, necesitas actualizar a una cuenta Pro.", + "edit_profile_info_description": "Edita la información de tu perfil, que se muestra en tu enlace de programación.", + "change_email_tip": "Es posible que necesites cerrar sesión y volver a iniciarla para que el cambio surta efecto.", + "little_something_about": "Un poco sobre ti.", + "profile_updated_successfully": "Perfil actualizado con éxito.", + "your_user_profile_updated_successfully": "Tu perfil de usuario se ha actualizado con éxito.", + "user_cannot_found_db": "El usuario parece estar conectado pero no se puede encontrar en la base de datos.", + "embed_and_webhooks": "Integrar y Webhooks", + "enabled": "Habilitado", + "disabled": "Deshabilitado", + "disable": "Deshabilitar", + "billing": "Facturación", + "manage_your_billing_info": "Gestiona tu información de facturación y cancela tu suscripción.", + "availability": "Disponibilidad", + "edit_availability": "Editar disponibilidad", + "configure_availability": "Configura los horarios en los que estás disponible para reservas.", + "copy_times_to": "Copiar horarios a", + "copy_times_to_tooltip": "Copiar horarios a …", + "change_weekly_schedule": "Cambiar tu horario semanal", + "logo": "Logo", + "error": "Error", + "at_least_characters_one": "Por favor, ingresa al menos un carácter", + "at_least_characters_other": "Por favor, ingrese al menos {{count}} caracteres", + "team_logo": "Logo del equipo", + "add_location": "Agregar una ubicación", + "attendees": "Asistentes", + "add_attendees": "Agregar asistentes", + "show_advanced_settings": "Mostrar configuraciones avanzadas", + "event_name": "Nombre del evento", + "event_name_in_calendar": "Con nombre del evento", + "event_name_tooltip": "El nombre que aparecerá en los calendarios", + "meeting_with_user": "{Event type title} entre {Organiser} y {Scheduler}", + "additional_inputs": "Entradas adicionales", + "additional_input_description": "Requerir que el programador ingrese entradas adicionales antes de confirmar la reserva", + "label": "Etiqueta", + "placeholder": "Marcador de posición", + "display_add_to_calendar_organizer": "Usar el correo electrónico \"Agregar al calendario\" como el organizador", + "display_email_as_organizer": "Mostraremos esta dirección de correo electrónico como el organizador y enviaremos correos electrónicos de confirmación aquí.", + "if_enabled_email_address_as_organizer": "Si está habilitado, mostraremos la dirección de correo electrónico de su \"Agregar al calendario\" como organizador y enviaremos correos electrónicos de confirmación allí", + "reconnect_calendar_to_use": "Tenga en cuenta que puede necesitar desconectar y luego volver a conectar su cuenta de 'Agregar al calendario' para usar esta función.", + "type": "Tipo", + "edit": "Editar", + "add_input": "Agregar una entrada", + "disable_notes": "Ocultar notas en el calendario", + "disable_notes_description": "Por razones de privacidad, las entradas adicionales y las notas se ocultarán en la entrada del calendario. Aún se enviarán a su correo electrónico.", + "requires_confirmation_description": "La reserva necesita ser confirmada manualmente antes de que se envíe a las integraciones y se envíe un correo de confirmación.", + "recurring_event": "Evento recurrente", + "recurring_event_description": "Las personas pueden suscribirse a eventos recurrentes", + "cannot_be_used_with_paid_event_types": "No se puede usar con tipos de eventos pagados", + "warning_payment_instant_meeting_event": "Las reuniones instantáneas no son compatibles con eventos recurrentes y aplicaciones de pago aún", + "warning_instant_meeting_experimental": "Experimental: Los eventos de reunión instantánea son actualmente experimentales.", + "starting": "Comenzando", + "disable_guests": "Deshabilitar invitados", + "disable_guests_description": "Deshabilitar la adición de invitados adicionales al reservar.", + "private_link": "Generar enlace privado", + "enable_private_url": "Habilitar URL privada", + "private_link_label": "Enlace privado", + "private_link_hint": "Tu enlace privado se regenerará después de cada uso", + "copy_private_link": "Copiar enlace privado", + "copy_private_link_to_event": "Copiar enlace privado al evento", + "private_link_description": "Genera una URL privada para compartir sin exponer tu nombre de usuario de {{appName}}", + "invitees_can_schedule": "Los invitados pueden programar", + "date_range": "Rango de fechas", + "calendar_days": "días calendario", + "business_days": "días hábiles", + "set_address_place": "Establecer una dirección o lugar", + "set_link_meeting": "Establecer un enlace para la reunión", + "cal_invitee_phone_number_scheduling": "{{appName}} pedirá a tu invitado que ingrese un número de teléfono antes de programar.", + "cal_provide_google_meet_location": "{{appName}} proporcionará una ubicación de Google Meet.", + "cal_provide_zoom_meeting_url": "{{appName}} proporcionará una URL de reunión de Zoom.", + "cal_provide_tandem_meeting_url": "{{appName}} proporcionará una URL de reunión de Tandem.", + "cal_provide_video_meeting_url": "{{appName}} proporcionará una URL de reunión por video.", + "cal_provide_jitsi_meeting_url": "Generaremos una URL de Jitsi Meet para ti.", + "cal_provide_huddle01_meeting_url": "{{appName}} proporcionará una URL de reunión de video de Huddle01.", + "cal_provide_teams_meeting_url": "{{appName}} proporcionará una URL de reunión de MS Teams. NOTA: DEBE TENER UNA CUENTA DE TRABAJO O ESCOLAR", + "require_payment": "Requiere Pago", + "you_need_to_add_a_name": "Necesitas agregar un nombre", + "commission_per_transaction": "comisión por transacción", + "event_type_updated_successfully_description": "Tu tipo de evento se ha actualizado exitosamente.", + "hide_event_type": "Ocultar tipo de evento", + "edit_location": "Editar ubicación", + "into_the_future": "hacia el futuro", + "when_booked_with_less_than_notice": "Cuando se reserva con menos de de antelación", + "within_date_range": "Dentro de un rango de fechas", + "indefinitely_into_future": "Indefinidamente hacia el futuro", + "add_new_custom_input_field": "Agregar nuevo campo de entrada personalizado", + "quick_chat": "Chat Rápido", + "add_new_team_event_type": "Agregar un nuevo tipo de evento de equipo", + "add_new_event_type": "Agregar un nuevo tipo de evento", + "new_event_type_to_book_description": "Crea un nuevo tipo de evento para que las personas reserven horarios contigo.", + "length": "Duración", + "minimum_booking_notice": "Aviso Mínimo", + "offset_toggle": "Desplazar horarios de inicio", + "offset_toggle_description": "Desplazar los horarios mostrados a los reservadores por un número especificado de minutos", + "offset_start": "Desplazar por", + "offset_start_description": "p.ej., esto mostrará horarios a tus reservadores a las {{ adjustedTime }} en lugar de las {{ originalTime }}", + "slot_interval": "Intervalos de tiempo", + "slot_interval_default": "Usar duración del evento (predeterminado)", + "delete_event_type": "¿Eliminar tipo de evento?", + "delete_managed_event_type": "¿Eliminar tipo de evento gestionado?", + "delete_event_type_description": "Cualquiera con quien hayas compartido este enlace ya no podrá reservar usando este.", + "delete_managed_event_type_description": "
  • Los miembros asignados a este tipo de evento también tendrán sus tipos de eventos eliminados.
  • Cualquiera con quien hayan compartido su enlace ya no podrá reservar usando este.
", + "confirm_delete_event_type": "Sí, eliminar", + "delete_account": "Eliminar cuenta", + "confirm_delete_account": "Sí, eliminar cuenta", + "delete_account_confirmation_message": "Cualquiera con quien hayas compartido el enlace de tu cuenta ya no podrá reservar usando este y cualquier preferencia que hayas guardado se perderá.", + "integrations": "Integraciones", + "apps": "Aplicaciones", + "apps_description": "Aquí puedes encontrar una lista de tus aplicaciones", + "apps_listing": "Listado de aplicaciones", + "category_apps": "Aplicaciones de {{category}}", + "app_store": "Tienda de aplicaciones", + "app_store_description": "Conectando personas, tecnología y el lugar de trabajo.", + "settings": "Configuraciones", + "event_type_moved_successfully": "El tipo de evento se ha movido exitosamente", + "next_step_text": "Siguiente paso", + "next_step": "Omitir paso", + "prev_step": "Paso anterior", + "install": "Instalar", + "start_paid_trial": "Iniciar prueba gratuita", + "installed": "Instalado", + "active_install_one": "{{count}} instalación activa", + "active_install_other": "{{count}} instalaciones activas", + "globally_install": "Instalado globalmente", + "app_successfully_installed": "Aplicación instalada con éxito", + "app_could_not_be_installed": "No se pudo instalar la aplicación", + "disconnect": "Desconectar", + "embed_your_calendar": "Incrusta tu calendario en tu página web", + "connect_your_favourite_apps": "Conecta tus aplicaciones favoritas.", + "automation": "Automatización", + "configure_how_your_event_types_interact": "Configura cómo deben interactuar tus tipos de eventos con tus calendarios.", + "toggle_calendars_conflict": "Activa o desactiva los calendarios que deseas verificar para evitar reservas dobles.", + "connect_additional_calendar": "Conectar calendario adicional", + "calendar_updated_successfully": "Calendario actualizado con éxito", + "check_here": "Verifica aquí", + "conferencing": "Conferencias", + "calendar": "Calendario", + "payments": "Pagos", + "not_installed": "No instalado", + "error_password_mismatch": "Las contraseñas no coinciden.", + "error_required_field": "Este campo es obligatorio.", + "status": "Estado", + "team_view_user_availability": "Ver disponibilidad del usuario", + "team_view_user_availability_disabled": "El usuario necesita aceptar la invitación para ver la disponibilidad", + "set_as_away": "Ponerte como ausente", + "set_as_free": "Desactivar estado de ausente", + "toggle_away_error": "Error al actualizar el estado de ausente", + "user_away": "Este usuario está actualmente ausente.", + "user_away_description": "La persona que estás tratando de reservar se ha puesto como ausente y, por lo tanto, no está aceptando nuevas reservas.", + "meet_people_with_the_same_tokens": "Conoce a personas con los mismos tokens", + "only_book_people_and_allow": "Solo reserva y permite reservas de personas que compartan los mismos tokens, DAOs o NFTs.", + "account_created_with_identity_provider": "Tu cuenta fue creada usando un Proveedor de Identidad.", + "account_managed_by_identity_provider": "Tu cuenta es gestionada por {{provider}}", + "account_managed_by_identity_provider_description": "Para cambiar tu correo electrónico, contraseña, habilitar la autenticación de dos factores y más, por favor visita la configuración de tu cuenta de {{provider}}.", + "signin_with_google": "Iniciar sesión con Google", + "signin_with_saml": "Iniciar sesión con SAML", + "signin_with_saml_oidc": "Iniciar sesión con SAML/OIDC", + "you_will_need_to_generate": "Necesitarás generar un token de acceso desde tu antigua herramienta de programación.", + "import": "Importar", + "import_from": "Importar desde", + "access_token": "Token de acceso", + "visit_roadmap": "Hoja de ruta", + "featured_categories": "Categorías destacadas", + "popular_categories": "Categorías populares", + "number_apps_one": "{{count}} Aplicación", + "number_apps_other": "{{count}} Aplicaciones", + "trending_apps": "Aplicaciones en tendencia", + "most_popular": "Más populares", + "installed_apps": "Aplicaciones instaladas", + "free_to_use_apps": "Gratis", + "no_category_apps": "No hay aplicaciones de {{category}}", + "all_apps": "Todas las aplicaciones", + "no_category_apps_description_calendar": "Agrega una aplicación de calendario para verificar conflictos y evitar reservas dobles", + "no_category_apps_description_conferencing": "Prueba agregar una aplicación de conferencias para videollamadas con tus clientes", + "no_category_apps_description_payment": "Agrega una aplicación de pagos para facilitar las transacciones entre tú y tus clientes", + "no_category_apps_description_analytics": "Agrega una aplicación de análisis para tus páginas de reservas", + "no_category_apps_description_automation": "Agrega una aplicación de automatización para usar", + "no_category_apps_description_other": "Agrega cualquier otro tipo de aplicación para hacer todo tipo de cosas", + "no_category_apps_description_messaging": "Agrega una aplicación de mensajería para configurar notificaciones y recordatorios personalizados", + "no_category_apps_description_crm": "Agrega una aplicación CRM para llevar un registro de con quién te has reunido", + "installed_app_calendar_description": "Configura los calendarios para verificar conflictos y evitar reservas dobles.", + "installed_app_payment_description": "Configura qué servicios de procesamiento de pagos usar al cobrar a tus clientes.", + "installed_app_analytics_description": "Configura qué aplicaciones de análisis usar para tus páginas de reservas", + "installed_app_other_description": "Todas tus aplicaciones instaladas de otras categorías.", + "installed_app_conferencing_description": "Configura qué aplicaciones de conferencias usar", + "installed_app_automation_description": "Configura qué aplicaciones de automatización usar", + "installed_app_messaging_description": "Configura qué aplicaciones de mensajería usar para configurar notificaciones y recordatorios personalizados", + "installed_app_crm_description": "Configura qué aplicaciones CRM usar para llevar un registro de con quién te has reunido", + "analytics": "Análisis", + "empty_installed_apps_headline": "No hay aplicaciones instaladas", + "empty_installed_apps_description": "Las aplicaciones te permiten mejorar tu flujo de trabajo y mejorar significativamente tu vida de programación.", + "empty_installed_apps_button": "Explorar la tienda de aplicaciones", + "manage_your_connected_apps": "Administra tus aplicaciones instaladas o cambia la configuración", + "browse_apps": "Explorar aplicaciones", + "features": "Características", + "permissions": "Permisos", + "terms_and_privacy": "Términos y privacidad", + "published_by": "Publicado por {{author}}", + "subscribe": "Suscribirse", + "buy": "Comprar", + "install_app": "Instalar aplicación", + "categories": "Categorías", + "pricing": "Precios", + "learn_more": "Aprender más", + "privacy_policy": "Política de privacidad", + "terms_of_service": "Términos de servicio", + "remove": "Eliminar", + "add": "Agregar", + "installed_other": "{{count}} instalado(s)", + "verify_wallet": "Verificar billetera", + "create_events_on": "Crear eventos en", + "enterprise_license": "Esta es una característica empresarial", + "enterprise_license_locally": "Puedes probar esta característica localmente pero no en producción.", + "enterprise_license_sales": "Para actualizar a la edición empresarial, por favor contacta a nuestro equipo de ventas. Si ya tienes una clave de licencia, contacta a support@cal.com para obtener ayuda.", + "missing_license": "Licencia faltante", + "next_steps": "Próximos pasos", + "acquire_commercial_license": "Adquirir una licencia comercial", + "the_infrastructure_plan": "El plan de infraestructura se basa en el uso y tiene descuentos amigables para startups.", + "prisma_studio_tip": "Crea una cuenta a través de Prisma Studio", + "prisma_studio_tip_description": "Aprende cómo configurar tu primer usuario", + "contact_sales": "Contactar ventas", + "error_404": "Error 404", + "default": "Predeterminado", + "set_to_default": "Establecer como predeterminado", + "new_schedule_btn": "Nuevo horario", + "add_new_schedule": "Agregar un nuevo horario", + "add_new_calendar": "Agregar un nuevo calendario", + "set_calendar": "Establecer dónde agregar nuevos eventos cuando estés reservado.", + "delete_schedule": "Eliminar horario", + "delete_schedule_description": "Eliminar un horario lo eliminará de todos los tipos de eventos. Esta acción no se puede deshacer.", + "schedule_created_successfully": "Horario {{scheduleName}} creado con éxito", + "availability_updated_successfully": "Horario {{scheduleName}} actualizado con éxito", + "schedule_deleted_successfully": "Horario eliminado con éxito", + "default_schedule_name": "Horas Laborales", + "new_schedule_heading": "Crear un horario de disponibilidad", + "new_schedule_description": "Crear horarios de disponibilidad te permite gestionar la disponibilidad en diferentes tipos de eventos. Pueden aplicarse a uno o más tipos de eventos.", + "requires_ownership_of_a_token": "Requiere la propiedad de un token perteneciente a la siguiente dirección:", + "example_name": "Juan Pérez", + "time_format": "Formato de hora", + "12_hour": "12 horas", + "24_hour": "24 horas", + "12_hour_short": "12h", + "24_hour_short": "24h", + "redirect_success_booking": "Redirigir al reservar", + "you_are_being_redirected": "Estás siendo redirigido a {{ url }} en $t(second, {\"count\": {{seconds}} }).", + "external_redirect_url": "https://example.com/redirect-to-my-success-page", + "redirect_url_description": "Redirigir a una URL personalizada después de una reserva exitosa", + "duplicate": "Duplicar", + "offer_seats": "Ofrecer asientos", + "offer_seats_description": "Ofrecer asientos para reservar. Esto desactiva automáticamente las reservas de invitados y las reservas opt-in.", + "seats_available_one": "disponible", + "seats_available_other": "disponibles", + "seats_nearly_full": "Asientos casi llenos", + "seats_half_full": "Asientos llenándose rápido", + "number_of_seats": "Número de asientos por reserva", + "set_instant_meeting_expiry_time_offset_description": "Establecer ventana de unión a la reunión (segundos): El marco de tiempo en segundos dentro del cual el anfitrión puede unirse y comenzar la reunión. Después de este período, la URL de unión a la reunión expirará.", + "enter_number_of_seats": "Ingrese el número de asientos", + "you_can_manage_your_schedules": "Puede gestionar sus horarios en la página de Disponibilidad.", + "booking_full": "No hay más asientos disponibles", + "api_keys": "Claves API", + "api_key": "Clave API", + "test_api_key": "Clave API de prueba", + "test_passed": "¡Prueba aprobada!", + "test_failed": "Prueba fallida", + "provide_api_key": "Proporcione clave API", + "api_key_modal_subtitle": "Las claves API le permiten hacer llamadas API para su propia cuenta.", + "api_keys_subtitle": "Genere claves API para usar en el acceso a su propia cuenta.", + "create_api_key": "Crear una clave API", + "personal_note": "Nombre esta clave", + "personal_note_placeholder": "Ej. Desarrollo", + "api_key_no_note": "Clave API sin nombre", + "api_key_never_expires": "Esta clave API no tiene fecha de expiración", + "edit_api_key": "Editar clave API", + "success_api_key_created": "Clave API creada con éxito", + "success_api_key_edited": "Clave API actualizada con éxito", + "create": "Crear", + "success_api_key_created_bold_tagline": "Guarda esta clave API en un lugar seguro.", + "you_will_only_view_it_once": "No podrás verla de nuevo una vez que cierres este modal.", + "copy_to_clipboard": "Copiar al portapapeles", + "enabled_after_update": "Habilitado después de la actualización", + "enabled_after_update_description": "El enlace privado funcionará después de guardar", + "confirm_delete_api_key": "Revocar esta clave API", + "revoke_api_key": "Revocar clave API", + "api_key_copied": "¡Clave API copiada!", + "api_key_expires_on": "La clave API expirará el", + "delete_api_key_confirm_title": "¿Eliminar permanentemente esta clave API de tu cuenta?", + "copy": "Copiar", + "expire_date": "Fecha de expiración", + "expired": "Expirada", + "never_expires": "Nunca expira", + "expires": "Expira", + "request_reschedule_booking": "Solicitar reprogramación de tu reserva", + "reason_for_reschedule": "Razón para reprogramar", + "book_a_new_time": "Reservar un nuevo horario", + "reschedule_request_sent": "Solicitud de reprogramación enviada", + "reschedule_modal_description": "Esto cancelará la reunión programada, notificará al programador y le pedirá que elija un nuevo horario.", + "reason_for_reschedule_request": "Razón para la solicitud de reprogramación", + "send_reschedule_request": "Solicitar reprogramación", + "edit_booking": "Editar reserva", + "reschedule_booking": "Reprogramar reserva", + "former_time": "Hora anterior", + "confirmation_page_gif": "Agregar un GIF a tu página de confirmación", + "search": "Buscar", + "impersonate": "Suplantar", + "user_impersonation_heading": "Suplantación de Usuario", + "user_impersonation_description": "Permite a nuestro equipo de soporte iniciar sesión temporalmente como tú para ayudarnos a resolver rápidamente cualquier problema que nos informes.", + "team_impersonation_description": "Permite a los Propietarios/Administradores de tu equipo iniciar sesión temporalmente como tú.", + "cal_signup_description": "Gratis para individuos. Planes de equipo para funciones colaborativas.", + "make_org_private": "Hacer la organización privada", + "make_org_private_description": "Los miembros de tu organización no podrán ver a otros miembros de la organización cuando esto esté activado.", + "make_team_private": "Hacer el equipo privado", + "make_team_private_description": "Los miembros de tu equipo no podrán ver a otros miembros del equipo cuando esto esté activado.", + "you_cannot_see_team_members": "No puedes ver a todos los miembros de un equipo privado.", + "you_cannot_see_teams_of_org": "No puedes ver los equipos de una organización privada.", + "allow_booker_to_select_duration": "Permitir al reservador seleccionar la duración", + "impersonate_user_tip": "Todos los usos de esta función son auditados.", + "impersonating_user_warning": "Suplantando al usuario \"{{user}}\".", + "impersonating_stop_instructions": "Haz clic aquí para detener", + "event_location_changed": "Actualizado - Tu evento cambió de ubicación", + "new_guests_added": "Agregado - Nuevos invitados añadidos a tu evento", + "location_changed_event_type_subject": "Ubicación Cambiada: {{eventType}} con {{name}} el {{date}}", + "guests_added_event_type_subject": "Invitados Añadidos: {{eventType}} con {{name}} el {{date}}", + "current_location": "Ubicación actual", + "new_location": "Nueva ubicación", + "session": "Sesión", + "session_description": "Controla la sesión de tu cuenta", + "session_timeout_after": "Tiempo de espera de la sesión después de", + "session_timeout": "Tiempo de espera de la sesión", + "session_timeout_description": "Invalida tu sesión después de un cierto período de tiempo.", + "no_location": "No se ha definido una ubicación", + "set_location": "Establecer ubicación", + "update_location": "Actualizar ubicación", + "location_updated": "Ubicación actualizada", + "guests_added": "Invitados añadidos", + "unable_to_add_guests": "No se pueden añadir invitados", + "email_validation_error": "Eso no parece una dirección de correo electrónico", + "emails_must_be_unique_valid": "Los correos electrónicos deben ser únicos y válidos", + "url_validation_error": "Eso no parece una URL", + "place_where_cal_widget_appear": "Coloca este código en tu HTML donde quieras que aparezca el widget de {{appName}}.", + "create_update_react_component": "Crea o actualiza un componente React existente como se muestra a continuación.", + "copy_code": "Copiar código", + "code_copied": "¡Código copiado!", + "how_you_want_add_cal_site": "¿Cómo quieres añadir {{appName}} a tu sitio?", + "choose_ways_put_cal_site": "Elige una de las siguientes formas de poner {{appName}} en tu sitio.", + "setting_up_zapier": "Configurando tu integración con Zapier", + "setting_up_make": "Configurando tu integración con Make", + "generate_api_key": "Generar clave API", + "generate_api_key_description": "Genera una clave API para usar con {{appName}} en", + "your_unique_api_key": "Tu clave API única", + "copy_safe_api_key": "Copia esta clave API y guárdala en un lugar seguro. Si pierdes esta clave, tendrás que generar una nueva.", + "zapier_setup_instructions": "<0>Inicia sesión en tu cuenta de Zapier y crea un nuevo Zap.<1>Selecciona Cal.com como tu aplicación de disparador. También elige un evento de disparador.<2>Elige tu cuenta e ingresa tu Clave API Única.<3>Prueba tu disparador.<4>¡Listo!", + "make_setup_instructions": "<0>Ve a <1><0>Enlace de Invitación de Make e instala la aplicación de Cal.com.<1>Inicia sesión en tu cuenta de Make y crea un nuevo Escenario.<2>Selecciona Cal.com como tu aplicación de disparador. También elige un evento de disparador.<3>Elige tu cuenta e ingresa tu Clave API Única.<4>Prueba tu disparador.<5>¡Listo!", + "install_zapier_app": "Por favor, primero instala la aplicación de Zapier en la tienda de aplicaciones.", + "install_make_app": "Por favor, primero instala la aplicación de Make en la tienda de aplicaciones.", + "app_not_installed": "Aplicación no instalada", + "visit_our_app_store": "Lo sentimos, esta aplicación no está instalada en tu cuenta. Por favor, visita nuestra tienda de aplicaciones para explorar y descubrir esta y otras excelentes aplicaciones.", + "connect_apple_server": "Conectar al servidor de Apple", + "calendar_url": "URL del calendario", + "apple_server_generate_password": "Genera una contraseña específica para la aplicación para usar con {{appName}} en", + "unable_to_add_apple_calendar": "No se puede agregar esta cuenta de calendario de Apple. Por favor, asegúrate de estar usando una contraseña específica para la aplicación en lugar de la contraseña de tu cuenta.", + "credentials_stored_encrypted": "Tus credenciales se almacenarán y cifrarán.", + "it_stored_encrypted": "Se almacenará y cifrará.", + "go_to_app_store": "Ir a la tienda de aplicaciones", + "calendar_error": "Intenta reconectar tu calendario con todos los permisos necesarios", + "set_your_phone_number": "Establece un número de teléfono para la reunión", + "calendar_no_busy_slots": "No hay espacios ocupados", + "display_location_label": "Mostrar en la página de reservas", + "display_location_info_badge": "La ubicación será visible antes de confirmar la reserva", + "add_gif": "Agregar GIF", + "search_giphy": "Buscar en Giphy", + "add_link_from_giphy": "Agregar enlace desde Giphy", + "add_gif_to_confirmation": "Agregar un GIF a la página de confirmación", + "find_gif_spice_confirmation": "Encuentra un GIF para animar tu página de confirmación", + "share_feedback": "Compartir comentarios", + "resources": "Recursos", + "support_documentation": "Documentación de soporte", + "developer_documentation": "Documentación para desarrolladores", + "get_in_touch": "Ponerse en contacto", + "contact_support": "Contactar soporte", + "premium_support": "Soporte premium", + "community_support": "Soporte comunitario", + "feedback": "Comentarios", + "submitted_feedback": "¡Gracias por tus comentarios!", + "feedback_error": "Error al enviar comentarios", + "comments": "Comparte tus comentarios aquí:", + "booking_details": "Detalles de la reserva", + "or_lowercase": "o", + "nevermind": "No importa", + "go_to": "Ir a: ", + "zapier_invite_link": "Enlace de invitación de Zapier", + "meeting_url_provided_after_confirmed": "Se creará una URL de la reunión una vez que el evento esté confirmado.", + "dynamically_display_attendee_or_organizer": "Muestra dinámicamente el nombre de tu asistente para ti, o tu nombre si lo ve tu asistente", + "event_location": "Ubicación del evento", + "reschedule_optional": "Motivo para reprogramar (opcional)", + "reschedule_placeholder": "Deja saber a los demás por qué necesitas reprogramar", + "event_cancelled": "Este evento está cancelado", + "emailed_information_about_cancelled_event": "Enviamos un correo electrónico a todos para informarles.", + "this_input_will_shown_booking_this_event": "Esta entrada se mostrará al reservar este evento", + "meeting_url_in_confirmation_email": "La URL de la reunión está en el correo electrónico de confirmación", + "url_start_with_https": "La URL debe comenzar con http:// o https://", + "number_provided": "Se proporcionará el número de teléfono", + "before_event_trigger": "antes de que comience el evento", + "event_cancelled_trigger": "cuando el evento está cancelado", + "new_event_trigger": "cuando se reserva un nuevo evento", + "email_host_action": "enviar correo electrónico al anfitrión", + "email_attendee_action": "enviar correo electrónico a los asistentes", + "sms_attendee_action": "Enviar SMS al asistente", + "sms_number_action": "enviar SMS a un número específico", + "send_reminder_sms": "Envía fácilmente recordatorios de reuniones por SMS a tus asistentes", + "whatsapp_number_action": "enviar mensaje de WhatsApp a un número específico", + "whatsapp_attendee_action": "enviar mensaje de WhatsApp al asistente", + "workflows": "Flujos de trabajo", + "new_workflow_btn": "Nuevo Flujo de Trabajo", + "add_new_workflow": "Agregar un nuevo flujo de trabajo", + "reschedule_event_trigger": "cuando el evento se reprograma", + "trigger": "Disparador", + "triggers": "Disparadores", + "action": "Acción", + "workflows_to_automate_notifications": "Crea flujos de trabajo para automatizar notificaciones y recordatorios", + "workflow_name": "Nombre del flujo de trabajo", + "custom_workflow": "Flujo de trabajo personalizado", + "workflow_created_successfully": "{{workflowName}} creado con éxito", + "delete_workflow_description": "¿Estás seguro de que deseas eliminar este flujo de trabajo?", + "delete_workflow": "Eliminar flujo de trabajo", + "confirm_delete_workflow": "Sí, eliminar flujo de trabajo", + "workflow_deleted_successfully": "Flujo de trabajo eliminado con éxito", + "how_long_before": "¿Cuánto tiempo antes de que comience el evento?", + "day_timeUnit": "días", + "hour_timeUnit": "horas", + "minute_timeUnit": "minutos", + "minute_short": "m", + "hour_short": "h", + "new_workflow_heading": "Crea tu primer flujo de trabajo", + "new_workflow_description": "Los flujos de trabajo te permiten automatizar el envío de recordatorios y notificaciones.", + "active_on": "Activo en", + "workflow_updated_successfully": "Flujo de trabajo {{workflowName}} actualizado con éxito", + "premium_to_standard_username_description": "Este es un nombre de usuario estándar y al actualizar te llevará a la facturación para degradar.", + "premium_username": "Este es un nombre de usuario premium, obtén el tuyo por {{price}}", + "current": "Actual", + "premium": "premium", + "standard": "estándar", + "confirm_username_change_dialog_title": "Confirmar cambio de nombre de usuario", + "change_username_standard_to_premium": "Como estás cambiando de un nombre de usuario estándar a uno premium, serás dirigido al pago para actualizar.", + "change_username_premium_to_standard": "Como estás cambiando de un nombre de usuario premium a uno estándar, serás dirigido al pago para degradar.", + "go_to_stripe_billing": "Ir a la facturación", + "stripe_description": "Requiere pago para reservas (0.5% + €0.10 de comisión por transacción)", + "trial_expired": "Tu prueba ha expirado", + "remove_app": "Eliminar aplicación", + "yes_remove_app": "Sí, eliminar aplicación", + "are_you_sure_you_want_to_remove_this_app": "¿Estás seguro de que quieres eliminar esta aplicación?", + "app_removed_successfully": "Aplicación eliminada con éxito", + "error_removing_app": "Error al eliminar la aplicación", + "web_conference": "Conferencia web", + "requires_confirmation": "Requiere confirmación", + "always_requires_confirmation": "Siempre", + "requires_confirmation_threshold": "Requiere confirmación si se reserva con menos de {{time}} $t({{unit}}_timeUnit) de antelación", + "may_require_confirmation": "Puede requerir confirmación", + "nr_event_type_one": "{{count}} tipo de evento", + "nr_event_type_other": "{{count}} tipos de eventos", + "count_team_one": "{{count}} equipo", + "count_team_other": "{{count}} equipos", + "add_action": "Agregar acción", + "set_whereby_link": "Establecer enlace de Whereby", + "invalid_whereby_link": "Por favor, ingrese un enlace válido de Whereby", + "set_around_link": "Establecer enlace de Around.Co", + "invalid_around_link": "Por favor, ingrese un enlace válido de Around", + "set_riverside_link": "Establecer enlace de Riverside", + "invalid_riverside_link": "Por favor, ingrese un enlace válido de Riverside", + "invalid_ping_link": "Por favor, ingrese un enlace válido de Ping.gg", + "add_exchange2013": "Conectar servidor Exchange 2013", + "add_exchange2016": "Conectar servidor Exchange 2016", + "custom_template": "Plantilla personalizada", + "email_body": "Cuerpo del correo electrónico", + "text_message": "Mensaje de texto", + "specific_issue": "¿Tienes un problema específico?", + "browse_our_docs": "explora nuestros documentos", + "choose_template": "Elige una plantilla", + "custom": "Personalizado", + "reminder": "Recordatorio", + "rescheduled": "Reprogramado", + "completed": "Completado", + "rating": "Calificación", + "reminder_email": "Recordatorio: {{eventType}} con {{name}} a las {{date}}", + "not_triggering_existing_bookings": "No se activará para reservas ya existentes, ya que se le pedirá al usuario su número de teléfono al reservar el evento.", + "minute_one": "{{count}} minuto", + "minute_one_short": "{{count}}m", + "minute_other": "{{count}} minutos", + "hour_one": "{{count}} hora", + "hour_one_short": "{{count}}h", + "hour_other": "{{count}} horas", + "invalid_input": "Entrada inválida", + "broken_video_action": "No pudimos agregar el enlace de la reunión en <1>{{location}} a tu evento programado. Contacta a tus invitados o actualiza tu evento en el calendario para agregar los detalles. Puedes <3> cambiar la ubicación en el tipo de evento o intentar <5>eliminar y agregar la aplicación nuevamente.", + "broken_calendar_action": "No pudimos actualizar tu <1>{{calendar}}. <2> Por favor, revisa la configuración de tu calendario o elimina y agrega tu calendario nuevamente ", + "attendee_name": "Nombre del asistente", + "scheduler_full_name": "Nombre completo de la persona que reserva", + "broken_integration": "Integración rota", + "problem_adding_video_link": "Hubo un problema al agregar un enlace de video", + "problem_updating_calendar": "Hubo un problema al actualizar tu calendario", + "active_on_event_types_one": "Activo en {{count}} tipo de evento", + "active_on_event_types_other": "Activo en {{count}} tipos de eventos", + "active_on_teams_one": "Activo en {{count}} equipo", + "active_on_teams_other": "Activo en {{count}} equipos", + "active_on_all_event_types": "Activo en todos los tipos de eventos", + "active_on_all_teams": "Activo en todos los equipos", + "no_active_event_types": "No hay tipos de eventos activos", + "no_active_teams": "No hay equipos activos", + "new_seat_subject": "Nuevo asistente {{name}} en {{eventType}} el {{date}}", + "new_seat_title": "Alguien se ha añadido a un evento", + "variable": "Variable", + "event_name_variable": "Nombre del evento", + "attendee_name_variable": "Asistente", + "event_date_variable": "Fecha del evento", + "event_time_variable": "Hora del evento", + "organizer_name_variable": "Nombre del organizador", + "app_upgrade_description": "Para usar esta función, necesitas actualizar a una cuenta Pro.", + "invalid_number": "Número de teléfono inválido", + "invalid_url_error_message": "URL inválida para {{label}}. URL de ejemplo: {{sampleUrl}}", + "navigate": "Navegar", + "open": "Abrir", + "close": "Cerrar", + "upgrade": "Actualizar", + "upgrade_to_access_recordings_title": "Actualiza para acceder a las grabaciones", + "upgrade_to_access_recordings_description": "Las grabaciones solo están disponibles como parte de nuestro plan para equipos. Actualiza para comenzar a grabar tus llamadas", + "upgrade_to_cal_ai_phone_number_description": "Actualiza a Enterprise para generar un número de teléfono de Agente AI que pueda llamar a los invitados para programar llamadas", + "recordings_are_part_of_the_teams_plan": "Las grabaciones son parte del plan para equipos", + "team_feature_teams": "Esta es una función de equipo. Actualiza a Equipo para ver la disponibilidad de tu equipo.", + "team_feature_workflows": "Esta es una función de equipo. Actualiza a Equipo para automatizar las notificaciones y recordatorios de tus eventos con Workflows.", + "show_eventtype_on_profile": "Mostrar en el perfil", + "embed": "Incrustar", + "new_username": "Nuevo nombre de usuario", + "current_username": "Nombre de usuario actual", + "example_1": "Ejemplo 1", + "example_2": "Ejemplo 2", + "booking_question_identifier": "Identificador de pregunta de reserva", + "company_size": "Tamaño de la empresa", + "what_help_needed": "¿Con qué necesitas ayuda?", + "variable_format": "Formato de variable", + "webhook_subscriber_url_reserved": "La URL del suscriptor del webhook ya está definida", + "custom_input_as_variable_info": "Ignora todos los caracteres especiales de la etiqueta de entrada adicional (usa solo letras y números), usa mayúsculas para todas las letras y reemplaza los espacios con guiones bajos.", + "using_booking_questions_as_variables": "¿Cómo uso las preguntas de reserva como variables?", + "download_desktop_app": "Descargar la aplicación de escritorio", + "set_ping_link": "Establecer enlace de Ping", + "rate_limit_exceeded": "Límite de tasa excedido", + "when_something_happens": "Cuando algo sucede", + "action_is_performed": "Se realiza una acción", + "test_action": "Probar acción", + "notification_sent": "Notificación enviada", + "no_input": "Sin entrada", + "test_workflow_action": "Probar acción del flujo de trabajo", + "send_sms": "Enviar SMS", + "send_sms_to_number": "¿Estás seguro de que quieres enviar un SMS a {{number}}?", + "missing_connected_calendar": "No hay un calendario predeterminado conectado", + "connect_your_calendar_and_link": "Puedes conectar tu calendario desde <1>aquí.", + "default_calendar_selected": "Calendario predeterminado", + "hide_from_profile": "Ocultar del perfil", + "event_setup_tab_title": "Configuración del evento", + "availability_not_found_in_schedule_error": "No se encontró disponibilidad en el horario", + "event_limit_tab_title": "Límites", + "event_limit_tab_description": "Con qué frecuencia puedes ser reservado", + "event_advanced_tab_description": "Configuración del calendario y más...", + "event_advanced_tab_title": "Avanzado", + "event_setup_multiple_duration_error": "Configuración del evento: Duraciones múltiples requieren al menos 1 opción.", + "event_setup_multiple_duration_default_error": "Configuración del evento: Por favor selecciona una duración predeterminada válida.", + "event_setup_booking_limits_error": "Los límites de reserva deben estar en orden ascendente. [día, semana, mes, año]", + "event_setup_duration_limits_error": "Los límites de duración deben estar en orden ascendente. [día, semana, mes, año]", + "select_which_cal": "El calendario al que agregar reservas", + "custom_event_name": "Nombre de evento personalizado", + "custom_event_name_description": "Crea nombres de eventos personalizados para mostrar en el calendario", + "2fa_required": "Se requiere autenticación de dos factores", + "incorrect_2fa": "Código de autenticación de dos factores incorrecto", + "which_event_type_apply": "¿A qué tipo de evento se aplicará esto?", + "apply_to_all_event_types": "Aplicar a todos, incluidos los tipos de eventos futuros", + "apply_to_all_teams": "Aplicar a todos los tipos de eventos de equipo y usuario", + "which_team_apply": "¿A qué equipo se aplicará esto?", + "no_workflows_description": "Los flujos de trabajo permiten una automatización simple para enviar notificaciones y recordatorios, permitiéndote construir procesos alrededor de tus eventos.", + "timeformat_profile_hint": "Esta es una configuración interna y no afectará cómo se muestran los horarios en las páginas de reserva públicas para ti o para quienes te reserven.", + "create_workflow": "Crear un flujo de trabajo", + "do_this": "Hacer esto", + "turn_off": "Apagar", + "turn_on": "Encender", + "cancelled_bookings_cannot_be_rescheduled": "Las reservas canceladas no se pueden reprogramar", + "settings_updated_successfully": "Configuraciones actualizadas con éxito", + "error_updating_settings": "Error al actualizar las configuraciones", + "personal_cal_url": "Mi URL personal de {{appName}}", + "bio_hint": "Unas pocas oraciones sobre ti. Esto aparecerá en la página de tu URL personal.", + "user_has_no_bio": "Este usuario aún no ha agregado una biografía.", + "bio": "Biografía", + "delete_account_modal_title": "Eliminar cuenta", + "confirm_delete_account_modal": "¿Estás seguro de que quieres eliminar tu cuenta de {{appName}}?", + "delete_my_account": "Eliminar mi cuenta", + "start_of_week": "Inicio de la semana", + "recordings_title": "Grabaciones", + "recording": "Grabación", + "happy_scheduling": "Feliz programación", + "select_calendars": "Selecciona los calendarios que deseas revisar para evitar reservas dobles.", + "check_for_conflicts": "Revisar conflictos", + "view_recordings": "Ver grabaciones", + "check_for_recordings": "Revisar grabaciones", + "adding_events_to": "Agregando eventos a", + "follow_system_preferences": "Seguir las preferencias del sistema", + "custom_brand_colors": "Colores personalizados de la marca", + "customize_your_brand_colors": "Personaliza los colores de tu marca en tu página de reservas.", + "pro": "Pro", + "removes_cal_branding": "Elimina cualquier marca relacionada con {{appName}}, es decir, 'Desarrollado por {{appName}}.'", + "instant_meeting_with_title": "Reunión instantánea con {{name}}", + "profile_picture": "Foto de perfil", + "upload": "Subir", + "add_profile_photo": "Agregar foto de perfil", + "token_address": "Dirección del token", + "blockchain": "Blockchain", + "old_password": "Contraseña antigua", + "secure_password": "Tu nueva contraseña súper segura", + "error_updating_password": "Error al actualizar la contraseña", + "two_factor_auth": "Autenticación de dos factores", + "recurring_event_tab_description": "Configura un horario recurrente", + "today": "hoy", + "appearance": "Apariencia", + "my_account": "Mi cuenta", + "general": "General", + "calendars": "Calendarios", + "2fa_auth": "Autenticación 2FA", + "invoices": "Facturas", + "embeds": "Incrustaciones", + "impersonation": "Suplantación", + "impersonation_description": "Configuraciones para gestionar la suplantación de usuarios", + "users": "Usuarios", + "user": "Usuario", + "profile_description": "Gestiona las configuraciones de tu perfil de {{appName}}", + "users_description": "Aquí puedes encontrar una lista de todos los usuarios", + "users_listing": "Listado de usuarios", + "general_description": "Gestiona las configuraciones de tu idioma y zona horaria", + "calendars_description": "Configura cómo tus tipos de eventos interactúan con tus calendarios", + "appearance_description": "Gestiona las configuraciones de la apariencia de tus reservas", + "conferencing_description": "Agrega tus aplicaciones de videoconferencia favoritas para tus reuniones", + "add_conferencing_app": "Agregar aplicación de videoconferencia", + "password_description": "Gestiona las configuraciones de las contraseñas de tu cuenta", + "set_up_two_factor_authentication": "Configura tu autenticación de dos factores", + "we_just_need_basic_info": "Solo necesitamos información básica para configurar tu perfil.", + "skip": "Omitir", + "do_this_later": "Hacer esto más tarde", + "set_availability_getting_started_subtitle_1": "Define los rangos de tiempo en los que estás disponible", + "set_availability_getting_started_subtitle_2": "Puedes personalizar todo esto más tarde en la página de disponibilidad.", + "connect_calendars_from_app_store": "Puedes agregar más calendarios desde la tienda de aplicaciones", + "connect_conference_apps": "Conectar aplicaciones de conferencias", + "connect_calendar_apps": "Conectar aplicaciones de calendario", + "connect_payment_apps": "Conectar aplicaciones de pago", + "connect_automation_apps": "Conectar aplicaciones de automatización", + "connect_analytics_apps": "Conectar aplicaciones de análisis", + "connect_other_apps": "Conectar otras aplicaciones", + "connect_messaging_apps": "Conectar aplicaciones de mensajería", + "connect_crm_apps": "Conectar aplicaciones CRM", + "current_step_of_total": "Paso {{currentStep}} de {{maxSteps}}", + "add_variable": "Agregar variable", + "custom_phone_number": "Número de teléfono personalizado", + "message_template": "Plantilla de mensaje", + "email_subject": "Asunto del correo electrónico", + "add_dynamic_variables": "Agregar variables de texto dinámico", + "event_name_info": "El nombre del tipo de evento", + "event_date_info": "La fecha del evento", + "event_duration_info": "La duración del evento", + "event_time_info": "La hora de inicio del evento", + "event_type_not_found": "Tipo de evento no encontrado", + "location_variable": "Ubicación", + "location_info": "La ubicación del evento", + "additional_notes_variable": "Notas adicionales", + "additional_notes_info": "Las notas adicionales de la reserva", + "attendee_name_info": "Nombre de la persona que reserva", + "organizer_name_info": "Nombre del organizador", + "to": "A", + "workflow_turned_on_successfully": "El flujo de trabajo {{workflowName}} se ha {{offOn}} con éxito", + "download_responses": "Descargar respuestas", + "download_responses_description": "Descarga todas las respuestas a tu formulario en formato CSV.", + "download": "Descargar", + "download_recording": "Descargar grabación", + "transcription_enabled": "Las transcripciones están habilitadas ahora", + "transcription_stopped": "Las transcripciones se han detenido ahora", + "download_transcript": "Descargar transcripción", + "recording_from_your_recent_call": "Una grabación de tu llamada reciente en {{appName}} está lista para descargar", + "transcript_from_previous_call": "La transcripción de tu llamada reciente en {{appName}} está lista para descargar. Los enlaces son válidos solo por 1 hora", + "link_valid_for_12_hrs": "Nota: El enlace de descarga es válido solo por 12 horas. Puedes generar un nuevo enlace de descarga siguiendo las instrucciones <1>aquí.", + "create_your_first_form": "Crea tu primer formulario", + "create_your_first_form_description": "Con los Formularios de Enrutamiento puedes hacer preguntas de calificación y dirigir a la persona o tipo de evento correcto.", + "create_your_first_webhook": "Crea tu primer Webhook", + "create_your_first_webhook_description": "Con los Webhooks puedes recibir datos de reuniones en tiempo real cuando algo sucede en {{appName}}.", + "for_a_maximum_of": "Para un máximo de", + "event_one": "evento", + "event_other": "eventos", + "profile_team_description": "Gestiona la configuración del perfil de tu equipo", + "profile_org_description": "Administra la configuración del perfil de tu organización", + "members_team_description": "Usuarios que están en el grupo", + "organization_description": "Administra a los administradores y miembros de tu organización", + "team_url": "URL del equipo", + "team_members": "Miembros del equipo", + "more": "Más", + "more_page_footer": "Consideramos la aplicación móvil como una extensión de la aplicación web. Si estás realizando acciones complicadas, por favor, vuelve a la aplicación web.", + "workflow_example_1": "Enviar recordatorio por SMS 24 horas antes de que comience el evento al asistente", + "workflow_example_2": "Enviar SMS personalizado cuando el evento se reprograma al asistente", + "workflow_example_3": "Enviar correo electrónico personalizado cuando se reserva un nuevo evento al anfitrión", + "workflow_example_4": "Enviar recordatorio por correo electrónico 1 hora antes de que comiencen los eventos al asistente", + "workflow_example_5": "Enviar correo electrónico personalizado cuando el evento se reprograma al anfitrión", + "workflow_example_6": "Enviar SMS personalizado cuando se reserva un nuevo evento al anfitrión", + "welcome_to_cal_header": "¡Bienvenido a {{appName}}!", + "edit_form_later_subtitle": "Podrás editar esto más tarde.", + "connect_calendar_later": "Conectaré mi calendario más tarde", + "problem_saving_user_profile": "Hubo un problema al guardar tus datos. Por favor, inténtalo de nuevo o contacta al soporte al cliente.", + "purchase_missing_seats": "Compra asientos faltantes", + "slot_length": "Duración del intervalo", + "booking_appearance": "Apariencia de la reserva", + "appearance_team_description": "Administra la configuración de la apariencia de las reservas de tu equipo", + "appearance_org_description": "Administra la configuración de la apariencia de las reservas de tu organización", + "only_owner_change": "Solo el propietario de este equipo puede hacer cambios en la reserva del equipo", + "team_disable_cal_branding_description": "Elimina cualquier marca relacionada con {{appName}}, es decir, 'Desarrollado por {{appName}}'", + "invited_by_team": "{{teamName}} te ha invitado a unirte a su equipo como {{role}}", + "token_invalid_expired": "El token es inválido o ha expirado.", + "view_booking": "Ver reserva", + "exchange_add": "Conectar a Microsoft Exchange", + "exchange_authentication": "Método de autenticación", + "exchange_authentication_standard": "Autenticación básica", + "exchange_authentication_ntlm": "Autenticación NTLM", + "exchange_compression": "Compresión GZip", + "exchange_version": "Versión de Exchange", + "exchange_version_2007_SP1": "2007 SP1", + "exchange_version_2010": "2010", + "exchange_version_2010_SP1": "2010 SP1", + "exchange_version_2010_SP2": "2010 SP2", + "exchange_version_2013": "2013", + "exchange_version_2013_SP1": "2013 SP1", + "exchange_version_2015": "2015", + "exchange_version_2016": "2016", + "routing_forms_description": "Cree formularios para dirigir a los asistentes a los destinos correctos", + "routing_forms_send_email_owner": "Enviar correo electrónico al propietario", + "routing_forms_send_email_owner_description": "Envía un correo electrónico al propietario cuando se envía el formulario", + "routing_forms_send_email_to": "Enviar correo electrónico a", + "add_new_form": "Agregar nuevo formulario", + "add_new_team_form": "Agregar nuevo formulario a su equipo", + "create_your_first_route": "Cree su primera ruta", + "route_to_the_right_person": "Dirija a la persona correcta según las respuestas de su formulario", + "form_description": "Cree su formulario para dirigir a un reservador", + "copy_link_to_form": "Copiar enlace al formulario", + "theme": "Tema de la página de reservas", + "theme_applies_note": "Esto solo se aplica a tus páginas públicas de reservas", + "app_theme": "Tema del panel", + "app_theme_applies_note": "Esto solo se aplica a tu panel de control cuando has iniciado sesión", + "theme_system": "Predeterminado del sistema", + "add_a_team": "Agregar un equipo", + "add_webhook_description": "Recibe datos de reuniones en tiempo real cuando algo sucede en {{appName}}", + "triggers_when": "Se activa cuando", + "test_webhook": "Por favor, prueba antes de crear.", + "enable_webhook": "Habilitar Webhook", + "add_webhook": "Agregar Webhook", + "webhook_edited_successfully": "Webhook guardado", + "api_keys_description": "Genera claves API para acceder a tu propia cuenta", + "new_api_key": "Nueva clave API", + "active": "activo", + "api_key_updated": "Nombre de la clave API actualizado", + "api_key_update_failed": "Error al actualizar el nombre de la clave API", + "embeds_title": "Incrustación HTML iframe", + "embeds_description": "Incrusta todos tus tipos de eventos en tu sitio web", + "create_first_api_key": "Crea tu primera clave API", + "create_first_api_key_description": "Las claves API permiten que otras aplicaciones se comuniquen con {{appName}}", + "back_to_signin": "Volver a iniciar sesión", + "reset_link_sent": "Enlace de restablecimiento enviado", + "password_reset_email": "Un correo electrónico está en camino a {{email}} con instrucciones para restablecer tu contraseña.", + "password_reset_leading": "Si no recibes un correo electrónico pronto, verifica que la dirección de correo que ingresaste sea correcta, revisa tu carpeta de spam o comunícate con soporte si el problema persiste.", + "password_updated": "¡Contraseña actualizada!", + "pending_payment": "Pago pendiente", + "pending_invites": "Invitaciones pendientes", + "pending_organization_invites": "Invitaciones de organización pendientes", + "not_on_cal": "No está en {{appName}}", + "no_calendar_installed": "No hay calendario instalado", + "no_calendar_installed_description": "Aún no has conectado ninguno de tus calendarios", + "add_a_calendar": "Agregar un calendario", + "change_email_hint": "Es posible que necesites cerrar sesión y volver a iniciarla para que los cambios surtan efecto", + "confirm_password_change_email": "Por favor confirma tu contraseña antes de cambiar tu dirección de correo electrónico", + "seats": "asientos", + "every_app_published": "Cada aplicación publicada en la {{appName}} App Store es de código abierto y ha sido rigurosamente probada mediante revisiones por pares. Sin embargo, {{companyName}} no respalda ni certifica estas aplicaciones a menos que sean publicadas por {{appName}}. Si encuentras contenido o comportamiento inapropiado, por favor repórtalo.", + "report_app": "Reportar aplicación", + "limit_booking_frequency": "Limitar frecuencia de reservas", + "limit_booking_frequency_description": "Limitar cuántas veces se puede reservar este evento", + "only_show_first_available_slot": "Mostrar solo el primer espacio disponible de cada día", + "only_show_first_available_slot_description": "Esto limitará tu disponibilidad para este tipo de evento a un espacio por día, programado a la primera hora disponible.", + "limit_total_booking_duration": "Limitar duración total de reservas", + "limit_total_booking_duration_description": "Limitar la cantidad total de tiempo que se puede reservar este evento", + "add_limit": "Agregar límite", + "team_name_required": "Nombre del equipo requerido", + "show_attendees": "Compartir información de los asistentes entre los invitados", + "show_available_seats_count": "Mostrar el número de asientos disponibles", + "how_booking_questions_as_variables": "¿Cómo usar preguntas de reserva como variables?", + "format": "Formato", + "uppercase_for_letters": "Usa mayúsculas para todas las letras", + "replace_whitespaces_underscores": "Reemplaza los espacios en blanco con guiones bajos", + "manage_billing": "Gestionar facturación", + "manage_billing_description": "Gestiona todo lo relacionado con la facturación", + "billing_freeplan_title": "Actualmente estás en el plan GRATUITO", + "billing_freeplan_description": "Trabajamos mejor en equipo. Extiende tus flujos de trabajo con round-robin y eventos colectivos y crea formularios de enrutamiento avanzados", + "billing_freeplan_cta": "Prueba ahora", + "billing_portal": "Portal de facturación", + "billing_help_cta": "Contactar soporte", + "ignore_special_characters_booking_questions": "Ignora los caracteres especiales en el identificador de tu pregunta de reserva. Usa solo letras y números", + "retry": "Reintentar", + "fetching_calendars_error": "Hubo un problema al obtener tus calendarios. Por favor, <1>intenta de nuevo o contacta al soporte al cliente.", + "calendar_connection_fail": "Fallo en la conexión del calendario", + "booking_confirmation_success": "Confirmación de reserva exitosa", + "booking_rejection_success": "Rechazo de reserva exitoso", + "booking_tentative": "Esta reserva es tentativa", + "booking_accept_intent": "Ups, quiero aceptar", + "we_wont_show_again": "No mostraremos esto de nuevo", + "couldnt_update_timezone": "No pudimos actualizar la zona horaria", + "updated_timezone_to": "Zona horaria actualizada a {{formattedCurrentTz}}", + "update_timezone": "Actualizar zona horaria", + "update_timezone_question": "¿Actualizar zona horaria?", + "update_timezone_description": "Parece que tu zona horaria local ha cambiado a {{formattedCurrentTz}}. Es muy importante tener la zona horaria correcta para evitar reservas en horarios no deseados. ¿Quieres actualizarla?", + "dont_update": "No actualizar", + "require_additional_notes": "Requiere notas adicionales", + "require_additional_notes_description": "Requiere que se llenen notas adicionales al reservar", + "email_address_action": "enviar correo electrónico a una dirección específica", + "after_event_trigger": "después de que termine el evento", + "how_long_after": "¿Cuánto tiempo después de que termine el evento?", + "no_available_slots": "No hay espacios disponibles", + "time_available": "Tiempo disponible", + "cant_find_the_right_conferencing_app_visit_our_app_store": "¿No puedes encontrar la aplicación de conferencias adecuada? Visita nuestra <1>Tienda de Aplicaciones.", + "install_new_calendar_app": "Instalar nueva aplicación de calendario", + "make_phone_number_required": "Hacer que el número de teléfono sea obligatorio para reservar el evento", + "new_event_type_availability": "Disponibilidad de {{eventTypeTitle}}", + "error_editing_availability": "Error al editar la disponibilidad", + "dont_have_permission": "No tienes permiso para acceder a este recurso.", + "saml_config": "SAML", + "saml_configuration_placeholder": "Por favor, pega los metadatos SAML de tu Proveedor de Identidad aquí", + "saml_email_required": "Por favor, ingresa un correo electrónico para que podamos encontrar tu Proveedor de Identidad SAML", + "saml_sp_title": "Detalles del Proveedor de Servicios", + "saml_sp_description": "Tu Proveedor de Identidad (IdP) te pedirá los siguientes detalles para completar la configuración de la aplicación SAML.", + "saml_sp_acs_url": "URL de ACS", + "saml_sp_entity_id": "ID de Entidad SP", + "saml_sp_acs_url_copied": "¡URL de ACS copiada!", + "saml_sp_entity_id_copied": "¡ID de Entidad SP copiada!", + "add_calendar": "Agregar Calendario", + "limit_future_bookings": "Limitar reservas futuras", + "limit_future_bookings_description": "Limitar cuán lejos en el futuro se puede reservar este evento", + "no_event_types": "No hay tipos de eventos configurados", + "no_event_types_description": "{{name}} no ha configurado ningún tipo de evento para que reserves.", + "billing_frequency": "Frecuencia de facturación", + "monthly": "Mensual", + "yearly": "Anual", + "checkout": "Pagar", + "your_team_disbanded_successfully": "Tu equipo se ha disuelto con éxito", + "your_org_disbanded_successfully": "Tu organización se ha disuelto con éxito", + "error_creating_team": "Error al crear el equipo", + "you": "Tú", + "or_continue_with": "O continuar con", + "resend_email": "Reenviar correo electrónico", + "member_already_invited": "El miembro ya ha sido invitado", + "already_in_use_error": "Nombre de usuario ya en uso", + "enter_email_or_username": "Ingresa un correo electrónico o nombre de usuario", + "enter_email": "Ingresa un correo electrónico", + "enter_emails": "Ingresa correos electrónicos", + "too_many_invites": "Estás limitado a invitar a un máximo de {{nbUsers}} usuarios a la vez.", + "team_name_taken": "Este nombre ya está en uso", + "must_enter_team_name": "Debes ingresar un nombre de equipo", + "team_url_required": "Debes ingresar una URL de equipo", + "url_taken": "Esta URL ya está en uso", + "problem_registering_domain": "Hubo un problema al registrar el subdominio, por favor intenta de nuevo o contacta a un administrador", + "team_publish": "Publicar equipo", + "number_text_notifications": "Número de teléfono (Notificaciones por mensaje de texto)", + "number_sms_notifications": "Número de teléfono (notificaciones SMS)", + "attendee_email_variable": "Correo electrónico del asistente", + "attendee_email_info": "Correo electrónico de la persona que reserva", + "kbar_search_placeholder": "Escribe un comando o busca...", + "invalid_credential": "Parece que los permisos expiraron o fueron revocados para {{appName}}.", + "invalid_credential_action": "Reinstalar la aplicación", + "reschedule_reason": "Razón para reprogramar", + "choose_common_schedule_team_event": "Elige un horario común", + "choose_common_schedule_team_event_description": "Habilita esto si deseas usar un horario común entre los anfitriones. Cuando está deshabilitado, cada anfitrión será reservado según su horario predeterminado.", + "reason": "Razón", + "sender_id": "ID del remitente", + "sender_id_error_message": "Solo se permiten letras, números y espacios (máx. 11 caracteres)", + "test_routing_form": "Formulario de prueba de enrutamiento", + "test_preview": "Vista previa de prueba", + "route_to": "Enrutar a", + "test_preview_description": "Prueba tu formulario de enrutamiento sin enviar ningún dato", + "test_routing": "Prueba de enrutamiento", + "payment_app_disabled": "Un administrador ha deshabilitado una aplicación de pago", + "edit_event_type": "Editar tipo de evento", + "only_admin_can_see_members_of_org": "Esta organización es privada, y solo el administrador o propietario de la organización puede ver a sus miembros.", + "only_admin_can_manage_sso_org": "Solo el administrador o propietario de la organización puede gestionar la configuración de SSO", + "collective_scheduling": "Programación colectiva", + "make_it_easy_to_book": "Haz que sea fácil reservar cuando todos estén disponibles.", + "find_the_best_person": "Encuentra a la mejor persona disponible y rota a través de tu equipo.", + "fixed_round_robin": "Round robin fijo", + "add_one_fixed_attendee": "Agrega un asistente fijo y usa round robin con varios asistentes.", + "calcom_is_better_with_team": "{{appName}} es mejor con equipos", + "the_calcom_team": "El equipo de {{companyName}}", + "add_your_team_members": "Agrega a los miembros de tu equipo a tus tipos de eventos. Usa la programación colectiva para incluir a todos o encuentra a la persona más adecuada con la programación round robin.", + "booking_limit_reached": "Se ha alcanzado el límite de reservas para este tipo de evento", + "duration_limit_reached": "Se ha alcanzado el límite de duración para este tipo de evento", + "admin_has_disabled": "Un administrador ha deshabilitado {{appName}}", + "disabled_app_affects_event_type": "Un administrador ha deshabilitado {{appName}}, lo que afecta tu tipo de evento {{eventType}}", + "event_replaced_notice": "Un administrador ha reemplazado uno de tus tipos de eventos", + "email_subject_slug_replacement": "Un administrador del equipo ha reemplazado tu evento /{{slug}}", + "email_body_slug_replacement_notice": "Un administrador del equipo {{teamName}} ha reemplazado tu tipo de evento /{{slug}} con un tipo de evento gestionado que ellos controlan.", + "email_body_slug_replacement_info": "Tu enlace seguirá funcionando, pero es posible que algunos ajustes hayan cambiado. Puedes revisarlo en los tipos de eventos.", + "email_body_slug_replacement_suggestion": "Si tienes alguna pregunta sobre el tipo de evento, por favor contacta a tu administrador.

Feliz programación,
El equipo de Cal.com", + "disable_payment_app": "El administrador ha deshabilitado {{appName}}, lo que afecta tu tipo de evento {{title}}. Los asistentes aún pueden reservar este tipo de evento, pero no se les pedirá que paguen. Puedes ocultar el tipo de evento para evitar esto hasta que tu administrador vuelva a habilitar tu método de pago.", + "payment_disabled_still_able_to_book": "Los asistentes aún pueden reservar este tipo de evento, pero no se les pedirá que paguen. Puedes ocultar el tipo de evento para evitar esto hasta que tu administrador vuelva a habilitar tu método de pago.", + "app_disabled_with_event_type": "El administrador ha deshabilitado {{appName}}, lo que afecta tu tipo de evento {{title}}.", + "app_disabled_video": "El administrador ha deshabilitado {{appName}}, lo que puede afectar tus tipos de eventos. Si tienes tipos de eventos con {{appName}} como ubicación, entonces se cambiará a Cal Video.", + "app_disabled_subject": "{{appName}} ha sido deshabilitado", + "navigate_installed_apps": "Ir a aplicaciones instaladas", + "disabled_calendar": "Si tienes otro calendario instalado, las nuevas reservas se agregarán a él. Si no, conecta un nuevo calendario para no perder ninguna nueva reserva.", + "enable_apps": "Habilitar aplicaciones", + "enable_apps_description": "Habilita aplicaciones que los usuarios pueden integrar con {{appName}}", + "purchase_license": "Comprar una licencia", + "already_have_account": "¿Ya tienes una cuenta?", + "already_have_key": "Ya tengo una clave:", + "already_have_key_suggestion": "Por favor, copia tu variable de entorno CALCOM_LICENSE_KEY existente aquí.", + "app_is_enabled": "{{appName}} está habilitado", + "app_is_disabled": "{{appName}} está deshabilitado", + "keys_have_been_saved": "Las claves han sido guardadas", + "disable_app": "Deshabilitar aplicación", + "disable_app_description": "Deshabilitar esta aplicación podría causar problemas con la interacción de tus usuarios con Cal", + "edit_keys": "Editar claves", + "admin_apps_description": "Habilita aplicaciones para tu instancia de Cal", + "no_available_apps": "No hay aplicaciones disponibles", + "no_available_apps_description": "Por favor, asegúrate de que haya aplicaciones en tu implementación bajo 'packages/app-store'", + "no_apps": "No hay aplicaciones habilitadas en esta instancia de Cal", + "no_apps_configured": "Aún no se ha configurado ninguna aplicación", + "enable_in_settings": "Puedes habilitar las aplicaciones en la configuración", + "please_contact_admin": "Por favor, contacta a tu administrador", + "apps_settings": "Configuración de aplicaciones", + "fill_this_field": "Por favor, completa este campo", + "options": "Opciones", + "enter_option": "Ingresa la opción {{index}}", + "add_an_option": "Agregar una opción", + "location_already_exists": "Esta ubicación ya existe. Por favor, selecciona una nueva ubicación", + "radio": "Radio", + "google_meet_warning": "Para usar Google Meet, debes configurar tu calendario de destino a un Calendario de Google", + "individual": "Individual", + "all_bookings_filter_label": "Todas las reservas", + "all_users_filter_label": "Todos los usuarios", + "all_event_types_filter_label": "Todos los tipos de eventos", + "your_bookings_filter_label": "Tus reservas", + "meeting_url_variable": "URL de la reunión", + "meeting_url_info": "La URL de la conferencia de la reunión del evento", + "date_overrides": "Anulaciones de fecha", + "date_overrides_delete_on_date": "Eliminar anulaciones de fecha el {{date}}", + "date_overrides_subtitle": "Agrega fechas cuando tu disponibilidad cambie de tus horas diarias.", + "date_overrides_info": "Las anulaciones de fecha se archivan automáticamente después de que la fecha ha pasado", + "date_overrides_dialog_which_hours": "¿Qué horas estás libre?", + "date_overrides_dialog_which_hours_unavailable": "¿Qué horas estás ocupado?", + "date_overrides_dialog_title": "Selecciona las fechas para anular", + "date_overrides_unavailable": "No disponible todo el día", + "date_overrides_mark_all_day_unavailable_one": "Marcar como no disponible (Todo el día)", + "date_overrides_mark_all_day_unavailable_other": "Marcar como no disponible en las fechas seleccionadas", + "date_overrides_add_btn": "Agregar excepción", + "date_overrides_update_btn": "Actualizar excepción", + "date_successfully_added": "Excepción de fecha agregada con éxito", + "event_type_duplicate_copy_text": "{{slug}}-copia", + "set_as_default": "Establecer como predeterminado", + "hide_eventtype_details": "Ocultar detalles del tipo de evento", + "show_navigation": "Mostrar navegación", + "hide_navigation": "Ocultar navegación", + "verification_code_sent": "Código de verificación enviado", + "verified_successfully": "Verificado con éxito", + "wrong_code": "Código de verificación incorrecto", + "not_verified": "Aún no verificado", + "no_availability_in_month": "No hay disponibilidad en {{month}}", + "view_next_month": "Ver el próximo mes", + "send_code": "Enviar código", + "number_verified": "Número verificado", + "create_your_first_team_webhook_description": "Crea tu primer webhook para este tipo de evento de equipo", + "create_webhook_team_event_type": "Crear un webhook para este tipo de evento de equipo", + "disable_success_page": "Desactivar página de éxito (solo funciona si tienes una URL de redirección)", + "invalid_admin_password": "Eres administrador pero no tienes una contraseña de al menos 15 caracteres o aún no tienes 2FA", + "change_password_admin": "Cambiar contraseña para obtener acceso de administrador", + "username_already_taken": "El nombre de usuario ya está en uso", + "assignment": "Asignación", + "fixed_hosts": "Anfitriones Fijos", + "add_fixed_hosts": "Agregar anfitriones fijos", + "round_robin_hosts": "Anfitriones Round-Robin", + "minimum_round_robin_hosts_count": "Número de anfitriones requeridos para asistir", + "hosts": "Anfitriones", + "upgrade_to_enable_feature": "Necesitas crear un equipo para habilitar esta función. Haz clic para crear un equipo.", + "orgs_upgrade_to_enable_feature": "Necesitas actualizar a nuestro plan empresarial para habilitar esta función.", + "new_attendee": "Nuevo Asistente", + "awaiting_approval": "En Espera de Aprobación", + "requires_google_calendar": "Esta aplicación requiere una conexión con Google Calendar", + "event_type_requires_google_calendar": "El “Agregar al calendario” para este tipo de evento necesita ser un Google Calendar para que Meet funcione. Conéctalo <1>aquí.", + "connected_google_calendar": "Has conectado una cuenta de Google Calendar.", + "using_meet_requires_calendar": "Usar Google Meet requiere un Google Calendar conectado", + "continue_to_install_google_calendar": "Continúa para instalar Google Calendar", + "install_google_meet": "Instalar Google Meet", + "install_google_calendar": "Instalar Google Calendar", + "sender_name": "Nombre del remitente", + "already_invited": "Asistente ya invitado", + "no_recordings_found": "No se encontraron grabaciones", + "new_workflow_subtitle": "Nuevo flujo de trabajo para...", + "reporting": "Informes", + "reporting_feature": "Ve todos los datos de formularios entrantes y descárgalos como un CSV", + "teams_plan_required": "Se requiere el plan de equipos", + "routing_forms_are_a_great_way": "Los formularios de enrutamiento son una excelente manera de dirigir tus prospectos entrantes a la persona correcta. Actualiza a un plan de equipos para acceder a esta función.", + "choose_a_license": "Elige una licencia", + "choose_license_description": "Cal.com viene con una licencia AGPLv3 accesible y gratuita que tiene limitaciones. Estamos incorporando clientes empresariales para la licencia comercial, sobre la cual puede consultar contactando a ventas a continuación.", + "license": "Licencia", + "agplv3_license": "Licencia AGPLv3", + "no_need_to_keep_your_code_open_source": "No es necesario mantener su código como open source", + "repackage_rebrand_resell": "Reempaquete, rebrandee y revenda fácilmente", + "a_vast_suite_of_enterprise_features": "Una amplia suite de características empresariales", + "free_license_fee": "$0.00/mes", + "forever_open_and_free": "Siempre abierto y gratuito", + "required_to_keep_your_code_open_source": "Requiere mantener su código como open source", + "cannot_repackage_and_resell": "No se puede reempaquetar, rebrandear y revender fácilmente", + "no_enterprise_features": "Sin características empresariales", + "step_enterprise_license": "Licencia Empresarial", + "step_enterprise_license_description": "Todo para un caso de uso comercial con alojamiento privado, reempaquetado, rebranding, reventa y acceso a componentes empresariales exclusivos.", + "setup": "Configuración", + "setup_description": "Configurar instancia de Cal.com", + "configure": "Configurar", + "sso_configuration": "Inicio de Sesión Único (SSO)", + "sso_configuration_description": "Configurar SSO SAML/OIDC y permitir que los miembros del equipo inicien sesión usando un Proveedor de Identidad", + "sso_configuration_description_orgs": "Configurar SSO SAML/OIDC y permitir que los miembros de la organización inicien sesión usando un Proveedor de Identidad", + "sso_oidc_heading": "SSO con OIDC", + "sso_oidc_description": "Configurar SSO OIDC con el Proveedor de Identidad de su elección.", + "sso_oidc_configuration_title": "Configuración de OIDC", + "sso_oidc_configuration_description": "Configurar la conexión OIDC con su proveedor de identidad. Puede encontrar la información requerida en su proveedor de identidad.", + "sso_oidc_callback_copied": "URL de callback copiada", + "sso_saml_heading": "SSO con SAML", + "sso_saml_description": "Configura SAML SSO con el proveedor de identidad de tu elección.", + "sso_saml_configuration_title": "Configuración de SAML", + "sso_saml_configuration_description": "Configura la conexión SAML con tu proveedor de identidad. Puedes encontrar la información requerida en tu proveedor de identidad.", + "sso_saml_acsurl_copied": "URL de ACS copiada", + "sso_saml_entityid_copied": "ID de entidad copiado", + "sso_connection_created_successfully": "Configuración de {{connectionType}} creada exitosamente", + "sso_connection_deleted_successfully": "Configuración de {{connectionType}} eliminada exitosamente", + "delete_sso_configuration": "Eliminar configuración de {{connectionType}}", + "delete_sso_configuration_confirmation": "Sí, eliminar configuración de {{connectionType}}", + "delete_sso_configuration_confirmation_description": "¿Estás seguro de que deseas eliminar la configuración de {{connectionType}}? Los miembros de tu equipo que usan el inicio de sesión de {{connectionType}} ya no podrán acceder a Cal.com.", + "organizer_timezone": "Zona horaria del organizador", + "email_user_cta": "Ver invitación", + "email_no_user_invite_heading_team": "Has sido invitado a unirte a un equipo de {{appName}}", + "email_no_user_invite_heading_subteam": "Has sido invitado a unirte a un equipo de la organización {{parentTeamName}}", + "email_no_user_invite_heading_org": "Has sido invitado a unirte a una organización de {{appName}}", + "email_no_user_invite_subheading": "{{invitedBy}} te ha invitado a unirte a su equipo en {{appName}}. {{appName}} es el programador de eventos que te permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_user_invite_subheading_team": "{{invitedBy}} te ha invitado a unirte a su equipo {{teamName}} en {{appName}}. {{appName}} es el programador de eventos que te permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_user_invite_subheading_subteam": "{{invitedBy}} te ha invitado a unirte al equipo {{teamName}} en su organización {{parentTeamName}} en {{appName}}. {{appName}} es el programador de eventos que te permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_user_invite_subheading_org": "{{invitedBy}} te ha invitado a unirte a su organización {{teamName}} en {{appName}}. {{appName}} es el programador de eventos que te permite a ti y a tu organización agendar reuniones sin el ir y venir de correos electrónicos.", + "email_no_user_invite_steps_intro": "Te guiaremos a través de unos pocos pasos cortos y pronto estarás disfrutando de una programación sin estrés con tu {{entity}}.", + "email_no_user_step_one": "Elige tu nombre de usuario", + "email_no_user_step_two": "Conecta tu cuenta de calendario", + "email_no_user_step_three": "Establece tu disponibilidad", + "email_no_user_step_four": "Únete a {{teamName}}", + "email_no_user_signoff": "¡Feliz programación de parte del equipo de {{appName}}!", + "impersonation_user_tip": "Estás a punto de suplantar a un usuario, lo que significa que puedes hacer cambios en su nombre. Por favor, ten cuidado.", + "available_variables": "Variables disponibles", + "scheduler": "{Scheduler}", + "no_workflows": "No hay flujos de trabajo", + "change_filter": "Cambia el filtro para ver tus flujos de trabajo personales y de equipo.", + "change_filter_common": "Cambia el filtro para ver los resultados.", + "no_results_for_filter": "No hay resultados para el filtro", + "recommended_next_steps": "Próximos pasos recomendados", + "create_a_managed_event": "Crea un tipo de evento gestionado", + "meetings_are_better_with_the_right": "Las reuniones son mejores con los miembros adecuados del equipo. Invítalos ahora.", + "create_a_one_one_template": "Crea una plantilla uno a uno para un tipo de evento y distribúyela a varios miembros.", + "collective_or_roundrobin": "Colectivo o round-robin", + "book_your_team_members": "Reserva a tus miembros del equipo juntos con eventos colectivos o alterna para encontrar a la persona adecuada con round-robin.", + "event_no_longer_attending_subject": "Ya no asistiré a {{title}} el {{date}}", + "no_longer_attending": "Ya no asistirás a este evento", + "attendee_no_longer_attending_subject": "Un asistente ya no asistirá a {{title}} el {{date}}", + "attendee_no_longer_attending": "Un asistente ya no asistirá a tu evento", + "attendee_no_longer_attending_subtitle": "{{name}} ha cancelado. Esto significa que se ha abierto un lugar para este horario", + "create_event_on": "Crear evento en", + "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 usen el enlace de aplicación que configuraste.", + "organizer_default_conferencing_app": "Aplicación predeterminada del organizador", + "under_maintenance": "En mantenimiento", + "under_maintenance_description": "El equipo de {{appName}} está realizando un mantenimiento programado. Si tienes alguna pregunta, por favor contacta al soporte.", + "event_type_seats": "{{numberOfSeats}} asientos", + "booking_questions_title": "Preguntas de reserva", + "booking_questions_description": "Personaliza las preguntas que se hacen en la página de reserva", + "add_a_booking_question": "Agregar una pregunta", + "identifier": "Identificador", + "duplicate_email": "El correo electrónico está duplicado", + "booking_with_payment_cancelled": "Pagar por este evento ya no es posible", + "booking_with_payment_cancelled_already_paid": "Un reembolso para este pago de reserva está en camino.", + "booking_with_payment_cancelled_refunded": "Este pago de reserva ha sido reembolsado.", + "booking_confirmation_failed": "La confirmación de la reserva falló", + "not_enough_seats": "No hay suficientes asientos", + "form_builder_field_already_exists": "Ya existe un campo con este nombre", + "show_on_booking_page": "Mostrar en la página de reserva", + "get_started_zapier_templates": "Comienza con las plantillas de Zapier", + "team_is_unpublished": "{{team}} no está publicado", + "org_is_unpublished_description": "Este enlace de la organización no está disponible actualmente. Por favor, contacta al propietario de la organización o pídele que lo publique.", + "team_is_unpublished_description": "Este enlace del equipo no está disponible actualmente. Por favor, contacta al propietario del equipo o pídele que lo publique.", + "team_member": "Miembro del equipo", + "a_routing_form": "Un formulario de enrutamiento", + "form_description_placeholder": "Descripción del formulario", + "keep_me_connected_with_form": "Mantenerme conectado con el formulario", + "fields_in_form_duplicated": "Cualquier cambio en el enrutador y los campos del formulario duplicado se reflejará en el duplicado.", + "form_deleted": "Formulario eliminado", + "delete_form": "¿Estás seguro de que quieres eliminar este formulario?", + "delete_form_action": "Sí, eliminar formulario", + "delete_form_confirmation": "Cualquiera con quien hayas compartido el enlace ya no podrá acceder a él.", + "delete_form_confirmation_2": "Todas las respuestas asociadas serán eliminadas.", + "typeform_redirect_url_copied": "¡URL de redirección de Typeform copiada! Puedes ir y configurar la URL en el formulario de Typeform.", + "modifications_in_fields_warning": "Las modificaciones en los campos y rutas de los siguientes formularios se reflejarán en este formulario.", + "connected_forms": "Formularios conectados", + "form_modifications_warning": "Los siguientes formularios se verán afectados cuando modifiques campos o rutas aquí.", + "responses_collection_waiting_description": "Espera un tiempo para que se recopilen las respuestas. También puedes ir y enviar el formulario tú mismo.", + "this_is_what_your_users_would_see": "Esto es lo que verán tus usuarios", + "identifies_name_field": "Identifica el campo por este nombre.", + "add_1_option_per_line": "Agrega 1 opción por línea", + "select_a_router": "Selecciona un enrutador", + "add_a_new_route": "Agregar una nueva ruta", + "make_informed_decisions": "Toma decisiones informadas con Insights", + "make_informed_decisions_description": "Nuestro panel de Insights muestra toda la actividad de tu equipo y te muestra tendencias que permiten una mejor programación y toma de decisiones.", + "view_bookings_across": "Ver reservas de todos los miembros", + "view_bookings_across_description": "Ve quién está recibiendo más reservas y asegura la mejor distribución en tu equipo", + "identify_booking_trends": "Identificar tendencias de reservas", + "identify_booking_trends_description": "Ve qué momentos de la semana y qué horas del día son populares para tus reservadores", + "spot_popular_event_types": "Detecta tipos de eventos populares", + "spot_popular_event_types_description": "Ve cuáles de tus tipos de eventos están recibiendo más clics y reservas", + "no_responses_yet": "Aún no hay respuestas", + "no_routes_defined": "No hay rutas definidas", + "this_will_be_the_placeholder": "Este será el marcador de posición", + "error_booking_event": "Ocurrió un error al reservar el evento, por favor actualiza la página e inténtalo de nuevo", + "timeslot_missing_title": "No se ha seleccionado un horario", + "timeslot_missing_description": "Por favor selecciona un horario para reservar el evento.", + "timeslot_missing_cta": "Seleccionar horario", + "switch_monthly": "Cambiar a vista mensual", + "switch_weekly": "Cambiar a vista semanal", + "switch_multiday": "Cambiar a vista diaria", + "switch_columnview": "Cambiar a vista de columnas", + "num_locations": "{{num}} opciones de ubicación", + "select_on_next_step": "Seleccionar en el siguiente paso", + "this_meeting_has_not_started_yet": "Esta reunión aún no ha comenzado", + "this_app_requires_connected_account": "{{appName}} requiere una cuenta conectada de {{dependencyName}}", + "connect_app": "Conectar {{dependencyName}}", + "app_is_connected": "{{dependencyName}} está conectado", + "requires_app": "Requiere {{dependencyName}}", + "verification_code": "Código de verificación", + "can_you_try_again": "¿Puedes intentar de nuevo con un horario diferente?", + "verify": "Verificar", + "timezone_variable": "Zona horaria", + "timezone_info": "La zona horaria de la persona que recibe", + "event_end_time_variable": "Hora de finalización del evento", + "event_end_time_info": "La hora de finalización del evento", + "cancel_url_variable": "URL de cancelación", + "cancel_url_info": "La URL para cancelar la reserva", + "reschedule_url_variable": "URL de reprogramación", + "reschedule_url_info": "La URL para reprogramar la reserva", + "invalid_event_name_variables": "{{item}} es una variable inválida en el nombre de tu evento", + "select_all": "Seleccionar todo", + "default_conferencing_bulk_title": "Actualizar en masa los tipos de eventos existentes", + "members_default_schedule": "Horario predeterminado del miembro", + "set_by_admin": "Establecido por el administrador del equipo", + "members_default_location": "Ubicación predeterminada del miembro", + "members_default_schedule_description": "Usaremos el horario de disponibilidad predeterminado de cada miembro. Ellos podrán editarlo o cambiarlo.", + "requires_at_least_one_schedule": "Se requiere tener al menos un horario", + "default_conferencing_bulk_description": "Actualizar las ubicaciones para los tipos de eventos seleccionados", + "locked_for_members": "Bloqueado para los miembros", + "unlocked_for_members": "Desbloqueado para los miembros", + "apps_locked_for_members_description": "Los miembros podrán ver las aplicaciones activas pero no podrán editar ninguna configuración de la aplicación", + "apps_unlocked_for_members_description": "Los miembros podrán ver las aplicaciones activas y podrán editar cualquier configuración de la aplicación", + "apps_locked_by_team_admins_description": "Podrás ver las aplicaciones activas pero no podrás editar ninguna configuración de la aplicación", + "apps_unlocked_by_team_admins_description": "Podrás ver las aplicaciones activas y podrás editar cualquier configuración de la aplicación", + "workflows_locked_for_members_description": "Los miembros no pueden agregar sus flujos de trabajo personales a este tipo de evento. Los miembros podrán ver los flujos de trabajo del equipo activos pero no podrán editar ninguna configuración del flujo de trabajo.", + "workflows_unlocked_for_members_description": "Los miembros podrán agregar sus flujos de trabajo personales a este tipo de evento. Los miembros podrán ver los flujos de trabajo del equipo activos pero no podrán editar ninguna configuración del flujo de trabajo.", + "workflows_locked_by_team_admins_description": "Podrás ver los flujos de trabajo activos del equipo, pero no podrás editar ninguna configuración de flujo de trabajo ni agregar tus flujos de trabajo personales a este tipo de evento.", + "workflows_unlocked_by_team_admins_description": "Podrás habilitar/deshabilitar flujos de trabajo personales en este tipo de evento. Podrás ver los flujos de trabajo activos del equipo, pero no podrás editar ninguna configuración de flujo de trabajo del equipo.", + "locked_by_team_admin": "Bloqueado por el administrador del equipo", + "app_not_connected": "No has conectado una cuenta de {{appName}}.", + "connect_now": "Conectar ahora", + "managed_event_dialog_confirm_button_one": "Reemplazar y notificar a {{count}} miembro", + "managed_event_dialog_confirm_button_other": "Reemplazar y notificar a {{count}} miembros", + "managed_event_dialog_title_one": "La URL /{{slug}} ya existe para {{count}} miembro. ¿Quieres reemplazarla?", + "managed_event_dialog_title_other": "La URL /{{slug}} ya existe para {{count}} miembros. ¿Quieres reemplazarla?", + "managed_event_dialog_information_one": "{{names}} ya está usando la URL /{{slug}}.", + "managed_event_dialog_information_other": "{{names}} ya están usando la URL /{{slug}}.", + "managed_event_dialog_clarification": "Si decides reemplazarla, les notificaremos. Vuelve atrás y elimínalos si no quieres sobrescribirla.", + "review_event_type": "Revisar Tipo de Evento", + "looking_for_more_analytics": "¿Buscas más análisis?", + "looking_for_more_insights": "¿Buscas más información?", + "filters": "Filtros", + "add_filter": "Agregar filtro", + "remove_filters": "Borrar todos los filtros", + "email_verified": "Correo Electrónico Verificado", + "select_user": "Seleccionar Usuario", + "select_event_type": "Seleccionar Tipo de Evento", + "select_date_range": "Seleccionar Rango de Fechas", + "popular_events": "Eventos Populares", + "no_event_types_found": "No se encontraron tipos de eventos", + "average_event_duration": "Duración Promedio del Evento", + "most_booked_members": "Miembros más reservados", + "least_booked_members": "Miembros menos reservados", + "events_created": "Eventos creados", + "events_completed": "Eventos completados", + "events_cancelled": "Eventos cancelados", + "events_rescheduled": "Eventos reprogramados", + "from_last_period": "del último período", + "from_to_date_period": "De: {{startDate}} A: {{endDate}}", + "redirect_url_warning": "Agregar una redirección deshabilitará la página de éxito. Asegúrate de mencionar \"Reserva confirmada\" en tu página de éxito personalizada.", + "event_trends": "Tendencias de eventos", + "clear_filters": "Limpiar filtros", + "clear": "Limpiar", + "hold": "Retener", + "on_booking_option": "Cobrar pago al reservar", + "hold_option": "Cobrar tarifa por no presentarse", + "card_held": "Tarjeta retenida", + "charge_card": "Cobrar tarjeta", + "card_charged": "Tarjeta cobrada", + "no_show_fee_amount": "Tarifa por no presentarse de {{amount, currency}}", + "no_show_fee": "Tarifa por no presentarse", + "submit_card": "Enviar tarjeta", + "submit_payment_information": "Enviar información de pago", + "meeting_awaiting_payment_method": "Tu reunión está esperando un método de pago", + "no_show_fee_charged_email_subject": "Tarifa por no presentarse de {{amount, currency}} cobrada por {{title}} el {{date}}", + "no_show_fee_charged_text_body": "Se ha cobrado la tarifa por no presentarse", + "no_show_fee_charged_subtitle": "Se ha cobrado una tarifa de no presentación de {{amount, currency}} por el siguiente evento", + "error_charging_card": "Hubo un problema al cobrar la tarifa de no presentación. Por favor, inténtelo de nuevo más tarde.", + "collect_no_show_fee": "Cobrar tarifa de no presentación", + "no_show_fee_charged": "Tarifa de no presentación cobrada", + "insights": "Perspectivas", + "testing_workflow_info_message": "Al probar este flujo de trabajo, tenga en cuenta que los correos electrónicos y SMS solo se pueden programar con al menos 1 hora de anticipación", + "insights_no_data_found_for_filter": "No se encontraron datos para el filtro o las fechas seleccionadas.", + "acknowledge_booking_no_show_fee": "Reconozco que si no asisto a este evento, se aplicará una tarifa de no presentación de {{amount, currency}} a mi tarjeta.", + "card_details": "Detalles de la tarjeta", + "something_went_wrong_on_our_end": "Algo salió mal de nuestro lado. Póngase en contacto con nuestro equipo de soporte y lo solucionaremos de inmediato.", + "please_provide_following_text_to_suppport": "Por favor, proporcione el siguiente texto al contactar con el soporte para ayudarle mejor", + "seats_and_no_show_fee_error": "Actualmente no se pueden habilitar asientos y cobrar una tarifa de no presentación", + "complete_your_booking": "Complete su reserva", + "complete_your_booking_subject": "Complete su reserva: {{title}} el {{date}}", + "confirm_your_details": "Confirme sus datos", + "copy_invite_link": "Copiar enlace de invitación", + "edit_invite_link": "Editar configuración del enlace", + "invite_link_copied": "Enlace de invitación copiado", + "invite_link_deleted": "Enlace de invitación eliminado", + "api_key_deleted": "Clave API eliminada", + "invite_link_updated": "Configuración del enlace de invitación guardada", + "link_expires_after": "Los enlaces están configurados para expirar después de...", + "one_day": "1 día", + "seven_days": "7 días", + "thirty_days": "30 días", + "three_months": "3 meses", + "one_year": "1 año", + "team_invite_received": "Has sido invitado a unirte a {{teamName}}", + "currency_string": "{{amount, currency}}", + "charge_card_dialog_body": "Estás a punto de cobrar al asistente {{amount, currency}}. ¿Estás seguro de que deseas continuar?", + "charge_attendee": "Cobrar al asistente {{amount, currency}}", + "payment_app_commission": "Requiere pago ({{paymentFeePercentage}}% + {{fee, currency}} de comisión por transacción)", + "email_invite_team": "{{email}} ha sido invitado", + "email_invite_team_bulk": "{{userCount}} usuarios han sido invitados", + "error_collecting_card": "Error al recolectar la tarjeta", + "image_size_limit_exceed": "La imagen subida no debe exceder el límite de tamaño de 5 MB", + "unauthorized_workflow_error_message": "{{errorCode}}: No estás autorizado para habilitar o deshabilitar este flujo de trabajo", + "inline_embed": "Incrustación en línea", + "load_inline_content": "Carga tu tipo de evento directamente en línea con el contenido de tu sitio web.", + "floating_pop_up_button": "Botón flotante emergente", + "floating_button_trigger_modal": "Coloca un botón flotante en tu sitio que activa un modal con tu tipo de evento.", + "pop_up_element_click": "Emergente al hacer clic en el elemento", + "open_dialog_with_element_click": "Abre tu calendario como un diálogo cuando alguien hace clic en un elemento.", + "need_help_embedding": "¿Necesitas ayuda? Consulta nuestras guías para incrustar Cal en Wix, Squarespace o WordPress, revisa nuestras preguntas comunes o explora opciones avanzadas de incrustación.", + "book_my_cal": "Reservar mi Cal", + "first_name": "Nombre", + "last_name": "Apellido", + "first_last_name": "Nombre, Apellido", + "invite_as": "Invitar como", + "form_updated_successfully": "Formulario actualizado con éxito.", + "disable_attendees_confirmation_emails": "Desactivar correos electrónicos de confirmación predeterminados para los asistentes", + "disable_attendees_confirmation_emails_description": "Al menos un flujo de trabajo está activo en este tipo de evento que envía una confirmación de reserva a los asistentes.", + "disable_host_confirmation_emails": "Desactivar correos electrónicos de confirmación predeterminados para el anfitrión", + "disable_host_confirmation_emails_description": "Al menos un flujo de trabajo está activo en este tipo de evento que envía un correo electrónico al anfitrión cuando se reserva el evento.", + "add_an_override": "Agregar una anulación", + "import_from_google_workspace": "Importar usuarios desde Google Workspace", + "connect_google_workspace": "Conectar Google Workspace", + "google_workspace_admin_tooltip": "Debes ser un administrador de Workspace para usar esta función", + "first_event_type_webhook_description": "Crea tu primer webhook para este tipo de evento", + "create_instant_meeting_webhook_description": "Crea tu primer webhook con 'Reunión Instantánea Creada' como desencadenante para este tipo de evento", + "install_app_on": "Instalar aplicación en", + "create_for": "Crear para", + "currency": "Moneda", + "organization_banner_description": "Crea entornos donde tus equipos puedan crear aplicaciones compartidas, flujos de trabajo y tipos de eventos con round-robin y programación colectiva.", + "organization_banner_title": "Gestionar organizaciones con múltiples equipos", + "set_up_your_organization": "Configura tu organización", + "set_up_your_platform_organization": "Configura tu plataforma", + "organizations_description": "Las organizaciones son entornos compartidos donde los equipos pueden crear tipos de eventos, aplicaciones, flujos de trabajo y más compartidos.", + "platform_organization_description": "La plataforma de Cal.com te permite integrar la programación sin esfuerzo en tu aplicación utilizando APIs y átomos de la plataforma.", + "must_enter_organization_name": "Debes ingresar un nombre de organización", + "must_enter_organization_admin_email": "Debes ingresar la dirección de correo electrónico de tu organización", + "admin_email": "La dirección de correo electrónico de tu organización", + "platform_admin_email": "Tu dirección de correo electrónico de administrador", + "admin_username": "Nombre de usuario del administrador", + "organization_name": "Nombre de la organización", + "platform_name": "Nombre de la plataforma", + "organization_url": "URL de la organización", + "organization_verify_header": "Verifica el correo electrónico de tu organización", + "organization_verify_email_body": "Por favor, usa el código a continuación para verificar tu dirección de correo electrónico y continuar configurando tu organización.", + "additional_url_parameters": "Parámetros adicionales de URL", + "about_your_organization": "Acerca de tu organización", + "about_your_organization_description": "Las organizaciones son entornos compartidos donde puedes crear múltiples equipos con miembros compartidos, tipos de eventos, aplicaciones, flujos de trabajo y más.", + "create_your_teams": "Crea tus equipos", + "create_your_teams_description": "Comienza a programar juntos agregando a los miembros de tu equipo a tu organización", + "invite_organization_admins": "Invitar a miembros de la organización", + "invite_organization_admins_description": "Invita a otros a unirse a tu organización. Puedes agregar miembros más tarde.", + "set_a_password": "Establecer una contraseña", + "set_a_password_description": "Esto creará una nueva cuenta de usuario con el correo electrónico de tu organización y esta contraseña.", + "organization_logo": "Logo de la organización", + "organization_about_description": "Unas pocas oraciones sobre tu organización. Esto aparecerá en la página de perfil público de tu organización.", + "ill_do_this_later": "Lo haré más tarde", + "verify_your_email": "Verifica tu correo electrónico", + "enter_digit_code": "Ingresa el código de 6 dígitos que enviamos a {{email}}", + "verify_email_organization": "Verifica tu correo electrónico para crear una organización", + "code_provided_invalid": "El código proporcionado no es válido, intenta nuevamente", + "email_already_used": "El correo electrónico ya está en uso", + "organization_admin_invited_heading": "Has sido invitado a unirte a {{orgName}}", + "organization_admin_invited_body": "Únete a tu equipo en {{orgName}} y comienza a enfocarte en las reuniones, ¡no en organizarlas!", + "duplicated_slugs_warning": "Los siguientes equipos no pudieron ser creados debido a slugs duplicados: {{slugs}}", + "team_names_empty": "Los nombres de los equipos no pueden estar vacíos", + "team_names_repeated": "Los nombres de los equipos no pueden repetirse", + "user_belongs_organization": "El usuario pertenece a una organización", + "org_no_teams_yet": "Esta organización aún no tiene equipos", + "org_no_teams_yet_description": "Si eres administrador, asegúrate de crear equipos para que se muestren aquí.", + "set_up": "Configurar", + "my_profile": "Mi Perfil", + "my_settings": "Mis Configuraciones", + "crm": "CRM", + "messaging": "Mensajería", + "sender_id_info": "Nombre o número mostrado como el remitente de un SMS (algunos países no permiten IDs de remitente alfanuméricos)", + "org_admins_can_create_new_teams": "Solo el administrador de tu organización puede crear nuevos equipos", + "google_new_spam_policy": "La nueva política de spam de Google podría impedir que recibas cualquier notificación de correo electrónico y calendario sobre esta reserva.", + "resolve": "Resolver", + "no_organization_slug": "Hubo un error al crear equipos para esta organización. Falta el slug de la URL.", + "copy_link_org": "Copiar enlace a la organización", + "404_the_org": "La organización", + "404_the_team": "El equipo", + "404_claim_entity_org": "Reclama tu subdominio para tu organización", + "404_claim_entity_team": "Reclama este equipo y comienza a gestionar horarios colectivamente", + "insights_team_filter": "Equipo: {{teamName}}", + "insights_user_filter": "Usuario: {{userName}}", + "insights_subtitle": "Ver información de reservas a través de tus eventos", + "location_options": "{{locationCount}} opciones de ubicación", + "custom_plan": "Plan Personalizado", + "email_embed": "Incrustar Email", + "add_times_to_your_email": "Selecciona algunos horarios disponibles e insértalos en tu correo electrónico", + "select_time": "Seleccionar hora", + "select_date": "Seleccionar fecha", + "connecting_you_to_someone": "Te estamos conectando con alguien.", + "please_do_not_close_this_tab": "Por favor, no cierres esta pestaña", + "see_all_available_times": "Ver todos los horarios disponibles", + "org_team_names_example_1": "p. ej. Equipo de Marketing", + "org_team_names_example_2": "p. ej. Equipo de Ventas", + "org_team_names_example_3": "p. ej. Equipo de Diseño", + "org_team_names_example_4": "p. ej. Equipo de Ingeniería", + "org_team_names_example_5": "p. ej. Equipo de Análisis de Datos", + "org_max_team_warnings": "Podrás agregar más equipos más adelante.", + "what_is_this_meeting_about": "¿De qué se trata esta reunión?", + "add_to_team": "Agregar al equipo", + "remove_users_from_org": "Eliminar usuarios de la organización", + "remove_users_from_org_confirm": "¿Estás seguro de que deseas eliminar a {{userCount}} usuarios de esta organización?", + "user_has_no_schedules": "Este usuario no ha configurado ningún horario aún", + "user_isnt_in_any_teams": "Este usuario no está en ningún equipo", + "requires_booker_email_verification": "Requiere verificación del correo electrónico del reservador", + "description_requires_booker_email_verification": "Para asegurar la verificación del correo electrónico del reservador antes de programar eventos", + "requires_confirmation_mandatory": "Los mensajes de texto solo se pueden enviar a los asistentes cuando el tipo de evento requiere confirmación.", + "organizations": "Organizaciones", + "upload_cal_video_logo": "Subir logo de Cal Video", + "update_cal_video_logo": "Actualizar logo de Cal Video", + "upload_banner": "Subir banner", + "cal_video_logo_upload_instruction": "Para asegurar que tu logo sea visible contra el fondo oscuro de Cal video, por favor sube una imagen de color claro en formato PNG o SVG para mantener la transparencia.", + "org_admin_other_teams": "Otros equipos", + "org_admin_other_teams_description": "Aquí puedes ver los equipos dentro de tu organización de los que no formas parte. Puedes agregarte a ellos si es necesario.", + "not_part_of_org": "No formas parte de ninguna organización", + "no_other_teams_found": "No se encontraron otros equipos", + "no_other_teams_found_description": "No hay otros equipos en esta organización.", + "attendee_first_name_variable": "Nombre del asistente", + "attendee_last_name_variable": "Apellido del asistente", + "attendee_first_name_info": "El nombre de pila de la persona que reserva", + "attendee_last_name_info": "El apellido de la persona que reserva", + "your_monthly_digest": "Tu Resumen Mensual", + "member_name": "Nombre del Miembro", + "most_popular_events": "Eventos Más Populares", + "summary_of_events_for_your_team_for_the_last_30_days": "Aquí tienes un resumen de los eventos populares para tu equipo {{teamName}} en los últimos 30 días", + "me": "Yo", + "monthly_digest_email": "Correo Electrónico del Resumen Mensual", + "monthly_digest_email_for_teams": "Correo electrónico del resumen mensual para equipos", + "verify_team_tooltip": "Verifica tu equipo para habilitar el envío de mensajes a los asistentes", + "member_removed": "Miembro eliminado", + "my_availability": "Mi Disponibilidad", + "team_availability": "Disponibilidad del Equipo", + "backup_code": "Código de Respaldo", + "backup_codes": "Códigos de Respaldo", + "backup_code_instructions": "Cada código de respaldo puede ser usado exactamente una vez para otorgar acceso sin tu autenticador.", + "backup_codes_copied": "¡Códigos de respaldo copiados!", + "incorrect_backup_code": "El código de respaldo es incorrecto.", + "lost_access": "Acceso perdido", + "missing_backup_codes": "No se encontraron códigos de respaldo. Por favor, genérelos en su configuración.", + "admin_org_notification_email_subject": "Nueva organización creada: acción pendiente", + "hi_admin": "Hola Administrador", + "admin_org_notification_email_title": "Una organización requiere configuración de DNS", + "admin_org_notification_email_body_part1": "Se creó una organización con el identificador \"{{orgSlug}}\".

Por favor, asegúrese de configurar su registro DNS para apuntar el subdominio correspondiente a la nueva organización hacia donde se está ejecutando la aplicación principal. De lo contrario, la organización no funcionará.

Aquí están solo las opciones básicas para configurar un subdominio para que apunte a su aplicación y cargue la página de perfil de la organización.

Puede hacerlo ya sea con el registro A:", + "admin_org_notification_email_body_part2": "O con el registro CNAME:", + "admin_org_notification_email_body_part3": "Una vez que configure el subdominio, por favor marque la configuración de DNS como completada en la Configuración de Administrador de Organizaciones.", + "admin_org_notification_email_cta": "Ir a Configuración de Administrador de Organizaciones", + "org_has_been_processed": "La organización ha sido procesada", + "org_error_processing": "Hubo un error al procesar esta organización", + "orgs_page_description": "Una lista de todas las organizaciones. Aceptar una organización permitirá que todos los usuarios con ese dominio de correo electrónico se registren SIN verificación de correo electrónico.", + "unverified": "No verificado", + "verified": "Verificado", + "dns_missing": "DNS faltante", + "dns_configured": "DNS configurado", + "mark_dns_configured": "Marcar como DNS configurado", + "value": "Valor", + "your_organization_updated_sucessfully": "Su organización se actualizó con éxito", + "team_no_event_types": "Este equipo no tiene tipos de eventos", + "seat_options_doesnt_multiple_durations": "La opción de asiento no admite múltiples duraciones", + "include_calendar_event": "Incluir evento en el calendario", + "oAuth": "OAuth", + "recently_added": "Recientemente añadido", + "connect_all_calendars": "Conecta todos tus calendarios", + "connect_all_calendars_description": "{{appName}} lee la disponibilidad de todos tus calendarios existentes.", + "workflow_automation": "Automatización de flujos de trabajo", + "workflow_automation_description": "Personaliza tu experiencia de programación con flujos de trabajo", + "scheduling_for_your_team": "Automatización de flujos de trabajo", + "scheduling_for_your_team_description": "Programa para tu equipo con programación colectiva y round-robin", + "no_members_found": "No se encontraron miembros", + "directory_sync": "Sincronización de directorio", + "directory_name": "Nombre del directorio", + "directory_provider": "Proveedor de directorio", + "directory_scim_url": "URL base de SCIM", + "directory_scim_token": "Token de portador SCIM", + "directory_scim_url_copied": "URL base de SCIM copiada", + "directory_scim_token_copied": "Token de portador SCIM copiado", + "directory_sync_info_description": "Tu proveedor de identidad solicitará la siguiente información para configurar SCIM. Sigue las instrucciones para finalizar la configuración.", + "directory_sync_configure": "Configurar sincronización de directorio", + "directory_sync_configure_description": "Elige un proveedor de identidad para configurar el directorio para tu equipo.", + "directory_sync_title": "Configura un proveedor de identidad para comenzar con SCIM.", + "directory_sync_created": "Conexión de sincronización de directorio creada.", + "directory_sync_description": "Provisiona y desprovisiona usuarios con tu proveedor de directorio.", + "directory_sync_deleted": "Conexión de sincronización de directorio eliminada.", + "directory_sync_delete_connection": "Eliminar conexión", + "directory_sync_delete_title": "Eliminar conexión de sincronización de directorio", + "directory_sync_delete_description": "¿Estás seguro de que deseas eliminar esta conexión de sincronización de directorio?", + "directory_sync_delete_confirmation": "Esta acción no se puede deshacer. Esto eliminará permanentemente la conexión de sincronización de directorio.", + "event_setup_length_error": "Configuración del evento: La duración debe ser de al menos 1 minuto.", + "availability_schedules": "Horarios de disponibilidad", + "unauthorized": "No autorizado", + "access_cal_account": "{{clientName}} desea acceder a tu cuenta de {{appName}}", + "select_account_team": "Selecciona cuenta o equipo", + "allow_client_to": "Esto permitirá a {{clientName}}", + "associate_with_cal_account": "Asociarte con tu información personal de {{clientName}}", + "see_personal_info": "Ver tu información personal, incluyendo cualquier información personal que hayas hecho pública", + "see_primary_email_address": "Ver tu dirección de correo electrónico principal", + "connect_installed_apps": "Conectarse a tus aplicaciones instaladas", + "access_event_type": "Leer, editar, eliminar tus tipos de eventos", + "access_availability": "Leer, editar, eliminar tu disponibilidad", + "access_bookings": "Leer, editar, eliminar tus reservas", + "allow_client_to_do": "¿Permitir a {{clientName}} hacer esto?", + "oauth_access_information": "Al hacer clic en permitir, permites que esta aplicación use tu información de acuerdo con sus términos de servicio y política de privacidad. Puedes eliminar el acceso en la tienda de aplicaciones de {{appName}}.", + "oauth_form_title": "Formulario de creación de cliente OAuth", + "oauth_form_description": "Este es el formulario para crear un nuevo cliente OAuth", + "allow": "Permitir", + "view_only_edit_availability_not_onboarded": "Este usuario no ha completado el proceso de incorporación. No podrás establecer su disponibilidad hasta que haya completado la incorporación.", + "view_only_edit_availability": "Estás viendo la disponibilidad de este usuario. Solo puedes editar tu propia disponibilidad.", + "you_can_override_calendar_in_advanced_tab": "Puedes anular esto por evento en la configuración avanzada de cada tipo de evento.", + "edit_users_availability": "Editar la disponibilidad del usuario: {{username}}", + "resend_invitation": "Reenviar invitación", + "invitation_resent": "La invitación fue reenviada.", + "saml_sso": "SAML", + "add_client": "Agregar cliente", + "copy_client_secret_info": "Después de copiar el secreto, no podrás verlo nuevamente", + "add_new_client": "Agregar nuevo cliente", + "this_app_is_not_setup_already": "Esta aplicación aún no ha sido configurada", + "as_csv": "como CSV", + "overlay_my_calendar": "Superponer mi calendario", + "overlay_my_calendar_toc": "Al conectar tu calendario, aceptas nuestra política de privacidad y términos de uso. Puedes revocar el acceso en cualquier momento.", + "view_overlay_calendar_events": "Ver los eventos de tu calendario para evitar reservas duplicadas.", + "join_event_location": "Unirse a {{eventLocationType}}", + "troubleshooting": "Solución de problemas", + "calendars_were_checking_for_conflicts": "Calendarios que estamos revisando para conflictos", + "availabilty_schedules": "Horarios de disponibilidad", + "manage_calendars": "Gestionar calendarios", + "manage_availability_schedules": "Gestionar horarios de disponibilidad", + "locked": "Bloqueado", + "unlocked": "Desbloqueado", + "lock_timezone_toggle_on_booking_page": "Bloquear zona horaria en la página de reservas", + "description_lock_timezone_toggle_on_booking_page": "Para bloquear la zona horaria en la página de reservas, útil para eventos presenciales.", + "event_setup_multiple_payment_apps_error": "Solo puedes tener una aplicación de pago habilitada por tipo de evento.", + "number_in_international_format": "Por favor, ingresa el número en formato internacional.", + "install_calendar": "Instalar calendario", + "branded_subdomain": "Subdominio con marca", + "branded_subdomain_description": "Obtén tu propio subdominio con marca, como acme.cal.com", + "org_insights": "Información a nivel organizacional", + "org_insights_description": "Entiende cómo tu organización está utilizando el tiempo", + "extensive_whitelabeling": "Etiquetado Blanco Extensivo", + "extensive_whitelabeling_description": "Personaliza tu experiencia de programación con tu propio logo, colores y más", + "unlimited_teams": "Equipos Ilimitados", + "unlimited_teams_description": "Agrega tantos subequipos como necesites a tu organización", + "unified_billing": "Facturación Unificada", + "unified_billing_description": "Agrega una sola tarjeta de crédito para pagar todas las suscripciones de tu equipo", + "advanced_managed_events": "Tipos de Eventos Avanzados Gestionados", + "advanced_managed_events_description": "Agrega una sola tarjeta de crédito para pagar todas las suscripciones de tu equipo", + "enterprise_description": "Actualiza a Enterprise para crear tu Organización", + "create_your_org": "Crea tu Organización", + "create_your_org_description": "Actualiza a Organizaciones y recibe un subdominio, facturación unificada, Insights, etiquetado blanco extensivo y más", + "create_your_enterprise_description": "Actualiza a Enterprise y obtén acceso a la sincronización de Active Directory, aprovisionamiento automático de usuarios SCIM, agentes de voz Cal.ai, APIs de administración y más", + "other_payment_app_enabled": "Solo puedes habilitar una aplicación de pago por tipo de evento", + "admin_delete_organization_description": "
  • Los equipos que son miembros de esta organización también serán eliminados junto con sus tipos de eventos
  • Los usuarios que formaban parte de la organización no serán eliminados, pero sus nombres de usuario se cambiarán para permitirles existir fuera de la organización
  • Los tipos de eventos creados por el usuario después de que estaba en la organización serán eliminados
  • Los tipos de eventos de usuario migrados no serán eliminados
", + "admin_delete_organization_title": "¿Eliminar {{organizationName}}?", + "published": "Publicado", + "unpublished": "No Publicado", + "publish": "Publicar", + "org_publish_error": "No se pudo publicar la organización", + "troubleshooter_tooltip": "Abre el solucionador de problemas y descubre qué está mal con tu horario", + "need_help": "¿Necesitas ayuda?", + "troubleshooter": "Solucionador de Problemas", + "number_to_call": "Número a Llamar", + "guest_name": "Nombre del Invitado", + "guest_email": "Correo Electrónico del Invitado", + "guest_company": "Empresa Invitada", + "please_install_a_calendar": "Por favor, instala un calendario", + "instant_tab_title": "Reserva Instantánea", + "instant_event_tab_description": "Permite que las personas reserven de inmediato", + "uprade_to_create_instant_bookings": "Actualiza a Enterprise y permite que los invitados se unan a una llamada instantánea a la que los asistentes puedan entrar directamente. Esto es solo para tipos de eventos de equipo", + "dont_want_to_wait": "¿No quieres esperar?", + "meeting_started": "Reunión Iniciada", + "pay_and_book": "Pagar para reservar", + "cal_ai_event_tab_description": "Permite que Agentes de IA reserven por ti", + "booking_not_found_error": "No se pudo encontrar la reserva", + "booking_seats_full_error": "No hay asientos disponibles para la reserva", + "missing_payment_credential_error": "Faltan credenciales de pago", + "missing_payment_app_id_error": "Falta el ID de la aplicación de pago", + "not_enough_available_seats_error": "La reserva no tiene suficientes asientos disponibles", + "user_redirect_title": "{{username}} está ausente por un breve período de tiempo.", + "user_redirect_description": "Mientras tanto, {{profile.username}} se encargará de todas las nuevas reuniones programadas en nombre de {{username}}.", + "out_of_office": "Fuera de la oficina", + "out_of_office_description": "Informa a tus reservadores cuando estés fuera de la oficina.", + "send_request": "Enviar solicitud", + "start_date_and_end_date_required": "Se requieren la fecha de inicio y la fecha de finalización", + "start_date_must_be_before_end_date": "La fecha de inicio debe ser antes de la fecha de finalización", + "start_date_must_be_in_the_future": "La fecha de inicio debe estar en el futuro", + "user_not_found": "Usuario no encontrado", + "out_of_office_entry_already_exists": "La entrada de fuera de la oficina ya existe", + "out_of_office_id_required": "Se requiere el ID de la entrada de fuera de la oficina", + "booking_redirect_infinite_not_allowed": "Ya existe una redirección de reservas de ese usuario hacia ti.", + "success_entry_created": "Entrada creada exitosamente", + "booking_redirect_email_subject": "Notificación de redirección de reservas", + "booking_redirect_email_title": "Notificación de Redirección de Reservas", + "booking_redirect_email_description": "Has recibido una redirección de reservas de {{toName}}, por lo que los enlaces de su perfil se redirigirán al tuyo durante el intervalo de tiempo: ", + "success_accept_booking_redirect": "Has aceptado esta solicitud de redirección de reservas.", + "success_reject_booking_redirect": "Has rechazado esta solicitud de redirección de reservas.", + "copy_link_booking_redirect_request": "Copiar enlace para compartir solicitud", + "booking_redirect_request_title": "Solicitud de Redirección de Reservas", + "select_team_member": "Seleccionar miembro del equipo", + "going_away_title": "¿Te vas? Simplemente marca el enlace de tu perfil como no disponible por un período de tiempo.", + "redirect_team_enabled": "Proporciona un enlace a un miembro del equipo cuando estés fuera de la oficina", + "redirect_team_disabled": "Proporciona un enlace a un miembro del equipo cuando estés fuera de la oficina (Se requiere plan de equipo)", + "out_of_office_unavailable_list": "Lista de no disponibilidad fuera de la oficina", + "success_deleted_entry_out_of_office": "Entrada eliminada exitosamente", + "temporarily_out_of_office": "¿Fuera de la oficina temporalmente?", + "add_a_redirect": "Agregar una redirección", + "create_entry": "Crear entrada", + "time_range": "Rango de tiempo", + "automatically_add_all_team_members": "Agregar a todos los miembros del equipo, incluidos los futuros", + "redirect_to": "Redirigir a", + "having_trouble_finding_time": "¿Tienes problemas para encontrar un horario?", + "show_more": "Mostrar más", + "forward_params_redirect": "Reenviar parámetros como ?email=...&name=... y más", + "assignment_description": "Programa reuniones cuando todos estén disponibles o rota entre los miembros de tu equipo", + "lowest": "más bajo", + "low": "bajo", + "medium": "medio", + "high": "alto", + "Highest": "más alto", + "send_booker_to": "Enviar al reservador a", + "set_priority": "Establecer prioridad", + "set_weight": "Establecer peso", + "enable_weights": "Habilitar pesos", + "priority_for_user": "Prioridad para {{userName}}", + "weights_description": "Los pesos determinan cómo se distribuyen las reuniones entre los anfitriones. <1>Aprende más", + "weight_for_user": "Peso para {{userName}}", + "change_priority": "cambiar prioridad", + "field_identifiers_as_variables": "Usa identificadores de campo como variables para tu redirección de evento personalizada", + "field_identifiers_as_variables_with_example": "Usa identificadores de campo como variables para tu redirección de evento personalizada (p. ej., {{variable}})", + "account_already_linked": "La cuenta ya está vinculada", + "send_email": "Enviar correo electrónico", + "mark_as_no_show": "Marcar como no presentado", + "unmark_as_no_show": "Desmarcar como no presentado", + "account_unlinked_success": "Cuenta desvinculada con éxito", + "account_unlinked_error": "Hubo un error al desvincular la cuenta", + "travel_schedule": "Horario de viaje", + "travel_schedule_description": "Planifica tu viaje con anticipación para mantener tu horario existente en una zona horaria diferente y evitar ser reservado a medianoche.", + "schedule_timezone_change": "Programar cambio de zona horaria", + "date": "Fecha", + "overlaps_with_existing_schedule": "Esto se superpone con un horario existente. Por favor, seleccione una fecha diferente.", + "org_admin_no_slots|subject": "No se encontró disponibilidad para {{name}}", + "org_admin_no_slots|heading": "No se encontró disponibilidad para {{name}}", + "org_admin_no_slots|content": "Hola Administradores de la Organización,

Por favor, tomen nota: Se nos ha informado que {{username}} no ha tenido disponibilidad cuando un usuario ha visitado {{username}}/{{slug}}

Hay algunas razones por las que esto podría estar sucediendo:
El usuario no tiene ningún calendario conectado
Sus horarios adjuntos a este evento no están habilitados

Recomendamos verificar su disponibilidad para resolver esto.", + "org_admin_no_slots|cta": "Abrir disponibilidad de usuarios", + "organization_no_slots_notification_switch_title": "Recibir notificaciones cuando tu equipo no tenga disponibilidad", + "organization_no_slots_notification_switch_description": "Los administradores recibirán notificaciones por correo electrónico cuando un usuario intente reservar con un miembro del equipo y se enfrente a 'Sin disponibilidad'. Enviamos este correo después de dos ocurrencias y te recordamos cada 7 días por usuario.", + "email_team_invite|subject|added_to_org": "{{user}} te agregó a la organización {{team}} en {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} te invitó a unirte a la organización {{team}} en {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} te agregó al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} te invitó a unirte al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", + "email_team_invite|subject|invited_to_regular_team": "{{user}} te invitó a unirte al equipo {{team}} en {{appName}}", + "email_team_invite|heading|added_to_org": "Has sido agregado a una organización de {{appName}}", + "email_team_invite|heading|invited_to_org": "Has sido invitado a una organización de {{appName}}", + "email_team_invite|heading|added_to_subteam": "Has sido agregado a un equipo de la organización {{parentTeamName}}", + "email_team_invite|heading|invited_to_subteam": "Has sido invitado a un equipo de la organización {{parentTeamName}}", + "email_team_invite|heading|invited_to_regular_team": "Has sido invitado a unirte a un equipo de {{appName}}", + "email_team_invite|content|added_to_org": "{{invitedBy}} te ha agregado a la organización {{teamName}}.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} te ha invitado a unirte a la organización {{teamName}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} te ha agregado al equipo {{teamName}} en su organización {{parentTeamName}}. {{appName}} es el programador de eventos que permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} te ha invitado a unirte al equipo {{teamName}} en su organización {{parentTeamName}}. {{appName}} es el programador de eventos que permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} te ha invitado a unirte a su equipo {{teamName}} en {{appName}}. {{appName}} es el programador de eventos que permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email|existing_user_added_link_will_change": "Al aceptar la invitación, tu enlace cambiará al dominio de tu organización, pero no te preocupes, todos los enlaces anteriores seguirán funcionando y redirigirán adecuadamente.

Por favor, ten en cuenta: Todos tus tipos de eventos personales se moverán a la organización {teamName}, lo que también puede incluir un enlace personal potencial.

Para eventos personales, recomendamos crear una nueva cuenta con una dirección de correo electrónico personal.", + "email|existing_user_added_link_changed": "Tu enlace ha cambiado de {prevLinkWithoutProtocol} a {newLinkWithoutProtocol}, pero no te preocupes, todos los enlaces anteriores siguen funcionando y redirigen adecuadamente.

Por favor, ten en cuenta: Todos tus tipos de eventos personales se han movido a la organización {teamName}, lo que también puede incluir un enlace personal potencial.

Por favor, inicia sesión y asegúrate de no tener eventos privados en tu nueva cuenta organizacional.

Para eventos personales, recomendamos crear una nueva cuenta con una dirección de correo electrónico personal.

Disfruta de tu nuevo enlace limpio: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Tu organización ha sido creada", + "your_current_plan": "Tu plan actual", + "organization_price_per_user_month": "$37 por usuario al mes (mínimo 30 asientos)", + "privacy_organization_description": "Gestiona la configuración de privacidad de tu organización", + "privacy": "Privacidad", + "team_will_be_under_org": "Los nuevos equipos estarán bajo tu organización", + "add_group_name": "Agregar nombre del grupo", + "group_name": "Nombre del grupo", + "routers": "Routers", + "primary": "Primario", + "make_primary": "Hacer primario", + "add_email": "Agregar correo electrónico", + "add_emails": "Agregar correos electrónicos", + "add_email_description": "Agrega una dirección de correo electrónico para reemplazar tu principal o usarla como un correo alternativo en tus tipos de eventos.", + "confirm_email": "Confirma tu correo electrónico", + "scheduler_first_name": "El nombre de la persona que reserva", + "scheduler_last_name": "El apellido de la persona que reserva", + "scheduler_name": "Nombre del reservador", + "organizer_first_name": "Tu nombre", + "confirm_email_description": "Enviamos un correo electrónico a {{email}}. Haz clic en el enlace del correo para verificar esta dirección.", + "send_event_details_to": "Enviar detalles del evento a", + "schedule_tz_without_end_date": "Programar zona horaria sin fecha de finalización", + "select_members": "Seleccionar miembros", + "lock_event_types_modal_header": "¿Qué debemos hacer con los tipos de eventos existentes de tu miembro?", + "org_delete_event_types_org_admin": "Todos los tipos de eventos individuales de tus miembros (excepto los gestionados) serán eliminados permanentemente. No podrán crear nuevos.", + "org_hide_event_types_org_admin": "Los tipos de eventos individuales de sus miembros estarán ocultos (excepto los gestionados) en los perfiles, pero los enlaces seguirán activos. No podrán crear nuevos.", + "hide_org_eventtypes": "Ocultar tipos de eventos individuales", + "delete_org_eventtypes": "Eliminar tipos de eventos individuales", + "lock_org_users_eventtypes": "Bloquear la creación de tipos de eventos individuales", + "lock_org_users_eventtypes_description": "Evitar que los miembros creen sus propios tipos de eventos.", + "add_to_event_type": "Agregar al tipo de evento", + "create_account_password": "Crear contraseña de cuenta", + "error_creating_account_password": "Error al crear la contraseña de la cuenta", + "cannot_create_account_password_cal_provider": "No se puede crear la contraseña de la cuenta para cuentas cal", + "cannot_create_account_password_already_existing": "No se puede crear la contraseña de la cuenta para las ya creadas", + "create_account_password_hint": "No tienes una contraseña de cuenta, crea una navegando a Seguridad -> Contraseña. No puedes desconectarte hasta que se cree una contraseña de cuenta.", + "disconnect_account": "Desconectar cuenta conectada", + "disconnect_account_hint": "Desconectar tu cuenta conectada cambiará la forma en que inicias sesión. Solo podrás iniciar sesión en tu cuenta usando correo electrónico + contraseña", + "cookie_consent_checkbox": "Consiento nuestra política de privacidad y el uso de cookies", + "make_a_call": "Hacer una llamada", + "skip_rr_assignment_label": "Omitir asignación round robin si el contacto existe en Salesforce", + "skip_rr_description": "La URL debe contener el correo electrónico del contacto como parámetro, ej. ?email=contactEmail", + "select_account_header": "Seleccionar cuenta", + "select_account_description": "Instala {{appName}} en tu cuenta personal o en una cuenta de equipo.", + "select_event_types_header": "Seleccionar tipos de eventos", + "select_event_types_description": "¿En qué tipo de evento deseas instalar {{appName}}?", + "configure_app_header": "Configurar {{appName}}", + "configure_app_description": "Finaliza la configuración de la aplicación. Puedes cambiar estos ajustes más tarde.", + "already_installed": "ya instalado", + "ooo_reasons_unspecified": "No especificado", + "ooo_reasons_vacation": "Vacaciones", + "ooo_reasons_travel": "Viaje", + "ooo_reasons_sick_leave": "Licencia por enfermedad", + "ooo_reasons_public_holiday": "Feriado", + "ooo_forwarding_to": "Reenviando a {{username}}", + "ooo_not_forwarding": "Sin reenvío", + "ooo_empty_title": "Crear un OOO", + "ooo_empty_description": "Comunica a tus reservadores cuando no estés disponible para tomar reservas. Ellos aún pueden reservarte para cuando regreses o puedes reenviarlos a un miembro del equipo.", + "ooo_user_is_ooo": "{{displayName}} está fuera de la oficina", + "ooo_slots_returning": "<0>{{displayName}} puede tomar sus reuniones mientras está fuera.", + "ooo_slots_book_with": "Reservar con {{displayName}}", + "ooo_create_entry_modal": "Salir de la oficina", + "ooo_select_reason": "Seleccionar motivo", + "create_an_out_of_office": "Salir de la oficina", + "submit_feedback": "Enviar comentarios", + "host_no_show": "Tu anfitrión no se presentó", + "no_show_description": "Puedes reprogramar otra reunión con ellos", + "how_can_we_improve": "¿Cómo podemos mejorar nuestro servicio?", + "most_liked": "¿Qué te gustó más?", + "review": "Reseña", + "reviewed": "Reseñado", + "unreviewed": "Sin reseñar", + "rating_url_info": "La URL para el formulario de comentarios de calificación", + "no_show_url_info": "La URL para comentarios de no presentación", + "no_support_needed": "¿No necesitas soporte?", + "hide_support": "Ocultar soporte", + "event_ratings": "Calificaciones promedio", + "event_no_show": "Anfitrión no se presentó", + "recent_ratings": "Calificaciones recientes", + "no_ratings": "No se han enviado calificaciones", + "no_ratings_description": "Agrega un flujo de trabajo con 'Calificación' para recopilar calificaciones después de las reuniones", + "most_no_show_host": "Miembros con más ausencias", + "highest_rated_members": "Miembros con reuniones mejor calificadas", + "lowest_rated_members": "Miembros con reuniones peor calificadas", + "csat_score": "Puntuación CSAT", + "lockedSMS": "SMS bloqueado", + "leave_without_assigning_anyone": "¿Salir sin asignar a nadie?", + "leave_without_adding_attendees": "¿Estás seguro de que quieres salir de este evento sin agregar asistentes?", + "no_availability_shown_to_bookers": "Si no asignas a nadie para este evento, no habrá disponibilidad mostrada a los reservadores.", + "go_back_and_assign": "Regresar y asignar", + "leave_without_assigning": "Salir sin asignar", + "signing_up_terms": "Al continuar, aceptas nuestros <0>Términos y <1>Política de privacidad.", + "always_show_x_days": "Siempre {{x}} días disponibles", + "unable_to_subscribe_to_the_platform": "Ocurrió un error al intentar suscribirse al plan de la plataforma, por favor intenta de nuevo más tarde", + "updating_oauth_client_error": "Ocurrió un error al actualizar el cliente OAuth, por favor intenta de nuevo más tarde", + "creating_oauth_client_error": "Ocurrió un error al crear el cliente OAuth, por favor intenta de nuevo más tarde", + "event_type_color": "Color del tipo de evento", + "event_type_color_description": "Esto solo se usa para diferenciar tipos de eventos y reservas dentro de la aplicación. No se muestra a los reservadores.", + "mark_as_no_show_title": "Marcar como no presentado", + "x_marked_as_no_show": "{{x}} marcado como no presentado", + "x_unmarked_as_no_show": "{{x}} desmarcado como no-show", + "team_select_info": "disparadores para todos los tipos de eventos del equipo y todos los tipos de eventos personales de los miembros del equipo", + "no_show_updated": "Estado de no-show actualizado para los asistentes", + "email_copied": "Correo electrónico copiado", + "USER_PENDING_MEMBER_OF_THE_ORG": "El usuario es un miembro pendiente de la organización", + "USER_ALREADY_INVITED_OR_MEMBER": "El usuario ya está invitado o es miembro", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "El usuario es miembro de una organización de la que este equipo no forma parte.", + "booking_reassigned": "La reserva ha sido reasignada", + "reassign": "Reasignar", + "reassign_to_another_rr_host": "Reasignar la reserva a otro anfitrión disponible de round robin", + "assign_team_member": "Asignar miembro del equipo", + "override_team_member_to_assign": "Anular la asignación del miembro del equipo que desea asignar.", + "no_available_hosts": "No hay anfitriones disponibles", + "reassign_round_robin_host": "Reasignar anfitrión de round robin", + "skip_writing_to_calendar": "No escribir en el feed ICS", + "rescheduling_not_possible": "No es posible reprogramar ya que el evento ha expirado", + "event_expired": "Este evento ha expirado", + "skip_contact_creation": "Omitir la creación de contactos si no existen en {{appName}}", + "skip_writing_to_calendar_note": "Si su enlace ICS es de solo lectura (por ejemplo, Proton Calendar), marque la casilla de arriba para evitar errores. También deberá actualizar manualmente su calendario para los cambios.", + "attributes": "Atributos", + "new_attribute": "Nuevo atributo", + "add_attributes": "Agregar atributos", + "add_attributes_description": "Agregar atributos a los miembros de su equipo", + "new_option": "Nueva opción", + "update_profile": "Actualizar miembro", + "attribute_updated_successfully": "Atributo actualizado con éxito", + "attributes_edited_successfully": "Atributos editados con éxito", + "attribute_meta_description": "Gestiona los atributos de los miembros de tu equipo", + "attributes_edit_description": "Edita los atributos de los miembros de tu equipo", + "back_to_attributes": "Volver a atributos", + "delete_attribute": "¿Estás seguro de que deseas eliminar esta opción?", + "delete_attribute_description": "Esta opción está asignada a {{numberOfUsers}} miembros. Eliminarla la quitará de su perfil.", + "disable_all_emails_to_attendees": "Desactivar correos electrónicos estándar a los asistentes relacionados con este tipo de evento", + "disable_all_emails_description": "Desactiva la comunicación por correo electrónico estándar relacionada con este tipo de evento, incluidas las confirmaciones de reserva, recordatorios y cancelaciones.", + "disable_all_emails_to_hosts": "Desactivar correos electrónicos estándar a los anfitriones relacionados con este tipo de evento", + "type_confirm_to_continue": "Escribe confirmar para continuar", + "disable_email": "Desactivar correo electrónico", + "grant_admin_api": "Conceder acceso a la API de administrador", + "revoke_admin_api": "Revocar acceso a la API de administrador", + "apple_connect_atom_label": "Conectar Calendario de Apple", + "apple_connect_atom_already_connected_label": "Calendario de Apple conectado", + "apple_connect_atom_loading_label": "Verificando Calendario de Apple", + "google_connect_atom_label": "Conectar Calendario de Google", + "google_connect_atom_already_connected_label": "Calendario de Google conectado", + "google_connect_atom_loading_label": "Verificando Calendario de Google", + "outlook_connect_atom_label": "Conectar Calendario de Outlook", + "outlook_connect_atom_already_connected_label": "Calendario de Outlook conectado", + "outlook_connect_atom_loading_label": "Verificando Calendario de Outlook", + "booking_question_response_variables": "Variables de respuesta de preguntas de reserva", + "managed_by_teamAdmins": "Gestionado por {{teamAdmins}}", + "number_of_options": "{{count}} opciones", + "reschedule_with_same_round_robin_host_title": "Reprogramar con el mismo anfitrión de Round-Robin", + "reschedule_with_same_round_robin_host_description": "Los eventos reprogramados se asignarán al mismo anfitrión que se programó inicialmente", + "disable_input_if_prefilled": "Desactivar entrada si el identificador de URL está prellenado", + "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Agrega tus nuevas cadenas arriba de esta línea ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" +} diff --git a/apps/web/public/static/locales/es/common.json b/apps/web/public/static/locales/es/common.json index e61367c15a5675..ddc7fff053be68 100644 --- a/apps/web/public/static/locales/es/common.json +++ b/apps/web/public/static/locales/es/common.json @@ -7,16 +7,27 @@ "second_other": "{{count}} segundos", "upgrade_now": "Actualizar ahora", "accept_invitation": "Aceptar invitación", + "max_characters": "Máx. caracteres", + "min_characters": "Mín. caracteres", "calcom_explained": "{{appName}} proporciona una infraestructura de programación para absolutamente todo el mundo.", "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_verifying_email": "{{appName}}: Verifica tu correo electrónico", "check_your_email": "Revise su correo electrónico", + "old_email_address": "Correo electrónico antiguo", + "new_email_address": "Correo electrónico nuevo", "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", + "cal_ai_assistant": "Asistente AI de Cal", + "verify_email_change_description": "Recientemente has solicitado cambiar la dirección de correo electrónico que usas para iniciar sesión en tu cuenta de {{appName}}. Por favor, haz clic en el botón de abajo para confirmar tu nueva dirección de correo electrónico.", + "verify_email_change_success_toast": "Se ha actualizado tu correo electrónico a {{email}}", + "verify_email_change_failure_toast": "No se pudo actualizar el correo electrónico.", + "change_of_email": "Verifica tu nuevo correo electrónico de {{appName}}", + "change_of_email_toast": "Hemos enviado un enlace de verificación a {{email}}. Actualizaremos tu dirección de correo electrónico una vez que hagas clic en este enlace.", "copy_somewhere_safe": "Guarde esta clave API en algún lugar seguro. No podrá volver a verla.", "verify_email_email_body": "Verifique su dirección de correo electrónico al hacer clic en el botón a continuación.", "verify_email_by_code_email_body": "Verifique su dirección de correo electrónico al hacer clic en el botón a continuación.", @@ -36,6 +47,7 @@ "no_options_available": "No hay opciones disponibles", "cancellation_reason": "Motivo de la cancelación (opcional)", "cancellation_reason_placeholder": "¿Por qué razón está cancelando?", + "rejection_reason_placeholder": "¿Por qué estás rechazando?", "rejection_reason": "Motivo del rechazo", "rejection_reason_title": "¿Rechazar la solicitud de reserva?", "rejection_reason_description": "¿Estás seguro de que deseas rechazar la reserva? Le haremos saber a la persona que ha intentado reservar. Puedes indicar una razón a continuación.", @@ -56,6 +68,19 @@ "a_refund_failed": "Un reembolso falló", "awaiting_payment_subject": "Esperando pago: {{title}} en {{date}}", "meeting_awaiting_payment": "Su reunión está a la espera de pago", + "dark_theme_contrast_error": "El color del tema oscuro no pasa la verificación de contraste. Recomendamos cambiar este color para que tus botones sean más visibles.", + "light_theme_contrast_error": "El color del tema claro no pasa la verificación de contraste. Recomendamos cambiar este color para que tus botones sean más visibles.", + "event_type_color_light_theme_contrast_error": "El color del tema claro no pasa la verificación de contraste. Recomendamos cambiar este color para que el color de tus tipos de eventos sea más visible.", + "event_type_color_dark_theme_contrast_error": "El color del tema oscuro no pasa la verificación de contraste. Recomendamos cambiar este color para que el color de tus tipos de eventos sea más visible.", + "payment_not_created_error": "No se pudo crear el pago", + "couldnt_charge_card_error": "No se pudo cargar la tarjeta para el pago", + "no_available_users_found_error": "No se encontraron usuarios disponibles. ¿Podrías intentar en otro horario?", + "request_body_end_time_internal_error": "Error interno. El cuerpo de la solicitud no contiene la hora de finalización", + "create_calendar_event_error": "No se pudo crear el evento en el calendario del organizador", + "update_calendar_event_error": "No se pudo actualizar el evento del calendario.", + "delete_calendar_event_error": "No se pudo eliminar el evento del calendario.", + "already_signed_up_for_this_booking_error": "Ya estás registrado para esta reserva.", + "hosts_unavailable_for_booking": "Algunos de los anfitriones no están disponibles para la reserva.", "help": "Ayuda", "price": "Precio", "paid": "Pagado", @@ -63,6 +88,8 @@ "payment": "Pago", "missing_card_fields": "Faltan campos de la tarjeta", "pay_now": "Paga ahora", + "general_prompt": "Mensaje General", + "begin_message": "Iniciar Mensaje", "codebase_has_to_stay_opensource": "El código base debe permanecer en código abierto, si fue modificado o no", "cannot_repackage_codebase": "No puede reempaquetar o vender el código base", "acquire_license": "Adquiera una licencia comercial para eliminar estos términos por correo electrónico", @@ -80,6 +107,9 @@ "new_event_request": "Nueva solicitud de evento: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Confirmar o rechazar la solicitud", "check_bookings_page_to_confirm_or_reject": "Consulta la página de reservas para confirmar o rechazar la reserva.", + "check_in_assistant": "Asistente de Registro", + "check_in_assistant_description": "Realiza una llamada saliente para verificar si la cita programada funciona o si deseas reprogramarla.", + "create_your_own_prompt": "Crea tu propio mensaje y úsalo para hacer una llamada saliente.", "event_awaiting_approval": "Un nuevo evento espera su aprobación", "event_awaiting_approval_recurring": "Un nuevo evento está esperando su aprobación", "someone_requested_an_event": "Alguien ha solicitado programar un evento en su calendario.", @@ -90,7 +120,9 @@ "event_still_awaiting_approval": "Un evento aún está esperando su aprobación", "booking_submitted_subject": "Reserva enviada:{{title}} el {{date}}", "download_recording_subject": "Descargar grabación: {{title}} el {{date}}", + "download_transcript_email_subject": "Descargar Transcripción: {{title}} en {{date}}", "download_your_recording": "Descargue su grabación", + "download_your_transcripts": "Descarga tus Transcripciones", "your_meeting_has_been_booked": "Su reunión ha sido reservada", "event_type_has_been_rescheduled_on_time_date": "Tu {{title}} ha sido reprogramado para el {{date}}.", "event_has_been_rescheduled": "Tu evento ha sido reprogramado.", @@ -101,6 +133,7 @@ "requested_to_reschedule_subject_attendee": "Reprogramar acción requerida: reserva una nueva hora para {{eventType}} con {{name}}", "hi_user_name": "Hola {{name}}", "ics_event_title": "{{eventType}} con {{name}}", + "please_book_a_time_sometime_later": "Vaya, no pudimos conectarte esta vez. Por favor, programa una llamada futura.", "new_event_subject": "Nuevo Evento: {{attendeeName}} - {{date}} - {{eventType}}", "join_by_entrypoint": "Únase por {{entryPoint}}", "notes": "Notas", @@ -112,26 +145,35 @@ "invitee_timezone": "Zona horaria del Invitado", "time_left": "Tiempo restante", "event_type": "Tipo de Evento", + "duplicate_event_type": "Tipo de Evento Duplicado", "enter_meeting": "Entrar a la reunión", "video_call_provider": "Proveedor de videollamadas", "meeting_id": "ID de Reunión", "meeting_password": "Contraseña de la reunión", "meeting_url": "URL de la reunión", + "meeting_url_not_found": "URL de la reunión no encontrada", + "token_not_found": "Token no encontrado", + "some_other_host_already_accepted_the_meeting": "Otro anfitrión ya aceptó la reunión. ¿Aún quieres unirte? <1>Continuar a la Reunión", "meeting_request_rejected": "Su solicitud de reunión ha sido rechazada", "rejected_event_type_with_organizer": "Rechazado: {{eventType}} con {{organizer}} en {{date}}", "hi": "Hola", "join_team": "Unirse al Equipo", "manage_this_team": "Administrar este equipo", "team_info": "Información del equipo", + "join_meeting": "Unirse a la Reunión", "request_another_invitation_email": "Si prefiere no utilizar {{toEmail}} como su correo electrónico de {{appName}} o ya tiene una cuenta de {{appName}}, por favor solicite otra invitación a ese email.", "you_have_been_invited": "Has sido invitado a unirte al equipo {{teamName}}", "user_invited_you": "{{user}} lo invitó a unirse al equipo {{entity}} {{team}} en {{appName}}", + "user_invited_you_to_subteam": "{{user}} te invitó a unirte al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", "hidden_team_member_title": "Estás oculto en este equipo", "hidden_team_member_message": "No está paga tu plaza, actualiza a PRO o infórmale al propietario del equipo para que pague tu plaza.", "hidden_team_owner_message": "Necesitas una cuenta Pro para gestionar equipos, permanecerás oculto hasta que se realice la mejora.", "link_expires": "p.s. Expira en {{expiresIn}} horas.", "upgrade_to_per_seat": "Actualiza a Por-Asiento", "seat_options_doesnt_support_confirmation": "La opción de plazas no admite el requisito de confirmación", + "multilocation_doesnt_support_seats": "Múltiples ubicaciones no soportan la opción de asientos", + "no_show_fee_doesnt_support_seats": "La tarifa por no presentarse no soporta la opción de asientos", + "seats_option_doesnt_support_multi_location": "La opción de asientos no soporta múltiples ubicaciones", "team_upgrade_seats_details": "De los {{memberCount}} miembros de su equipo, no se han pagado {{unpaidCount}} licencia(s). A {{seatPrice}} $/m por licencia, el coste total estimado de su membresía es de {{totalCost}} $/mes.", "team_upgrade_banner_description": "Gracias por probar nuestro nuevo plan de equipo. Notamos que su equipo \"{{teamName}}\" necesita actualizarse.", "upgrade_banner_action": "Actualizar aquí", @@ -225,8 +267,10 @@ "create_account": "Crear Cuenta", "confirm_password": "Confirmar Contraseña", "reset_your_password": "Establezca su nueva contraseña con las instrucciones enviadas a su dirección de correo electrónico.", + "org_banner_instructions": "Por favor, sube una imagen de {{width}} de ancho y {{height}} de alto.", "email_change": "Vuelva a iniciar sesión con su nueva dirección de correo electrónico y contraseña.", "create_your_account": "Crea tu Cuenta", + "create_your_calcom_account": "Crea tu cuenta en Cal.com", "sign_up": "Regístrate", "youve_been_logged_out": "Has cerrado la sesión", "hope_to_see_you_soon": "¡Esperamos volver a verte pronto!", @@ -264,6 +308,9 @@ "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", + "set_availbility_description": "Establece horarios para los momentos en que deseas ser reservado.", + "share_a_link_or_embed": "Comparte un enlace o incrusta", + "share_a_link_or_embed_description": "Comparte tu enlace de {{appName}} o incrústalo en tu sitio.", "availability_settings": "Configuración de disponibilidad", "continue_without_calendar": "Continuar sin calendario", "continue_with": "Continuar con {{appName}}", @@ -279,6 +326,7 @@ "welcome_to_calcom": "Bienvenido a {{appName}}", "welcome_instructions": "Cuéntanos cómo llamarte y dinos la zona horaria en la que estás. Podrás editarla más tarde.", "connect_caldav": "Conectar con CalDav (Beta)", + "connect_ics_feed": "Conectar a una fuente ICS", "connect": "Conectar", "try_for_free": "Pruébalo Gratis", "create_booking_link_with_calcom": "Crea tu propio enlace de reserva con {{appName}}", @@ -292,8 +340,10 @@ "add_another_calendar": "Añadir otro calendario", "other": "Otro", "email_sign_in_subject": "Su enlace de inicio de sesión para {{appName}}", + "round_robin_emailed_you_and_attendees": "Te reunirás con {{user}}. Hemos enviado un correo electrónico con una invitación de calendario con los detalles a todos.", "emailed_you_and_attendees": "Le enviamos a usted y a los demás asistentes una invitación al calendario con todos los detalles.", "emailed_you_and_attendees_recurring": "Le enviamos a usted y a los demás asistentes una invitación al calendario para el primero de estos eventos recurrentes.", + "round_robin_emailed_you_and_attendees_recurring": "Te reunirás con {{user}}. Hemos enviado un correo electrónico con una invitación de calendario con los detalles a todos para el primero de estos eventos recurrentes.", "emailed_you_and_any_other_attendees": "Usted y cualquier otro asistente han recibido esta información.", "needs_to_be_confirmed_or_rejected": "Su reserva todavía necesita ser confirmada o rechazada.", "needs_to_be_confirmed_or_rejected_recurring": "Su reunión recurrente todavía necesita confirmarse o rechazarse.", @@ -417,9 +467,11 @@ "browse_api_documentation": "Consulte la documentación de nuestra API", "leverage_our_api": "Aproveche nuestra API para un control total y personalización.", "create_webhook": "Crear Webhook", + "instant_meeting": "Reunión instantánea creada", "booking_cancelled": "Reserva cancelada", "booking_rescheduled": "Reserva habilitada", "recording_ready": "Enlace de descarga de grabación listo", + "recording_transcription_generated": "Transcripción generada", "booking_created": "Reserva Creada", "booking_rejected": "Reserva rechazada", "booking_requested": "Reserva solicitada", @@ -427,6 +479,7 @@ "meeting_ended": "Reunión finalizada", "form_submitted": "Formulario enviado", "booking_paid": "Reserva pagada", + "booking_no_show_updated": "Reserva de no presentación actualizada", "event_triggers": "Activadores de Eventos", "subscriber_url": "URL del suscriptor", "create_new_webhook": "Crear un nuevo Webhook", @@ -531,11 +584,13 @@ "enter_number_between_range": "Introduzca un número entre 1 y {{maxOccurences}}", "email_address": "Email", "enter_valid_email": "Ingresa un correo electrónico válido", + "please_schedule_future_call": "Por favor, programa una llamada futura si no estamos disponibles en {{seconds}} segundos", "location": "Ubicación", "address": "Ubicación", "enter_address": "Ingrese la dirección", "in_person_attendee_address": "En persona (dirección del asistente)", "yes": "Sí", + "no": "No", "additional_notes": "Notas Adicionales", "booking_fail": "No se ha podido reservar la reunión.", "reschedule_fail": "No se ha podido reprogramar la reunión.", @@ -582,6 +637,7 @@ "number_selected": "{{count}} seleccionados", "owner": "Propietario", "admin": "Administrador", + "admin_api": "API de administración", "administrator_user": "Usuario administrador", "lets_create_first_administrator_user": "Vamos a crear el primer usuario administrador.", "admin_user_created": "Configuración del usuario administrador", @@ -589,6 +645,7 @@ "new_member": "Nuevo Miembro", "invite": "Invitación", "add_team_members": "Añadir miembros del equipo", + "add_org_members": "Agregar miembros", "add_team_members_description": "Invitar a otros a unirse a tu equipo", "add_team_member": "Añadir miembro del equipo", "invite_new_member": "Invitar a un nuevo miembro", @@ -603,6 +660,7 @@ "hide_book_a_team_member_description": "Ocultar el botón Reservar un miembro del equipo de sus páginas públicas.", "danger_zone": "Paso definitivo", "account_deletion_cannot_be_undone": "Tenga cuidado. La eliminación de la cuenta no se puede deshacer.", + "team_deletion_cannot_be_undone": "Ten cuidado. La eliminación del equipo no se puede deshacer.", "back": "Atrás", "cancel": "Cancelar", "cancel_all_remaining": "Cancelar todos los restantes", @@ -638,6 +696,7 @@ "user_from_team": "{{user}} de {{team}}", "preview": "Vista Previa", "link_copied": "¡Enlace Copiado!", + "copied": "¡Copiado!", "private_link_copied": "¡Enlace privado copiado!", "link_shared": "¡Enlace compartido!", "title": "Título", @@ -654,7 +713,9 @@ "default_duration_no_options": "Seleccione primero las duraciones disponibles", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minutos", + "use_cal_ai_to_make_call_description": "Usa Cal.ai para obtener un número de teléfono con inteligencia artificial o hacer llamadas a invitados.", "round_robin": "Petición Firmada por Turnos", "round_robin_description": "Ciclo de reuniones entre varios miembros del equipo.", "managed_event": "Evento gestionado", @@ -666,9 +727,12 @@ "add_members": "Agregar miembros...", "no_assigned_members": "No hay miembros asignados", "assigned_to": "Asignado a", + "you_must_be_logged_in_to": "Debes iniciar sesión en {{url}}", "start_assigning_members_above": "Empezar a asignar miembros más arriba", "locked_fields_admin_description": "Los miembros no podrán editar esto", + "unlocked_fields_admin_description": "Los miembros pueden editar", "locked_fields_member_description": "El administrador del equipo bloqueó esta opción", + "unlocked_fields_member_description": "Desbloqueado por el administrador del equipo", "url": "URL", "hidden": "Oculto", "readonly": "Sólo Lectura", @@ -715,6 +779,8 @@ "brand_color": "Color de marca", "light_brand_color": "Color de la marca (Tema claro)", "dark_brand_color": "Color de la marca (Tema oscuro)", + "light_event_type_color": "Color del tipo de evento (Tema claro)", + "dark_event_type_color": "Color del tipo de evento (Tema oscuro)", "file_not_named": "El archivo no se llama [idOrSlug] / [user]", "create_team": "Crear Equipo", "name": "Nombre", @@ -770,6 +836,10 @@ "additional_input_description": "Se requiere que el planificador introduzca entradas adicionales antes de confirmar la reserva", "label": "Etiqueta", "placeholder": "Marcador de posición", + "display_add_to_calendar_organizer": "Usa el correo electrónico \"Agregar al calendario\" como el organizador", + "display_email_as_organizer": "Mostraremos esta dirección de correo electrónico como el organizador y enviaremos correos de confirmación aquí.", + "if_enabled_email_address_as_organizer": "Si está habilitado, mostraremos la dirección de correo electrónico de tu \"Agregar al calendario\" como organizador y enviaremos correos de confirmación allí.", + "reconnect_calendar_to_use": "Ten en cuenta que puede que necesites desconectar y luego volver a conectar tu cuenta de 'Agregar al calendario' para usar esta función.", "type": "Tipo", "edit": "Editar", "add_input": "Agregar una entrada", @@ -778,6 +848,9 @@ "requires_confirmation_description": "La reserva debe confirmarse manualmente antes de que se envíe a las integraciones y se genere un correo de confirmación.", "recurring_event": "Evento recurrente", "recurring_event_description": "Las personas pueden suscribirse a eventos recurrentes", + "cannot_be_used_with_paid_event_types": "No se puede usar con tipos de eventos de pago.", + "warning_payment_instant_meeting_event": "Las reuniones instantáneas no son compatibles con eventos recurrentes y aplicaciones de pago todavía.", + "warning_instant_meeting_experimental": "Experimental: Los eventos de reuniones instantáneas son actualmente experimentales.", "starting": "A partir", "disable_guests": "Desactivar Invitados", "disable_guests_description": "Desactiva agregar invitados adicionales al hacer la reserva.", @@ -786,6 +859,7 @@ "private_link_label": "Enlace privado", "private_link_hint": "Su enlace privado se regenera después de cada uso", "copy_private_link": "Copiar enlace privado", + "copy_private_link_to_event": "Copiar enlace privado al evento", "private_link_description": "Generar una URL privada para compartir sin exponer su nombre de usuario de {{appName}}", "invitees_can_schedule": "Los invitados pueden programar", "date_range": "Rango de Fechas", @@ -845,6 +919,7 @@ "next_step": "Saltar paso", "prev_step": "Paso anterior", "install": "Instalar", + "start_paid_trial": "Comenzar prueba gratuita", "installed": "Instalado", "active_install_one": "{{count}} instalación activa", "active_install_other": "{{count}} instalaciones activas", @@ -859,6 +934,7 @@ "toggle_calendars_conflict": "Activa/desactiva los calendarios en los que desees comprobar conflictos para evitar reservas dobles.", "connect_additional_calendar": "Conectar calendario adicional", "calendar_updated_successfully": "Calendario actualizado correctamente", + "check_here": "Verificar aquí", "conferencing": "Conferencias", "calendar": "Calendario", "payments": "Pagos", @@ -936,6 +1012,8 @@ "verify_wallet": "Verificar billetera", "create_events_on": "Crear eventos en", "enterprise_license": "Esta es una función empresarial", + "enterprise_license_locally": "Puedes probar esta función localmente pero no en producción.", + "enterprise_license_sales": "Para actualizar a la edición empresarial, por favor contacta a nuestro equipo de ventas. Si ya tienes una clave de licencia, por favor contacta a support@cal.com para obtener ayuda.", "missing_license": "Falta la licencia", "next_steps": "Pasos siguientes", "acquire_commercial_license": "Adquirir una licencia comercial", @@ -977,6 +1055,7 @@ "seats_nearly_full": "Cupos casi llenos", "seats_half_full": "Los cupos se están copando rápido", "number_of_seats": "Número de plazas por reserva", + "set_instant_meeting_expiry_time_offset_description": "Establecer ventana de unión a la reunión (segundos): El período de tiempo en segundos dentro del cual el anfitrión puede unirse y comenzar la reunión. Después de este período, la URL de unión a la reunión expirará.", "enter_number_of_seats": "Introduzca el número de plazas", "you_can_manage_your_schedules": "Puede administrar sus horarios en la página Disponibilidad.", "booking_full": "No hay más plazas disponibles", @@ -1028,15 +1107,21 @@ "user_impersonation_heading": "Suplantación de usuario", "user_impersonation_description": "Permite a nuestro equipo de soporte iniciar sesión temporalmente para ayudar a resolver rápidamente cualquier problema reportado.", "team_impersonation_description": "Permita a los administradores de su equipo iniciar sesión temporalmente como usted.", + "cal_signup_description": "Gratis para individuos. Planes de equipo para funciones colaborativas.", + "make_org_private": "Hacer la organización privada", + "make_org_private_description": "Los miembros de tu organización no podrán ver a otros miembros de la organización cuando esto esté activado.", "make_team_private": "Hacer que el equipo sea privado", "make_team_private_description": "Los miembros de su equipo no podrán ver a otros miembros del equipo cuando esto esté activado.", "you_cannot_see_team_members": "No puede ver a todos los miembros de un equipo privado.", + "you_cannot_see_teams_of_org": "No puedes ver los equipos de una organización privada.", "allow_booker_to_select_duration": "Permitir que el encargado de las reservas seleccione la duración", "impersonate_user_tip": "Todos los usos de esta función son revisados.", "impersonating_user_warning": "Suplantando nombre de usuario \"{{user}}\".", "impersonating_stop_instructions": "Haga clic aquí para detener.", "event_location_changed": "Actualizado - Su evento cambió la ubicación", + "new_guests_added": "Añadido - Nuevos invitados añadidos a tu evento", "location_changed_event_type_subject": "Ubicación cambiada: {{eventType}} con {{name}} el {{date}}", + "guests_added_event_type_subject": "Invitados añadidos: {{eventType}} con {{name}} el {{date}}", "current_location": "Ubicación actual", "new_location": "Nueva ubicación", "session": "Sesión", @@ -1048,7 +1133,11 @@ "set_location": "Establecer ubicación", "update_location": "Actualizar ubicación", "location_updated": "Ubicación actualizada", + "guests_added": "Invitados añadidos", + "unable_to_add_guests": "No se pueden añadir invitados", "email_validation_error": "Eso no parece una dirección de correo electrónico", + "emails_must_be_unique_valid": "Los correos electrónicos deben ser únicos y válidos", + "url_validation_error": "Eso no parece una URL", "place_where_cal_widget_appear": "Coloque este código en su HTML donde desea que aparezca su widget de {{appName}}.", "create_update_react_component": "Cree o actualice un componente React existente como se muestra a continuación.", "copy_code": "Copiar código", @@ -1065,9 +1154,12 @@ "make_setup_instructions": "<0>Vaya al <1><0>Enlace de invitación de Make e instale la aplicación Cal.com.<1>Inicie sesión en su cuenta de Make y cree un nuevo escenario.<2>Seleccione Cal.com como su aplicación de activación. Elija también un evento de activación.<3>Elija su cuenta y luego ingrese su clave API única.<4>Pruebe su activador.<5>¡Ya está!", "install_zapier_app": "Instale primero la aplicación Zapier desde la App Store.", "install_make_app": "Instale primero la aplicación Make desde la App Store.", + "app_not_installed": "Aplicación no instalada", + "visit_our_app_store": "Lo sentimos, esta aplicación no está instalada en tu cuenta. Por favor visita nuestra tienda de aplicaciones para explorar y descubrir esta y otras grandes aplicaciones.", "connect_apple_server": "Conectar con Apple Server", "calendar_url": "URL del calendario", "apple_server_generate_password": "Genere una contraseña específica de la aplicación para utilizarla con {{appName}} en", + "unable_to_add_apple_calendar": "No se puede añadir esta cuenta de Apple Calendar. Por favor asegúrate de estar usando una contraseña específica para la aplicación en lugar de la contraseña de tu cuenta.", "credentials_stored_encrypted": "Sus credenciales serán almacenadas y cifradas.", "it_stored_encrypted": "Se almacenará y cifrará.", "go_to_app_store": "Ir a App Store", @@ -1087,6 +1179,7 @@ "developer_documentation": "Documentación del desarrollador", "get_in_touch": "Póngase en contacto", "contact_support": "Contactar con Soporte", + "premium_support": "Soporte Premium", "community_support": "Soporte comunitario", "feedback": "Comentarios", "submitted_feedback": "¡Gracias por sus comentarios!", @@ -1137,6 +1230,8 @@ "day_timeUnit": "días", "hour_timeUnit": "horas", "minute_timeUnit": "minutos", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Cree su primer workflow", "new_workflow_description": "Los flujos de trabajo te permiten automatizar el envío de recordatorios y notificaciones.", "active_on": "Activo en", @@ -1164,6 +1259,8 @@ "may_require_confirmation": "Puede requerir confirmación", "nr_event_type_one": "{{count}} tipo de evento", "nr_event_type_other": "{{count}} tipos de eventos", + "count_team_one": "{{count}} equipo", + "count_team_other": "{{count}} equipos", "add_action": "Agregar acción", "set_whereby_link": "Establecer enlace Whereby", "invalid_whereby_link": "Introduce un enlace Whereby válido", @@ -1184,11 +1281,14 @@ "reminder": "Recordatorio", "rescheduled": "Reprogramado", "completed": "Completado", + "rating": "Calificación", "reminder_email": "Recordatorio: {{eventType}} con {{name}} el {{date}}", "not_triggering_existing_bookings": "No se activará para las reservas ya existentes, ya que se le pedirá al usuario un número de teléfono al reservar el evento.", "minute_one": "{{count}} minuto", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} minutos", "hour_one": "{{count}} hora", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} horas", "invalid_input": "Entrada inválida", "broken_video_action": "No pudimos agregar el enlace de <1>{{location}} a tu evento agendado. Contacta a tus invitados o actualiza tu calendario para agregar los detalles. Puedes <3>cambiar la ubicación de tu tipo de evento o <5>remover la App y agregarla de nuevo.", @@ -1200,7 +1300,12 @@ "problem_updating_calendar": "Hubo un problema al actualizar tu calendario", "active_on_event_types_one": "Activo en {{count}} tipo de evento", "active_on_event_types_other": "Activo en {{count}} tipos de eventos", + "active_on_teams_one": "Activo en {{count}} equipo", + "active_on_teams_other": "Activo en {{count}} equipos", + "active_on_all_event_types": "Activo en todos los tipos de eventos", + "active_on_all_teams": "Activo en todos los equipos", "no_active_event_types": "No hay tipos de evento activos", + "no_active_teams": "No hay equipos activos", "new_seat_subject": "Nuevo asistente {{name}} en {{eventType}} el {{date}}", "new_seat_title": "Alguien se ha añadido a un evento", "variable": "Variable", @@ -1218,6 +1323,7 @@ "upgrade": "Actualizar", "upgrade_to_access_recordings_title": "Actualizar para acceder a las grabaciones", "upgrade_to_access_recordings_description": "Las grabaciones solo están disponibles como parte de nuestro plan de equipos. Actualice para comenzar a grabar sus llamadas", + "upgrade_to_cal_ai_phone_number_description": "Actualiza a Enterprise para generar un número de teléfono de Agente AI que pueda llamar a los invitados para programar llamadas", "recordings_are_part_of_the_teams_plan": "Las grabaciones son parte del plan de equipos", "team_feature_teams": "Esta es una función Team. Actualiza a Team para ver la disponibilidad de tu equipo.", "team_feature_workflows": "Esta es una función Team. Actualiza a Team para automatizar los recordadorios y las notificaciones de eventos con flujos de trabajo.", @@ -1250,6 +1356,7 @@ "default_calendar_selected": "Calendario predeterminado", "hide_from_profile": "Ocultar del perfil", "event_setup_tab_title": "Configuración del evento", + "availability_not_found_in_schedule_error": "No se encontró disponibilidad en el horario", "event_limit_tab_title": "Límites", "event_limit_tab_description": "Con qué frecuencia se puede reservar", "event_advanced_tab_description": "Ajustes del calendario y más...", @@ -1264,12 +1371,16 @@ "2fa_required": "Se requiere autenticación de dos factores", "incorrect_2fa": "Código de autenticación de dos factores incorrecto", "which_event_type_apply": "¿A qué tipo de evento se aplicará esto?", + "apply_to_all_event_types": "Aplicar a todos, incluidos los tipos de eventos futuros", + "apply_to_all_teams": "Aplicar a todos los tipos de eventos de equipo y usuario", + "which_team_apply": "¿A qué equipo se aplicará esto?", "no_workflows_description": "Los flujos de trabajo permiten una automatización simple para enviar notificaciones y recordatorios que le permiten crear procesos para sus eventos.", "timeformat_profile_hint": "Esta es una configuración interna y no afectará la manera en que se muestran los horarios en las páginas de reservas públicas para usted o para cualquier persona que lo solicite.", "create_workflow": "Crear un flujo de trabajo", "do_this": "Hacer esto", "turn_off": "Apagar", "turn_on": "Activar", + "cancelled_bookings_cannot_be_rescheduled": "Las reservas canceladas no se pueden reprogramar", "settings_updated_successfully": "Configuración actualizada correctamente", "error_updating_settings": "Error al actualizar la configuración", "personal_cal_url": "Mi URL personal de {{appName}}", @@ -1293,6 +1404,7 @@ "customize_your_brand_colors": "Personalice el color de su propia marca en su página de reservas.", "pro": "Pro", "removes_cal_branding": "Elimina cualquier marca relacionada con {{appName}}, p. ej., \"Powered by {{appName}}\".", + "instant_meeting_with_title": "Reunión instantánea con {{name}}", "profile_picture": "Imagen de perfil", "upload": "Cargar", "add_profile_photo": "Agregar foto de perfil", @@ -1347,7 +1459,9 @@ "add_dynamic_variables": "Añadir variables de texto dinámico", "event_name_info": "Nombre del tipo de evento", "event_date_info": "Fecha del evento", + "event_duration_info": "La duración del evento", "event_time_info": "Hora de inicio del evento", + "event_type_not_found": "Tipo de evento no encontrado", "location_variable": "Lugar", "location_info": "Ubicación del evento", "additional_notes_variable": "Notas Adicionales", @@ -1360,7 +1474,12 @@ "download_responses_description": "Descargue todas las respuestas de su formulario en formato CSV.", "download": "Descargar", "download_recording": "Descargar grabación", + "transcription_enabled": "Las transcripciones están habilitadas ahora", + "transcription_stopped": "Las transcripciones están detenidas ahora", + "download_transcript": "Descargar transcripción", "recording_from_your_recent_call": "Una grabación de su llamada reciente en {{appName}} está lista para descargar", + "transcript_from_previous_call": "La transcripción de su llamada reciente en {{appName}} está lista para descargar. Los enlaces son válidos solo por 1 hora.", + "link_valid_for_12_hrs": "Nota: El enlace de descarga es válido solo por 12 horas. Puede generar un nuevo enlace de descarga siguiendo las instrucciones <1>aquí.", "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", @@ -1390,10 +1509,12 @@ "slot_length": "Duración de la franja", "booking_appearance": "Aspecto de la reserva", "appearance_team_description": "Administra los ajustes para el aspecto de la reserva de tu equipo", + "appearance_org_description": "Administre la configuración de la apariencia de las reservas de su organización", "only_owner_change": "Solo el propietario de este equipo puede hacer cambios en la reserva ", "team_disable_cal_branding_description": "Elimina cualquier marca relacionada con {{appName}}, p. ej., \"Powered by {{appName}}\"", "invited_by_team": "{{teamName}} te invitó a unirte a su equipo como {{role}}", "token_invalid_expired": "El token no es válido o ha caducado.", + "view_booking": "Ver reserva", "exchange_add": "Conectar a Microsoft Exchange", "exchange_authentication": "Método de autenticación", "exchange_authentication_standard": "Autenticación básica", @@ -1411,6 +1532,7 @@ "routing_forms_description": "Crea formularios para dirigir a los asistentes a sus destinos correctos", "routing_forms_send_email_owner": "Enviar correo electrónico al propietario", "routing_forms_send_email_owner_description": "Mande un correo electrónico al propietario cuando se envía el formulario", + "routing_forms_send_email_to": "Enviar correo electrónico a", "add_new_form": "Añadir formulario nuevo", "add_new_team_form": "Añada un nuevo formulario a su equipo", "create_your_first_route": "Cree su primera ruta", @@ -1445,6 +1567,7 @@ "password_updated": "¡Contraseña actualizada!", "pending_payment": "Pago pendiente", "pending_invites": "Invitaciones pendientes", + "pending_organization_invites": "Invitaciones pendientes de la organización", "not_on_cal": "No estás en {{appName}}", "no_calendar_installed": "No hay ningún calendario instalado", "no_calendar_installed_description": "Aún no has conectado ninguno de tus calendarios", @@ -1456,6 +1579,8 @@ "report_app": "Denunciar aplicación", "limit_booking_frequency": "Limite la frecuencia de reserva", "limit_booking_frequency_description": "Limite la cantidad de veces que se puede reservar este evento", + "only_show_first_available_slot": "Mostrar solo el primer horario disponible de cada día", + "only_show_first_available_slot_description": "Esto limitará su disponibilidad para este tipo de evento a un horario por día, programado a la hora más temprana disponible.", "limit_total_booking_duration": "Limitar la duración total de la reserva", "limit_total_booking_duration_description": "Limitar la cantidad total de tiempo que se puede reservar este evento", "add_limit": "Agregue un límite", @@ -1495,6 +1620,7 @@ "how_long_after": "¿Cuánto tiempo después de que termine el evento?", "no_available_slots": "No hay espacios disponibles", "time_available": "Tiempo disponible", + "cant_find_the_right_conferencing_app_visit_our_app_store": "¿No encuentra la aplicación de conferencias adecuada? Visite nuestra <1>Tienda de aplicaciones.", "install_new_calendar_app": "Instalar nueva aplicación de calendario", "make_phone_number_required": "Solicitar número de teléfono para reservar el evento", "new_event_type_availability": "Disponibilidad para {{eventTypeTitle}}", @@ -1522,10 +1648,14 @@ "your_org_disbanded_successfully": "Su organización se ha disuelto con éxito", "error_creating_team": "Error al crear el equipo", "you": "Usted", + "or_continue_with": "O continuar con", "resend_email": "Reenviar correo electrónico", "member_already_invited": "El miembro ya se ha invitado", "already_in_use_error": "El nombre de usuario ya está en uso", "enter_email_or_username": "Introduzca un correo electrónico o nombre de usuario", + "enter_email": "Ingrese un correo electrónico", + "enter_emails": "Ingrese correos electrónicos", + "too_many_invites": "Está limitado a invitar a un máximo de {{nbUsers}} usuarios a la vez.", "team_name_taken": "Este nombre ya está en uso", "must_enter_team_name": "Debe introducir un nombre de equipo", "team_url_required": "Debe introducir una URL del equipo", @@ -1538,6 +1668,7 @@ "attendee_email_info": "El correo electrónico de la persona que reserva", "kbar_search_placeholder": "Escriba un comando o búsqueda...", "invalid_credential": "¡Oh no! Parece que el permiso ha caducado o se ha revocado. Vuelva a instalarlo.", + "invalid_credential_action": "Reinstalar aplicación", "reschedule_reason": "Razón de la reprogramación", "choose_common_schedule_team_event": "Elige un horario común para todos", "choose_common_schedule_team_event_description": "Habilite esto si desea utilizar un cronograma común entre anfitriones. Cuando esté desactivado, cada anfitrión se reservará en relación a su horario predeterminado.", @@ -1551,6 +1682,8 @@ "test_routing": "Prueba de ruta", "payment_app_disabled": "Un administrador desactivó una aplicación de pago", "edit_event_type": "Editar tipo de evento", + "only_admin_can_see_members_of_org": "Esta organización es privada, y solo el administrador o propietario de la organización puede ver a sus miembros.", + "only_admin_can_manage_sso_org": "Solo el administrador o propietario de la organización puede gestionar la configuración de SSO", "collective_scheduling": "Programación colectiva", "make_it_easy_to_book": "Haga que sea fácil reservar su equipo cuando todos estén disponibles.", "find_the_best_person": "Encuentre a la mejor persona disponible y haga una rotación en su equipo.", @@ -1605,10 +1738,12 @@ "individual": "Individuo", "all_bookings_filter_label": "Todas las reservas", "all_users_filter_label": "Todos los usuarios", + "all_event_types_filter_label": "Todos los tipos de eventos", "your_bookings_filter_label": "Sus reservas", "meeting_url_variable": "URL de la reunión", "meeting_url_info": "URL de la reunión del evento", "date_overrides": "Anular fechas", + "date_overrides_delete_on_date": "Eliminar anulaciones de fecha el {{date}}", "date_overrides_subtitle": "Agregue fechas cuando su disponibilidad difiera de su horario diario.", "date_overrides_info": "Las anulaciones de fecha se archivan automáticamente después de que haya pasado la fecha", "date_overrides_dialog_which_hours": "¿En qué horas está disponible?", @@ -1650,6 +1785,7 @@ "new_attendee": "Nuevo asistente", "awaiting_approval": "En espera de aprobación", "requires_google_calendar": "Esta aplicación requiere una conexión con Google Calendar", + "event_type_requires_google_calendar": "El “Agregar al calendario” para este tipo de evento necesita ser un Google Calendar para que Meet funcione. Conéctelo <1>aquí.", "connected_google_calendar": "Ha conectado una cuenta de Google Calendar.", "using_meet_requires_calendar": "El uso de Google Meet requiere un Google Calendar conectado", "continue_to_install_google_calendar": "Siga con la instalación de Google Calendar", @@ -1682,6 +1818,7 @@ "configure": "Configurar", "sso_configuration": "Configuración de SAML", "sso_configuration_description": "Configure SAML/OIDC SSO y permita que los miembros del equipo inicien sesión con un proveedor de identidad", + "sso_configuration_description_orgs": "Configure SSO SAML/OIDC y permita que los miembros de la organización inicien sesión utilizando un proveedor de identidad", "sso_oidc_heading": "SSO con OIDC", "sso_oidc_description": "Configure OIDC SSO con el proveedor de identidad de su elección.", "sso_oidc_configuration_title": "Configuración de OIDC", @@ -1701,9 +1838,11 @@ "organizer_timezone": "Zona horaria del organizador", "email_user_cta": "Ver la invitación", "email_no_user_invite_heading_team": "Lo han invitado a unirse a un equipo en {{appName}}", + "email_no_user_invite_heading_subteam": "Ha sido invitado a unirse a un equipo de la organización {{parentTeamName}}", "email_no_user_invite_heading_org": "Lo han invitado a unirse a una organización en {{appName}}", "email_no_user_invite_subheading": "{{invitedBy}} lo invitó a unirse a su equipo en {{appName}}. {{appName}} es el programador de eventos que les permite a usted y a su equipo programar reuniones sin necesidad de enviar correos electrónicos.", "email_user_invite_subheading_team": "{{invitedBy}} lo ha invitado a unirse a su equipo \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su equipo programar reuniones sin correos electrónicos de ida y vuelta.", + "email_user_invite_subheading_subteam": "{{invitedBy}} le ha invitado a unirse al equipo {{teamName}} en su organización {{parentTeamName}} en {{appName}}. {{appName}} es el programador de eventos que le permite a usted y a su equipo programar reuniones sin el intercambio constante de correos electrónicos.", "email_user_invite_subheading_org": "{{invitedBy}} lo ha invitado a unirse a su organización \"{{teamName}}\" en {{appName}}. {{appName}} es el programador de eventos que le permite a usted y a su organización programar reuniones sin el tenis del correo electrónico.", "email_no_user_invite_steps_intro": "Lo guiaremos a través de unos pocos pasos y disfrutará de una programación sin estrés con su {{entity}} en muy poco tiempo.", "email_no_user_step_one": "Elija su nombre de usuario", @@ -1820,7 +1959,15 @@ "requires_at_least_one_schedule": "Es necesario tener al menos un horario", "default_conferencing_bulk_description": "Actualizar las ubicaciones para los tipos de eventos seleccionados", "locked_for_members": "Bloqueado para miembros", + "unlocked_for_members": "Desbloqueado para miembros", "apps_locked_for_members_description": "Los miembros podrán ver las aplicaciones activas, pero no podrán editar ninguna configuración de la aplicación", + "apps_unlocked_for_members_description": "Los miembros podrán ver las aplicaciones activas y podrán editar cualquier configuración de la aplicación", + "apps_locked_by_team_admins_description": "Podrás ver las aplicaciones activas pero no podrás editar ninguna configuración de la aplicación", + "apps_unlocked_by_team_admins_description": "Podrás ver las aplicaciones activas y podrás editar cualquier configuración de la aplicación", + "workflows_locked_for_members_description": "Los miembros no pueden agregar sus flujos de trabajo personales a este tipo de evento. Los miembros podrán ver los flujos de trabajo del equipo activos pero no podrán editar ninguna configuración del flujo de trabajo.", + "workflows_unlocked_for_members_description": "Los miembros podrán agregar sus flujos de trabajo personales a este tipo de evento. Los miembros podrán ver los flujos de trabajo del equipo activos pero no podrán editar ninguna configuración del flujo de trabajo.", + "workflows_locked_by_team_admins_description": "Podrás ver los flujos de trabajo del equipo activos pero no podrás editar ninguna configuración del flujo de trabajo ni agregar tus flujos de trabajo personales a este tipo de evento.", + "workflows_unlocked_by_team_admins_description": "Podrás habilitar/deshabilitar flujos de trabajo personales en este tipo de evento. Podrás ver los flujos de trabajo del equipo activos pero no podrás editar ninguna configuración del flujo de trabajo del equipo.", "locked_by_team_admin": "Bloqueado por el administrador del equipo", "app_not_connected": "No ha conectado una cuenta de {{appName}}.", "connect_now": "Conectar ahora", @@ -1834,7 +1981,10 @@ "review_event_type": "Revisar tipo de evento", "looking_for_more_analytics": "¿Busca más datos de análisis?", "looking_for_more_insights": "¿Quiere saber más sobre Insights?", + "filters": "Filtros", "add_filter": "Añadir filtro", + "remove_filters": "Borrar todos los filtros", + "email_verified": "Correo electrónico verificado", "select_user": "Seleccionar usuario", "select_event_type": "Seleccionar tipo de evento", "select_date_range": "Seleccionar rango de fechas", @@ -1925,18 +2075,23 @@ "connect_google_workspace": "Conectar Google Workspace", "google_workspace_admin_tooltip": "Debe ser administrador para usar esta función", "first_event_type_webhook_description": "Cree su primer webhook para este tipo de evento", + "create_instant_meeting_webhook_description": "Crea tu primer webhook con 'Reunión instantánea creada' como desencadenante para este tipo de evento", "install_app_on": "Instalar aplicación en", "create_for": "Crear para", "currency": "Moneda", "organization_banner_description": "Cree entornos en los que sus equipos puedan crear aplicaciones, flujos de trabajo y tipos de eventos compartidos con programación por turnos y colectiva.", "organization_banner_title": "Gestione organizaciones con varios equipos", "set_up_your_organization": "Configure su organización", + "set_up_your_platform_organization": "Configura tu plataforma", "organizations_description": "Las organizaciones son entornos compartidos donde los equipos pueden crear tipos de eventos, aplicaciones, flujos de trabajo compartidos y más.", + "platform_organization_description": "Cal.com Platform te permite integrar la programación sin esfuerzo en tu aplicación utilizando APIs y átomos de la plataforma.", "must_enter_organization_name": "Debe introducir el nombre de una organización", "must_enter_organization_admin_email": "Debe introducir la dirección de correo electrónico de su organización", "admin_email": "Dirección de correo electrónico de su organización", + "platform_admin_email": "Tu dirección de correo electrónico de administrador", "admin_username": "Nombre de usuario del administrador", "organization_name": "Nombre de la organización", + "platform_name": "Nombre de la plataforma", "organization_url": "URL de la organización", "organization_verify_header": "Verifique el correo electrónico de su organización", "organization_verify_email_body": "Utilice el siguiente código para verificar su dirección de correo electrónico y continuar con la configuración de su organización.", @@ -1989,6 +2144,8 @@ "add_times_to_your_email": "Seleccione algunos horarios disponibles e incrústelos en su correo electrónico", "select_time": "Seleccione la hora", "select_date": "Seleccione la fecha", + "connecting_you_to_someone": "Te estamos conectando con alguien.", + "please_do_not_close_this_tab": "Por favor, no cierres esta pestaña", "see_all_available_times": "Ver todas las horas disponibles", "org_team_names_example_1": "ej. Equipo de marketing", "org_team_names_example_2": "ej. Equipo de ventas", @@ -2006,8 +2163,13 @@ "description_requires_booker_email_verification": "Para asegurar la verificación del correo electrónico de quien reserva antes de programar eventos", "requires_confirmation_mandatory": "Los mensajes de texto solo se pueden enviar a los asistentes cuando el tipo de evento requiere confirmación.", "organizations": "Organizaciones", + "upload_cal_video_logo": "Subir logo de Cal Video", + "update_cal_video_logo": "Actualizar logo de Cal Video", + "upload_banner": "Subir banner", + "cal_video_logo_upload_instruction": "Para asegurar que tu logo sea visible contra el fondo oscuro de Cal Video, por favor sube una imagen de color claro en formato PNG o SVG para mantener la transparencia.", "org_admin_other_teams": "Otros equipos", "org_admin_other_teams_description": "Aquí puede ver los equipos dentro de su organización de los que no forma parte. Puede agregarse a ellos si es necesario.", + "not_part_of_org": "No formas parte de ninguna organización", "no_other_teams_found": "No se encontraron otros equipos", "no_other_teams_found_description": "No hay otros equipos en esta organización.", "attendee_first_name_variable": "Nombre del asistente", @@ -2043,7 +2205,9 @@ "org_error_processing": "Ocurrió un error al procesar esta organización", "orgs_page_description": "Una lista de todas las organizaciones. Aceptar una organización permitirá que todos los usuarios con ese dominio de correo electrónico se registren SIN verificación de correo electrónico.", "unverified": "Sin verificar", + "verified": "Verificado", "dns_missing": "Falta el DNS", + "dns_configured": "DNS Configurado", "mark_dns_configured": "Marcar como DNS configurado", "value": "Valor", "your_organization_updated_sucessfully": "Su organization se actualizó con éxito", @@ -2053,10 +2217,30 @@ "oAuth": "OAuth", "recently_added": "Añadido recientemente", "connect_all_calendars": "Conecte todos sus calendarios", + "connect_all_calendars_description": "{{appName}} lee la disponibilidad de todos tus calendarios existentes.", "workflow_automation": "Automatización del flujo de trabajo", + "workflow_automation_description": "Personaliza tu experiencia de programación con flujos de trabajo", "scheduling_for_your_team": "Automatización del flujo de trabajo", + "scheduling_for_your_team_description": "Programa para tu equipo con programación colectiva y en turnos rotativos", "no_members_found": "No se encontraron miembros", "directory_sync": "Directory Sync", + "directory_name": "Nombre del directorio", + "directory_provider": "Proveedor del directorio", + "directory_scim_url": "URL base de SCIM", + "directory_scim_token": "Token de portador SCIM", + "directory_scim_url_copied": "URL base de SCIM copiada", + "directory_scim_token_copied": "Token de portador SCIM copiado", + "directory_sync_info_description": "Tu proveedor de identidad solicitará la siguiente información para configurar SCIM. Sigue las instrucciones para finalizar la configuración.", + "directory_sync_configure": "Configurar sincronización de directorio", + "directory_sync_configure_description": "Elige un proveedor de identidad para configurar el directorio para tu equipo.", + "directory_sync_title": "Configura un proveedor de identidad para empezar con SCIM.", + "directory_sync_created": "Conexión de sincronización de directorio creada.", + "directory_sync_description": "Provisiona y desprovisiona usuarios con tu proveedor de directorio.", + "directory_sync_deleted": "Conexión de sincronización de directorio eliminada.", + "directory_sync_delete_connection": "Eliminar Conexión", + "directory_sync_delete_title": "Eliminar Conexión de Sincronización de Directorio", + "directory_sync_delete_description": "¿Estás seguro de que quieres eliminar esta conexión de sincronización de directorio?", + "directory_sync_delete_confirmation": "Esta acción no se puede deshacer. Esto eliminará permanentemente la conexión de sincronización de directorio.", "event_setup_length_error": "Configuración del evento: la duración debe ser de al menos 1 minuto.", "availability_schedules": "Horarios de disponibilidad", "unauthorized": "Sin autorización", @@ -2072,6 +2256,8 @@ "access_bookings": "Lea, edite y elimine sus reservas", "allow_client_to_do": "¿Desea permitir que {{clientName}} haga esto?", "oauth_access_information": "Al hacer clic en permitir, permite que esta aplicación utilice su información de acuerdo con sus términos de servicio y política de privacidad. Puede eliminar el acceso en la App Store de {{appName}}.", + "oauth_form_title": "Formulario de creación de cliente OAuth", + "oauth_form_description": "Este es el formulario para crear un nuevo cliente OAuth", "allow": "Permitir", "view_only_edit_availability_not_onboarded": "Este usuario no ha completado la incorporación. No podrá establecer su disponibilidad hasta que haya completado la incorporación.", "view_only_edit_availability": "Está viendo la disponibilidad de este usuario. Sólo puede editar su propia disponibilidad.", @@ -2088,43 +2274,300 @@ "overlay_my_calendar": "Superponer mi calendario", "overlay_my_calendar_toc": "Al conectarse a su calendario, acepta nuestra política de privacidad y nuestros términos de uso. Puede revocar el acceso en cualquier momento.", "view_overlay_calendar_events": "Consulte los eventos de su calendario para evitar el conflicto de reservas.", + "join_event_location": "Únete a {{eventLocationType}}", + "troubleshooting": "Solución de problemas", + "calendars_were_checking_for_conflicts": "Calendarios que estamos verificando para conflictos", + "availabilty_schedules": "Horarios de disponibilidad", + "manage_calendars": "Gestionar calendarios", + "manage_availability_schedules": "Gestionar horarios de disponibilidad", + "locked": "Bloqueado", + "unlocked": "Desbloqueado", "lock_timezone_toggle_on_booking_page": "Bloquear la zona horaria en la página de reserva", "description_lock_timezone_toggle_on_booking_page": "Bloquear la zona horaria en la página de reserva, es útil para eventos en persona.", + "event_setup_multiple_payment_apps_error": "Solo puedes tener una aplicación de pago habilitada por tipo de evento.", + "number_in_international_format": "Por favor, introduce el número en formato internacional.", + "install_calendar": "Instalar Calendario", + "branded_subdomain": "Subdominio personalizado", + "branded_subdomain_description": "Obtén tu propio subdominio personalizado, como acme.cal.com", + "org_insights": "Perspectivas de toda la organización", + "org_insights_description": "Entiende cómo toda tu organización está utilizando el tiempo", "extensive_whitelabeling": "Asistencia dedicada en materia de incorporación e ingeniería", + "extensive_whitelabeling_description": "Personaliza tu experiencia de programación con tu propio logo, colores y más", + "unlimited_teams": "Equipos Ilimitados", + "unlimited_teams_description": "Añade tantos subequipos como necesites a tu organización", + "unified_billing": "Facturación Unificada", + "unified_billing_description": "Añade una sola tarjeta de crédito para pagar todas las suscripciones de tu equipo", + "advanced_managed_events": "Tipos de Eventos Avanzados Gestionados", + "advanced_managed_events_description": "Añade una sola tarjeta de crédito para pagar todas las suscripciones de tu equipo", + "enterprise_description": "Actualiza a Enterprise para crear tu Organización", + "create_your_org": "Crea tu Organización", + "create_your_org_description": "Actualiza a Organizaciones y recibe un subdominio, facturación unificada, Insights, personalización extensa y más", + "create_your_enterprise_description": "Actualiza a Enterprise y obtén acceso a la sincronización de Active Directory, aprovisionamiento automático de usuarios SCIM, agentes de voz de Cal.ai, APIs de administración y más", + "other_payment_app_enabled": "Solo puedes habilitar una aplicación de pago por tipo de evento", + "admin_delete_organization_description": "
  • Los equipos que son miembros de esta organización también serán eliminados junto con sus tipos de eventos
  • Los usuarios que formaban parte de la organización no serán eliminados, pero sus nombres de usuario se cambiarán para permitirles existir fuera de la organización
  • Los tipos de eventos creados por el usuario después de estar en la organización serán eliminados
  • Los tipos de eventos de usuarios migrados no serán eliminados
", + "admin_delete_organization_title": "¿Eliminar {{organizationName}}?", + "published": "Publicado", + "unpublished": "No Publicado", + "publish": "Publicar", + "org_publish_error": "No se pudo publicar la organización", + "troubleshooter_tooltip": "Abre el solucionador de problemas y averigua qué está mal con tu horario", "need_help": "¿Necesita ayuda?", + "troubleshooter": "Solucionador de Problemas", + "number_to_call": "Número a Llamar", + "guest_name": "Nombre del Invitado", + "guest_email": "Correo Electrónico del Invitado", + "guest_company": "Empresa del Invitado", + "please_install_a_calendar": "Por favor, instala un calendario", + "instant_tab_title": "Reserva Instantánea", + "instant_event_tab_description": "Permite que la gente reserve inmediatamente", + "uprade_to_create_instant_bookings": "Actualiza a Enterprise y permite que los invitados se unan a una llamada instantánea a la que los asistentes pueden entrar directamente. Esto es solo para tipos de eventos de equipo", + "dont_want_to_wait": "¿No quieres esperar?", + "meeting_started": "Reunión Iniciada", + "pay_and_book": "Pagar para reservar", + "cal_ai_event_tab_description": "Permite que Agentes de IA te reserven", + "booking_not_found_error": "No se pudo encontrar la reserva", + "booking_seats_full_error": "No hay asientos disponibles para la reserva", + "missing_payment_credential_error": "Faltan credenciales de pago", + "missing_payment_app_id_error": "Falta el ID de la aplicación de pago", + "not_enough_available_seats_error": "No hay suficientes asientos disponibles para la reserva", + "user_redirect_title": "{{username}} está ausente por un breve período de tiempo.", + "user_redirect_description": "Mientras tanto, {{profile.username}} se encargará de todas las nuevas reuniones programadas en nombre de {{username}}.", + "out_of_office": "Fuera de la oficina", + "out_of_office_description": "Informa a tus reservadores cuando estés fuera de la oficina.", + "send_request": "Enviar solicitud", + "start_date_and_end_date_required": "Se requieren fecha de inicio y fecha de fin", + "start_date_must_be_before_end_date": "La fecha de inicio debe ser antes de la fecha de fin", + "start_date_must_be_in_the_future": "La fecha de inicio debe estar en el futuro", + "user_not_found": "Usuario no encontrado", + "out_of_office_entry_already_exists": "Ya existe una entrada de fuera de la oficina", + "out_of_office_id_required": "Se requiere el ID de la entrada de fuera de la oficina", + "booking_redirect_infinite_not_allowed": "Ya existe una redirección de reserva de ese usuario hacia ti.", + "success_entry_created": "Entrada creada con éxito", + "booking_redirect_email_subject": "Notificación de redirección de reserva", + "booking_redirect_email_title": "Notificación de Redirección de Reserva", + "booking_redirect_email_description": "Has recibido una redirección de reserva de {{toName}}, por lo que los enlaces de su perfil se redirigirán al tuyo durante el intervalo de tiempo: ", + "success_accept_booking_redirect": "Has aceptado esta solicitud de redirección de reserva.", + "success_reject_booking_redirect": "Has rechazado esta solicitud de redirección de reserva.", + "copy_link_booking_redirect_request": "Copiar enlace para compartir solicitud", + "booking_redirect_request_title": "Solicitud de Redirección de Reserva", + "select_team_member": "Seleccionar miembro del equipo", + "going_away_title": "¿Te vas? Simplemente marca el enlace de tu perfil como no disponible por un período de tiempo.", + "redirect_team_enabled": "Proporciona un enlace a un miembro del equipo cuando estés fuera de la oficina", + "redirect_team_disabled": "Proporciona un enlace a un miembro del equipo cuando estés fuera de la oficina (Se requiere plan de equipo)", + "out_of_office_unavailable_list": "Lista de indisponibilidad fuera de la oficina", + "success_deleted_entry_out_of_office": "Entrada eliminada con éxito", + "temporarily_out_of_office": "¿Fuera de la oficina temporalmente?", + "add_a_redirect": "Agregar una redirección", + "create_entry": "Crear entrada", + "time_range": "Rango de tiempo", + "automatically_add_all_team_members": "Agregar a todos los miembros del equipo, incluidos los futuros", + "redirect_to": "Redirigir a", + "having_trouble_finding_time": "¿Tienes problemas para encontrar un tiempo?", "show_more": "Mostrar más", + "forward_params_redirect": "Reenviar parámetros como ?email=...&name=... y más", + "assignment_description": "Programa reuniones cuando todos estén disponibles o rota entre los miembros de tu equipo", + "lowest": "más bajo", + "low": "bajo", + "medium": "medio", + "high": "alto", + "Highest": "más alto", + "send_booker_to": "Enviar a Booker a", + "set_priority": "Establecer prioridad", + "set_weight": "Establecer peso", + "enable_weights": "Habilitar pesos", + "priority_for_user": "Prioridad para {{userName}}", + "weights_description": "Los pesos determinan cómo se distribuyen las reuniones entre los anfitriones. <1>Aprende más", + "weight_for_user": "Peso para {{userName}}", + "change_priority": "cambiar prioridad", + "field_identifiers_as_variables": "Usa identificadores de campo como variables para tu redirección de eventos personalizada", + "field_identifiers_as_variables_with_example": "Usa identificadores de campo como variables para tu redirección de eventos personalizada (por ejemplo, {{variable}})", + "account_already_linked": "La cuenta ya está vinculada", "send_email": "Enviar correo electrónico", + "mark_as_no_show": "Marcar como no presentado", + "unmark_as_no_show": "Desmarcar como no presentado", + "account_unlinked_success": "Cuenta desvinculada con éxito", + "account_unlinked_error": "Hubo un error al desvincular la cuenta", + "travel_schedule": "Horario de viaje", + "travel_schedule_description": "Planifica tu viaje con anticipación para mantener tu horario existente en una zona horaria diferente y evitar ser reservado a medianoche.", + "schedule_timezone_change": "Programar cambio de zona horaria", + "date": "Fecha", + "overlaps_with_existing_schedule": "Esto se superpone con un horario existente. Por favor selecciona una fecha diferente.", + "org_admin_no_slots|subject": "No se encontró disponibilidad para {{name}}", + "org_admin_no_slots|heading": "No se encontró disponibilidad para {{name}}", + "org_admin_no_slots|content": "Hola Administradores de la Organización,

Por favor, tomen nota: Se nos ha informado que {{username}} no ha tenido disponibilidad cuando un usuario ha visitado {{username}}/{{slug}}

Hay algunas razones por las que esto podría estar sucediendo
El usuario no tiene ningún calendario conectado
Sus horarios adjuntos a este evento no están habilitados

Recomendamos verificar su disponibilidad para resolver esto.", + "org_admin_no_slots|cta": "Abrir disponibilidad de usuarios", + "organization_no_slots_notification_switch_title": "Recibir notificaciones cuando tu equipo no tenga disponibilidad", + "organization_no_slots_notification_switch_description": "Los administradores recibirán notificaciones por correo electrónico cuando un usuario intente reservar con un miembro del equipo y no haya disponibilidad. Enviamos este correo después de dos intentos y te recordamos cada 7 días por usuario.", + "email_team_invite|subject|added_to_org": "{{user}} te ha añadido a la organización {{team}} en {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} te ha invitado a unirte a la organización {{team}} en {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} te ha añadido al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} te ha invitado a unirte al equipo {{team}} de la organización {{parentTeamName}} en {{appName}}", "email_team_invite|subject|invited_to_regular_team": "{{user}} te invitó a unirte al equipo {{team}} en {{appName}}", + "email_team_invite|heading|added_to_org": "Has sido añadido a una organización de {{appName}}", + "email_team_invite|heading|invited_to_org": "Has sido invitado a una organización de {{appName}}", + "email_team_invite|heading|added_to_subteam": "Has sido añadido a un equipo de la organización {{parentTeamName}}", + "email_team_invite|heading|invited_to_subteam": "Has sido invitado a un equipo de la organización {{parentTeamName}}", "email_team_invite|heading|invited_to_regular_team": "Lo han invitado a unirse a un equipo en {{appName}}", + "email_team_invite|content|added_to_org": "{{invitedBy}} te ha añadido a la organización {{teamName}}.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} te ha invitado a unirte a la organización {{teamName}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} te ha añadido al equipo {{teamName}} en su organización {{parentTeamName}}. {{appName}} es el programador de eventos que permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} te ha invitado a unirte al equipo {{teamName}} en su organización {{parentTeamName}}. {{appName}} es el programador de eventos que permite a ti y a tu equipo agendar reuniones sin el ir y venir de correos electrónicos.", "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} lo ha invitado a unirse a su equipo \"{{teamName}}\" en {{appName}}. {{appName}} es el planificador de eventos que le permite a usted y a su equipo programar reuniones sin correos electrónicos de ida y vuelta.", + "email|existing_user_added_link_will_change": "Al aceptar la invitación, tu enlace cambiará al dominio de tu organización, pero no te preocupes, todos los enlaces anteriores seguirán funcionando y redirigirán adecuadamente.

Por favor, ten en cuenta: Todos tus tipos de eventos personales se moverán a la organización {{teamName}}, lo que también puede incluir un enlace personal potencial.

Para eventos personales, recomendamos crear una nueva cuenta con una dirección de correo electrónico personal.", + "email|existing_user_added_link_changed": "Tu enlace ha sido cambiado de {prevLinkWithoutProtocol} a {newLinkWithoutProtocol}, pero no te preocupes, todos los enlaces anteriores siguen funcionando y redirigen adecuadamente.

Por favor, ten en cuenta: Todos tus tipos de eventos personales se han movido a la organización {teamName}, lo que también puede incluir un enlace personal potencial.

Por favor, inicia sesión y asegúrate de que no tienes eventos privados en tu nueva cuenta organizacional.

Para eventos personales, recomendamos crear una nueva cuenta con una dirección de correo electrónico personal.

Disfruta de tu nuevo enlace limpio: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Tu organización ha sido creada", + "your_current_plan": "Tu plan actual", + "organization_price_per_user_month": "$37 por usuario al mes (mínimo 30 asientos)", + "privacy_organization_description": "Gestiona la configuración de privacidad para tu organización", "privacy": "Privacidad", - "cookie_consent_checkbox": "Al crear una cuenta, aceptas nuestra política de privacidad y el uso de cookies", - "signing_up_terms": "Al continuar, acepta nuestras <0>condiciones de uso y nuestra <1>política de privacidad.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "h", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} h", - "travel_schedule": "Programa de viajes", - "travel_schedule_description": "Planea tu viaje con anticipación para mantener tu horario existente en una zona horaria diferente y evitar ser reservado a medianoche.", - "schedule_timezone_change": "Cambio de zona horaria del programa", - "schedule_tz_without_end_date": "Programa de zona horaria sin fecha de finalización", + "team_will_be_under_org": "Los nuevos equipos estarán bajo tu organización", + "add_group_name": "Añadir nombre del grupo", + "group_name": "Nombre del grupo", + "routers": "Enrutadores", + "primary": "Primario", + "make_primary": "Hacer primario", + "add_email": "Añadir correo electrónico", + "add_emails": "Añadir correos electrónicos", + "add_email_description": "Añade una dirección de correo electrónico para reemplazar tu principal o para usar como correo alternativo en tus tipos de eventos.", + "confirm_email": "Confirma tu correo electrónico", + "scheduler_first_name": "El nombre de la persona que reserva", + "scheduler_last_name": "El apellido de la persona que reserva", + "scheduler_name": "Nombre del programador", + "organizer_first_name": "Tu nombre", + "confirm_email_description": "Enviamos un correo electrónico a {{email}}. Haz clic en el enlace del correo para verificar esta dirección.", + "send_event_details_to": "Enviar detalles del evento a", + "schedule_tz_without_end_date": "Programar zona horaria sin fecha de finalización", + "select_members": "Seleccionar miembros", + "lock_event_types_modal_header": "¿Qué debemos hacer con los tipos de eventos existentes de tu miembro?", + "org_delete_event_types_org_admin": "Todos los tipos de eventos individuales de tus miembros (excepto los gestionados) se eliminarán permanentemente. No podrán crear nuevos.", + "org_hide_event_types_org_admin": "Los tipos de eventos individuales de tus miembros (excepto los gestionados) se ocultarán de los perfiles, pero los enlaces seguirán activos. No podrán crear nuevos.", + "hide_org_eventtypes": "Ocultar tipos de eventos individuales", + "delete_org_eventtypes": "Eliminar tipos de eventos individuales", + "lock_org_users_eventtypes": "Bloquear la creación de tipos de eventos individuales", + "lock_org_users_eventtypes_description": "Evitar que los miembros creen sus propios tipos de eventos.", + "add_to_event_type": "Añadir al tipo de evento", + "create_account_password": "Crear contraseña de cuenta", + "error_creating_account_password": "Error al crear la contraseña de la cuenta", + "cannot_create_account_password_cal_provider": "No se puede crear la contraseña de la cuenta para cuentas de calendario", + "cannot_create_account_password_already_existing": "No se puede crear la contraseña de la cuenta para las ya existentes", + "create_account_password_hint": "No tienes una contraseña de cuenta, crea una navegando a Seguridad -> Contraseña. No puedes desconectar hasta que se cree una contraseña de cuenta.", + "disconnect_account": "Desconectar cuenta conectada", + "disconnect_account_hint": "Desconectar tu cuenta conectada cambiará la forma en que inicias sesión. Solo podrás iniciar sesión en tu cuenta usando correo electrónico + contraseña", + "cookie_consent_checkbox": "Consiento nuestra política de privacidad y el uso de cookies", + "make_a_call": "Hacer una llamada", + "skip_rr_assignment_label": "Omitir asignación de turnos si el contacto existe en Salesforce", + "skip_rr_description": "La URL debe contener el correo electrónico del contacto como parámetro, por ejemplo, ?email=contactEmail", + "select_account_header": "Seleccionar cuenta", + "select_account_description": "Instala {{appName}} en tu cuenta personal o en una cuenta de equipo.", + "select_event_types_header": "Seleccionar tipos de eventos", + "select_event_types_description": "¿En qué tipo de evento quieres instalar {{appName}}?", + "configure_app_header": "Configurar {{appName}}", + "configure_app_description": "Finaliza la configuración de la aplicación. Puedes cambiar estos ajustes más tarde.", + "already_installed": "ya instalado", "ooo_reasons_unspecified": "No especificado", "ooo_reasons_vacation": "Vacaciones", "ooo_reasons_travel": "Viaje", - "ooo_reasons_sick_leave": "Permiso por enfermedad", + "ooo_reasons_sick_leave": "Baja por enfermedad", "ooo_reasons_public_holiday": "Día festivo", - "ooo_forwarding_to": "Redirigiendo a {{username}}", - "ooo_not_forwarding": "Sin redirección", + "ooo_forwarding_to": "Reenviando a {{username}}", + "ooo_not_forwarding": "Sin reenvío", "ooo_empty_title": "Crear un OOO", - "ooo_empty_description": "Comunícate con tus reservadores cuando no estés disponible para tomar reservas. Aún pueden reservarte a tu regreso o puedes redirigirlos a un miembro del equipo.", + "ooo_empty_description": "Comunica a tus reservadores cuando no estés disponible para tomar reservas. Aún pueden reservarte a tu regreso o puedes reenviarlos a un miembro del equipo.", "ooo_user_is_ooo": "{{displayName}} está fuera de la oficina", "ooo_slots_returning": "<0>{{displayName}} puede tomar sus reuniones mientras está fuera.", - "ooo_slots_book_with": "Reservar a {{displayName}}", + "ooo_slots_book_with": "Reservar con {{displayName}}", "ooo_create_entry_modal": "Salir de la oficina", - "ooo_select_reason": "Seleccionar razón", - "enterprise_license_locally": "Puedes probar esta característica localmente pero no en producción.", - "enterprise_license_sales": "Para actualizar a la edición empresarial, ponte en contacto con nuestro equipo de ventas. Si ya tienes una clave de licencia, por favor contacta a support@cal.com para obtener ayuda.", - "apply_to_all_event_types": "Aplicar a todos, incluyendo tipos de eventos futuros", + "ooo_select_reason": "Seleccionar motivo", + "create_an_out_of_office": "Salir de la oficina", + "submit_feedback": "Enviar comentarios", + "host_no_show": "Tu anfitrión no se presentó", + "no_show_description": "Puedes reprogramar otra reunión con ellos", + "how_can_we_improve": "¿Cómo podemos mejorar nuestro servicio?", + "most_liked": "¿Qué te gustó más?", + "review": "Reseña", + "reviewed": "Reseñado", + "unreviewed": "Sin revisar", + "rating_url_info": "La URL para el formulario de retroalimentación de calificaciones", + "no_show_url_info": "La URL para la retroalimentación de no asistencia", + "no_support_needed": "¿No se necesita soporte?", + "hide_support": "Ocultar soporte", + "event_ratings": "Calificaciones promedio", + "event_no_show": "Anfitrión no asistió", + "recent_ratings": "Calificaciones recientes", + "no_ratings": "No se han enviado calificaciones", + "no_ratings_description": "Agrega un flujo de trabajo con 'Calificación' para recopilar calificaciones después de las reuniones", + "most_no_show_host": "Miembros con más ausencias", + "highest_rated_members": "Miembros con reuniones mejor calificadas", + "lowest_rated_members": "Miembros con reuniones peor calificadas", + "csat_score": "Puntuación CSAT", + "lockedSMS": "SMS bloqueado", + "leave_without_assigning_anyone": "¿Salir sin asignar a nadie?", + "leave_without_adding_attendees": "¿Estás seguro de que quieres salir de este evento sin agregar asistentes?", + "no_availability_shown_to_bookers": "Si no asignas a nadie para este evento, no habrá disponibilidad mostrada a los reservadores.", + "go_back_and_assign": "Volver y asignar", + "leave_without_assigning": "Salir sin asignar", + "signing_up_terms": "Al continuar, acepta nuestras <0>condiciones de uso y nuestra <1>política de privacidad.", + "always_show_x_days": "Siempre {{x}} días disponibles", + "unable_to_subscribe_to_the_platform": "Ocurrió un error al intentar suscribirse al plan de la plataforma, por favor intente de nuevo más tarde", + "updating_oauth_client_error": "Ocurrió un error al actualizar el cliente OAuth, por favor intente de nuevo más tarde", + "creating_oauth_client_error": "Ocurrió un error al crear el cliente OAuth, por favor intente de nuevo más tarde", + "event_type_color": "Color del tipo de evento", + "event_type_color_description": "Esto solo se usa para diferenciar el tipo de evento y la reserva dentro de la aplicación. No se muestra a los reservadores.", + "mark_as_no_show_title": "Marcar como no presentado", + "x_marked_as_no_show": "{{x}} marcado como no presentado", + "x_unmarked_as_no_show": "{{x}} desmarcado como no presentado", + "team_select_info": "se activa para todos los tipos de eventos del equipo y los tipos de eventos personales de todos los miembros del equipo", + "no_show_updated": "Estado de no presentado actualizado para los asistentes", + "email_copied": "Correo electrónico copiado", + "USER_PENDING_MEMBER_OF_THE_ORG": "El usuario es un miembro pendiente de la organización", + "USER_ALREADY_INVITED_OR_MEMBER": "El usuario ya está invitado o es miembro", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "El usuario es miembro de una organización de la que este equipo no forma parte.", + "booking_reassigned": "La reserva ha sido reasignada", + "reassign": "Reasignar", + "reassign_to_another_rr_host": "Reasignar la reserva a otro anfitrión disponible de round robin", + "assign_team_member": "Asignar miembro del equipo", + "override_team_member_to_assign": "Anular qué miembro del equipo desea asignar.", + "no_available_hosts": "No hay anfitriones disponibles", + "reassign_round_robin_host": "Reasignar anfitrión de round robin", + "skip_writing_to_calendar": "No escribir en el feed ICS", + "rescheduling_not_possible": "No es posible reprogramar ya que el evento ha expirado", + "event_expired": "Este evento ha expirado", + "skip_contact_creation": "Omitir la creación de contactos si no existen en {{appName}}", + "skip_writing_to_calendar_note": "Si su enlace ICS es de solo lectura (por ejemplo, Proton Calendar), marque la casilla de arriba para evitar errores. También deberá actualizar manualmente su calendario para los cambios.", + "attributes": "Atributos", + "new_attribute": "Nuevo atributo", + "add_attributes": "Agregar atributos", + "add_attributes_description": "Añadir atributos a los miembros de tu equipo", + "new_option": "Nueva opción", + "update_profile": "Actualizar miembro", + "attribute_updated_successfully": "Atributo actualizado con éxito", + "attributes_edited_successfully": "Atributos editados con éxito", + "attribute_meta_description": "Gestionar atributos para los miembros de tu equipo", + "attributes_edit_description": "Editar atributos para los miembros de tu equipo", + "back_to_attributes": "Volver a atributos", + "delete_attribute": "¿Estás seguro de que quieres eliminar esta opción?", + "delete_attribute_description": "Esta opción está asignada a {{numberOfUsers}} miembros. Eliminarla la quitará de sus perfiles.", + "disable_all_emails_to_attendees": "Desactivar correos electrónicos estándar a los asistentes relacionados con este tipo de evento", + "disable_all_emails_description": "Desactiva la comunicación por correo electrónico estándar relacionada con este tipo de evento, incluidas las confirmaciones de reserva, recordatorios y cancelaciones.", + "disable_all_emails_to_hosts": "Desactivar correos electrónicos estándar a los anfitriones relacionados con este tipo de evento", + "type_confirm_to_continue": "Escribe confirmar para continuar", + "disable_email": "Desactivar correo electrónico", + "grant_admin_api": "Conceder acceso a la API de administrador", + "revoke_admin_api": "Revocar acceso a la API de administrador", + "apple_connect_atom_label": "Conectar Calendario de Apple", + "apple_connect_atom_already_connected_label": "Calendario de Apple conectado", + "apple_connect_atom_loading_label": "Comprobando Calendario de Apple", + "google_connect_atom_label": "Conectar Calendario de Google", + "google_connect_atom_already_connected_label": "Calendario de Google conectado", + "google_connect_atom_loading_label": "Comprobando Calendario de Google", + "outlook_connect_atom_label": "Conectar Calendario de Outlook", + "outlook_connect_atom_already_connected_label": "Calendario de Outlook conectado", + "outlook_connect_atom_loading_label": "Comprobando el calendario de Outlook", + "booking_question_response_variables": "Variables de respuesta a preguntas de reserva", + "managed_by_teamAdmins": "Gestionado por {{teamAdmins}}", + "number_of_options": "{{count}} opciones", + "reschedule_with_same_round_robin_host_title": "Reprogramar con el mismo anfitrión de Round-Robin", + "reschedule_with_same_round_robin_host_description": "Los eventos reprogramados se asignarán al mismo anfitrión que inicialmente", + "disable_input_if_prefilled": "Desactivar entrada si el identificador de URL está prellenado", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Agregue sus nuevas cadenas arriba ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/fr/common.json b/apps/web/public/static/locales/fr/common.json index d4b9cfa8391dd0..6883753b308438 100644 --- a/apps/web/public/static/locales/fr/common.json +++ b/apps/web/public/static/locales/fr/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} secondes", "upgrade_now": "Mettre à niveau maintenant", "accept_invitation": "Accepter l'invitation", + "max_characters": "Caractères max.", + "min_characters": "Caractères min.", "calcom_explained": "{{appName}} fournit une infrastructure de planification pour absolument tout le monde.", "calcom_explained_new_user": "Terminez la configuration de votre compte {{appName}} ! Vous n'êtes qu'à quelques pas de résoudre tous vos problèmes de planification.", "have_any_questions": "Vous avez des questions ? Nous sommes là pour vous aider.", @@ -45,6 +47,7 @@ "no_options_available": "Aucune option disponible", "cancellation_reason": "Motif de l'annulation (facultatif)", "cancellation_reason_placeholder": "Pourquoi annulez-vous ?", + "rejection_reason_placeholder": "Pourquoi refusez-vous ?", "rejection_reason": "Motif de refus", "rejection_reason_title": "Refuser la demande de réservation ?", "rejection_reason_description": "Voulez-vous vraiment refuser la réservation ? Nous informerons la personne qui a tenté de réserver. Vous pouvez fournir un motif ci-dessous.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "Votre rendez-vous est en attente de paiement", "dark_theme_contrast_error": "La couleur du thème sombre ne passe pas la vérification du contraste. Nous vous recommandons de modifier cette couleur afin que vos boutons soient plus visibles.", "light_theme_contrast_error": "La couleur du thème clair ne passe pas la vérification du contraste. Nous vous recommandons de modifier cette couleur afin que vos boutons soient plus visibles.", + "event_type_color_light_theme_contrast_error": "La couleur du thème clair ne passe pas le contrôle de contraste. Nous vous recommandons de changer cette couleur pour que vos types d'événements soient plus visibles.", + "event_type_color_dark_theme_contrast_error": "La couleur du thème sombre ne passe pas le contrôle de contraste. Nous vous recommandons de changer cette couleur pour que vos types d'événements soient plus visibles.", "payment_not_created_error": "Le paiement n'a pas pu être créé", "couldnt_charge_card_error": "Impossible de débiter la carte pour le Paiement", "no_available_users_found_error": "Aucun utilisateur disponible n'a été trouvé. Pourriez-vous essayer un autre créneau horaire ?", @@ -102,6 +107,9 @@ "new_event_request": "Nouvelle demande d'événement : {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Confirmer ou refuser la demande", "check_bookings_page_to_confirm_or_reject": "Consultez votre page de réservation pour confirmer ou refuser la réservation.", + "check_in_assistant": "Assistant de vérification", + "check_in_assistant_description": "Effectue un appel sortant pour vérifier si le rendez-vous prévu convient ou si vous souhaitez le reprogrammer.", + "create_your_own_prompt": "Créez votre propre invite et utilisez-la pour passer un appel sortant.", "event_awaiting_approval": "Un nouvel événement attend votre validation", "event_awaiting_approval_recurring": "Un événement récurrent attend votre validation", "someone_requested_an_event": "Quelqu'un a demandé à planifier un événement sur votre calendrier.", @@ -463,6 +471,7 @@ "booking_cancelled": "Réservation annulée", "booking_rescheduled": "Réservation replanifiée", "recording_ready": "Lien de téléchargement de l'enregistrement prêt", + "recording_transcription_generated": "Transcription générée", "booking_created": "Réservation créée", "booking_rejected": "Réservation rejetée", "booking_requested": "Réservation demandée", @@ -470,6 +479,7 @@ "meeting_ended": "Rendez-vous terminé", "form_submitted": "Formulaire envoyé", "booking_paid": "Réservation payée", + "booking_no_show_updated": "Absence au rendez-vous mise à jour", "event_triggers": "Déclencheurs d'événement", "subscriber_url": "Lien de l'abonné", "create_new_webhook": "Créez un nouveau webhook", @@ -703,6 +713,7 @@ "default_duration_no_options": "Veuillez d'abord choisir les durées disponibles", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "minutes", "use_cal_ai_to_make_call_description": "Utilisez Cal.ai pour obtenir un numéro de téléphone géré par une IA ou pour passer des appels à des invités.", "round_robin": "Round-robin", @@ -768,6 +779,8 @@ "brand_color": "Couleur de la marque", "light_brand_color": "Couleur de la marque (clair)", "dark_brand_color": "Couleur de la marque (sombre)", + "light_event_type_color": "Couleur du type d'événement (Thème clair)", + "dark_event_type_color": "Couleur du type d'événement (Thème sombre)", "file_not_named": "Le fichier n'est pas nommé [idOrSlug]/[user]", "create_team": "Créer une équipe", "name": "Nom", @@ -1042,6 +1055,7 @@ "seats_nearly_full": "Places presque toutes occupées", "seats_half_full": "Les places partent vite", "number_of_seats": "Nombre de places par réservation", + "set_instant_meeting_expiry_time_offset_description": "Définir la fenêtre de participation à la réunion (secondes) : La période en secondes pendant laquelle l'hôte peut rejoindre et démarrer la réunion. Après cette période, l'URL de participation à la réunion expirera.", "enter_number_of_seats": "Saisir le nombre de sièges", "you_can_manage_your_schedules": "Vous pouvez gérer vos disponibilités sur la page Disponibilité.", "booking_full": "Plus de places disponibles", @@ -1105,7 +1119,9 @@ "impersonating_user_warning": "Emprunt du nom d'utilisateur « {{user}} ».", "impersonating_stop_instructions": "Cliquez ici pour arrêter", "event_location_changed": "Mise à jour - Votre événement a changé de lieu", + "new_guests_added": "Ajoutés - Nouveaux invités ajoutés à votre événement", "location_changed_event_type_subject": "Lieu modifié : {{eventType}} avec {{name}} le {{date}}", + "guests_added_event_type_subject": "Invités ajoutés : {{eventType}} avec {{name}} le {{date}}", "current_location": "Lieu actuel", "new_location": "Nouveau lieu", "session": "Session", @@ -1117,7 +1133,11 @@ "set_location": "Définir le lieu", "update_location": "Mettre à jour le lieu", "location_updated": "Lieu mis à jour", + "guests_added": "Invités ajoutés", + "unable_to_add_guests": "Impossible d'ajouter des invités", "email_validation_error": "Ceci ne ressemble pas à une adresse e-mail", + "emails_must_be_unique_valid": "Les adresses e-mail doivent être uniques et valides", + "url_validation_error": "Cela ne ressemble pas à une URL valide", "place_where_cal_widget_appear": "Placez ce code dans votre HTML à l'endroit où vous souhaitez que votre widget {{appName}} apparaisse.", "create_update_react_component": "Créez ou mettez à jour un composant React existant comme indiqué ci-dessous.", "copy_code": "Copier le code", @@ -1134,6 +1154,8 @@ "make_setup_instructions": "<0>Accédez au <1><0>lien d'invitation Make et installez l'application Cal.com.<1>Connectez-vous à votre compte Make et créez un nouveau scénario.<2>Sélectionnez Cal.com comme application déclencheur. Choisissez également un événement déclencheur.<3>Choisissez votre compte, puis saisissez votre clé API unique.<4>Testez votre déclencheur.<5>Vous êtes prêt !", "install_zapier_app": "Veuillez d'abord installer l'application Zapier dans l'App Store.", "install_make_app": "Veuillez d'abord installer l'application Make dans l'App Store.", + "app_not_installed": "Application non installée", + "visit_our_app_store": "Désolé, cette application n'est pas installée sur votre compte. Veuillez visiter notre boutique d'applications pour explorer et découvrir celle-ci et d'autres applications intéressantes.", "connect_apple_server": "Se connecter au serveur d'Apple", "calendar_url": "Lien du calendrier", "apple_server_generate_password": "Générez un mot de passe pour application à utiliser avec {{appName}} sur", @@ -1208,6 +1230,8 @@ "day_timeUnit": "jours", "hour_timeUnit": "heures", "minute_timeUnit": "minutes", + "minute_short": "min", + "hour_short": "h", "new_workflow_heading": "Créez votre premier workflow", "new_workflow_description": "Les workflows vous permettent d'automatiser l'envoi de rappels et de notifications.", "active_on": "Actif sur", @@ -1235,6 +1259,8 @@ "may_require_confirmation": "Peut nécessiter une confirmation", "nr_event_type_one": "{{count}} type d'événement", "nr_event_type_other": "{{count}} types d'événements", + "count_team_one": "{{count}} équipe", + "count_team_other": "{{count}} équipes", "add_action": "Ajouter une action", "set_whereby_link": "Définir le lien Whereby", "invalid_whereby_link": "Veuillez saisir un lien Whereby valide", @@ -1259,8 +1285,10 @@ "reminder_email": "Rappel : {{eventType}} avec {{name}} le {{date}}", "not_triggering_existing_bookings": "Ne se déclenchera pas pour les réservations déjà existantes car l'utilisateur sera invité à fournir un numéro de téléphone lors de la réservation de l'événement.", "minute_one": "{{count}} minute", + "minute_one_short": "{{count}}min", "minute_other": "{{count}} minutes", "hour_one": "{{count}} heure", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} heures", "invalid_input": "Saisie non valide", "broken_video_action": "Nous n'avons pas pu ajouter le lien <1>{{location}} à votre événement planifié. Contactez vos invités ou mettez à jour votre événement de calendrier pour ajouter les détails. Vous pouvez <3> changer le lieu sur le type d'événement ou essayer <5>de supprimer et d'ajouter à nouveau l'application.", @@ -1272,7 +1300,12 @@ "problem_updating_calendar": "Un problème est survenu lors de la mise à jour de votre calendrier", "active_on_event_types_one": "Actif sur {{count}} type d'événement", "active_on_event_types_other": "Actif sur {{count}} types d'événements", + "active_on_teams_one": "Actif sur {{count}} équipe", + "active_on_teams_other": "Actif sur {{count}} équipes", + "active_on_all_event_types": "Actif sur tous les types d'événements", + "active_on_all_teams": "Actif sur toutes les équipes", "no_active_event_types": "Aucun type d’événement actif", + "no_active_teams": "Aucune équipe active", "new_seat_subject": "Nouveau participant : {{name}} pour {{eventType}} le {{date}}", "new_seat_title": "Quelqu'un s'est ajouté à un événement", "variable": "Variable", @@ -1338,6 +1371,9 @@ "2fa_required": "Double authentification requise", "incorrect_2fa": "Code de double authentification incorrect", "which_event_type_apply": "À quel type d'événement s'appliquera-t-il ?", + "apply_to_all_event_types": "Appliquer à tous, y compris aux futurs types d'événements", + "apply_to_all_teams": "Appliquer à tous les types d'événements d'équipe et d'utilisateur", + "which_team_apply": "À quelle équipe cela s'appliquera-t-il ?", "no_workflows_description": "Les workflows permettent une automatisation simple pour envoyer des notifications et des rappels vous permettant de créer des processus autour de vos événements.", "timeformat_profile_hint": "Il s'agit d'un paramètre interne qui n'affectera pas la façon dont les horaires sont affichés sur les pages de réservation publiques, que ce soit pour vous ou toute personne prenant rendez-vous avec vous.", "create_workflow": "Créer un workflow", @@ -1423,6 +1459,7 @@ "add_dynamic_variables": "Ajouter des variables de texte dynamiques", "event_name_info": "Nom du type d'événement", "event_date_info": "Date de l'événement", + "event_duration_info": "La durée de l'événement", "event_time_info": "Heure de début de l'événement", "event_type_not_found": "Type d'événement introuvable", "location_variable": "Lieu", @@ -1477,6 +1514,7 @@ "team_disable_cal_branding_description": "Supprimez toutes les références à la marque {{appName}}, par exemple « Propulsé par {{appName}} ».", "invited_by_team": "{{teamName}} vous a invité à rejoindre son équipe en tant que {{role}}", "token_invalid_expired": "Le token est invalide ou a expiré.", + "view_booking": "Voir la réservation", "exchange_add": "Se connecter à Microsoft Exchange", "exchange_authentication": "Méthode d'authentification", "exchange_authentication_standard": "Authentification de base", @@ -1541,6 +1579,8 @@ "report_app": "Signaler l'application", "limit_booking_frequency": "Limiter la fréquence de réservation", "limit_booking_frequency_description": "Limitez le nombre de réservations possibles pour cet événement.", + "only_show_first_available_slot": "N'afficher que le premier créneau disponible de chaque jour", + "only_show_first_available_slot_description": "Cela limitera votre disponibilité pour ce type d'événement à un créneau par jour, programmé au plus tôt possible.", "limit_total_booking_duration": "Limiter la durée totale de réservation", "limit_total_booking_duration_description": "Limitez la durée totale pendant laquelle cet événement peut être réservé.", "add_limit": "Ajouter une limite", @@ -1580,6 +1620,7 @@ "how_long_after": "Combien de temps après la fin de l'événement ?", "no_available_slots": "Aucun créneau disponible", "time_available": "Disponibilités", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Vous ne trouvez pas l'application de visioconférence adaptée ? Visitez notre <1>App Store.", "install_new_calendar_app": "Installer une nouvelle application de calendrier", "make_phone_number_required": "Rendre le numéro de téléphone obligatoire pour la réservation de l'événement", "new_event_type_availability": "Disponibilités de {{eventTypeTitle}}", @@ -1744,6 +1785,7 @@ "new_attendee": "Nouveau participant", "awaiting_approval": "En attente de validation", "requires_google_calendar": "Cette application nécessite une connexion à Google Agenda", + "event_type_requires_google_calendar": "L'option \"Ajouter au calendrier\" pour ce type d'événement doit être un Google Calendar pour que Meet fonctionne. Connectez-le <1>ici.", "connected_google_calendar": "Vous avez connecté un compte Google Agenda.", "using_meet_requires_calendar": "L'utilisation de Google Meet nécessite un calendrier Google connecté", "continue_to_install_google_calendar": "Continuer à installer Google Agenda", @@ -2331,7 +2373,11 @@ "Highest": "le plus élevé", "send_booker_to": "Envoyer un utilisateur vers", "set_priority": "Définir la priorité", + "set_weight": "Définir la pondération", + "enable_weights": "Activer les pondérations", "priority_for_user": "Priorité pour {{userName}}", + "weights_description": "Les pondérations déterminent comment les réunions sont réparties entre les hôtes. <1>En savoir plus", + "weight_for_user": "Pondération pour {{userName}}", "change_priority": "changer la priorité", "field_identifiers_as_variables": "Utiliser les identifiants de champs comme variables pour la redirection de votre événement personnalisé", "field_identifiers_as_variables_with_example": "Utiliser les identifiants de champs comme variables pour la redirection de votre événement personnalisé (par ex. : {{variable}})", @@ -2381,10 +2427,12 @@ "primary": "Primaire", "make_primary": "Rendre primaire", "add_email": "Ajouter un e-mail", + "add_emails": "Ajouter des e-mails", "add_email_description": "Ajoutez une adresse e-mail pour remplacer votre adresse principale ou pour utiliser comme adresse de courriel alternative sur vos types d'événements.", "confirm_email": "Confirmez votre adresse e-mail", "scheduler_first_name": "Le prénom de la personne qui effectue la réservation", "scheduler_last_name": "Le nom de famille de la personne qui effectue la réservation", + "scheduler_name": "Nom du planificateur", "organizer_first_name": "Votre prénom", "confirm_email_description": "Nous avons envoyé un e-mail à {{email}}. Cliquez sur le lien dans l'e-mail pour vérifier cette adresse.", "send_event_details_to": "Envoyer les détails de l'événement à", @@ -2453,29 +2501,73 @@ "lowest_rated_members": "Membres dont les réunions sont les moins bien notées", "csat_score": "Score CSAT", "lockedSMS": "SMS verrouillé", - "signing_up_terms": "En poursuivant, vous acceptez nos <0>Conditions d'utilisation et <1>Politique de confidentialité.", "leave_without_assigning_anyone": "Partir sans affecter personne ?", "leave_without_adding_attendees": "Voulez-vous vraiment quitter cet évènement sans ajouter de participants ?", "no_availability_shown_to_bookers": "Si vous n'affectez personne à cet évènement, aucune disponibilité ne sera indiquée aux personnes qui effectuent une réservation.", "go_back_and_assign": "Revenir en arrière et affecter", "leave_without_assigning": "Quitter sans affecter", + "signing_up_terms": "En poursuivant, vous acceptez nos <0>Conditions d'utilisation et <1>Politique de confidentialité.", "always_show_x_days": "Tout disponible pendant {{x}} jours", "unable_to_subscribe_to_the_platform": "Une erreur est survenue lors de la souscription à l'offre de plateforme. Veuillez réessayer plus tard", "updating_oauth_client_error": "Une erreur est survenue lors de la mise à jour du client OAuth. Veuillez réessayer plus tard", "creating_oauth_client_error": "Une erreur est survenue lors de la création du client OAuth. Veuillez réessayer plus tard", + "event_type_color": "Couleur du type d'événement", + "event_type_color_description": "Cette couleur est uniquement utilisée pour différencier les types d'événements et les réservations dans l'application. Elle n'est pas affichée aux personnes qui réservent.", "mark_as_no_show_title": "Marquer comme absence", "x_marked_as_no_show": "{{x}} marqués comme absences", "x_unmarked_as_no_show": "{{x}} plus marqués comme absences", + "team_select_info": "déclencheurs pour tous les types d'événements d'équipe et les types d'événements personnels de tous les membres de l'équipe", "no_show_updated": "Statut absence mis à jour pour les participants", "email_copied": "E-mail copié", "USER_PENDING_MEMBER_OF_THE_ORG": "L'utilisateur est un membre en attente de l'organisation", "USER_ALREADY_INVITED_OR_MEMBER": "L'utilisateur a déjà été invité ou est déjà membre", "USER_MEMBER_OF_OTHER_ORGANIZATION": "L'utilisateur est membre d'une organisation dont cette équipe ne fait pas partie.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "h", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} h", - "apply_to_all_event_types": "S'applique à tous, y compris les types d'événements futurs", + "booking_reassigned": "La réservation a été réaffectée", + "reassign": "Réaffecter", + "reassign_to_another_rr_host": "Réaffecter la réservation à un autre hôte round robin disponible", + "assign_team_member": "Assigner un membre de l'équipe", + "override_team_member_to_assign": "Remplacer le membre de l'équipe que vous souhaitez assigner.", + "no_available_hosts": "Aucun hôte disponible", + "reassign_round_robin_host": "Réaffecter l'hôte round robin", + "skip_writing_to_calendar": "Ne pas écrire dans le flux ICS", + "rescheduling_not_possible": "Le report n'est pas possible car l'événement a expiré", + "event_expired": "Cet événement a expiré", + "skip_contact_creation": "Ne pas créer de contacts s'ils n'existent pas dans {{appName}}", + "skip_writing_to_calendar_note": "Si votre lien ICS est en lecture seule (par exemple, Proton Calendar), cochez la case ci-dessus pour éviter les erreurs. Vous devrez également mettre à jour manuellement votre calendrier pour les changements.", + "attributes": "Attributs", + "new_attribute": "Nouvel attribut", + "add_attributes": "Ajouter des attributs", + "add_attributes_description": "Ajouter des attributs à vos membres d'équipe", + "new_option": "Nouvelle option", + "update_profile": "Mettre à jour le membre", + "attribute_updated_successfully": "Attribut mis à jour avec succès", + "attributes_edited_successfully": "Attributs modifiés avec succès", + "attribute_meta_description": "Gérer les attributs de vos membres d'équipe", + "attributes_edit_description": "Modifier les attributs de vos membres d'équipe", + "back_to_attributes": "Retour aux attributs", + "delete_attribute": "Êtes-vous sûr de vouloir supprimer cette option ?", + "delete_attribute_description": "Cette option est attribuée à {{numberOfUsers}} membres. Sa suppression l'enlèvera de leur profil.", + "disable_all_emails_to_attendees": "Désactiver les e-mails standard aux participants liés à ce type d'événement", + "disable_all_emails_description": "Désactive la communication par e-mail standard liée à ce type d'événement, y compris les confirmations de réservation, les rappels et les annulations.", + "disable_all_emails_to_hosts": "Désactiver les e-mails standard aux hôtes liés à ce type d'événement", + "type_confirm_to_continue": "Tapez 'confirmer' pour continuer", + "disable_email": "Désactiver l'e-mail", + "grant_admin_api": "Accorder l'accès à l'API d'administration", + "revoke_admin_api": "Révoquer l'accès à l'API d'administration", + "apple_connect_atom_label": "Connecter le calendrier Apple", + "apple_connect_atom_already_connected_label": "Calendrier Apple connecté", + "apple_connect_atom_loading_label": "Vérification du calendrier Apple", + "google_connect_atom_label": "Connecter le calendrier Google", + "google_connect_atom_already_connected_label": "Calendrier Google connecté", + "google_connect_atom_loading_label": "Vérification du calendrier Google", + "outlook_connect_atom_label": "Connecter le calendrier Outlook", + "outlook_connect_atom_already_connected_label": "Calendrier Outlook connecté", + "outlook_connect_atom_loading_label": "Vérification du calendrier Outlook", + "booking_question_response_variables": "Variables de réponse aux questions de réservation", + "managed_by_teamAdmins": "Géré par {{teamAdmins}}", + "number_of_options": "{{count}} options", + "reschedule_with_same_round_robin_host_title": "Reprogrammer avec le même hôte round-robin", + "reschedule_with_same_round_robin_host_description": "Les événements reprogrammés seront attribués au même hôte que celui initialement prévu", + "disable_input_if_prefilled": "Désactiver la saisie si l'identifiant URL est prérempli", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Ajoutez vos nouvelles chaînes ci-dessus ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/he/common.json b/apps/web/public/static/locales/he/common.json index 40c839eac8ad7d..9191f7a5156db2 100644 --- a/apps/web/public/static/locales/he/common.json +++ b/apps/web/public/static/locales/he/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} שניות", "upgrade_now": "לשדרג עכשיו", "accept_invitation": "אישור הזמנה", + "max_characters": "מקסימום תווים", + "min_characters": "מינימום תווים", "calcom_explained": "{{appName}} מספקת תשתית ליצירת לוחות זמנים שתתאים לכולם.", "calcom_explained_new_user": "נא לסיים להגדיר את החשבון שלך ב־{{appName}}! בעוד מספר צעדים כל בעיות התזמון שלך ייפתרו.", "have_any_questions": "יש לך שאלות? אנחנו כאן כדי לעזור.", @@ -45,6 +47,7 @@ "no_options_available": "אין אפשרויות זמינות", "cancellation_reason": "הסיבה לביטול (רשות)", "cancellation_reason_placeholder": "מדוע בחרת לבטל?", + "rejection_reason_placeholder": "מדוע אתה דוחה?", "rejection_reason": "הסיבה לדחייה", "rejection_reason_title": "לדחות את בקשת ההזמנה?", "rejection_reason_description": "בטוח שברצונך לדחות את ההזמנה? אנחנו ניידע את האדם שניסה להזמין. יש לך אפשרות להוסיף את הסיבה לדחייה למטה.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "התשלום על הפגישה שלך טרם בוצע", "dark_theme_contrast_error": "צבע ערכת עיצוב כהה ללא עובר בדיקת ניגודיות. אנו ממליצים לשנות את הצבע הזה כדי שהכפתורים שלך יהיו יותר בולטים.", "light_theme_contrast_error": "צבע ערכת עיצוב בהירה ללא עובר בדיקת ניגודיות. אנו ממליצים לשנות את הצבע הזה כדי שהכפתורים שלך יהיו יותר בולטים.", + "event_type_color_light_theme_contrast_error": "צבע נושא בהיר לא עובר בדיקת ניגודיות. אנו ממליצים לשנות צבע זה כדי שצבע סוג האירוע שלך יהיה יותר נראה.", + "event_type_color_dark_theme_contrast_error": "צבע נושא כהה לא עובר בדיקת ניגודיות. אנו ממליצים לשנות צבע זה כדי שצבע סוג האירוע שלך יהיה יותר נראה.", "payment_not_created_error": "אי אפשר ליצור תשלום", "couldnt_charge_card_error": "לא ניתן לחייב את התשלום בכרטיס", "no_available_users_found_error": "לא נמצאו משתמשים זמינים. אפשר לנסות ליצור חלון זמן נוסף?", @@ -102,6 +107,9 @@ "new_event_request": "בקשה חדשה לאירוע: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "נא לאשר או לדחות את הבקשה", "check_bookings_page_to_confirm_or_reject": "כדי לאשר או לדחות את ההזמנה, יש לעבור לדף ההזמנות.", + "check_in_assistant": "עוזר צ'ק-אין", + "check_in_assistant_description": "מבצע שיחה יוצאת לבדוק אם הפגישה המתוכננת מתאימה או אם ברצונך לתאם מחדש.", + "create_your_own_prompt": "צור הנחיה משלך והשתמש בה לביצוע שיחה יוצאת.", "event_awaiting_approval": "אירוע ממתין לאישורך", "event_awaiting_approval_recurring": "אירוע חוזר ממתין לאישורך", "someone_requested_an_event": "מישהו ביקש לקבוע מועד לאירוע בלוח השנה שלך.", @@ -163,6 +171,9 @@ "link_expires": "נ.ב. תוקף הקישור יפוג תוך {{expiresIn}} שעות.", "upgrade_to_per_seat": "שדרג למינוי לפי מקום", "seat_options_doesnt_support_confirmation": "אפשרויות המושבים אינם תומכים בדרישת האישור", + "multilocation_doesnt_support_seats": "אפשרות מיקומים מרובים לא תומכת באפשרות מושבים", + "no_show_fee_doesnt_support_seats": "עמלת אי-הופעה לא תומכת באפשרות מושבים", + "seats_option_doesnt_support_multi_location": "אפשרות מושבים לא תומכת במיקומים מרובים", "team_upgrade_seats_details": "לא התבצע תשלום עבור {{unpaidCount}} מקומות מתוך {{memberCount}} חברי הצוות שלך. תמורת ${{seatPrice}} לחודש למקום, עלות המינוי הכוללת המשוערת שלך היא ${{totalCost}} לחודש.", "team_upgrade_banner_description": "אנחנו מודים לך על כך שניסית את החבילה החדשה שלנו לצוותים. שמנו לב שהצוות שלך, \"{{teamName}}\", זקוק לשדרוג.", "upgrade_banner_action": "כאן משדרגים", @@ -460,6 +471,7 @@ "booking_cancelled": "ההזמנה בוטלה", "booking_rescheduled": "מועד ההזמנה השתנה", "recording_ready": "הקישור להורדת ההקלטה מוכן", + "recording_transcription_generated": "תמלול נוצר", "booking_created": "ההזמנה נוצרה", "booking_rejected": "ההזמנה נדחתה", "booking_requested": "התקבלה בקשת הזמנה", @@ -467,6 +479,7 @@ "meeting_ended": "הפגישה הסתיימה", "form_submitted": "הטופס נשלח", "booking_paid": "בוצע תשלום עבור ההזמנה", + "booking_no_show_updated": "עדכון אי-הופעה בהזמנה", "event_triggers": "גורמים מפעילים של אירועים", "subscriber_url": "כתובת URL של המנוי/ה", "create_new_webhook": "יצירת Webhook חדש", @@ -700,6 +713,7 @@ "default_duration_no_options": "ראשית, אנא בחר משך זמינות", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "דקות", "use_cal_ai_to_make_call_description": "אפשר להשתמש ב־Cal.ai כדי לקבל מספר טלפון במענה בינה מלאכותית או להתקשר לאורחים.", "round_robin": "לפי תורות", @@ -765,6 +779,8 @@ "brand_color": "צבע המותג", "light_brand_color": "צבע המותג (עיצוב בהיר)", "dark_brand_color": "צבע המותג (עיצוב כהה)", + "light_event_type_color": "צבע סוג אירוע (נושא בהיר)", + "dark_event_type_color": "צבע סוג אירוע (נושא כהה)", "file_not_named": "אין לקובץ שם [idOrSlug]/[user]", "create_team": "יצירת צוות", "name": "שם", @@ -1103,7 +1119,9 @@ "impersonating_user_warning": "בהתחזות לשם המשתמש \"{{user}}\".", "impersonating_stop_instructions": "לחץ/י כאן כדי להפסיק", "event_location_changed": "עודכן – מיקום האירוע השתנה", + "new_guests_added": "נוספו - אורחים חדשים נוספו לאירוע שלך", "location_changed_event_type_subject": "המיקום השתנה: {{eventType}} עם {{name}} בתאריך {{date}}", + "guests_added_event_type_subject": "אורחים נוספו: {{eventType}} עם {{name}} ב-{{date}}", "current_location": "המיקום הנוכחי", "new_location": "המיקום החדש", "session": "חיבור", @@ -1115,7 +1133,11 @@ "set_location": "הגדרת מיקום", "update_location": "עדכון מיקום", "location_updated": "המיקום עודכן", + "guests_added": "אורחים נוספו", + "unable_to_add_guests": "לא ניתן להוסיף אורחים", "email_validation_error": "המידע שהזנת לא נראה כמו כתובת דוא\"ל", + "emails_must_be_unique_valid": "האימיילים חייבים להיות ייחודיים ותקינים", + "url_validation_error": "זה לא נראה כמו כתובת URL", "place_where_cal_widget_appear": "מקם את הקוד הזה בתוך דף ה-HTML במקום שבו ברצונך שהווידג'ט של {{appName}} יופיע.", "create_update_react_component": "צור או עדכן רכיב React קיים כפי שמוצג להלן.", "copy_code": "העתקת הקוד", @@ -1132,6 +1154,8 @@ "make_setup_instructions": "<0>עבור/י אל <1><0>יצירת קישור Invite והתקן/י את אפליקציית Cal.com.<1>התחבר/י לחשבון Make שלך וצור/י Scenario חדש.<2>בחר/י את Cal.com כאפליקציית ה-Trigger. בנוסף, בחר/י אירוע Trigger.<3>בחר/י את החשבון שלך ולאחר מכן הזן/י את מפתח ה-API הייחודי שלך.<4>בדוק/י את ה-Trigger.<5>וזהו, הכל מוכן!", "install_zapier_app": "תחילה עליך להוריד את אפליקציית Zapier מה-App Store ולהתקין אותה.", "install_make_app": "תחילה עליך להוריד את אפליקציית Make מה-App Store ולהתקין אותה.", + "app_not_installed": "האפליקציה לא מותקנת", + "visit_our_app_store": "מצטערים, האפליקציה הזו לא מותקנת בחשבונך. בקר בחנות האפליקציות שלנו כדי לחקור ולגלות אפליקציות נהדרות נוספות.", "connect_apple_server": "חיבור לשרת Apple", "calendar_url": "כתובת ה-URL של לוח השנה", "apple_server_generate_password": "צור סיסמה ספציפית לאפליקציה שתשמש עבור {{appName}} ב-", @@ -1206,6 +1230,8 @@ "day_timeUnit": "ימים", "hour_timeUnit": "שעות", "minute_timeUnit": "דקות", + "minute_short": "דק'", + "hour_short": "ש'", "new_workflow_heading": "יצירת תהליך העבודה הראשון שלך", "new_workflow_description": "תהליכי עבודה מאפשרים להפוך את פעולת השליחה של תזכורות ועדכונים לאוטומטית.", "active_on": "פעיל ב", @@ -1233,6 +1259,8 @@ "may_require_confirmation": "עשוי לחייב אישור", "nr_event_type_one": "סוג אירוע {{count}}", "nr_event_type_other": "{{count}} סוגי אירועים", + "count_team_one": "{{count}} צוות", + "count_team_other": "{{count}} צוותים", "add_action": "הוספת פעולה", "set_whereby_link": "הגדרת קישור Whereby", "invalid_whereby_link": "יש להזין קישור Whereby חוקי", @@ -1257,8 +1285,10 @@ "reminder_email": "תזכורת: {{eventType}} עם {{name}} בתאריך {{date}}", "not_triggering_existing_bookings": "לא יופעל עבור הזמנות קיימות מאחר שהמשתמש יתבקש למסור מספר טלפון בעת הזמנת האירוע.", "minute_one": "{{count}} דקה", + "minute_one_short": "{{count}}ד'", "minute_other": "{{count}} דקות", "hour_one": "{{count}} שעה", + "hour_one_short": "{{count}}ש'", "hour_other": "{{count}} שעות", "invalid_input": "קלט לא חוקי", "broken_video_action": "לא יכולנו להוסיף את הקישור <1>{{location}} פגישה שלך לארוע שתוזמן. צור קשר עם המוזמנים שלך או עדכן את הארוע בלוח השנה שלך כדי להוסיף את הפרטים. אתה יכול <3> לשנות את המיקום בסוג הארוע או לנסות <5>להסיר ואז להוסיף את היישום מחדש.", @@ -1270,7 +1300,12 @@ "problem_updating_calendar": "הייתה בעיה בעדכון לוח השנה", "active_on_event_types_one": "פעיל ב-{{count}} סוגי אירועים", "active_on_event_types_other": "פעיל ב-{{count}} סוגי אירועים", + "active_on_teams_one": "פעיל ב{{count}} צוות", + "active_on_teams_other": "פעיל ב{{count}} צוותים", + "active_on_all_event_types": "פעיל בכל סוגי האירועים", + "active_on_all_teams": "פעיל בכל הצוותים", "no_active_event_types": "אין סוגי אירועים פעילים", + "no_active_teams": "אין צוותים פעילים", "new_seat_subject": "משתתף/ת חדש/ה {{name}} ב{{eventType}} בתאריך {{date}}", "new_seat_title": "מישהו הוסיף את עצמו לאירוע", "variable": "משתנה", @@ -1288,6 +1323,7 @@ "upgrade": "שדרוג", "upgrade_to_access_recordings_title": "שדרג/י כדי לגשת להקלטות", "upgrade_to_access_recordings_description": "הקלטות זמינות רק כחלק מהחבילה שלנו לצוותים. כדי להתחיל להקליט את השיחות שלך, צריך לשדרג", + "upgrade_to_cal_ai_phone_number_description": "שדרגו ל-Enterprise כדי ליצור מספר טלפון של סוכן AI שיכול להתקשר לאורחים לתיאום שיחות", "recordings_are_part_of_the_teams_plan": "הקלטות זמינות כחלק מהחבילה לצוותים", "team_feature_teams": "זוהי תכונה של גרסת Team. כדאי לשדרג ל-Team כדי לראות את זמינות חברי הצוות.", "team_feature_workflows": "זוהי תכונה של גרסת Team. כדאי לשדרג ל-Team כדי להפוך את התזכורות והעדכונים לגבי אירועים לאוטומטיים באמצעות תהליכי עבודה.", @@ -1335,6 +1371,9 @@ "2fa_required": "נדרש אימות דו-גורמי", "incorrect_2fa": "קוד אימות דו-גורמי שגוי", "which_event_type_apply": "על איזה סוג אירוע זה יחול?", + "apply_to_all_event_types": "החל על הכל, כולל סוגי אירועים עתידיים", + "apply_to_all_teams": "החל על כל סוגי האירועים של הצוות והמשתמשים", + "which_team_apply": "על איזה צוות זה יחול?", "no_workflows_description": "תהליכי עבודה מאפשרים שימוש באוטומציה פשוטה לשליחת התראות ותזכורות, כך שאתה יכול לתכנן תהליכים שקשורים לאירועים שלך.", "timeformat_profile_hint": "זוהי הגדרה פנימית שלא תשפיע על אופן התצוגה של תאריכים ושעות בדפים של הזמנות ציבוריות עבורך או עבור מי שמבצע הזמנות בשמך.", "create_workflow": "יצירת תהליך עבודה", @@ -1420,6 +1459,7 @@ "add_dynamic_variables": "הוספת משתני טקסט דינמיים", "event_name_info": "שם סוג האירוע", "event_date_info": "תאריך האירוע", + "event_duration_info": "משך האירוע", "event_time_info": "שעת ההתחלה של האירוע", "event_type_not_found": "EventType לא נמצא", "location_variable": "מיקום", @@ -1474,6 +1514,7 @@ "team_disable_cal_branding_description": "הסרת מיתוגים הקשורים ל-{{appName}}, כגון 'מופעל על ידי {{appName}}'", "invited_by_team": "הוזמנת על ידי {{teamName}} להצטרף לצוות בתפקיד {{role}}", "token_invalid_expired": "הטוקן לא חוקי או שתוקפו פג.", + "view_booking": "צפה בהזמנה", "exchange_add": "התחבר/י אל Microsoft Exchange", "exchange_authentication": "שיטת אימות", "exchange_authentication_standard": "אימות בסיסי", @@ -1538,6 +1579,8 @@ "report_app": "דיווח על האפליקציה", "limit_booking_frequency": "הגבלת תדירות ההזמנות", "limit_booking_frequency_description": "הגבלת מספר הפעמים שבהן ניתן להזמין את האירוע הזה", + "only_show_first_available_slot": "הצג רק את המשבצת הראשונה של כל יום כזמינה", + "only_show_first_available_slot_description": "זה יגביל את הזמינות שלך לסוג אירוע זה למשבצת אחת ביום, המתוזמנת בזמן הפנוי הראשון.", "limit_total_booking_duration": "הגבל משך תזמון כולל", "limit_total_booking_duration_description": "הגבלת משך הזמן הכולל שבו ניתן להזמין את האירוע הזה", "add_limit": "הוספת הגבלה", @@ -1577,6 +1620,7 @@ "how_long_after": "כמה זמן לאחר סיום האירוע?", "no_available_slots": "אין חלונות זמן זמינים", "time_available": "זמן זמין", + "cant_find_the_right_conferencing_app_visit_our_app_store": "לא מוצאים את אפליקציית הווידאו המתאימה? בקרו ב<1>חנות האפליקציות שלנו.", "install_new_calendar_app": "התקנת האפליקציה החדשה של לוחות שנה", "make_phone_number_required": "הגדרת מספר טלפון כפרט נדרש עבור סוג האירוע הזה", "new_event_type_availability": "זמינות {{eventTypeTitle}}", @@ -1741,6 +1785,7 @@ "new_attendee": "משתתף/ת חדש/ה", "awaiting_approval": "בהמתנה לאישור", "requires_google_calendar": "האפליקציה הזו מחייבת חיבור ל-Google Calendar", + "event_type_requires_google_calendar": "הוספה ליומן עבור סוג אירוע זה דורשת יומן Google כדי ש-Meet יעבוד. התחברו <1>כאן.", "connected_google_calendar": "קישרת חשבון Google Calendar.", "using_meet_requires_calendar": "כדי להשתמש ב-Google Meet, יש צורך ב-Google Calendar מקושר", "continue_to_install_google_calendar": "המשך להתקנת Google Calendar", @@ -1919,6 +1964,10 @@ "apps_unlocked_for_members_description": "החברים יוכלו לראות את היישומים הפעילים ויוכלו לערוך את כל הגדרות היישומים", "apps_locked_by_team_admins_description": "יתאפשר לך לראות את היישומים הפעילים, אבל לא לערוך הגדרות יישומים כלשהן", "apps_unlocked_by_team_admins_description": "יתאפשר לך לראות את היישומים הפעילים ולערוך את כל הגדרות היישומים", + "workflows_locked_for_members_description": "חברים לא יכולים להוסיף את זרימות העבודה האישיות שלהם לסוג אירוע זה. חברים יוכלו לראות את זרימות העבודה הפעילות של הצוות אך לא יוכלו לערוך הגדרות של זרימות עבודה.", + "workflows_unlocked_for_members_description": "חברים יוכלו להוסיף את זרימות העבודה האישיות שלהם לסוג אירוע זה. חברים יוכלו לראות את זרימות העבודה הפעילות של הצוות אך לא יוכלו לערוך הגדרות של זרימות עבודה.", + "workflows_locked_by_team_admins_description": "תוכלו לראות את זרימות העבודה הפעילות של הצוות אך לא תוכלו לערוך הגדרות של זרימות עבודה או להוסיף את זרימות העבודה האישיות שלכם לסוג אירוע זה.", + "workflows_unlocked_by_team_admins_description": "תוכל להפעיל/לכבות תהליכים אישיים בסוג אירוע זה. תוכל לראות את התהליכים הפעילים של הצוות אך לא תוכל לערוך את הגדרות התהליכים של הצוות.", "locked_by_team_admin": "ננעל על ידי מנהל/ת הצוות", "app_not_connected": "לא קישרת חשבון {{appName}}.", "connect_now": "להתחבר עכשיו", @@ -2035,6 +2084,7 @@ "set_up_your_organization": "הגדרת הארגון שלך", "set_up_your_platform_organization": "הגדרת הפלטפורמה שלך", "organizations_description": "ארגונים הם סביבות משותפות שבהן צוותים יכולים ליצור משאבים משותפים, כמו סוגי אירועים, אפליקציות, תהליכי עבודה ועוד.", + "platform_organization_description": "פלטפורמת Cal.com מאפשרת לך לשלב תזמון בקלות באפליקציה שלך באמצעות APIs ו-atoms של הפלטפורמה.", "must_enter_organization_name": "יש להזין שם ארגון", "must_enter_organization_admin_email": "יש להזין את כתובת הדוא״ל של הארגון", "admin_email": "כתובת הדוא״ל של הארגון", @@ -2185,6 +2235,7 @@ "directory_sync_configure_description": "נא לבחור ספק זהות להגדרת ספריה לצוות שלך.", "directory_sync_title": "יש להגדיר ספק שירות כדי להתחיל עם SCIM.", "directory_sync_created": "חיבור סנכרון מדריך נוצר.", + "directory_sync_description": "הקצה והסר משתמשים עם ספק הספריות שלך.", "directory_sync_deleted": "חיבור סנכרון מדריך נכשל.", "directory_sync_delete_connection": "מחיקת החיבור", "directory_sync_delete_title": "מחיקת חיבור סנכרון מדריך", @@ -2251,6 +2302,7 @@ "enterprise_description": "יש לשדרג לרישיון תאגידי כדי ליצור את הארגון שלך", "create_your_org": "יצירת הארגון שלך", "create_your_org_description": "אפשר לשדרג לרישיון תאגידי ולקבל תת־תחום, חיוב מאוחד, תובנות, שינוי מיתוג נרחב ועוד", + "create_your_enterprise_description": "שדרג ל-Enterprise וקבל גישה לסנכרון Active Directory, הקצאת משתמשים אוטומטית באמצעות SCIM, סוכני קול של Cal.ai, APIs למנהלים ועוד!", "other_payment_app_enabled": "אפשר להפעיל רק יישומון תשלום אחד לכל סוג אירוע", "admin_delete_organization_description": "
  • צוותים שחברים בארגון הזה יימחקו יחד עם סוגי האירועים שלהם
  • משתמשים שהיו חלק מהארגון לא יימחקו וסוג האירועים שלהם יישארו ללא שינוי.
  • שמות המשתמשים ישתנו כדי לאפשר להם להתקיים מחוץ לארגון שהיו חברים בו
", "admin_delete_organization_title": "למחוק את הארגון?", @@ -2321,12 +2373,18 @@ "Highest": "הגבוהה ביותר", "send_booker_to": "שליחת מזמן אל", "set_priority": "הגדרת עדיפות", + "set_weight": "הגדר משקל", + "enable_weights": "הפעל משקלים", "priority_for_user": "העדיפות של {{userName}}", + "weights_description": "משקלים קובעים כיצד פגישות מחולקות בין המארחים. <1>למד עוד", + "weight_for_user": "משקל עבור {{userName}}", "change_priority": "שינוי עדיפות", "field_identifiers_as_variables": "להשתמש במזהי השדות כמשתנים להפניות האירועים בהתאמה אישית", "field_identifiers_as_variables_with_example": "להשתמש במזהי השדות כמשתנים להפניות האירועים בהתאמה אישית (למשל: {{variable}})", "account_already_linked": "החשבון כבר מקושר", "send_email": "שליחת דוא\"ל", + "mark_as_no_show": "סמן כהיעדרות", + "unmark_as_no_show": "בטל סימון כהיעדרות", "account_unlinked_success": "החשבון נותק בהצלחה", "account_unlinked_error": "אירעה שגיאה בניתוק החשבון", "travel_schedule": "תזמון טיול", @@ -2336,8 +2394,10 @@ "overlaps_with_existing_schedule": "חופף עם הלו״ז הנוכחי. נא לבחור תאריך אחר.", "org_admin_no_slots|subject": "לא נמצאה זמינות עבור {{name}}", "org_admin_no_slots|heading": "לא נמצאה זמינות עבור {{name}}", + "org_admin_no_slots|content": "שלום מנהלי הארגון,

שימו לב: הובא לידיעתנו כי ל{{username}} לא הייתה זמינות כאשר משתמש ביקר ב{{username}}/{{slug}}

יש כמה סיבות מדוע זה יכול לקרות
למשתמש אין לוחות שנה מחוברים
הלו״זים המחוברים לאירוע זה אינם מופעלים

אנו ממליצים לבדוק את הזמינות שלהם כדי לפתור זאת.", "org_admin_no_slots|cta": "פתיחת זמינות משתמשים", "organization_no_slots_notification_switch_title": "קבלת התראות כשהצוות שלך לא זמין", + "organization_no_slots_notification_switch_description": "מנהלים יקבלו התראות במייל כאשר משתמש מנסה להזמין חבר צוות ונתקל ב'אין זמינות'. אנו מפעילים את המייל הזה לאחר שתי התרחשויות ומזכירים לכם כל 7 ימים לכל משתמש.", "email_team_invite|subject|added_to_org": "נוספת לארגון {{team}} ב־{{appName}} על ידי {{user}}", "email_team_invite|subject|invited_to_org": "הוזמנת להצטרף לארגון {{team}} ב־{{appName}} על ידי {{user}}", "email_team_invite|subject|added_to_subteam": "נוספת לצוות {{team}} בארגון {{parentTeamName}} על ידי {{user}} אצל {{appName}}", @@ -2350,7 +2410,11 @@ "email_team_invite|heading|invited_to_regular_team": "הוזמנת להצטרף לצוות ב-{{appName}}", "email_team_invite|content|added_to_org": "נוספת לארגון {{teamName}} על ידי {{invitedBy}}.", "email_team_invite|content|invited_to_org": "הוזמנת להצטרף לארגון {{teamName}} על ידי {{invitedBy}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} הוסיף אותך לצוות {{teamName}} בארגון שלהם {{parentTeamName}}. {{appName}} הוא מתזמן הפגישות שמאפשר לך ולצוות שלך לתזמן פגישות ללא התכתבות מיותרת במייל.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} הזמין אותך להצטרף לצוות {{teamName}} בארגון שלהם {{parentTeamName}}. {{appName}} הוא מתזמן האירועים שמאפשר לך ולצוות שלך לקבוע פגישות בלי התכתבות מיותרת במייל.", "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} הזמין/ה אותך להצטרף לצוות שלו/ה בשם '{{teamName}}' באפליקציה {{appName}}. אפליקציית {{appName}} היא כלי לקביעת מועדים לאירועים שמאפשר לך ולצוות שלך לתזמן פגישות בלי כל הפינג פונג במיילים.", + "email|existing_user_added_link_will_change": "בקבלת ההזמנה, הקישור שלך ישתנה לדומיין הארגון שלך, אבל אל תדאג, כל הקישורים הקודמים עדיין יעבדו ויופנו כראוי.

שימו לב: כל סוגי האירועים האישיים שלך יועברו לארגון {teamName}, וזה עשוי לכלול גם קישור אישי פוטנציאלי.

לאירועים אישיים אנו ממליצים ליצור חשבון חדש עם כתובת אימייל אישית.", + "email|existing_user_added_link_changed": "הקישור שלך שונה מ-{prevLinkWithoutProtocol} ל-{newLinkWithoutProtocol} אבל אל תדאג, כל הקישורים הקודמים עדיין עובדים ומופנים כראוי.

שימו לב: כל סוגי האירועים האישיים שלך הועברו לארגון {teamName}, וזה עשוי לכלול גם קישור אישי פוטנציאלי.

אנא התחבר וודא שאין לך אירועים פרטיים בחשבון הארגוני החדש שלך.

לאירועים אישיים אנו ממליצים ליצור חשבון חדש עם כתובת אימייל אישית.

תהנה מהקישור החדש והנקי שלך: {newLinkWithoutProtocol}", "email_organization_created|subject": "הארגון שלך נוצר", "your_current_plan": "התוכנית הנוכחית שלך", "organization_price_per_user_month": "$37 למשתמש לחודש (30 מקומות לכל הפחות)", @@ -2363,14 +2427,24 @@ "primary": "עיקרי", "make_primary": "הפיכה לעיקרי", "add_email": "הוספת כתובת דוא״ל", + "add_emails": "הוסף אימיילים", "add_email_description": "אפשר להוסיף כתובת דוא״ל כדי להחליף את הכתובת העיקרית שלך או ככתובת חלופית לסוגי האירועים שלך.", "confirm_email": "אישור כתובת הדוא״ל שלך", + "scheduler_first_name": "השם הפרטי של האדם שמזמין", + "scheduler_last_name": "שם המשפחה של האדם שמזמין", + "scheduler_name": "שם המזמין", "organizer_first_name": "שמך הפרטי", "confirm_email_description": "שלחנו הודעה בדוא״ל אל {{email}}. נא ללחוץ על הקישור בהודעה כדי לאמת את הכתובת הזאת.", "send_event_details_to": "שליחת פרטי האירוע אל", "schedule_tz_without_end_date": "אזור זמן התזמון ללא תאריך סיום", "select_members": "בחירת חברים", "lock_event_types_modal_header": "מה לעשות עם סוגי האירועים הקיימים של החבר שלך?", + "org_delete_event_types_org_admin": "כל סוגי האירועים האישיים של החברים שלך (למעט המנוהלים) יימחקו לצמיתות. הם לא יוכלו ליצור חדשים.", + "org_hide_event_types_org_admin": "סוגי האירועים האישיים של החברים שלך יוסתרו (למעט המנוהלים) מהפרופילים אך הקישורים יישארו פעילים. הם לא יוכלו ליצור חדשים.", + "hide_org_eventtypes": "הסתר סוגי אירועים אישיים", + "delete_org_eventtypes": "מחק סוגי אירועים אישיים", + "lock_org_users_eventtypes": "נעל יצירת סוגי אירועים אישיים", + "lock_org_users_eventtypes_description": "מנע מחברים ליצור סוגי אירועים משלהם.", "add_to_event_type": "הוספה לסוגי האירועים", "create_account_password": "יצירת סיסמת חשבון", "error_creating_account_password": "יצירת סיסמת חשבון נכשלה", @@ -2378,13 +2452,19 @@ "cannot_create_account_password_already_existing": "לא ניתן ליצור סיסמת חשבון לחשבונות שכבר נוצרה להם סיסמה", "create_account_password_hint": "אין סיסמה לחשבון שלך, אפשר ליצור סיסמה על ידי ניווט לאבטחה -> סיסמה. אי אפשר לנתק עד שסיסמת החשבון נוצרת.", "disconnect_account": "ניתוק חשבון מקושר", - "cookie_consent_checkbox": "ביצירת חשבון, אתה מסכים למדיניות הפרטיות שלנו ולשימוש בעוגיות", + "disconnect_account_hint": "ניתוק החשבון המחובר שלך ישנה את אופן ההתחברות שלך. תוכל להתחבר לחשבונך רק באמצעות דוא\"ל + סיסמה.", + "cookie_consent_checkbox": "מדיניות הפרטיות והשימוש בעוגיות מוסכמים עליי", + "make_a_call": "בצע שיחה", + "skip_rr_assignment_label": "דלג על הקצאת round robin אם איש הקשר קיים ב-Salesforce", + "skip_rr_description": "ה-URL חייב להכיל את הדוא\"ל של איש הקשר כפרמטר לדוגמה: ?email=contactEmail", "select_account_header": "בחירת חשבון", "select_account_description": "התקנת {{appName}} בחשבון הפרטי או בחשבון הצוותי שלך.", "select_event_types_header": "בחירת סוגי אירועים", "select_event_types_description": "באיזה סוג אירועים להתקין את {{appName}}?", "configure_app_header": "הגדרת {{appName}}", + "configure_app_description": "סיים את הגדרת האפליקציה. תוכל לשנות את ההגדרות הללו מאוחר יותר.", "already_installed": "כבר מותקן", + "ooo_reasons_unspecified": "לא מוגדר", "ooo_reasons_vacation": "חופשה", "ooo_reasons_travel": "טיול", "ooo_reasons_sick_leave": "חופשת מחלה", @@ -2392,7 +2472,9 @@ "ooo_forwarding_to": "העברה אל {{username}}", "ooo_not_forwarding": "ללא העברה", "ooo_empty_title": "יצירת יציאה מהמשרד", + "ooo_empty_description": "הודע למזמינים שלך כשאינך זמין לקבל הזמנות. הם עדיין יכולים להזמין אותך לאחר חזרתך או שתוכל להפנות אותם לחבר צוות.", "ooo_user_is_ooo": "{{displayName}} מחוץ למשרד", + "ooo_slots_returning": "<0>{{displayName}} יכול לקחת את הפגישות שלהם בזמן שהם אינם.", "ooo_slots_book_with": "הזמנת {{displayName}}", "ooo_create_entry_modal": "יציאה מהמשרד", "ooo_select_reason": "בחירת סיבה", @@ -2413,20 +2495,79 @@ "event_no_show": "מארח נעדר מהפגישה", "recent_ratings": "דירוגים אחרונים", "no_ratings": "לא הוגשו דירוגים", + "no_ratings_description": "הוסף תהליך עבודה עם 'דירוג' כדי לאסוף דירוגים לאחר פגישות", "most_no_show_host": "החברים שלא הופיעו הכי הרבה", "highest_rated_members": "חברים עם הפגישות בדירוג הגבוה ביותר", "lowest_rated_members": "חברים עם הפגישות בדירוג הנמוך ביותר", "csat_score": "ניקוד מדד שביעות רצון", "lockedSMS": "מסרון נעול", + "leave_without_assigning_anyone": "לעזוב מבלי להקצות מישהו?", + "leave_without_adding_attendees": "האם אתה בטוח שברצונך לעזוב את האירוע הזה מבלי להוסיף משתתפים?", + "no_availability_shown_to_bookers": "אם לא תקצה מישהו לאירוע זה, לא תוצג זמינות למזמינים.", + "go_back_and_assign": "חזור והקצה", + "leave_without_assigning": "עזוב מבלי להקצות", "signing_up_terms": "המשך מהווה את הסכמתך ל<1>תנאים ול<2>מדיניות הפרטיות שלנו.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "דקות", - "hour_short": "שעות", - "minute_one_short": "{{count}} דקות", - "hour_one_short": "{{count}} שעות", - "ooo_reasons_unspecified": "לא ידוע", - "ooo_empty_description": "תקשר אל המזמינים שלך כשאתה לא זמין לקבל הזמנות. הם יכולים עדיין להזמין אותך בעת החזרה שלך או שתוכל להעביר אותם לחבר בצוות.", - "ooo_slots_returning": "<0>{{displayName}} יכול לקחת את המפגשים שלו בזמן שהוא לא נמצא.", - "apply_to_all_event_types": "החל על כל, כולל סוגים של אירועים עתידיים", + "always_show_x_days": "תמיד {{x}} ימים זמינים", + "unable_to_subscribe_to_the_platform": "אירעה שגיאה בעת ניסיון להירשם לתוכנית הפלטפורמה, אנא נסה שוב מאוחר יותר", + "updating_oauth_client_error": "אירעה שגיאה בעת עדכון לקוח ה-OAuth, אנא נסה שוב מאוחר יותר", + "creating_oauth_client_error": "אירעה שגיאה בעת יצירת לקוח ה-OAuth, אנא נסה שוב מאוחר יותר", + "event_type_color": "צבע סוג האירוע", + "event_type_color_description": "זה משמש רק להבחנה בין סוגי אירועים והזמנות בתוך האפליקציה. זה לא מוצג למזמינים.", + "mark_as_no_show_title": "סמן כהיעדרות", + "x_marked_as_no_show": "{{x}} סומן כהיעדרות", + "x_unmarked_as_no_show": "{{x}} הוסר מהיעדרות", + "team_select_info": "מפעיל עבור כל סוגי האירועים של הצוות וכל סוגי האירועים האישיים של חברי הצוות", + "no_show_updated": "סטטוס ההיעדרות עודכן עבור המשתתפים", + "email_copied": "האימייל הועתק", + "USER_PENDING_MEMBER_OF_THE_ORG": "המשתמש ממתין לאישור כחבר בארגון", + "USER_ALREADY_INVITED_OR_MEMBER": "המשתמש כבר הוזמן או חבר בארגון", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "המשתמש חבר בארגון שאינו חלק מהצוות הזה.", + "booking_reassigned": "ההזמנה הוקצתה מחדש", + "reassign": "הקצה מחדש", + "reassign_to_another_rr_host": "הקצה מחדש את ההזמנה למארח round robin זמין אחר", + "assign_team_member": "הקצה חבר צוות", + "override_team_member_to_assign": "עקוף את חבר הצוות שברצונך להקצות.", + "no_available_hosts": "אין מארחים זמינים", + "reassign_round_robin_host": "הקצה מחדש מארח round robin", + "skip_writing_to_calendar": "אל תכתוב לפיד ה-ICS", + "rescheduling_not_possible": "לא ניתן לתזמן מחדש מכיוון שהאירוע פג", + "event_expired": "האירוע הזה פג תוקף", + "skip_contact_creation": "דלג על יצירת אנשי קשר אם הם לא קיימים ב-{{appName}}", + "skip_writing_to_calendar_note": "אם קישור ה-ICS שלך הוא לקריאה בלבד (למשל, Proton Calendar), סמן את התיבה למעלה כדי למנוע שגיאות. תצטרך גם לעדכן את היומן שלך ידנית עבור שינויים.", + "attributes": "מאפיינים", + "new_attribute": "מאפיין חדש", + "add_attributes": "הוסף מאפיינים", + "add_attributes_description": "הוסף מאפיינים לחברי הצוות שלך", + "new_option": "אפשרות חדשה", + "update_profile": "עדכן חבר צוות", + "attribute_updated_successfully": "המאפיין עודכן בהצלחה", + "attributes_edited_successfully": "המאפיינים נערכו בהצלחה", + "attribute_meta_description": "נהל מאפיינים עבור חברי הצוות שלך", + "attributes_edit_description": "ערוך מאפיינים עבור חברי הצוות שלך", + "back_to_attributes": "חזרה למאפיינים", + "delete_attribute": "האם אתה בטוח שברצונך למחוק אפשרות זו?", + "delete_attribute_description": "אפשרות זו מוקצת ל{{numberOfUsers}} חברים. מחיקתה תסיר אותה מהפרופיל שלהם.", + "disable_all_emails_to_attendees": "השבת דוא\"ל סטנדרטי למשתתפים הקשורים לסוג אירוע זה", + "disable_all_emails_description": "משבית תקשורת דוא\"ל סטנדרטית הקשורה לסוג אירוע זה, כולל אישורי הזמנה, תזכורות וביטולים.", + "disable_all_emails_to_hosts": "השבת דוא\"ל סטנדרטי למארחים הקשורים לסוג אירוע זה", + "type_confirm_to_continue": "הקלד 'אשר' כדי להמשיך", + "disable_email": "השבת דוא\"ל", + "grant_admin_api": "הענק גישת API למנהל", + "revoke_admin_api": "בטל גישת API למנהל", + "apple_connect_atom_label": "חבר לוח שנה של Apple", + "apple_connect_atom_already_connected_label": "לוח שנה של Apple מחובר", + "apple_connect_atom_loading_label": "בודק לוח שנה של Apple", + "google_connect_atom_label": "חבר לוח שנה של Google", + "google_connect_atom_already_connected_label": "לוח שנה של Google מחובר", + "google_connect_atom_loading_label": "בודק את לוח השנה של Google", + "outlook_connect_atom_label": "חבר את לוח השנה של Outlook", + "outlook_connect_atom_already_connected_label": "לוח השנה של Outlook מחובר", + "outlook_connect_atom_loading_label": "בודק את לוח השנה של Outlook", + "booking_question_response_variables": "משתני תגובה לשאלות הזמנה", + "managed_by_teamAdmins": "מנוהל על ידי {{teamAdmins}}", + "number_of_options": "{{count}} אפשרויות", + "reschedule_with_same_round_robin_host_title": "תזמן מחדש עם אותו מארח Round-Robin", + "reschedule_with_same_round_robin_host_description": "אירועים שתוזמנו מחדש יוקצו לאותו מארח כפי שתוזמנו במקור", + "disable_input_if_prefilled": "השבת קלט אם מזהה ה-URL מולא מראש", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/it/common.json b/apps/web/public/static/locales/it/common.json index 0f09eb5e0cfc9b..80650a25f41747 100644 --- a/apps/web/public/static/locales/it/common.json +++ b/apps/web/public/static/locales/it/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} secondi", "upgrade_now": "Cambia piano", "accept_invitation": "Accetta Invito", + "max_characters": "Caratteri max.", + "min_characters": "Caratteri min.", "calcom_explained": "{{appName}} fornisce un'infrastruttura di panificazione aperta a tutti.", "calcom_explained_new_user": "Completa la configurazione del tuo account {{appName}}! Mancano solo pochi passi per risolvere tutti i problemi di pianificazione.", "have_any_questions": "Hai domande? Siamo qui per aiutare.", @@ -45,6 +47,7 @@ "no_options_available": "Nessuna opzione disponibile", "cancellation_reason": "Motivo dell'annullamento (facoltativo)", "cancellation_reason_placeholder": "Perché stai annullando?", + "rejection_reason_placeholder": "Perché stai rifiutando?", "rejection_reason": "Motivo del rifiuto", "rejection_reason_title": "Rifiutare la richiesta di prenotazione?", "rejection_reason_description": "Sei sicuro di voler rifiutare la prenotazione? Informeremo la persona che ha cercato di prenotare. Puoi indicare il motivo qui sotto.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "La tua riunione è in attesa di pagamento", "dark_theme_contrast_error": "Il colore del tema scuro non supera il controllo del contrasto. Ti consigliamo di cambiare questo colore in modo che i pulsanti siano più visibili.", "light_theme_contrast_error": "Il colore del tema chiaro non supera il controllo del contrasto. Ti consigliamo di cambiare questo colore in modo che i pulsanti siano più visibili.", + "event_type_color_light_theme_contrast_error": "Il colore del tema chiaro non supera il controllo del contrasto. Ti consigliamo di cambiare questo colore affinché il colore dei tuoi tipi di evento sia più visibile.", + "event_type_color_dark_theme_contrast_error": "Il colore del tema scuro non supera il controllo del contrasto. Ti consigliamo di cambiare questo colore affinché il colore dei tuoi tipi di evento sia più visibile.", "payment_not_created_error": "Non è stato possibile creare il pagamento", "couldnt_charge_card_error": "Non è stato possibile addebitare la carta per il pagamento", "no_available_users_found_error": "Nessun utente disponibile. Puoi provare un altro intervallo temporale?", @@ -102,6 +107,9 @@ "new_event_request": "Richiesta di nuovo evento: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Conferma o rifiuta la richiesta", "check_bookings_page_to_confirm_or_reject": "Controlla la pagina delle prenotazioni per confermare o rifiutare la prenotazione.", + "check_in_assistant": "Assistente Check-in", + "check_in_assistant_description": "Effettua una chiamata in uscita per verificare se l'appuntamento programmato è confermato o se desideri riprogrammare.", + "create_your_own_prompt": "Crea il tuo prompt e usalo per effettuare una chiamata in uscita.", "event_awaiting_approval": "Un evento aspetta la tua approvazione", "event_awaiting_approval_recurring": "Un evento ricorrente è in attesa della tua approvazione", "someone_requested_an_event": "Qualcuno ha richiesto di programmare un evento sul tuo calendario.", @@ -463,6 +471,7 @@ "booking_cancelled": "Prenotazione cancellata", "booking_rescheduled": "Prenotazione Riprogrammata", "recording_ready": "Il link per scaricare la registrazione è pronto", + "recording_transcription_generated": "Trascrizione generata", "booking_created": "Prenotazione Creata", "booking_rejected": "Prenotazione Rifiutata", "booking_requested": "Richiesta di prenotazione inviata", @@ -470,6 +479,7 @@ "meeting_ended": "Riunione terminata", "form_submitted": "Modulo inviato", "booking_paid": "Prenotazione pagata", + "booking_no_show_updated": "Prenotazione No-Show aggiornata", "event_triggers": "Attivatori Evento", "subscriber_url": "URL abbonato", "create_new_webhook": "Crea un nuovo webhook", @@ -703,6 +713,7 @@ "default_duration_no_options": "Scegliere prima delle durate disponibili", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minuti", "use_cal_ai_to_make_call_description": "Usa Cal.ai per avere un numero di telefono gestito dalla IA o per chiamare agli ospiti.", "round_robin": "Round Robin", @@ -768,6 +779,8 @@ "brand_color": "Colore del Marchio", "light_brand_color": "Colore del marchio (tema chiaro)", "dark_brand_color": "Colore del marchio (tema scuro)", + "light_event_type_color": "Colore del tipo di evento (Tema chiaro)", + "dark_event_type_color": "Colore del tipo di evento (Tema scuro)", "file_not_named": "Il file non è chiamato [idOrSlug]/[user]", "create_team": "Crea Team", "name": "Nome", @@ -1042,6 +1055,7 @@ "seats_nearly_full": "Quasi tutti i posti sono al completo", "seats_half_full": "I posti si esauriscono in fretta", "number_of_seats": "Numero di posti per prenotazione", + "set_instant_meeting_expiry_time_offset_description": "Imposta la finestra di accesso alla riunione (secondi): Il periodo di tempo in secondi entro il quale l'host può accedere e avviare la riunione. Dopo questo periodo, l'URL di accesso alla riunione scadrà.", "enter_number_of_seats": "Immettere il numero di posti", "you_can_manage_your_schedules": "Puoi gestire i tuoi programmi dalla pagina Disponibilità.", "booking_full": "Non ci sono più posti disponibili", @@ -1105,7 +1119,9 @@ "impersonating_user_warning": "Accesso con l'identità dell'utente \"{{user}}\".", "impersonating_stop_instructions": "Fai clic qui per interrompere", "event_location_changed": "Aggiornato: è cambiato il luogo del tuo evento", + "new_guests_added": "Aggiunti - Nuovi ospiti aggiunti al tuo evento", "location_changed_event_type_subject": "Luogo cambiato: {{eventType}} con {{name}} il {{date}}", + "guests_added_event_type_subject": "Ospiti aggiunti: {{eventType}} con {{name}} il {{date}}", "current_location": "Luogo corrente", "new_location": "Nuovo luogo", "session": "Sessione", @@ -1117,7 +1133,11 @@ "set_location": "Imposta luogo", "update_location": "Aggiorna luogo", "location_updated": "Luogo aggiornato", + "guests_added": "Ospiti aggiunti", + "unable_to_add_guests": "Impossibile aggiungere ospiti", "email_validation_error": "Questo non sembra un indirizzo email valido", + "emails_must_be_unique_valid": "Le email devono essere uniche e valide", + "url_validation_error": "Questo non sembra un URL", "place_where_cal_widget_appear": "Inserisci questo codice nel tuo HTML nel punto in cui vuoi che appaia il widget {{appName}}.", "create_update_react_component": "Crea o aggiorna un componente React esistente come mostrato di seguito.", "copy_code": "Copia codice", @@ -1134,6 +1154,8 @@ "make_setup_instructions": "<0>Segui il <1><0>link di invito Make e installa l'applicazione Cal.com.<1>Accedi al tuo account Make e crea un nuovo Scenario.<2>Seleziona Cal.com come app trigger. Scegli l'evento trigger.<3>Seleziona il tuo account e immetti la tua chiave API unica.<4>Fai una prova del tuo trigger.<5>Fatto!", "install_zapier_app": "Prima è necessario installare l'app Zapier, disponibile nell'App Store.", "install_make_app": "Prima è necessario installare l'applicazione Make, disponibile nell'App Store.", + "app_not_installed": "App non installata", + "visit_our_app_store": "Spiacenti, questa app non è installata sul tuo account. Visita il nostro app store per esplorare e scoprire questa e altre fantastiche app.", "connect_apple_server": "Connetti al server Apple", "calendar_url": "URL del calendario", "apple_server_generate_password": "Genera una password specifica dell'app da usare con {{appName}} presso", @@ -1208,6 +1230,8 @@ "day_timeUnit": "giorni", "hour_timeUnit": "ore", "minute_timeUnit": "minuti", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Crea il tuo primo flusso di lavoro", "new_workflow_description": "I flussi di lavoro consentono di automatizzare l'invio di promemoria e notifiche.", "active_on": "Data attivazione", @@ -1235,6 +1259,8 @@ "may_require_confirmation": "Può richiedere conferma", "nr_event_type_one": "{{count}} tipo di evento", "nr_event_type_other": "{{count}} tipi di evento", + "count_team_one": "{{count}} team", + "count_team_other": "{{count}} team", "add_action": "Aggiungi azione", "set_whereby_link": "Imposta link Whereby", "invalid_whereby_link": "Inserisci un link Whereby valido", @@ -1259,8 +1285,10 @@ "reminder_email": "Promemoria: {{eventType}} con {{name}} il {{date}}", "not_triggering_existing_bookings": "Non verrà attivato per le prenotazioni già esistenti, in quanto agli utenti verrà chiesto di specificare il numero di telefono al momento della prenotazione dell'evento.", "minute_one": "{{count}} minuto", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} minuti", "hour_one": "{{count}} ora", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} ore", "invalid_input": "Input non valido", "broken_video_action": "Non è stato possibile aggiungere il link della riunione di <1>{{location}} al tuo evento programmato. Contatta gli invitati o aggiorna l'evento sul tuo calendario per aggiungere i dettagli. È possibile <3> cambiare il luogo del tipo di evento oppure provare a <5>rimuovere l'app e aggiungerla nuovamente.", @@ -1272,7 +1300,12 @@ "problem_updating_calendar": "Si è verificato un problema durante l'aggiornamento del calendario", "active_on_event_types_one": "Attivo per {{count}} tipo di evento", "active_on_event_types_other": "Attivo per {{count}} tipi di evento", + "active_on_teams_one": "Attivo su {{count}} team", + "active_on_teams_other": "Attivo su {{count}} team", + "active_on_all_event_types": "Attivo su tutti i tipi di eventi", + "active_on_all_teams": "Attivo su tutti i team", "no_active_event_types": "Non ci sono tipi di evento attivi", + "no_active_teams": "Nessun team attivo", "new_seat_subject": "Nuovo partecipante {{name}} a {{eventType}} il {{date}}", "new_seat_title": "Qualcuno ha aggiunto se stesso a un evento", "variable": "Variabile", @@ -1338,6 +1371,9 @@ "2fa_required": "Autenticazione a due fattori necessaria", "incorrect_2fa": "Codice di autenticazione a due fattori errato", "which_event_type_apply": "A quale tipo di evento si applicherà?", + "apply_to_all_event_types": "Applica a tutti, inclusi i tipi di eventi futuri", + "apply_to_all_teams": "Applica a tutti i tipi di eventi di team e utenti", + "which_team_apply": "A quale team si applica?", "no_workflows_description": "I flussi di lavoro attivano una semplice automazione per inviare notifiche e promemoria che ti consentono di creare processi per i tuoi eventi.", "timeformat_profile_hint": "Questa è un'impostazione interna e non influenzerà il modo in cui gli orari sono visualizzati nelle pagine di prenotazione pubbliche a te e a chiunque faccia una prenotazione.", "create_workflow": "Crea un flusso di lavoro", @@ -1423,6 +1459,7 @@ "add_dynamic_variables": "Aggiungi variabili di testo dinamico", "event_name_info": "Nome del tipo di evento", "event_date_info": "Data dell'evento", + "event_duration_info": "La durata dell'evento", "event_time_info": "Ora di inizio dell'evento", "event_type_not_found": "EventType non trovato", "location_variable": "Luogo", @@ -1477,6 +1514,7 @@ "team_disable_cal_branding_description": "Rimuove tutte le scritte con il marchio {{appName}}, ad es., 'Powered by {{appName}}'", "invited_by_team": "{{teamName}} ti ha invitato a unirti al team come {{role}}", "token_invalid_expired": "Il token non è valido o è scaduto.", + "view_booking": "Visualizza prenotazione", "exchange_add": "Connetti a Microsoft Exchange", "exchange_authentication": "Metodo di autenticazione", "exchange_authentication_standard": "Autenticazione di base", @@ -1541,6 +1579,8 @@ "report_app": "Segnala app", "limit_booking_frequency": "Limita frequenza di prenotazione", "limit_booking_frequency_description": "Indica quante volte è possibile prenotare questo evento", + "only_show_first_available_slot": "Mostra solo il primo slot disponibile di ogni giorno", + "only_show_first_available_slot_description": "Questo limiterà la tua disponibilità per questo tipo di evento a uno slot al giorno, programmato al primo orario disponibile.", "limit_total_booking_duration": "Limita durata totale prenotazione", "limit_total_booking_duration_description": "Indicare la quantità di tempo totale disponibile per prenotare questo evento", "add_limit": "Aggiungi limite", @@ -1580,6 +1620,7 @@ "how_long_after": "Quanto tempo dopo la fine dell'evento?", "no_available_slots": "Nessuna fascia oraria disponibile", "time_available": "Tempo disponibile", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Non riesci a trovare l'app di conferenza giusta? Visita il nostro <1>App Store.", "install_new_calendar_app": "Installa nuova app di calendario", "make_phone_number_required": "Rendi obbligatorio il numero di telefono per prenotare un evento", "new_event_type_availability": "Disponibilità {{eventTypeTitle}}", @@ -1744,6 +1785,7 @@ "new_attendee": "Nuovo partecipante", "awaiting_approval": "In attesa di approvazione", "requires_google_calendar": "L'app richiede una connessione a Google Calendar", + "event_type_requires_google_calendar": "L'“Aggiungi al calendario” per questo tipo di evento deve essere un Google Calendar affinché Meet funzioni. Connettilo <1>qui.", "connected_google_calendar": "È stato connesso un account di Google Calendar.", "using_meet_requires_calendar": "Per usare Google Meet, è necessario connettere un account di Google Calendar", "continue_to_install_google_calendar": "Continua e installa Google Calendar", @@ -2331,7 +2373,11 @@ "Highest": "più alto", "send_booker_to": "Rimanda la persona che prenota a", "set_priority": "Imposta priorità", + "set_weight": "Imposta Peso", + "enable_weights": "Abilita Pesi", "priority_for_user": "Priorità per {{userName}}", + "weights_description": "I pesi determinano come vengono distribuite le riunioni tra gli host. <1>Scopri di più", + "weight_for_user": "Peso per {{userName}}", "change_priority": "cambia priorità", "field_identifiers_as_variables": "Usa gli identificatori di campo come variabili per il reindirizzamento dell'evento personalizzato", "field_identifiers_as_variables_with_example": "Usa gli identificatori di campo come variabili per il reindirizzamento dell'evento personalizzato (es: {{variable}})", @@ -2381,10 +2427,12 @@ "primary": "Principale", "make_primary": "Rendi principale", "add_email": "Aggiungi Email", + "add_emails": "Aggiungi Email", "add_email_description": "Aggiungi un indirizzo email con cui sostituire quello principale o da utilizzare come email alternativa per i tipi di evento.", "confirm_email": "Conferma la tua email", "scheduler_first_name": "Nome della persona che prenota", "scheduler_last_name": "Cognome della persona che prenota", + "scheduler_name": "Nome del Pianificatore", "organizer_first_name": "Il tuo nome", "confirm_email_description": "Abbiamo inviato un'email a {{email}}. Clicca sul link nell'email per verificare questo indirizzo.", "send_event_details_to": "Invia dettagli evento a", @@ -2453,29 +2501,73 @@ "lowest_rated_members": "Membri con la valutazione più bassa per gli incontri", "csat_score": "Punteggio CSAT", "lockedSMS": "SMS bloccati", - "signing_up_terms": "Proseguendo, accetti i nostri <0>Termini e l'<1>Informativa sulla privacy.", "leave_without_assigning_anyone": "Uscire senza effettuare assegnazioni?", "leave_without_adding_attendees": "Confermi di voler uscire da questo evento senza aggiungere partecipanti?", "no_availability_shown_to_bookers": "Se non assegni nessuno a questo evento, chi prenota non vedrà alcuna disponibilità.", "go_back_and_assign": "Torna indietro ed effettua assegnazione", "leave_without_assigning": "Esci senza assegnazioni", + "signing_up_terms": "Proseguendo, accetti i nostri <0>Termini e l'<1>Informativa sulla privacy.", "always_show_x_days": "Sempre {{x}} giorni disponibili", "unable_to_subscribe_to_the_platform": "Si è verificato un errore durante il tentativo di abbonamento al piano Platform, riprova più tardi", "updating_oauth_client_error": "Si è verificato un errore durante l'aggiornamento del client OAuth, riprova più tardi", "creating_oauth_client_error": "Si è verificato un errore in fase di creazione del client OAuth, riprova più tardi", + "event_type_color": "Colore del tipo di evento", + "event_type_color_description": "Questo è utilizzato solo per la differenziazione dei tipi di eventi e delle prenotazioni all'interno dell'app. Non viene visualizzato ai prenotatori.", "mark_as_no_show_title": "Contrassegna come Mancata presentazione", "x_marked_as_no_show": "{{x}} contrassegnati come Mancata presentazione", "x_unmarked_as_no_show": "Rimossi {{x}} contrassegni di Mancata presentazione", + "team_select_info": "attiva per tutti i tipi di eventi del team e per tutti i tipi di eventi personali dei membri del team", "no_show_updated": "Stato di Mancata presentazione aggiornato per i partecipanti", "email_copied": "Email copiata", "USER_PENDING_MEMBER_OF_THE_ORG": "L'utente è un membro in sospeso dell'organizzazione", "USER_ALREADY_INVITED_OR_MEMBER": "L'utente è già stato invitato o è un membro", "USER_MEMBER_OF_OTHER_ORGANIZATION": "L'utente è membro di un'organizzazione di cui questo team non fa parte.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "h", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} h", - "apply_to_all_event_types": "Si applica a tutti, inclusi i tipi di eventi futuri", + "booking_reassigned": "La prenotazione è stata riassegnata", + "reassign": "Riassegna", + "reassign_to_another_rr_host": "Riassegna la prenotazione a un altro host round robin disponibile", + "assign_team_member": "Assegna membro del team", + "override_team_member_to_assign": "Sostituisci il membro del team che vuoi assegnare.", + "no_available_hosts": "Nessun host disponibile", + "reassign_round_robin_host": "Riassegna host round robin", + "skip_writing_to_calendar": "Non scrivere nel feed ICS", + "rescheduling_not_possible": "Non è possibile riprogrammare poiché l'evento è scaduto", + "event_expired": "Questo evento è scaduto", + "skip_contact_creation": "Salta la creazione di contatti se non esistono in {{appName}}", + "skip_writing_to_calendar_note": "Se il tuo link ICS è in sola lettura (ad esempio, Proton Calendar), seleziona la casella sopra per evitare errori. Dovrai anche aggiornare manualmente il tuo calendario per le modifiche.", + "attributes": "Attributi", + "new_attribute": "Nuovo attributo", + "add_attributes": "Aggiungi attributi", + "add_attributes_description": "Aggiungi attributi ai membri del tuo team", + "new_option": "Nuova opzione", + "update_profile": "Aggiorna membro", + "attribute_updated_successfully": "Attributo aggiornato con successo", + "attributes_edited_successfully": "Attributi modificati con successo", + "attribute_meta_description": "Gestisci gli attributi per i membri del tuo team", + "attributes_edit_description": "Modifica gli attributi per i membri del tuo team", + "back_to_attributes": "Torna agli attributi", + "delete_attribute": "Sei sicuro di voler eliminare questa opzione?", + "delete_attribute_description": "Questa opzione è assegnata a {{numberOfUsers}} membri. Eliminandola, verrà rimossa dal loro profilo.", + "disable_all_emails_to_attendees": "Disabilita le email standard ai partecipanti relative a questo tipo di evento", + "disable_all_emails_description": "Disabilita la comunicazione email standard relativa a questo tipo di evento, incluse le conferme di prenotazione, i promemoria e le cancellazioni.", + "disable_all_emails_to_hosts": "Disabilita le email standard agli host relative a questo tipo di evento", + "type_confirm_to_continue": "Digita conferma per continuare", + "disable_email": "Disabilita email", + "grant_admin_api": "Concedi accesso API amministratore", + "revoke_admin_api": "Revoca accesso API amministratore", + "apple_connect_atom_label": "Connetti Calendario Apple", + "apple_connect_atom_already_connected_label": "Calendario Apple connesso", + "apple_connect_atom_loading_label": "Verifica Calendario Apple", + "google_connect_atom_label": "Connetti Calendario Google", + "google_connect_atom_already_connected_label": "Calendario Google connesso", + "google_connect_atom_loading_label": "Verifica Calendario Google", + "outlook_connect_atom_label": "Connetti Calendario Outlook", + "outlook_connect_atom_already_connected_label": "Calendario Outlook connesso", + "outlook_connect_atom_loading_label": "Verifica Calendario Outlook", + "booking_question_response_variables": "Variabili di risposta alle domande di prenotazione", + "managed_by_teamAdmins": "Gestito da {{teamAdmins}}", + "number_of_options": "{{count}} opzioni", + "reschedule_with_same_round_robin_host_title": "Ripianifica con lo stesso host Round-Robin", + "reschedule_with_same_round_robin_host_description": "Gli eventi ripianificati saranno assegnati allo stesso host inizialmente programmato", + "disable_input_if_prefilled": "Disabilita input se l'identificatore URL è precompilato", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Aggiungi le tue nuove stringhe qui sopra ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/nl/common.json b/apps/web/public/static/locales/nl/common.json index 8fb79e75c59f01..3184427d7edea0 100644 --- a/apps/web/public/static/locales/nl/common.json +++ b/apps/web/public/static/locales/nl/common.json @@ -7,16 +7,27 @@ "second_other": "{{count}} seconden", "upgrade_now": "Nu upgraden", "accept_invitation": "Uitnodiging accepteren", + "max_characters": "Max. Karakters", + "min_characters": "Min. Karakters", "calcom_explained": "{{appName}} is het open source Calendly-alternatief waarmee u uw eigen gegevens, werkstroom en uiterlijk in de hand houdt.", "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", + "verify_email_subject_verifying_email": "{{appName}}: Verifieer je e-mailadres", "check_your_email": "Controleer uw e-mail", + "old_email_address": "Oud e-mailadres", + "new_email_address": "Nieuw e-mailadres", "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", "verify_email_email_button": "E-mailadres verifiëren", + "cal_ai_assistant": "Cal AI Assistent", + "verify_email_change_description": "Je hebt onlangs verzocht om het e-mailadres te wijzigen dat je gebruikt om in te loggen op je {{appName}}-account. Klik op de onderstaande knop om je nieuwe e-mailadres te bevestigen.", + "verify_email_change_success_toast": "Je e-mailadres is bijgewerkt naar {{email}}", + "verify_email_change_failure_toast": "Het bijwerken van het e-mailadres is mislukt.", + "change_of_email": "Verifieer je nieuwe {{appName}} e-mailadres", + "change_of_email_toast": "We hebben een verificatielink gestuurd naar {{email}}. We zullen je e-mailadres bijwerken zodra je op deze link klikt.", "copy_somewhere_safe": "Sla deze API-sleutel ergens veilig op. U kunt deze niet opnieuw bekijken.", "verify_email_email_body": "Verifieer uw e-mailadres door op de onderstaande knop te klikken.", "verify_email_by_code_email_body": "Verifieer je e-mailadres door onderstaande code te gebruiken.", @@ -36,6 +47,7 @@ "no_options_available": "Geen opties beschikbaar", "cancellation_reason": "Reden voor annulering (optioneel)", "cancellation_reason_placeholder": "Waarom annuleert u?", + "rejection_reason_placeholder": "Waarom wijs je dit af?", "rejection_reason": "Reden voor weigering", "rejection_reason_title": "Boekingsverzoek weigeren?", "rejection_reason_description": "Weet u zeker dat u de boeking wilt weigeren? We informeren de persoon die probeerde te boeken. U kunt hieronder een reden opgeven.", @@ -56,6 +68,19 @@ "a_refund_failed": "Een terugbetaling is mislukt", "awaiting_payment_subject": "In afwachting van betaling: {{title}} op {{date}}", "meeting_awaiting_payment": "Er is een openstaande betaling voor uw vergadering", + "dark_theme_contrast_error": "De kleur van het donkere thema voldoet niet aan de contrastcontrole. We raden aan deze kleur te wijzigen zodat je knoppen beter zichtbaar zijn.", + "light_theme_contrast_error": "De kleur van het lichte thema voldoet niet aan de contrastcontrole. We raden aan deze kleur te wijzigen zodat je knoppen beter zichtbaar zijn.", + "event_type_color_light_theme_contrast_error": "De kleur van het lichte thema voldoet niet aan de contrastcontrole. We raden aan deze kleur te wijzigen zodat de kleur van je evenementtypen beter zichtbaar is.", + "event_type_color_dark_theme_contrast_error": "De kleur van het donkere thema voldoet niet aan de contrastcontrole. We raden aan deze kleur te wijzigen zodat de kleur van je evenementtypen beter zichtbaar is.", + "payment_not_created_error": "Betaling kon niet worden aangemaakt", + "couldnt_charge_card_error": "Kon de kaart niet belasten voor betaling", + "no_available_users_found_error": "Geen beschikbare gebruikers gevonden. Kun je een ander tijdslot proberen?", + "request_body_end_time_internal_error": "Interne fout. Verzoek bevat geen eindtijd", + "create_calendar_event_error": "Kan geen agenda-evenement aanmaken in de agenda van de organisator", + "update_calendar_event_error": "Kan de agenda-afspraak niet bijwerken.", + "delete_calendar_event_error": "Kan de agenda-afspraak niet verwijderen.", + "already_signed_up_for_this_booking_error": "Je bent al ingeschreven voor deze boeking.", + "hosts_unavailable_for_booking": "Sommige hosts zijn niet beschikbaar voor boeking.", "help": "Help", "price": "Prijs", "paid": "Betaald", @@ -63,6 +88,8 @@ "payment": "Betaling", "missing_card_fields": "Velden voor creditcard ontbreken", "pay_now": "Nu betalen", + "general_prompt": "Algemene Prompt", + "begin_message": "Begin Bericht", "codebase_has_to_stay_opensource": "De codebase moet open source blijven, ongeacht of deze is gewijzigd of niet", "cannot_repackage_codebase": "U kunt de codebase niet opnieuw verpakken of verkopen", "acquire_license": "Schaf via e-mail een commerciële licentie aan om deze voorwaarden te verwijderen", @@ -80,6 +107,9 @@ "new_event_request": "Nieuwe afspraakaanvraag: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Bevestig of weiger het verzoek", "check_bookings_page_to_confirm_or_reject": "Controleer uw boekingen om de boeking te bevestigen of te verwerpen.", + "check_in_assistant": "Check-in Assistent", + "check_in_assistant_description": "Pleit een uitgaande oproep om te controleren of de geplande afspraak werkt of als je wilt herplannen.", + "create_your_own_prompt": "Maak je eigen prompt en gebruik deze om een uitgaande oproep te doen.", "event_awaiting_approval": "Een gebeurtenis wacht op uw goedkeuring", "event_awaiting_approval_recurring": "Een terugkerende gebeurtenis wacht op uw goedkeuring", "someone_requested_an_event": "Iemand heeft verzocht om een gebeurtenis op uw kalender te plannen.", @@ -90,7 +120,9 @@ "event_still_awaiting_approval": "Een gebeurtenis wacht nog op uw goedkeuring", "booking_submitted_subject": "Boeking verzonden: {{title}} om {{date}}", "download_recording_subject": "Opname downloaden: {{title}} op {{date}}", + "download_transcript_email_subject": "Download Transcript: {{title}} op {{date}}", "download_your_recording": "Download uw opname", + "download_your_transcripts": "Download je Transcripts", "your_meeting_has_been_booked": "Uw afspraak is geboekt", "event_type_has_been_rescheduled_on_time_date": "Uw {{title}} is verplaatst naar {{date}}.", "event_has_been_rescheduled": "Bijgewerkt - Uw gebeurtenis is verplaatst", @@ -101,6 +133,7 @@ "requested_to_reschedule_subject_attendee": "Actie vereist voor verplaatsing: boek een nieuwe tijd voor {{eventType}} met {{name}}", "hi_user_name": "Hallo {{name}}", "ics_event_title": "{{eventType}} met {{name}}", + "please_book_a_time_sometime_later": "Oeps, we konden je deze keer niet verbinden. Plan in plaats daarvan een toekomstige oproep.", "new_event_subject": "Nieuwe afspraak: {{attendeeName}} - {{date}} - {{eventType}}", "join_by_entrypoint": "Word lid via {{entryPoint}}", "notes": "Opmerkingen", @@ -112,26 +145,35 @@ "invitee_timezone": "Tijdzone", "time_left": "Resterende tijd", "event_type": "Evenement", + "duplicate_event_type": "Dubbel Event Type", "enter_meeting": "Deelnemen", "video_call_provider": "Videobellen via", "meeting_id": "Afspraakcode", "meeting_password": "Deelneming wachtwoord", "meeting_url": "URL afspraak", + "meeting_url_not_found": "Vergader-URL niet gevonden", + "token_not_found": "Token niet gevonden", + "some_other_host_already_accepted_the_meeting": "Een andere host heeft de vergadering al geaccepteerd. Wil je toch deelnemen? <1>Doorgaan naar Vergadering", "meeting_request_rejected": "Uw afspraak is helaas afgewezen", "rejected_event_type_with_organizer": "Afgewezen: {{eventType}} met {{organizer}} op {{date}}", "hi": "Hallo", "join_team": "Lidverzoek accepteren", "manage_this_team": "Dit team beheren", "team_info": "Teaminformatie", + "join_meeting": "Deelnemen aan Vergadering", "request_another_invitation_email": "Als u {{toEmail}} liever niet als uw {{appName}} e-mail wilt gebruiken of al een {{appName}} account heeft, vraag dan een andere uitnodiging aan voor die e-mail.", "you_have_been_invited": "U bent uitgenodigd om lid te worden van het team {{teamName}}", "user_invited_you": "{{user}} heeft u uitgenodigd om lid te worden van het {{entity}} {{team}} op {{appName}}", + "user_invited_you_to_subteam": "{{user}} heeft je uitgenodigd om lid te worden van het team {{team}} van de organisatie {{parentTeamName}} op {{appName}}", "hidden_team_member_title": "U bent verborgen in dit team", "hidden_team_member_message": "Uw plaats is niet betaald. Upgrade naar Pro of laat de teameigenaar weten dat deze uw plaats kan betalen.", "hidden_team_owner_message": "U heeft een Pro-account nodig om teams te gebruiken, u bent verborgen tot u upgradet.", "link_expires": "p.s. De uitnodiging verloopt over {{expiresIn}} uur.", "upgrade_to_per_seat": "Upgraden naar per plaats", "seat_options_doesnt_support_confirmation": "De optie plaatsen optie ondersteunt geen bevestigingseis", + "multilocation_doesnt_support_seats": "Meerdere Locaties ondersteunt geen zitplaatsenoptie", + "no_show_fee_doesnt_support_seats": "No-show vergoeding ondersteunt geen zitplaatsenoptie", + "seats_option_doesnt_support_multi_location": "Zitplaatsenoptie ondersteunt geen Meerdere Locaties", "team_upgrade_seats_details": "Van de {{memberCount}} leden in uw team zijn {{unpaidCount}} plaats(en) onbetaald. Voor $ {{seatPrice}}/maand per plaats bedragen de geschatte totale kosten van uw abonnement $ {{totalCost}}/maand.", "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", @@ -225,8 +267,10 @@ "create_account": "Account Aanmaken", "confirm_password": "Wachtwoord bevestigen", "reset_your_password": "Stel uw nieuwe wachtwoord in met de instructies die u per e-mail zijn toegestuurd.", + "org_banner_instructions": "Upload een afbeelding van {{width}} breedte en {{height}} hoogte.", "email_change": "Log opnieuw in met uw nieuwe e-mailadres en wachtwoord.", "create_your_account": "Uw account aanmaken", + "create_your_calcom_account": "Maak je Cal.com-account aan", "sign_up": "Registreer nu", "youve_been_logged_out": "U bent uitgelogd", "hope_to_see_you_soon": "We hopen u spoedig weer te zien!", @@ -264,6 +308,9 @@ "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", + "set_availbility_description": "Stel schema's in voor de tijden waarop je geboekt wilt worden.", + "share_a_link_or_embed": "Deel een link of embed", + "share_a_link_or_embed_description": "Deel je {{appName}}-link of embed deze op je site.", "availability_settings": "Beschikbaarheidsinstellingen", "continue_without_calendar": "Doorgaan zonder kalender", "continue_with": "Ga door met {{appName}}", @@ -279,6 +326,7 @@ "welcome_to_calcom": "Welkom bij {{appName}}", "welcome_instructions": "Laat ons weten hoe we u moeten noemen en in welke tijdzone u zich bevindt. U kunt dit op een later tijdstip nog aanpassen.", "connect_caldav": "Verbinding maken met de CalDav (Beta)", + "connect_ics_feed": "Verbind met een ICS-feed", "connect": "Koppelen", "try_for_free": "Probeer het gratis", "create_booking_link_with_calcom": "Maak uw eigen boekingslink met {{appName}}", @@ -292,8 +340,10 @@ "add_another_calendar": "Andere agenda toevoegen", "other": "Overige", "email_sign_in_subject": "Uw aanmeldingslink voor {{appName}}", + "round_robin_emailed_you_and_attendees": "Je hebt een afspraak met {{user}}. We hebben een e-mail met een kalenderuitnodiging en de details naar iedereen gestuurd.", "emailed_you_and_attendees": "We hebben u en de andere deelnemende een kalender uitnodiging met alle details gestuurd.", "emailed_you_and_attendees_recurring": "We hebben u en de andere deelnemers een agenda-uitnodiging voor de eerste van deze terugkerende gebeurtenissen gestuurd.", + "round_robin_emailed_you_and_attendees_recurring": "Je hebt een afspraak met {{user}}. We hebben een e-mail met een kalenderuitnodiging en de details naar iedereen gestuurd voor de eerste van deze terugkerende evenementen.", "emailed_you_and_any_other_attendees": "U en alle andere deelnemers zijn gemaild met deze informatie.", "needs_to_be_confirmed_or_rejected": "Uw boeking moet nog steeds worden bevestigd of geweigerd.", "needs_to_be_confirmed_or_rejected_recurring": "Uw terugkerende afspraak moet nog steeds bevestigd of geweigerd worden.", @@ -417,9 +467,11 @@ "browse_api_documentation": "Bekijk onze API-documentatie", "leverage_our_api": "Gebruik onze API voor volledige controle en aanpasbaarheid.", "create_webhook": "Webhook maken", + "instant_meeting": "Directe Vergadering Aangemaakt", "booking_cancelled": "Boeking geannuleerd", "booking_rescheduled": "Afspraak verplaatst", "recording_ready": "Opnamedownloadlink gereed", + "recording_transcription_generated": "Transcriptie gegenereerd", "booking_created": "Boeking aangemaakt", "booking_rejected": "Boeking geweigerd", "booking_requested": "Boeking aangevraagd", @@ -427,6 +479,7 @@ "meeting_ended": "Vergadering beëindigd", "form_submitted": "Formulier verzonden", "booking_paid": "Boeking betaald", + "booking_no_show_updated": "Boeking No-Show Bijgewerkt", "event_triggers": "Webhook activaties", "subscriber_url": "Abonnee-URL", "create_new_webhook": "Nieuwe webhook aanmaken", @@ -531,6 +584,7 @@ "enter_number_between_range": "Voer een getal in tussen 1 en {{maxOccurences}}", "email_address": "E-mail adres", "enter_valid_email": "Voer een geldig e-mailadres in", + "please_schedule_future_call": "Plan een toekomstige oproep als we niet beschikbaar zijn in {{seconds}} seconden", "location": "Locatie", "address": "Adres", "enter_address": "Voer adres in", @@ -583,6 +637,7 @@ "number_selected": "{{count}} geselecteerd", "owner": "Eigenaar", "admin": "Beheerder", + "admin_api": "Admin API", "administrator_user": "Beheerdersgebruiker", "lets_create_first_administrator_user": "Laten we de eerste beheerdersgebruiker aanmaken.", "admin_user_created": "Beheerdersgebruikerconfiguratie", @@ -590,6 +645,7 @@ "new_member": "Nieuw Lid", "invite": "Uitnodigen", "add_team_members": "Teamleden toevoegen", + "add_org_members": "Leden toevoegen", "add_team_members_description": "Anderen uitnodigen om deel te nemen aan uw team", "add_team_member": "Teamlid toevoegen", "invite_new_member": "Nieuw teamlid uitnodigen", @@ -604,6 +660,7 @@ "hide_book_a_team_member_description": "Verberg de knop 'Teamlid boeken' op uw openbare pagina's.", "danger_zone": "Gevarenzone", "account_deletion_cannot_be_undone": "Wees voorzichtig. Het verwijderen van een account kan niet ongedaan worden gemaakt.", + "team_deletion_cannot_be_undone": "Wees voorzichtig. Het verwijderen van het team kan niet ongedaan worden gemaakt.", "back": "Terug", "cancel": "Annuleren", "cancel_all_remaining": "Alle resterende annuleren", @@ -639,6 +696,7 @@ "user_from_team": "{{user}} van {{team}}", "preview": "Voorbeeld", "link_copied": "Link gekopieerd!", + "copied": "Gekopieerd!", "private_link_copied": "Privélink gekopieerd!", "link_shared": "Link gedeeld!", "title": "Titel", @@ -655,7 +713,9 @@ "default_duration_no_options": "Kies eerst de beschikbare duur", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minuten", + "use_cal_ai_to_make_call_description": "Gebruik Cal.ai om een AI-gestuurd telefoonnummer te krijgen of om oproepen te doen naar gasten.", "round_robin": "Round Robin", "round_robin_description": "Afspraken wisselen tussen meerdere teamleden.", "managed_event": "Beheerde gebeurtenis", @@ -667,9 +727,12 @@ "add_members": "Leden toevoegen...", "no_assigned_members": "Geen toegewezen leden", "assigned_to": "Toegewezen aan", + "you_must_be_logged_in_to": "Je moet ingelogd zijn op {{url}}", "start_assigning_members_above": "Begin met het toewijzen van leden hierboven", "locked_fields_admin_description": "Leden kunnen dit niet bewerken", + "unlocked_fields_admin_description": "Leden kunnen bewerken", "locked_fields_member_description": "Deze optie is vergrendeld door de teambeheerder", + "unlocked_fields_member_description": "Vrijgegeven door teambeheerder", "url": "Link", "hidden": "Verborgen", "readonly": "Enkel-lezen", @@ -716,6 +779,8 @@ "brand_color": "Merkkleur", "light_brand_color": "Merkkleur (licht thema)", "dark_brand_color": "Merkkleur (donker thema)", + "light_event_type_color": "Kleur van evenementtype (Licht Thema)", + "dark_event_type_color": "Kleur van evenementtype (Donker Thema)", "file_not_named": "Bestandsnaam is niet [idOrSlug]/[user]", "create_team": "Maak Team", "name": "Naam", @@ -771,6 +836,10 @@ "additional_input_description": "Planner vereist om extra gegevens in te voeren voordat de boeking wordt bevestigd", "label": "Omschrijving", "placeholder": "Plaatsaanduiding", + "display_add_to_calendar_organizer": "Gebruik \"Toevoegen aan kalender\"-e-mail als organisator", + "display_email_as_organizer": "We tonen dit e-mailadres als organisator en sturen hier bevestigingsmails naartoe.", + "if_enabled_email_address_as_organizer": "Als ingeschakeld, tonen we het e-mailadres van je \"Toevoegen aan kalender\" als organisator en sturen we hier bevestigingsmails naartoe.", + "reconnect_calendar_to_use": "Let op dat je mogelijk je 'Toevoegen aan kalender'-account moet loskoppelen en opnieuw verbinden om deze functie te gebruiken.", "type": "Type", "edit": "Wijzigen", "add_input": "Voeg een invoer toe", @@ -779,6 +848,9 @@ "requires_confirmation_description": "De boeking moet handmatig bevestigd worden voordat deze naar de integraties wordt gepusht en een bevestigings-e-mail wordt verzonden.", "recurring_event": "Terugkerende gebeurtenis", "recurring_event_description": "Mensen kunnen zich abonneren op terugkerende gebeurtenissen", + "cannot_be_used_with_paid_event_types": "Het kan niet worden gebruikt met betaalde evenementtypes", + "warning_payment_instant_meeting_event": "Directe Vergaderingen worden nog niet ondersteund met terugkerende evenementen en betalingsapps", + "warning_instant_meeting_experimental": "Experimenteel: Instant Meeting Events zijn momenteel experimenteel.", "starting": "Vanaf", "disable_guests": "Gasten uitschakelen", "disable_guests_description": "Schakel toevoegen van extra gasten uit tijdens het boeken.", @@ -787,6 +859,7 @@ "private_link_label": "Privélink", "private_link_hint": "Uw privélink wordt na elk gebruik opnieuw gegenereerd", "copy_private_link": "Privélink kopiëren", + "copy_private_link_to_event": "Kopieer privélink naar evenement", "private_link_description": "Genereer een privé-URL om te delen zonder uw {{appName}}-gebruikersnaam te onthullen", "invitees_can_schedule": "Genodigden kunnen plannen", "date_range": "Date Range", @@ -846,6 +919,7 @@ "next_step": "Stap overslaan", "prev_step": "Vorige stap", "install": "Installeren", + "start_paid_trial": "Start gratis proefperiode", "installed": "Geinstalleerd", "active_install_one": "{{count}} actieve installatie", "active_install_other": "{{count}} actieve installaties", @@ -860,6 +934,7 @@ "toggle_calendars_conflict": "Schakel de agenda's in die u wilt controleren op conflicten om dubbele boekingen te voorkomen.", "connect_additional_calendar": "Extra agenda kopppelen", "calendar_updated_successfully": "Agenda bijgewerkt", + "check_here": "Controleer hier", "conferencing": "Confereren", "calendar": "Agenda", "payments": "Betalingen", @@ -937,6 +1012,8 @@ "verify_wallet": "Wallet verifiëren", "create_events_on": "Maak gebeurtenissen aan in de", "enterprise_license": "Dit is een bedrijfsfunctie", + "enterprise_license_locally": "Je kunt deze functie lokaal testen, maar niet in productie.", + "enterprise_license_sales": "Om te upgraden naar de enterprise-editie, neem contact op met ons verkoopteam. Als er al een licentiesleutel aanwezig is, neem dan contact op met support@cal.com voor hulp.", "missing_license": "Ontbrekende licentie", "next_steps": "Volgende stappen", "acquire_commercial_license": "Verkrijg een commerciële licentie", @@ -978,6 +1055,7 @@ "seats_nearly_full": "Plaatsen bijna vol", "seats_half_full": "Plaatsen raken snel vol", "number_of_seats": "Aantal zitplaatsen per boeking", + "set_instant_meeting_expiry_time_offset_description": "Stel vergaderingsvenster in (seconden): De tijdsperiode in seconden waarin de host de vergadering kan joinen en starten. Na deze periode verloopt de join-URL van de vergadering.", "enter_number_of_seats": "Voer het aantal zitplaatsen in", "you_can_manage_your_schedules": "U kunt uw schema's beheren op de beschikbaarheidspagina.", "booking_full": "Geen zitplaatsen meer beschikbaar", @@ -1029,15 +1107,21 @@ "user_impersonation_heading": "Imitatie van gebruiker", "user_impersonation_description": "Hiermee kan ons ondersteuningsteam tijdelijk als u inloggen zodat we eventuele problemen die u aan ons meldt snel op kunnen lossen.", "team_impersonation_description": "Hiermee kunnen uw teamleden zich tijdelijk aanmelden als u.", + "cal_signup_description": "Gratis voor individuen. Teamplannen voor samenwerkingsfuncties.", + "make_org_private": "Maak organisatie privé", + "make_org_private_description": "Je organisatieleden kunnen andere organisatieleden niet zien wanneer dit is ingeschakeld.", "make_team_private": "Team privé maken", "make_team_private_description": "Uw teamleden kunnen geen andere teamleden zien wanneer dit ingeschakeld is.", "you_cannot_see_team_members": "U kunt niet alle teamleden van een privéteam zien.", + "you_cannot_see_teams_of_org": "Je kunt de teams van een privéorganisatie niet zien.", "allow_booker_to_select_duration": "Booker toestaan om een duur te selecteren", "impersonate_user_tip": "Alle gebruik van deze functie wordt gecontroleerd.", "impersonating_user_warning": "Gebruikersnaam \"{{user}}\" wordt geïmiteerd.", "impersonating_stop_instructions": "Klik hier om te stoppen", "event_location_changed": "Bijgewerkt - de locatie van uw gebeurtenis is gewijzigd", + "new_guests_added": "Toegevoegd - Nieuwe gasten toegevoegd aan je evenement", "location_changed_event_type_subject": "Locatie gewijzigd: {{eventType}} met {{name}} op {{date}}", + "guests_added_event_type_subject": "Gasten Toegevoegd: {{eventType}} met {{name}} op {{date}}", "current_location": "Huidige locatie", "new_location": "Nieuwe locatie", "session": "Sessie", @@ -1049,7 +1133,11 @@ "set_location": "Locatie instellen", "update_location": "Locatie bijwerken", "location_updated": "Locatie bijgewerkt", + "guests_added": "Gasten toegevoegd", + "unable_to_add_guests": "Kan geen gasten toevoegen", "email_validation_error": "Dat lijkt niet op een e-mailadres", + "emails_must_be_unique_valid": "E-mails moeten uniek en geldig zijn", + "url_validation_error": "Dat lijkt niet op een URL", "place_where_cal_widget_appear": "Plaats deze code in uw HTML op de plaats waar u uw {{appName}}-widget wilt hebben.", "create_update_react_component": "Maak een bestaande React-component of werk deze bij, zoals hieronder weergegeven.", "copy_code": "Code kopiëren", @@ -1066,9 +1154,12 @@ "make_setup_instructions": "<0>Ga naar <1><0>Make-uitnodigingslink en installeer de Cal.com-app.<1>Log in bij uw Make-account en maak een nieuw scenario.<2>Selecteer Cal.com als uw activatie-app. Kies ook een activatiegebeurtenis.<3>Kies uw account en voer uw unieke API-sleutel in.<4>Test uw activatie.<5>U bent er klaar voor!", "install_zapier_app": "Installeer eerst de Zapier-app in de App Store.", "install_make_app": "Installeer eerst de Make-app uit de appstore.", + "app_not_installed": "App niet geïnstalleerd", + "visit_our_app_store": "Sorry, deze app is niet geïnstalleerd op je account. Bezoek onze app store om deze en andere geweldige apps te ontdekken.", "connect_apple_server": "Verbinding maken met Apple Server", "calendar_url": "Agenda-URL", "apple_server_generate_password": "Genereer een appspecifiek wachtwoord voor gebruik met {{appName}} op", + "unable_to_add_apple_calendar": "Kan deze Apple Calendar-account niet toevoegen. Zorg ervoor dat je een app-specifiek wachtwoord gebruikt in plaats van je accountwachtwoord.", "credentials_stored_encrypted": "Uw inloggegevens worden opgeslagen en versleuteld.", "it_stored_encrypted": "Deze wordt opgeslagen en versleuteld.", "go_to_app_store": "Naar App Store", @@ -1088,6 +1179,7 @@ "developer_documentation": "Ontwikkelaarsdocumentatie", "get_in_touch": "Neem contact op", "contact_support": "Neem contact op met de ondersteuning", + "premium_support": "Premium Ondersteuning", "community_support": "Ondersteuning door de community", "feedback": "Feedback", "submitted_feedback": "Bedankt voor uw feedback!", @@ -1138,6 +1230,8 @@ "day_timeUnit": "dagen", "hour_timeUnit": "uur", "minute_timeUnit": "min.", + "minute_short": "m", + "hour_short": "u", "new_workflow_heading": "Maak uw eerste werkstroom aan", "new_workflow_description": "Met werkstromen kunt u het verzenden van herinneringen en meldingen automatiseren.", "active_on": "Actief op", @@ -1165,6 +1259,8 @@ "may_require_confirmation": "Kan bevestiging vereisen", "nr_event_type_one": "{{count}} gebeurtenistype", "nr_event_type_other": "{{count}} gebeurtenistypen", + "count_team_one": "{{count}} team", + "count_team_other": "{{count}} teams", "add_action": "Actie toevoegen", "set_whereby_link": "Whereby-link instellen", "invalid_whereby_link": "Voer een geldige Whereby-link in", @@ -1185,11 +1281,14 @@ "reminder": "Herinnering", "rescheduled": "Opnieuw gepland", "completed": "Voltooid", + "rating": "Beoordeling", "reminder_email": "Herinnering: {{eventType}} met {{name}} op {{date}}", "not_triggering_existing_bookings": "Wordt niet geactiveerd voor bestaande boekingen, omdat de gebruiker om zijn/haar telefoonnummer gevraagd wordt bij het boeken van de gebeurtenis.", "minute_one": "{{count}} minuut", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} minuten", "hour_one": "{{count}} uur", + "hour_one_short": "{{count}}u", "hour_other": "{{count}} uur", "invalid_input": "Ongeldige invoer", "broken_video_action": "We konden de vergaderlink voor <1>{{location}} niet aan uw geplande evenement toevoegen. Neem contact op met uw genodigden of werk uw agenda-evenement bij om de details toe te voegen. U kunt <3>uw locatie op het eventementtype wijzigen of proberen <5>de app opnieuw toe te voegen.", @@ -1201,7 +1300,12 @@ "problem_updating_calendar": "Er was een probleem met het bijwerken van uw agenda", "active_on_event_types_one": "Actief op {{count}} gebeurtenistype", "active_on_event_types_other": "Actief op {{count}} gebeurtenistypen", + "active_on_teams_one": "Actief in {{count}} team", + "active_on_teams_other": "Actief in {{count}} teams", + "active_on_all_event_types": "Actief voor alle evenementtypen", + "active_on_all_teams": "Actief in alle teams", "no_active_event_types": "Geen actieve gebeurtenistypen", + "no_active_teams": "Geen actieve teams", "new_seat_subject": "Nieuwe deelnemer {{name}} op {{eventType}} om {{date}}", "new_seat_title": "Iemand heeft zichzelf toegevoegd aan een evenement", "variable": "Variabel", @@ -1219,6 +1323,7 @@ "upgrade": "Upgraden", "upgrade_to_access_recordings_title": "Upgrade om toegang te krijgen tot opnames", "upgrade_to_access_recordings_description": "Opnames zijn alleen beschikbaar als onderdeel van ons teamsabonnement. Upgrade om te beginnen met het opnemen van uw gesprekken", + "upgrade_to_cal_ai_phone_number_description": "Upgrade naar Enterprise om een AI-agent telefoonnummer te genereren dat gasten kan bellen om afspraken in te plannen", "recordings_are_part_of_the_teams_plan": "Opnames zijn onderdeel van het teamsabonnement", "team_feature_teams": "Dit is een Team-functie. Upgrade naar Team om de beschikbaarheid van uw team te zien.", "team_feature_workflows": "Dit is een Team-functie. Upgrade naar Team om uw meldingen en herinneringen van gebeurtenissen te automatiseren met werkstromen.", @@ -1251,6 +1356,7 @@ "default_calendar_selected": "Standaardagenda", "hide_from_profile": "In profiel verbergen", "event_setup_tab_title": "Configuratie gebeurtenis", + "availability_not_found_in_schedule_error": "Geen beschikbaarheid gevonden in het schema", "event_limit_tab_title": "Grenswaarden", "event_limit_tab_description": "Hoe vaak u geboekt kunt worden", "event_advanced_tab_description": "Agenda-instellingen en meer...", @@ -1265,12 +1371,16 @@ "2fa_required": "Tweestapsverificatie vereist", "incorrect_2fa": "Onjuiste tweestapsverificatiecode", "which_event_type_apply": "Op welk type gebeurtenis is dit van toepassing?", + "apply_to_all_event_types": "Toepassen op alle, inclusief toekomstige evenementtypen", + "apply_to_all_teams": "Toepassen op alle team- en gebruikersgebeurtenistypen", + "which_team_apply": "Op welk team zal dit van toepassing zijn?", "no_workflows_description": "Werkstromen maken eenvoudige automatisering van het versturen van meldingen en herinneringen mogelijk, zodat u processen rond uw gebeurtenissen kunt opbouwen.", "timeformat_profile_hint": "Dit is een interne instelling en heeft geen invloed op hoe de tijden worden weergegeven op de openbare boekingspagina's voor u of voor iemand die u boekt.", "create_workflow": "Maak een werkstroom", "do_this": "Doe dit", "turn_off": "Uitschakelen", "turn_on": "Inschakelen", + "cancelled_bookings_cannot_be_rescheduled": "Geannuleerde boekingen kunnen niet opnieuw worden ingepland", "settings_updated_successfully": "Instellingen bijgewerkt", "error_updating_settings": "Fout bij het bijwerken van de instellingen", "personal_cal_url": "Mijn persoonlijke {{appName}}-URL", @@ -1294,6 +1404,7 @@ "customize_your_brand_colors": "Pas uw eigen merkkleur aan op uw boekingspagina.", "pro": "Pro", "removes_cal_branding": "Verwijdert alle {{appName}}-gerelateerde merken, zoals \"Mogelijk gemaakt door {{appName}}\".", + "instant_meeting_with_title": "Directe vergadering met {{name}}", "profile_picture": "Profielafbeelding", "upload": "Uploaden", "add_profile_photo": "Profielfoto toevoegen", @@ -1348,7 +1459,9 @@ "add_dynamic_variables": "Voeg dynamische tekstvariabelen toe", "event_name_info": "Naam van het type gebeurtenis", "event_date_info": "De datum van de gebeurtenis", + "event_duration_info": "De duur van het evenement", "event_time_info": "De begintijd van de gebeurtenis", + "event_type_not_found": "EvenementType niet gevonden", "location_variable": "Locatie", "location_info": "De locatie van de gebeurtenis", "additional_notes_variable": "Aanvullende opmerkingen", @@ -1361,7 +1474,12 @@ "download_responses_description": "Download alle reacties op uw formulier in CSV-indeling.", "download": "Downloaden", "download_recording": "Opname downloaden", + "transcription_enabled": "Transcripties zijn nu ingeschakeld", + "transcription_stopped": "Transcripties zijn nu gestopt", + "download_transcript": "Transcriptie downloaden", "recording_from_your_recent_call": "Een opname van uw recente gesprek op {{appName}} is klaar om te downloaden", + "transcript_from_previous_call": "Transcriptie van uw recente gesprek op {{appName}} is klaar om te downloaden. Links zijn slechts 1 uur geldig", + "link_valid_for_12_hrs": "Opmerking: De downloadlink is slechts 12 uur geldig. U kunt een nieuwe downloadlink genereren door de instructies <1>hier te volgen.", "create_your_first_form": "Maak uw eerste formulier", "create_your_first_form_description": "Met routeringsformulieren kunt u kwalificerende vragen stellen en doorverwijzen naar de juiste persoon of het juiste type gebeurtenis.", "create_your_first_webhook": "Maak uw eerste webhook", @@ -1391,10 +1509,12 @@ "slot_length": "Lengte van tijdvak", "booking_appearance": "Boekingsweergave", "appearance_team_description": "Beheer de instellingen voor de boekingsweergave van uw team", + "appearance_org_description": "Beheer instellingen voor de boekingsweergave van uw organisatie", "only_owner_change": "Alleen de eigenaar van dit team kan wijzigingen aanbrengen in de boeking van het team ", "team_disable_cal_branding_description": "Verwijdert alle {{appName}}-gerelateerde merken, zoals \"Mogelijk gemaakt door {{appName}}\"", "invited_by_team": "{{teamName}} heeft u uitgenodigd om deel te nemen aan hun team als {{role}}", "token_invalid_expired": "Token is ongeldig of verlopen.", + "view_booking": "Boeking bekijken", "exchange_add": "Koppel met Microsoft Exchange", "exchange_authentication": "Verificatiemethode", "exchange_authentication_standard": "Basisverificatie", @@ -1412,6 +1532,7 @@ "routing_forms_description": "Maak formulieren om deelnemers naar de juiste bestemmingen te verwijzen", "routing_forms_send_email_owner": "E-mail naar eigenaar versturen", "routing_forms_send_email_owner_description": "Verstuurt een e-mail naar de eigenaar wanneer het formulier is verzonden", + "routing_forms_send_email_to": "E-mail verzenden naar", "add_new_form": "Nieuw formulier toevoegen", "add_new_team_form": "Voeg een nieuw formulier toe aan uw team", "create_your_first_route": "Maak uw eerste route", @@ -1446,6 +1567,7 @@ "password_updated": "Wachtwoord bijgewerkt!", "pending_payment": "In afwachting van betaling", "pending_invites": "Openstaande uitnodigingen", + "pending_organization_invites": "Openstaande organisatie-uitnodigingen", "not_on_cal": "Niet op {{appName}}", "no_calendar_installed": "Geen agenda geïnstalleerd", "no_calendar_installed_description": "U heeft nog geen agenda's gekoppeld", @@ -1457,6 +1579,8 @@ "report_app": "App melden", "limit_booking_frequency": "Boekingsfrequentie beperken", "limit_booking_frequency_description": "Beperk hoe vaak deze gebeurtenis kan worden geboekt", + "only_show_first_available_slot": "Toon alleen de eerste beschikbare tijdslot", + "only_show_first_available_slot_description": "Dit beperkt je beschikbaarheid voor dit type evenement tot één tijdslot per dag, gepland op de vroegst beschikbare tijd.", "limit_total_booking_duration": "Totale boekingsduur beperken", "limit_total_booking_duration_description": "Beperk de totale tijd dat deze gebeurtenis kan worden geboekt", "add_limit": "Voeg een limiet toe", @@ -1496,6 +1620,7 @@ "how_long_after": "Hoelang na afloop van de gebeurtenis?", "no_available_slots": "Geen beschikbare tijdvakken", "time_available": "Tijd beschikbaar", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Kun je de juiste conferentie-app niet vinden? Bezoek onze <1>App Store.", "install_new_calendar_app": "Installeer een nieuwe agenda-app", "make_phone_number_required": "Een telefoonnummer verplicht stellen voor het boeken van een gebeurtenis", "new_event_type_availability": "Beschikbaarheid {{eventTypeTitle}}", @@ -1523,10 +1648,14 @@ "your_org_disbanded_successfully": "Uw organisatie is ontbonden", "error_creating_team": "Fout bij het aanmaken van team", "you": "U", + "or_continue_with": "Of ga verder met", "resend_email": "E-mail opnieuw verzenden", "member_already_invited": "Lid is al uitgenodigd", "already_in_use_error": "Gebruikersnaam al in gebruik", "enter_email_or_username": "Voer een e-mailadres of gebruikersnaam in", + "enter_email": "Voer een e-mailadres in", + "enter_emails": "Voer e-mailadressen in", + "too_many_invites": "Je kunt maximaal {{nbUsers}} gebruikers tegelijk uitnodigen.", "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", @@ -1539,6 +1668,7 @@ "attendee_email_info": "Het e-mailadres van de persoon die boekt", "kbar_search_placeholder": "Typ een opdracht of zoek...", "invalid_credential": "Oh nee! Het lijkt erop dat de machtiging is verlopen of is ingetrokken. Installeer het opnieuw.", + "invalid_credential_action": "Herinstalleer de app", "reschedule_reason": "Reden voor opnieuw plannen", "choose_common_schedule_team_event": "Kies een gezamenlijke planning", "choose_common_schedule_team_event_description": "Schakel dit in als u een gemeenschappelijke planning tussen organisatoren wilt gebruiken. Indien uitgeschakeld, wordt elke organisator geboekt op basis van zijn standaardplanning.", @@ -1552,6 +1682,8 @@ "test_routing": "Routering testen", "payment_app_disabled": "Een beheerder heeft een betaalapp uitgeschakeld", "edit_event_type": "Gebeurtenistype bewerken", + "only_admin_can_see_members_of_org": "Deze organisatie is privé, en alleen de beheerder of eigenaar van de organisatie kan de leden zien.", + "only_admin_can_manage_sso_org": "Alleen de beheerder of eigenaar van de organisatie kan SSO-instellingen beheren", "collective_scheduling": "Collectieve planning", "make_it_easy_to_book": "Maak het gemakkelijk om uw team te boeken wanneer iedereen beschikbaar is.", "find_the_best_person": "Zoek de beste beschikbare persoon en blader door uw team.", @@ -1606,10 +1738,12 @@ "individual": "Individueel", "all_bookings_filter_label": "Alle boekingen", "all_users_filter_label": "Alle gebruikers", + "all_event_types_filter_label": "Alle evenementtypes", "your_bookings_filter_label": "Uw boekingen", "meeting_url_variable": "Vergaderings-URL", "meeting_url_info": "De vergaderingsconferentie-url van de gebeurtenis", "date_overrides": "Datumoverschrijvingen", + "date_overrides_delete_on_date": "Verwijder datumoverschrijvingen op {{date}}", "date_overrides_subtitle": "Voeg datums toe wanneer uw beschikbaarheid afwijkt van uw dagelijkse tijden.", "date_overrides_info": "Datumoverschrijvingen worden automatisch gearchiveerd nadat de datum is verstreken", "date_overrides_dialog_which_hours": "Welke tijden bent u beschikbaar?", @@ -1651,6 +1785,7 @@ "new_attendee": "Nieuwe deelnemer", "awaiting_approval": "In afwachting van goedkeuring", "requires_google_calendar": "Deze app vereist een Google Agenda-koppeling", + "event_type_requires_google_calendar": "De optie 'Toevoegen aan agenda' voor dit type evenement vereist een Google Agenda om Meet te laten werken. Verbind het <1>hier.", "connected_google_calendar": "U heeft een Google Agenda-account gekoppeld.", "using_meet_requires_calendar": "Het gebruik van Google Meet vereist een gekoppelde Google-agenda", "continue_to_install_google_calendar": "Ga door met het installeren van Google Agenda", @@ -1683,6 +1818,7 @@ "configure": "Configureren", "sso_configuration": "Eenmalige aanmelding", "sso_configuration_description": "SAML/OIDC SSO configureren en teamleden laten inloggen met behulp van een identiteitsprovider", + "sso_configuration_description_orgs": "Configureer SAML/OIDC SSO en laat organisatieleden inloggen met een Identity Provider", "sso_oidc_heading": "SSO met OIDC", "sso_oidc_description": "Configureer OIDC SSO met de identiteitsprovider van uw keuze.", "sso_oidc_configuration_title": "OIDC-configuratie", @@ -1702,9 +1838,11 @@ "organizer_timezone": "Tijdzone organisator", "email_user_cta": "Uitnodiging weergeven", "email_no_user_invite_heading_team": "U bent uitgenodigd om lid te worden van een {{appName}}-team", + "email_no_user_invite_heading_subteam": "Je bent uitgenodigd om lid te worden van een team van de organisatie {{parentTeamName}}", "email_no_user_invite_heading_org": "U bent uitgenodigd om lid te worden van de {{appName}}-organisatie", "email_no_user_invite_subheading": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn team op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw team in staat stelt vergaderingen te plannen zonder heen en weer te e-mailen.", "email_user_invite_subheading_team": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn team '{{teamName}}' op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw team in staat stelt afspraken te plannen zonder heen en weer te e-mailen.", + "email_user_invite_subheading_subteam": "{{invitedBy}} heeft je uitgenodigd om lid te worden van het team {{teamName}} in hun organisatie {{parentTeamName}} op {{appName}}. {{appName}} is de planner die jou en je team in staat stelt om vergaderingen te plannen zonder eindeloos heen en weer te mailen.", "email_user_invite_subheading_org": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn organisatie '{{teamName}}' op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw organisatie in staat stelt afspraken te plannen zonder heen en weer te e-mailen.", "email_no_user_invite_steps_intro": "We doorlopen samen een paar korte stappen en in een mum van tijd kunt u genieten van een stressvrije planning met uw {{entity}}.", "email_no_user_step_one": "Kies uw gebruikersnaam", @@ -1821,7 +1959,15 @@ "requires_at_least_one_schedule": "U moet ten minste één planning hebben", "default_conferencing_bulk_description": "Werk de locaties voor de geselecteerde gebeurtenistypen bij", "locked_for_members": "Vergrendeld voor leden", + "unlocked_for_members": "Ontgrendeld voor leden", "apps_locked_for_members_description": "Leden kunnen de actieve apps zien, maar kunnen geen appinstellingen bewerken", + "apps_unlocked_for_members_description": "Leden kunnen de actieve apps zien en alle app-instellingen bewerken", + "apps_locked_by_team_admins_description": "Je kunt de actieve apps zien, maar je kunt geen app-instellingen bewerken", + "apps_unlocked_by_team_admins_description": "Je zult de actieve apps kunnen zien en de instellingen van elke app kunnen bewerken.", + "workflows_locked_for_members_description": "Leden kunnen hun persoonlijke workflows niet toevoegen aan dit type evenement. Leden kunnen de actieve teamworkflows zien, maar kunnen geen workflow-instellingen bewerken.", + "workflows_unlocked_for_members_description": "Leden kunnen hun persoonlijke workflows toevoegen aan dit type evenement. Leden kunnen de actieve teamworkflows zien, maar kunnen geen workflow-instellingen bewerken.", + "workflows_locked_by_team_admins_description": "Je zult de actieve teamworkflows kunnen zien, maar je kunt geen workflow-instellingen bewerken of je persoonlijke workflows toevoegen aan dit type evenement.", + "workflows_unlocked_by_team_admins_description": "Je kunt persoonlijke workflows in- of uitschakelen voor dit type evenement. Je zult de actieve teamworkflows kunnen zien, maar je kunt geen teamworkflow-instellingen bewerken.", "locked_by_team_admin": "Vergrendeld door teambeheerder", "app_not_connected": "U hebt geen {{appName}}-account gekoppeld.", "connect_now": "Nu koppelen", @@ -1835,7 +1981,10 @@ "review_event_type": "Gebeurtenistype bekijken", "looking_for_more_analytics": "Op zoek naar meer analyses?", "looking_for_more_insights": "Op zoek naar meer Insights?", + "filters": "Filters", "add_filter": "Filter toevoegen", + "remove_filters": "Alle filters wissen", + "email_verified": "E-mail geverifieerd", "select_user": "Selecteer gebruiker", "select_event_type": "Selecteer gebeurtenistype", "select_date_range": "Selecteer datumbereik", @@ -1926,18 +2075,23 @@ "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", + "create_instant_meeting_webhook_description": "Maak je eerste webhook met 'Instant Meeting Created' als trigger voor dit type evenement.", "install_app_on": "App installeren op", "create_for": "Maken voor", "currency": "Valuta", "organization_banner_description": "Maak een omgeving waarin uw teams gedeelde apps, werkstromen en gebeurtenistypen kunnen maken met round-robin en collectieve planning.", "organization_banner_title": "Beheer organisaties met meerdere teams", "set_up_your_organization": "Stel uw organisatie in", + "set_up_your_platform_organization": "Stel je platform in", "organizations_description": "Organisaties zijn gedeelde omgevingen waar teams gedeelde gebeurtenistypen, apps, werkstromen en meer kunnen maken.", + "platform_organization_description": "Cal.com Platform stelt je in staat om plannen moeiteloos te integreren in je app met behulp van platform-API's en -atomen.", "must_enter_organization_name": "U moet een organisatienaam invoeren", "must_enter_organization_admin_email": "U moet het e-mailadres van uw organisatie invoeren", "admin_email": "E-mailadres van uw organisatie", + "platform_admin_email": "Je beheerders e-mailadres", "admin_username": "Gebruikersnaam beheerder", "organization_name": "Organisatienaam", + "platform_name": "Platformnaam", "organization_url": "Organisatie-URL", "organization_verify_header": "Verifieer het e-mailadres van uw organisatie", "organization_verify_email_body": "Gebruik de onderstaande code om uw e-mailadres te verifiëren en door te gaan met het instellen van uw organisatie.", @@ -1990,6 +2144,8 @@ "add_times_to_your_email": "Selecteer enkele beschikbare tijden en voeg ze toe aan uw e-mail", "select_time": "Tijd selecteren", "select_date": "Datum selecteren", + "connecting_you_to_someone": "We verbinden je met iemand.", + "please_do_not_close_this_tab": "Sluit dit tabblad niet.", "see_all_available_times": "Bekijk alle beschikbare tijden", "org_team_names_example_1": "bijvoorbeeld Marketingteam", "org_team_names_example_2": "bijvoorbeeld Verkoopteam", @@ -2007,8 +2163,13 @@ "description_requires_booker_email_verification": "Om te zorgen voor de e-mailverificatie door de boeker voordat gebeurtenissen worden gepland", "requires_confirmation_mandatory": "Sms-berichten kunnen alleen naar deelnemers worden verzonden als het gebeurtenistype bevestiging vereist.", "organizations": "Organisaties", + "upload_cal_video_logo": "Upload Cal Video Logo", + "update_cal_video_logo": "Update Cal Video Logo", + "upload_banner": "Upload Banner", + "cal_video_logo_upload_instruction": "Om ervoor te zorgen dat je logo zichtbaar is tegen de donkere achtergrond van Cal video, upload een lichtgekleurde afbeelding in PNG- of SVG-formaat om transparantie te behouden.", "org_admin_other_teams": "Andere teams", "org_admin_other_teams_description": "Hier kunt u teams binnen uw organisatie zien waar u geen deel van uitmaakt. U kunt uzelf aan hen toevoegen indien nodig.", + "not_part_of_org": "Je maakt geen deel uit van een organisatie", "no_other_teams_found": "Geen andere teams gevonden", "no_other_teams_found_description": "Er zijn geen andere teams binnen deze organisatie.", "attendee_first_name_variable": "Voornaam deelnemer", @@ -2044,7 +2205,9 @@ "org_error_processing": "Er is een fout opgetreden bij het verwerken van deze organisatie", "orgs_page_description": "Een lijst met alle organisaties. Als u een organisatie accepteert, kunnen alle gebruikers met dat e-maildomein zich aanmelden ZONDER e-mailverificatie.", "unverified": "Niet-geverifieerd", + "verified": "Geverifieerd", "dns_missing": "DNS ontbreekt", + "dns_configured": "DNS Geconfigureerd", "mark_dns_configured": "Markeer als DNS geconfigureerd", "value": "Waarde", "your_organization_updated_sucessfully": "Uw organisatie is bijgewerkt", @@ -2054,10 +2217,30 @@ "oAuth": "OAuth", "recently_added": "Recent toegevoegd", "connect_all_calendars": "Koppel al uw agenda's", + "connect_all_calendars_description": "{{appName}} leest beschikbaarheid van al je bestaande agenda's.", "workflow_automation": "Automatisering van de werkstroom", + "workflow_automation_description": "Personaliseer je planningservaring met workflows", "scheduling_for_your_team": "Automatisering van de werkstroom", + "scheduling_for_your_team_description": "Plan voor je team met collectieve en round-robin planning", "no_members_found": "Geen leden gevonden", "directory_sync": "Mapsynchronisatie", + "directory_name": "Directory Naam", + "directory_provider": "Directory Provider", + "directory_scim_url": "SCIM Basis URL", + "directory_scim_token": "SCIM Bearer Token", + "directory_scim_url_copied": "SCIM Basis URL gekopieerd", + "directory_scim_token_copied": "SCIM Bearer Token gekopieerd", + "directory_sync_info_description": "Je Identity Provider zal om de volgende informatie vragen om SCIM te configureren. Volg de instructies om de setup te voltooien.", + "directory_sync_configure": "Configureer Directory Sync", + "directory_sync_configure_description": "Kies een identity provider om de directory voor je team te configureren.", + "directory_sync_title": "Configureer een identity provider om te beginnen met SCIM.", + "directory_sync_created": "Directory sync verbinding gecreëerd.", + "directory_sync_description": "Voorzie en verwijder gebruikers met je directory provider.", + "directory_sync_deleted": "Directory sync verbinding verwijderd.", + "directory_sync_delete_connection": "Verbinding Verwijderen", + "directory_sync_delete_title": "Verwijder Directory Sync Verbinding", + "directory_sync_delete_description": "Weet je zeker dat je deze directory sync-verbinding wilt verwijderen?", + "directory_sync_delete_confirmation": "Deze actie kan niet ongedaan worden gemaakt. Dit zal de directory sync-verbinding permanent verwijderen.", "event_setup_length_error": "Gebeurtenisconfiguratie: de duur moet minimaal 1 minuut zijn.", "availability_schedules": "Beschikbaarheidsschema's", "unauthorized": "Ongeautoriseerd", @@ -2073,6 +2256,8 @@ "access_bookings": "Uw boekingen lezen, bewerken en verwijderen", "allow_client_to_do": "Dit toestaan voor {{clientName}}?", "oauth_access_information": "Door op Toestaan te klikken, geeft u deze app toestemming om uw gegevens te gebruiken in overeenstemming met hun gebruiksvoorwaarden en privacybeleid. U kunt de toegang verwijderen in de {{appName}} App Store.", + "oauth_form_title": "OAuth-client aanmaakformulier", + "oauth_form_description": "Dit is het formulier om een nieuwe OAuth-client aan te maken", "allow": "Toestaan", "view_only_edit_availability_not_onboarded": "Deze gebruiker heeft de onboarding nog niet voltooid. U kunt diens beschikbaarheid pas instellen nadat ze men de onboarding heeft voltooid.", "view_only_edit_availability": "U bekijkt de beschikbaarheid van deze gebruiker. U kunt alleen uw eigen beschikbaarheid bewerken.", @@ -2089,43 +2274,300 @@ "overlay_my_calendar": "Mijn agenda overleggen", "overlay_my_calendar_toc": "Door uw agenda te koppelen accepteert u ons privacybeleid en onze gebruiksvoorwaarden. U kunt de toegang op elk moment weer intrekken.", "view_overlay_calendar_events": "Bekijk uw agendagebeurtenissen om dubbele boekingen te voorkomen.", + "join_event_location": "Deelnemen aan {{eventLocationType}}", + "troubleshooting": "Probleemoplossing", + "calendars_were_checking_for_conflicts": "Kalenders die we controleren op conflicten", + "availabilty_schedules": "Beschikbaarheidsroosters", + "manage_calendars": "Kalenders beheren", + "manage_availability_schedules": "Beschikbaarheidsroosters beheren", + "locked": "Vergrendeld", + "unlocked": "Ontgrendeld", "lock_timezone_toggle_on_booking_page": "Tijdzone vergrendelen op boekingspagina", "description_lock_timezone_toggle_on_booking_page": "Om de tijdzone op de boekingspagina te vergrendelen, handig voor persoonlijke gebeurtenissen.", + "event_setup_multiple_payment_apps_error": "Je kunt slechts één betalingsapp per evenementtype inschakelen.", + "number_in_international_format": "Voer het nummer in internationaal formaat in.", + "install_calendar": "Kalender installeren", + "branded_subdomain": "Gemerkt subdomein", + "branded_subdomain_description": "Krijg je eigen gemerkte subdomein, zoals acme.cal.com", + "org_insights": "Inzichten voor de hele organisatie", + "org_insights_description": "Begrijp hoe je hele organisatie tijd besteedt", "extensive_whitelabeling": "Speciale onboarding en technische ondersteuning", + "extensive_whitelabeling_description": "Pas je planningservaring aan met je eigen logo, kleuren en meer", + "unlimited_teams": "Onbeperkte teams", + "unlimited_teams_description": "Voeg zoveel subteams toe als je nodig hebt voor je organisatie", + "unified_billing": "Gecombineerde facturering", + "unified_billing_description": "Voeg een enkele creditcard toe om voor alle abonnementen van je team te betalen", + "advanced_managed_events": "Geavanceerde beheerde evenementtypes", + "advanced_managed_events_description": "Voeg een enkele creditcard toe om voor alle abonnementen van je team te betalen", + "enterprise_description": "Upgrade naar Enterprise om je Organisatie te creëren", + "create_your_org": "Creëer je Organisatie", + "create_your_org_description": "Upgrade naar Organisaties en ontvang een subdomein, uniforme facturering, inzichten, uitgebreide whitelabeling en meer", + "create_your_enterprise_description": "Upgrade naar Enterprise en krijg toegang tot Active Directory Sync, SCIM Automatische Gebruikersprovisioning, Cal.ai Voice Agents, Admin API's en meer!", + "other_payment_app_enabled": "Je kunt slechts één betalingsapp per evenementtype inschakelen", + "admin_delete_organization_description": "
  • Teams die lid zijn van deze organisatie worden ook verwijderd, samen met hun evenementtypes
  • Gebruikers die deel uitmaakten van de organisatie worden niet verwijderd, maar hun gebruikersnamen worden gewijzigd zodat ze buiten de organisatie kunnen bestaan
  • Gebruikersevenementtypes die zijn aangemaakt nadat de gebruiker in de organisatie zat, worden verwijderd
  • Gemigreerde gebruikersevenementtypes worden niet verwijderd
", + "admin_delete_organization_title": "{{organizationName}} verwijderen?", + "published": "Gepubliceerd", + "unpublished": "Niet gepubliceerd", + "publish": "Publiceren", + "org_publish_error": "Organisatie kon niet worden gepubliceerd", + "troubleshooter_tooltip": "Open de probleemoplosser en ontdek wat er mis is met je schema", "need_help": "Hulp nodig?", + "troubleshooter": "Probleemoplosser", + "number_to_call": "Te bellen nummer", + "guest_name": "Naam gast", + "guest_email": "E-mail gast", + "guest_company": "Bedrijf gast", + "please_install_a_calendar": "Installeer een kalender", + "instant_tab_title": "Direct boeken", + "instant_event_tab_description": "Laat mensen direct boeken", + "uprade_to_create_instant_bookings": "Upgrade naar Enterprise en laat gasten deelnemen aan een direct gesprek waar deelnemers meteen in kunnen springen. Dit is alleen voor team evenementtypes", + "dont_want_to_wait": "Wil je niet wachten?", + "meeting_started": "Vergadering gestart", + "pay_and_book": "Betalen om te boeken", + "cal_ai_event_tab_description": "Laat AI-agenten voor je boeken", + "booking_not_found_error": "Boeking niet gevonden", + "booking_seats_full_error": "Boekingsplaatsen zijn vol", + "missing_payment_credential_error": "Ontbrekende betalingsgegevens", + "missing_payment_app_id_error": "Ontbrekende betalingsapp-id", + "not_enough_available_seats_error": "Niet genoeg beschikbare plaatsen voor de boeking", + "user_redirect_title": "{{username}} is momenteel even weg.", + "user_redirect_description": "In de tussentijd zal {{profile.username}} alle nieuwe geplande vergaderingen namens {{username}} beheren.", + "out_of_office": "Afwezig", + "out_of_office_description": "Laat je boekers weten wanneer je afwezig bent.", + "send_request": "Verzoek versturen", + "start_date_and_end_date_required": "Startdatum en einddatum zijn vereist", + "start_date_must_be_before_end_date": "Startdatum moet voor de einddatum liggen", + "start_date_must_be_in_the_future": "Startdatum moet in de toekomst liggen", + "user_not_found": "Gebruiker niet gevonden", + "out_of_office_entry_already_exists": "Afwezigheidsvermelding bestaat al", + "out_of_office_id_required": "Afwezigheidsvermelding-id vereist", + "booking_redirect_infinite_not_allowed": "Er is al een boekingsomleiding van die gebruiker naar jou.", + "success_entry_created": "Nieuwe vermelding succesvol aangemaakt", + "booking_redirect_email_subject": "Boekingsomleidingsmelding", + "booking_redirect_email_title": "Boekingsomleidingsmelding", + "booking_redirect_email_description": "Je hebt een boekingsomleiding ontvangen van {{toName}}, zodat hun profielkoppelingen naar de jouwe worden omgeleid voor het tijdsinterval: ", + "success_accept_booking_redirect": "Je hebt dit boekingsomleidingsverzoek geaccepteerd.", + "success_reject_booking_redirect": "Je hebt dit boekingsomleidingsverzoek afgewezen.", + "copy_link_booking_redirect_request": "Kopieer link om verzoek te delen", + "booking_redirect_request_title": "Verzoek om omleiding van boeking", + "select_team_member": "Selecteer teamlid", + "going_away_title": "Gaat u weg? Markeer eenvoudig uw profiel als niet beschikbaar voor een bepaalde periode.", + "redirect_team_enabled": "Geef een link naar een teamlid wanneer u afwezig bent", + "redirect_team_disabled": "Geef een link naar een teamlid wanneer u afwezig bent (Teamplan vereist)", + "out_of_office_unavailable_list": "Lijst van onbeschikbaarheid buiten kantoor", + "success_deleted_entry_out_of_office": "Invoer succesvol verwijderd", + "temporarily_out_of_office": "Tijdelijk afwezig?", + "add_a_redirect": "Voeg een omleiding toe", + "create_entry": "Invoer maken", + "time_range": "Tijdsbereik", + "automatically_add_all_team_members": "Voeg alle teamleden toe, inclusief toekomstige leden", + "redirect_to": "Omleiden naar", + "having_trouble_finding_time": "Moeite met het vinden van een tijd?", "show_more": "Meer weergeven", + "forward_params_redirect": "Stuur parameters door zoals ?email=...&name=... en meer", + "assignment_description": "Plan vergaderingen wanneer iedereen beschikbaar is of roteer door teamleden", + "lowest": "laagste", + "low": "laag", + "medium": "gemiddeld", + "high": "hoog", + "Highest": "hoogste", + "send_booker_to": "Stuur boeker naar", + "set_priority": "Stel prioriteit in", + "set_weight": "Stel gewicht in", + "enable_weights": "Schakel gewichten in", + "priority_for_user": "Prioriteit voor {{userName}}", + "weights_description": "Gewichten bepalen hoe vergaderingen worden verdeeld onder hosts. <1>Meer informatie", + "weight_for_user": "Gewicht voor {{userName}}", + "change_priority": "prioriteit wijzigen", + "field_identifiers_as_variables": "Gebruik veldidentificatoren als variabelen voor je aangepaste evenementomleiding", + "field_identifiers_as_variables_with_example": "Gebruik veldidentificatoren als variabelen voor je aangepaste evenementomleiding (bijv. {{variable}})", + "account_already_linked": "Account is al gekoppeld", "send_email": "E-mail versturen", + "mark_as_no_show": "Markeren als no-show", + "unmark_as_no_show": "No-show markering verwijderen", + "account_unlinked_success": "Account succesvol ontkoppeld", + "account_unlinked_error": "Er is een fout opgetreden bij het ontkoppelen van het account", + "travel_schedule": "Reisschema", + "travel_schedule_description": "Plan je reis van tevoren om je bestaande schema in een andere tijdzone te behouden en te voorkomen dat je midden in de nacht wordt geboekt.", + "schedule_timezone_change": "Wijziging tijdzone plannen", + "date": "Datum", + "overlaps_with_existing_schedule": "Dit overlapt met een bestaand schema. Kies een andere datum.", + "org_admin_no_slots|subject": "Geen beschikbaarheid gevonden voor {{name}}", + "org_admin_no_slots|heading": "Geen beschikbaarheid gevonden voor {{name}}", + "org_admin_no_slots|content": "Hallo organisatiebeheerders,

Let op: Het is ons ter ore gekomen dat {{username}} geen beschikbaarheid had toen een gebruiker {{username}}/{{slug}} bezocht

Er zijn een paar redenen waarom dit zou kunnen gebeuren
De gebruiker heeft geen agenda's gekoppeld
Hun schema's die aan dit evenement zijn gekoppeld, zijn niet ingeschakeld

We raden aan hun beschikbaarheid te controleren om dit op te lossen.", + "org_admin_no_slots|cta": "Open beschikbaarheid van gebruikers", + "organization_no_slots_notification_switch_title": "Ontvang meldingen wanneer je team geen beschikbaarheid heeft", + "organization_no_slots_notification_switch_description": "Beheerders ontvangen e-mailmeldingen wanneer een gebruiker probeert een teamlid te boeken en wordt geconfronteerd met 'Geen beschikbaarheid'. We sturen deze e-mail na twee voorvallen en herinneren je elke 7 dagen per gebruiker.", + "email_team_invite|subject|added_to_org": "{{user}} heeft je toegevoegd aan de organisatie {{team}} op {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} heeft je uitgenodigd om deel te nemen aan de organisatie {{team}} op {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} heeft je toegevoegd aan het team {{team}} van de organisatie {{parentTeamName}} op {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} heeft je uitgenodigd om deel te nemen aan het team {{team}} van de organisatie {{parentTeamName}} op {{appName}}", "email_team_invite|subject|invited_to_regular_team": "{{user}} heeft u uitgenodigd om lid te worden van het team {{team}} op {{appName}}", + "email_team_invite|heading|added_to_org": "Je bent toegevoegd aan een {{appName}} organisatie", + "email_team_invite|heading|invited_to_org": "Je bent uitgenodigd voor een {{appName}} organisatie", + "email_team_invite|heading|added_to_subteam": "Je bent toegevoegd aan een team van de {{parentTeamName}} organisatie", + "email_team_invite|heading|invited_to_subteam": "Je bent uitgenodigd voor een team van de {{parentTeamName}} organisatie", "email_team_invite|heading|invited_to_regular_team": "U bent uitgenodigd om lid te worden van een {{appName}}-team", + "email_team_invite|content|added_to_org": "{{invitedBy}} heeft je toegevoegd aan de {{teamName}} organisatie.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} heeft je uitgenodigd om deel te nemen aan de {{teamName}} organisatie.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} heeft je toegevoegd aan het team {{teamName}} in hun organisatie {{parentTeamName}}. {{appName}} is de planner die jou en je team in staat stelt om vergaderingen te plannen zonder eindeloos heen en weer te mailen.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} heeft je uitgenodigd om deel te nemen aan het team {{teamName}} in hun organisatie {{parentTeamName}}. {{appName}} is de planner die jou en je team in staat stelt om vergaderingen te plannen zonder eindeloos heen en weer te mailen.", "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} heeft u uitgenodigd om lid te worden van zijn team '{{teamName}}' op {{appName}}. {{appName}} is de gebeurtenissenplanner die u en uw team in staat stelt afspraken te plannen zonder heen en weer te e-mailen.", + "email|existing_user_added_link_will_change": "Bij het accepteren van de uitnodiging zal je link veranderen naar je organisatiedomein, maar maak je geen zorgen, alle eerdere links blijven werken en worden correct doorgestuurd.

Let op: Al je persoonlijke evenementtypes worden verplaatst naar de {{teamName}} organisatie, wat ook een mogelijke persoonlijke link kan omvatten.

Voor persoonlijke evenementen raden we aan een nieuw account aan te maken met een persoonlijk e-mailadres.", + "email|existing_user_added_link_changed": "Uw link is gewijzigd van {prevLinkWithoutProtocol} naar {newLinkWithoutProtocol}, maar maak u geen zorgen, alle eerdere links werken nog steeds en worden correct doorgestuurd.

Let op: Al uw persoonlijke evenementtypes zijn verplaatst naar de {teamName} organisatie, wat ook een mogelijke persoonlijke link kan omvatten.

Log in en zorg ervoor dat u geen privé-evenementen heeft op uw nieuwe organisatorische account.

Voor persoonlijke evenementen raden we aan een nieuw account aan te maken met een persoonlijk e-mailadres.

Geniet van uw nieuwe schone link: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Uw organisatie is aangemaakt", + "your_current_plan": "Uw huidige plan", + "organization_price_per_user_month": "$37 per gebruiker per maand (minimaal 30 plaatsen)", + "privacy_organization_description": "Beheer privacy-instellingen voor uw organisatie", "privacy": "Privacy", - "sign_up_terms": "Door verder te gaan, gaat u akkoord met de <0>Voorwaarden en <1>Privacybeleid<1>", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "uur", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} uur", - "signing_up_terms": "Door verder te gaan, gaat u akkoord met de <0>Voorwaarden en <1>Privacybeleid<1>", - "travel_schedule": "Reisschema", - "travel_schedule_description": "Plan je reis van tevoren om je bestaande schema in een andere tijdzone te behouden en te voorkomen dat je om middernacht wordt geboekt.", - "schedule_timezone_change": "Schema tijdzone wijziging", - "schedule_tz_without_end_date": "Schema tijdzone zonder einddatum", + "team_will_be_under_org": "Nieuwe teams vallen onder uw organisatie", + "add_group_name": "Groepsnaam toevoegen", + "group_name": "Groepsnaam", + "routers": "Routers", + "primary": "Primair", + "make_primary": "Maak primair", + "add_email": "E-mailadres toevoegen", + "add_emails": "E-mailadressen toevoegen", + "add_email_description": "Voeg een e-mailadres toe om uw primaire te vervangen of als alternatief e-mailadres voor uw evenementtypes te gebruiken.", + "confirm_email": "Bevestig uw e-mailadres", + "scheduler_first_name": "De voornaam van de persoon die boekt", + "scheduler_last_name": "De achternaam van de persoon die boekt", + "scheduler_name": "Naam van de planner", + "organizer_first_name": "Uw voornaam", + "confirm_email_description": "We hebben een e-mail gestuurd naar {{email}}. Klik op de link in de e-mail om dit adres te verifiëren.", + "send_event_details_to": "Stuur evenementdetails naar", + "schedule_tz_without_end_date": "Plan tijdzone zonder einddatum", + "select_members": "Selecteer leden", + "lock_event_types_modal_header": "Wat moeten we doen met de bestaande evenementtypes van uw lid?", + "org_delete_event_types_org_admin": "Alle individuele evenementtypen van uw leden (behalve beheerde) worden permanent verwijderd. Ze zullen geen nieuwe kunnen aanmaken.", + "org_hide_event_types_org_admin": "De individuele evenementtypen van uw leden worden verborgen (behalve beheerde) van profielen, maar de links blijven actief. Ze zullen geen nieuwe kunnen aanmaken.", + "hide_org_eventtypes": "Verberg individuele evenementtypen", + "delete_org_eventtypes": "Verwijder individuele evenementtypen", + "lock_org_users_eventtypes": "Blokkeer het aanmaken van individuele evenementtypen", + "lock_org_users_eventtypes_description": "Voorkom dat leden hun eigen evenementtypen aanmaken.", + "add_to_event_type": "Toevoegen aan evenementtype", + "create_account_password": "Maak een accountwachtwoord aan", + "error_creating_account_password": "Het aanmaken van een accountwachtwoord is mislukt", + "cannot_create_account_password_cal_provider": "Kan geen accountwachtwoord aanmaken voor cal-accounts", + "cannot_create_account_password_already_existing": "Kan geen accountwachtwoord aanmaken voor reeds bestaande accounts", + "create_account_password_hint": "U heeft geen accountwachtwoord, maak er een aan door naar Beveiliging -> Wachtwoord te navigeren. U kunt niet loskoppelen totdat een accountwachtwoord is aangemaakt.", + "disconnect_account": "Koppel verbonden account los", + "disconnect_account_hint": "Het loskoppelen van uw verbonden account zal de manier waarop u inlogt veranderen. U kunt alleen inloggen met e-mail + wachtwoord.", + "cookie_consent_checkbox": "Ik stem in met ons privacybeleid en het gebruik van cookies", + "make_a_call": "Bel", + "skip_rr_assignment_label": "Sla round robin-toewijzing over als contact in Salesforce bestaat", + "skip_rr_description": "URL moet het e-mailadres van de contactpersoon als parameter bevatten, bijv. ?email=contactEmail", + "select_account_header": "Selecteer Account", + "select_account_description": "Installeer {{appName}} op uw persoonlijke account of op een teamaccount.", + "select_event_types_header": "Selecteer Evenementtypen", + "select_event_types_description": "Op welk evenementtype wilt u {{appName}} installeren?", + "configure_app_header": "Configureer {{appName}}", + "configure_app_description": "Rond de app-configuratie af. Je kunt deze instellingen later wijzigen.", + "already_installed": "al geïnstalleerd", "ooo_reasons_unspecified": "Niet gespecificeerd", "ooo_reasons_vacation": "Vakantie", - "ooo_reasons_travel": "Reizen", + "ooo_reasons_travel": "Reis", "ooo_reasons_sick_leave": "Ziekteverlof", "ooo_reasons_public_holiday": "Feestdag", - "ooo_forwarding_to": "Doorsturen naar {{username}}", - "ooo_not_forwarding": "Geen doorsturen", - "ooo_empty_title": "Maak een OOO aan", - "ooo_empty_description": "Communiceer met je boekers als je niet beschikbaar bent voor boekingen. Ze kunnen je nog steeds boeken bij je terugkomst of je kunt ze doorsturen naar een teamlid.", + "ooo_forwarding_to": "Doorgestuurd naar {{username}}", + "ooo_not_forwarding": "Geen doorgifte", + "ooo_empty_title": "Maak een OOO", + "ooo_empty_description": "Communiceer aan je boekers wanneer je niet beschikbaar bent voor boekingen. Ze kunnen je nog steeds boeken na je terugkeer of je kunt ze doorsturen naar een teamlid.", "ooo_user_is_ooo": "{{displayName}} is OOO", - "ooo_slots_returning": "<0>{{displayName}} kan hun vergaderingen bijwonen terwijl ze weg zijn.", + "ooo_slots_returning": "<0>{{displayName}} kan hun vergaderingen aannemen terwijl ze weg zijn.", "ooo_slots_book_with": "Boek {{displayName}}", - "ooo_create_entry_modal": "Uit kantoor gaan", + "ooo_create_entry_modal": "Ga Out of Office", "ooo_select_reason": "Selecteer reden", - "enterprise_license_locally": "Je kunt deze functie lokaal testen maar niet in productieomgevingen.", - "enterprise_license_sales": "Om te upgraden naar de enterprise-editie, neem contact op met ons verkoopteam. Als er al een licentiecode aanwezig is, neem dan contact op met support@cal.com voor hulp.", - "apply_to_all_event_types": "Van toepassing op alles, inclusief toekomstige eventtypes", + "create_an_out_of_office": "Ga Out of Office", + "submit_feedback": "Feedback indienen", + "host_no_show": "Je gastheer is niet komen opdagen", + "no_show_description": "Je kunt een andere vergadering met hen plannen", + "how_can_we_improve": "Hoe kunnen we onze service verbeteren?", + "most_liked": "Wat vond je het leukst?", + "review": "Beoordeling", + "reviewed": "Beoordeeld", + "unreviewed": "Niet beoordeeld", + "rating_url_info": "De URL voor het feedbackformulier voor beoordelingen", + "no_show_url_info": "De URL voor No Show Feedback", + "no_support_needed": "Geen ondersteuning nodig?", + "hide_support": "Ondersteuning verbergen", + "event_ratings": "Gemiddelde beoordelingen", + "event_no_show": "Host niet aanwezig", + "recent_ratings": "Recente beoordelingen", + "no_ratings": "Geen beoordelingen ingediend", + "no_ratings_description": "Voeg een workflow met 'Beoordeling' toe om beoordelingen na vergaderingen te verzamelen", + "most_no_show_host": "Meeste afwezige leden", + "highest_rated_members": "Leden met de hoogste beoordeelde vergaderingen", + "lowest_rated_members": "Leden met de laagste beoordeelde vergaderingen", + "csat_score": "CSAT-score", + "lockedSMS": "Vergrendelde SMS", + "leave_without_assigning_anyone": "Vertrekken zonder iemand toe te wijzen?", + "leave_without_adding_attendees": "Weet je zeker dat je dit evenement wilt verlaten zonder deelnemers toe te voegen?", + "no_availability_shown_to_bookers": "Als je niemand toewijst voor dit evenement, zal er geen beschikbaarheid worden getoond aan boekers.", + "go_back_and_assign": "Ga terug en wijs toe", + "leave_without_assigning": "Vertrekken zonder toe te wijzen", + "signing_up_terms": "Door verder te gaan, ga je akkoord met onze <0>Voorwaarden en <1>Privacybeleid.", + "always_show_x_days": "Altijd {{x}} dagen beschikbaar", + "unable_to_subscribe_to_the_platform": "Er is een fout opgetreden bij het proberen te abonneren op het platformplan, probeer het later opnieuw", + "updating_oauth_client_error": "Er is een fout opgetreden bij het bijwerken van de OAuth-client, probeer het later opnieuw", + "creating_oauth_client_error": "Er is een fout opgetreden bij het aanmaken van de OAuth-client, probeer het later opnieuw", + "event_type_color": "Kleur van evenementtype", + "event_type_color_description": "Dit wordt alleen gebruikt voor het onderscheiden van evenementtypes en boekingen binnen de app. Het wordt niet getoond aan boekers.", + "mark_as_no_show_title": "Markeren als no-show", + "x_marked_as_no_show": "{{x}} gemarkeerd als no-show", + "x_unmarked_as_no_show": "{{x}} niet langer gemarkeerd als no-show", + "team_select_info": "triggers voor alle evenementtypes van het team en persoonlijke evenementtypes van alle teamleden", + "no_show_updated": "No-show status bijgewerkt voor deelnemers", + "email_copied": "E-mail gekopieerd", + "USER_PENDING_MEMBER_OF_THE_ORG": "Gebruiker is een in afwachting zijnd lid van de organisatie", + "USER_ALREADY_INVITED_OR_MEMBER": "Gebruiker is al uitgenodigd of een lid", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "Gebruiker is lid van een organisatie waar dit team geen deel van uitmaakt.", + "booking_reassigned": "Boeking is opnieuw toegewezen", + "reassign": "Opnieuw toewijzen", + "reassign_to_another_rr_host": "Boeking opnieuw toewijzen aan een andere beschikbare round robin host", + "assign_team_member": "Teamlid toewijzen", + "override_team_member_to_assign": "Overschrijf welk teamlid je wilt toewijzen.", + "no_available_hosts": "Geen beschikbare hosts", + "reassign_round_robin_host": "Round robin host opnieuw toewijzen", + "skip_writing_to_calendar": "Niet naar de ICS-feed schrijven", + "rescheduling_not_possible": "Herschikken is niet mogelijk omdat het evenement is verlopen", + "event_expired": "Dit evenement is verlopen", + "skip_contact_creation": "Contacten overslaan als ze niet bestaan in {{appName}}", + "skip_writing_to_calendar_note": "Als je ICS-link alleen-lezen is (bijv. Proton Calendar), vink het vakje hierboven aan om fouten te voorkomen. Je moet je agenda handmatig bijwerken voor wijzigingen.", + "attributes": "Attributen", + "new_attribute": "Nieuw attribuut", + "add_attributes": "Attributen toevoegen", + "add_attributes_description": "Voeg attributen toe aan je teamleden", + "new_option": "Nieuwe optie", + "update_profile": "Lid bijwerken", + "attribute_updated_successfully": "Attribuut succesvol bijgewerkt", + "attributes_edited_successfully": "Attributen succesvol bewerkt", + "attribute_meta_description": "Beheer attributen voor je teamleden", + "attributes_edit_description": "Bewerk attributen voor je teamleden", + "back_to_attributes": "Terug naar attributen", + "delete_attribute": "Weet je zeker dat je deze optie wilt verwijderen?", + "delete_attribute_description": "Deze optie is toegewezen aan {{numberOfUsers}} leden. Het verwijderen ervan zal het uit hun profiel verwijderen.", + "disable_all_emails_to_attendees": "Schakel standaard e-mails naar deelnemers uit met betrekking tot dit type evenement", + "disable_all_emails_description": "Schakelt standaard e-mailcommunicatie uit met betrekking tot dit type evenement, inclusief boekingsbevestigingen, herinneringen en annuleringen.", + "disable_all_emails_to_hosts": "Schakel standaard e-mails naar hosts uit met betrekking tot dit type evenement", + "type_confirm_to_continue": "Typ bevestigen om door te gaan", + "disable_email": "E-mail uitschakelen", + "grant_admin_api": "Geef Admin API-toegang", + "revoke_admin_api": "Admin API-toegang intrekken", + "apple_connect_atom_label": "Apple Agenda verbinden", + "apple_connect_atom_already_connected_label": "Verbonden Apple Agenda", + "apple_connect_atom_loading_label": "Apple Agenda controleren", + "google_connect_atom_label": "Google Agenda verbinden", + "google_connect_atom_already_connected_label": "Verbonden Google Agenda", + "google_connect_atom_loading_label": "Google Agenda controleren", + "outlook_connect_atom_label": "Outlook Agenda verbinden", + "outlook_connect_atom_already_connected_label": "Verbonden Outlook-agenda", + "outlook_connect_atom_loading_label": "Outlook-agenda controleren", + "booking_question_response_variables": "Variabelen voor boekingsvraagreacties", + "managed_by_teamAdmins": "Beheerd door {{teamAdmins}}", + "number_of_options": "{{count}} opties", + "reschedule_with_same_round_robin_host_title": "Opnieuw plannen met dezelfde Round-Robin host", + "reschedule_with_same_round_robin_host_description": "Opnieuw geplande evenementen worden toegewezen aan dezelfde host als oorspronkelijk gepland", + "disable_input_if_prefilled": "Invoer uitschakelen als de URL-identificatie vooraf is ingevuld", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Voeg uw nieuwe strings hierboven toe ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/pl/common.json b/apps/web/public/static/locales/pl/common.json index 8b2cb175fb374f..4eca3a6c8ea01c 100644 --- a/apps/web/public/static/locales/pl/common.json +++ b/apps/web/public/static/locales/pl/common.json @@ -7,16 +7,27 @@ "second_other": "{{count}} sekund/y", "upgrade_now": "Ulepsz teraz", "accept_invitation": "Akceptuj zaproszenie", + "max_characters": "Maks. znaków", + "min_characters": "Min. znaków", "calcom_explained": "{{appName}} zapewnia infrastrukturę planowania dla absolutnie wszystkich.", "calcom_explained_new_user": "Dokończ konfigurację konta aplikacji {{appName}}! Od rozwiązania wszystkich Twoich problemów z układaniem grafików dzieli Cię tylko kilka kroków.", "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", + "verify_email_subject_verifying_email": "{{appName}}: Zweryfikuj swój email", "check_your_email": "Sprawdź swoją pocztę e-mail", + "old_email_address": "Stary email", + "new_email_address": "Nowy email", "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", + "cal_ai_assistant": "Asystent AI Cal", + "verify_email_change_description": "Ostatnio poprosiłeś o zmianę adresu email, którego używasz do logowania się na swoje konto {{appName}}. Kliknij poniższy przycisk, aby potwierdzić nowy adres email.", + "verify_email_change_success_toast": "Zaktualizowano twój email na {{email}}", + "verify_email_change_failure_toast": "Nie udało się zaktualizować emaila.", + "change_of_email": "Zweryfikuj swój nowy email w {{appName}}", + "change_of_email_toast": "Wysłaliśmy link weryfikacyjny na {{email}}. Zaktualizujemy twój adres email, gdy klikniesz ten link.", "copy_somewhere_safe": "Zapisz ten klucz API w bezpiecznym miejscu. Nie będzie można wyświetlić go ponownie.", "verify_email_email_body": "Zweryfikuj swój adres e-mail, klikając poniższy przycisk.", "verify_email_by_code_email_body": "Zweryfikuj swój adres e-mail, używając kodu poniżej.", @@ -36,6 +47,7 @@ "no_options_available": "Brak dostępnych opcji", "cancellation_reason": "Powód anulowania (opcjonalnie)", "cancellation_reason_placeholder": "Dlaczego anulujesz?", + "rejection_reason_placeholder": "Dlaczego odrzucasz?", "rejection_reason": "Powód odrzucenia", "rejection_reason_title": "Odrzucić prośbę o rezerwację?", "rejection_reason_description": "Czy jesteś pewien, że chcesz odrzucić prośbę o rezerwację? Damy znać osobie, która próbowała jej dokonać. Poniżej możesz podać powód.", @@ -56,6 +68,19 @@ "a_refund_failed": "Zwrot środków nie powiódł się", "awaiting_payment_subject": "Oczekiwanie na płatność: {{title}} w {{date}}", "meeting_awaiting_payment": "Twoje spotkanie oczekuje na płatność", + "dark_theme_contrast_error": "Kolor ciemnego motywu nie spełnia wymagań kontrastu. Zalecamy zmianę tego koloru, aby przyciski były bardziej widoczne.", + "light_theme_contrast_error": "Kolor jasnego motywu nie spełnia wymagań kontrastu. Zalecamy zmianę tego koloru, aby przyciski były bardziej widoczne.", + "event_type_color_light_theme_contrast_error": "Kolor jasnego motywu nie spełnia wymagań kontrastu. Zalecamy zmianę tego koloru, aby kolory typów wydarzeń były bardziej widoczne.", + "event_type_color_dark_theme_contrast_error": "Kolor ciemnego motywu nie spełnia wymagań kontrastu. Zalecamy zmianę tego koloru, aby kolory typów wydarzeń były bardziej widoczne.", + "payment_not_created_error": "Nie udało się utworzyć płatności", + "couldnt_charge_card_error": "Nie udało się obciążyć karty za płatność", + "no_available_users_found_error": "Nie znaleziono dostępnych użytkowników. Czy możesz spróbować innego terminu?", + "request_body_end_time_internal_error": "Błąd wewnętrzny. Treść żądania nie zawiera czasu zakończenia", + "create_calendar_event_error": "Nie można utworzyć wydarzenia w kalendarzu organizatora", + "update_calendar_event_error": "Nie można zaktualizować wydarzenia w kalendarzu.", + "delete_calendar_event_error": "Nie można usunąć wydarzenia w kalendarzu.", + "already_signed_up_for_this_booking_error": "Jesteś już zapisany na tę rezerwację.", + "hosts_unavailable_for_booking": "Niektórzy gospodarze są niedostępni do rezerwacji.", "help": "Pomoc", "price": "Cena", "paid": "Zapłacono", @@ -63,6 +88,8 @@ "payment": "Płatność", "missing_card_fields": "Uzupełnij brakujące dane", "pay_now": "Zapłać teraz", + "general_prompt": "Ogólne zapytanie", + "begin_message": "Rozpocznij wiadomość", "codebase_has_to_stay_opensource": "Baza kodu musi pozostać otwartym źródłem, niezależnie od tego, czy została zmodyfikowana czy nie", "cannot_repackage_codebase": "Nie możesz przepakować ani sprzedać tego projektu", "acquire_license": "Uzyskaj licencję komercyjną do usunięcia tych warunków poprzez wysłanie e-mail", @@ -80,6 +107,9 @@ "new_event_request": "Prośba o nowe wydarzenie: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Potwierdź lub odrzuć prośbę", "check_bookings_page_to_confirm_or_reject": "Sprawdź swoją stronę rezerwacji, aby potwierdzić lub odrzucić rezerwację.", + "check_in_assistant": "Asystent zameldowania", + "check_in_assistant_description": "Wykonuje połączenie wychodzące, aby sprawdzić, czy zaplanowane spotkanie jest aktualne lub czy chcesz je przełożyć.", + "create_your_own_prompt": "Utwórz własne zapytanie i użyj go do wykonania połączenia wychodzącego.", "event_awaiting_approval": "Wydarzenie oczekuje na Twoje zatwierdzenie", "event_awaiting_approval_recurring": "Wydarzenie cykliczne oczekuje na Twoje zatwierdzenie", "someone_requested_an_event": "Ktoś poprosił o zaplanowanie wydarzenia w Twoim kalendarzu.", @@ -90,7 +120,9 @@ "event_still_awaiting_approval": "Wydarzenie nadal oczekuje na Twoje zatwierdzenie", "booking_submitted_subject": "Rezerwacja potwierdzona: {{title}} w {{date}}", "download_recording_subject": "Pobierz nagranie: {{title}} z {{date}}", + "download_transcript_email_subject": "Pobierz transkrypcję: {{title}} z dnia {{date}}", "download_your_recording": "Pobierz nagranie", + "download_your_transcripts": "Pobierz swoje transkrypcje", "your_meeting_has_been_booked": "Twoje spotkanie zostało zarezerwowane", "event_type_has_been_rescheduled_on_time_date": "Twój {{title}} został przełożony na {{date}}.", "event_has_been_rescheduled": "Zaktualizowano - Twoje wydarzenie zostało przełożone", @@ -101,6 +133,7 @@ "requested_to_reschedule_subject_attendee": "Działanie wymagało zmiany harmonogramu: Zarezerwuj nową godzinę na wydarzenie {{eventType}} z {{name}}", "hi_user_name": "Cześć {{name}}", "ics_event_title": "{{eventType}} z {{name}}", + "please_book_a_time_sometime_later": "Ups, nie udało się połączyć tym razem. Proszę zaplanować rozmowę na późniejszy termin.", "new_event_subject": "Nowe wydarzenie: {{attendeeName}} - {{date}} - {{eventType}}", "join_by_entrypoint": "Dołącz przez {{entryPoint}}", "notes": "Uwagi", @@ -112,26 +145,35 @@ "invitee_timezone": "Strefa Czasowe zaproszonego uczestnika", "time_left": "Pozostały czas", "event_type": "Typ wydarzenia", + "duplicate_event_type": "Zduplikowany typ wydarzenia", "enter_meeting": "Wejdź do spotkania", "video_call_provider": "Dostawca rozmowy wideo", "meeting_id": "ID Spotkania", "meeting_password": "Hasło Spotkania", "meeting_url": "URL Spotkania", + "meeting_url_not_found": "Nie znaleziono URL spotkania", + "token_not_found": "Nie znaleziono tokenu", + "some_other_host_already_accepted_the_meeting": "Inny gospodarz już zaakceptował spotkanie. Czy nadal chcesz dołączyć? <1>Przejdź do spotkania", "meeting_request_rejected": "Twoja prośba o spotkanie została odrzucona", "rejected_event_type_with_organizer": "Odrzucono: {{eventType}} z {{organizer}} w {{date}}", "hi": "Cześć", "join_team": "Dołącz do zespołu", "manage_this_team": "Zarządzaj tym zespołem", "team_info": "Informacje o zespole", + "join_meeting": "Dołącz do spotkania", "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_to_subteam": "{{user}} zaprosił Cię do zespołu {{team}} organizacji {{parentTeamName}} na {{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.", "link_expires": "P.S. Wygasa za {{expiresIn}} godzin.", "upgrade_to_per_seat": "Ulepsz do Per-Seat", "seat_options_doesnt_support_confirmation": "Opcja miejsc nie obsługuje wymogu potwierdzenia", + "multilocation_doesnt_support_seats": "Opcja wielu lokalizacji nie obsługuje miejsc", + "no_show_fee_doesnt_support_seats": "Opłata za nieobecność nie obsługuje miejsc", + "seats_option_doesnt_support_multi_location": "Opcja miejsc nie obsługuje wielu lokalizacji", "team_upgrade_seats_details": "Spośród {{memberCount}} członków Twojego zespołu, {{unpaidCount}} miejsc(e) nie jest opłacane. Szacowany całkowity koszt Twojego członkostwa w liczbie ${{seatPrice}} na miesiąc wynosi ${{totalCost}} na miesiąc.", "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", @@ -225,8 +267,10 @@ "create_account": "Utwórz Konto", "confirm_password": "Potwierdź hasło", "reset_your_password": "Ustaw nowe hasło zgodnie z instrukcjami wysłanymi na Twój adres e-mail.", + "org_banner_instructions": "Proszę przesłać obraz o szerokości {{width}} i wysokości {{height}}.", "email_change": "Zaloguj się ponownie za pomocą nowego adresu e-mail i hasła.", "create_your_account": "Załóż swoje konto", + "create_your_calcom_account": "Utwórz swoje konto na Cal.com", "sign_up": "Zarejestruj", "youve_been_logged_out": "Zostałeś wylogowany", "hope_to_see_you_soon": "Mamy nadzieję zobaczyć Cię ponownie wkrótce!", @@ -264,6 +308,9 @@ "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ść", + "set_availbility_description": "Ustaw harmonogramy na czasy, w których chcesz być dostępny do rezerwacji.", + "share_a_link_or_embed": "Udostępnij link lub osadź", + "share_a_link_or_embed_description": "Udostępnij link {{appName}} lub osadź go na swojej stronie.", "availability_settings": "Ustawienia dostępności", "continue_without_calendar": "Kontynuuj bez kalendarza", "continue_with": "Kontynuuj za pomocą: {{appName}}", @@ -279,6 +326,7 @@ "welcome_to_calcom": "Witaj w {{appName}}", "welcome_instructions": "Powiedz nam, jak Cię nazywać i daj nam znać, w jakiej strefie czasowej jesteś. Będziesz mógł edytować to później.", "connect_caldav": "Połącz z serwerem CalDav (beta)", + "connect_ics_feed": "Połącz z kanałem ICS", "connect": "Połącz", "try_for_free": "Wypróbuj za darmo", "create_booking_link_with_calcom": "Utwórz własny link do rezerwacji z {{appName}}", @@ -292,8 +340,10 @@ "add_another_calendar": "Dodaj kolejny kalendarz", "other": "Inne", "email_sign_in_subject": "Twój link logowania do aplikacji {{appName}}", + "round_robin_emailed_you_and_attendees": "Spotykasz się z {{user}}. Wysłaliśmy e-mail z zaproszeniem do kalendarza i szczegółami do wszystkich.", "emailed_you_and_attendees": "Wysłaliśmy Ci i innym uczestnikom zaproszenie do kalendarza ze wszystkimi szczegółami.", "emailed_you_and_attendees_recurring": "Wysłaliśmy Ci oraz innym uczestnikom zaproszenie do kalendarza dotyczące pierwszego z tych cyklicznych wydarzeń.", + "round_robin_emailed_you_and_attendees_recurring": "Spotykasz się z {{user}}. Wysłaliśmy e-mail z zaproszeniem do kalendarza i szczegółami do wszystkich na pierwsze z tych cyklicznych wydarzeń.", "emailed_you_and_any_other_attendees": "Ty i inni uczestnicy dostali e-mail z tymi informacjami.", "needs_to_be_confirmed_or_rejected": "Twoja rezerwacja musi zostać potwierdzona lub odrzucona.", "needs_to_be_confirmed_or_rejected_recurring": "Twoje spotkanie cykliczne musi jeszcze zostać potwierdzone lub odrzucone.", @@ -417,9 +467,11 @@ "browse_api_documentation": "Przeglądaj naszą dokumentację API", "leverage_our_api": "Wykorzystaj nasze API dla pełnej kontroli i dopasowania do swoich potrzeb.", "create_webhook": "Utwórz Webhook", + "instant_meeting": "Utworzono natychmiastowe spotkanie", "booking_cancelled": "Anulowano rezerwację", "booking_rescheduled": "Rezerwacja Przełożona", "recording_ready": "Link do pobrania nagrania gotowy", + "recording_transcription_generated": "Wygenerowano transkrypcję", "booking_created": "Rezerwacja Utworzona", "booking_rejected": "Odrzucono rezerwację", "booking_requested": "Poproszono o rezerwację", @@ -427,6 +479,7 @@ "meeting_ended": "Spotkanie zakończone", "form_submitted": "Przesłano formularz", "booking_paid": "Rezerwacja opłacona", + "booking_no_show_updated": "Zaktualizowano status nieobecności na spotkaniu", "event_triggers": "Wyzwalacze Zdarzeń", "subscriber_url": "Adres URL subskrybenta", "create_new_webhook": "Utwórz nowy webhook", @@ -531,6 +584,7 @@ "enter_number_between_range": "Wprowadź liczbę od 1 do {{maxOccurences}}", "email_address": "Adres e-mail", "enter_valid_email": "Wprowadź prawidłowy adres e-mail", + "please_schedule_future_call": "Proszę zaplanować przyszłą rozmowę, jeśli nie będziemy dostępni w ciągu {{seconds}} sekund", "location": "Lokalizacja", "address": "Adres", "enter_address": "Wprowadź adres", @@ -583,6 +637,7 @@ "number_selected": "wybrano {{count}}", "owner": "Właściciel", "admin": "Administrator", + "admin_api": "Admin API", "administrator_user": "Użytkownik-administrator", "lets_create_first_administrator_user": "Utwórzmy pierwszego użytkownika-administratora.", "admin_user_created": "Konfiguracja użytkownika-administratora", @@ -590,6 +645,7 @@ "new_member": "Nowy Członek", "invite": "Zaproś", "add_team_members": "Dodaj członków zespołu", + "add_org_members": "Dodaj członków", "add_team_members_description": "Zaproś innych do Twojego zespołu", "add_team_member": "Dodaj członka zespołu", "invite_new_member": "Zaproś nowego członka zespołu", @@ -604,6 +660,7 @@ "hide_book_a_team_member_description": "Ukryj przycisk Zarezerwuj członka zespołu na swoich stronach publicznych.", "danger_zone": "Strefa zagrożenia", "account_deletion_cannot_be_undone": "Uwaga. Usunięcie konta jest nieodwracalne.", + "team_deletion_cannot_be_undone": "Uwaga. Usunięcie zespołu jest nieodwracalne.", "back": "Wróć", "cancel": "Anuluj", "cancel_all_remaining": "Anuluj wszystkie pozostałe", @@ -639,6 +696,7 @@ "user_from_team": "{{user}} z {{team}}", "preview": "Podgląd", "link_copied": "Link skopiowany!", + "copied": "Skopiowano!", "private_link_copied": "Skopiowano prywatny link!", "link_shared": "Link udostępniony!", "title": "Tytuł", @@ -655,7 +713,9 @@ "default_duration_no_options": "Proszę najpierw wybrać dostępne czasy trwania", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minuty", + "use_cal_ai_to_make_call_description": "Użyj Cal.ai, aby uzyskać numer telefonu zasilany przez AI lub wykonywać połączenia do gości.", "round_robin": "Round Robin", "round_robin_description": "Cykl spotkań między wieloma członkami zespołu.", "managed_event": "Zarządzane wydarzenie", @@ -667,9 +727,12 @@ "add_members": "Dodaj członków...", "no_assigned_members": "Brak przypisanych członków", "assigned_to": "Przypisano do:", + "you_must_be_logged_in_to": "Musisz być zalogowany do {{url}}", "start_assigning_members_above": "Rozpocznij przypisywanie członków powyżej", "locked_fields_admin_description": "Członkowie nie będą mogli tego edytować", + "unlocked_fields_admin_description": "Członkowie mogą edytować", "locked_fields_member_description": "Ta opcja została zablokowana przez administratora zespołu", + "unlocked_fields_member_description": "Odblokowane przez administratora zespołu", "url": "Adres URL", "hidden": "Ukryte", "readonly": "Tylko do odczytu", @@ -716,6 +779,8 @@ "brand_color": "Kolor Marki", "light_brand_color": "Kolor marki (Jasny Motyw)", "dark_brand_color": "Kolor marki (Ciemny Motyw)", + "light_event_type_color": "Kolor typu wydarzenia (jasny motyw)", + "dark_event_type_color": "Kolor typu wydarzenia (ciemny motyw)", "file_not_named": "Plik nie jest nazwany [idOrSlug]/[user]", "create_team": "Utwórz Zespół", "name": "Nazwa", @@ -771,6 +836,10 @@ "additional_input_description": "Wymagaj od osoby układającej harmonogram wprowadzania dodatkowych danych przed potwierdzeniem rezerwacji", "label": "Etykieta", "placeholder": "Tekst zastępczy", + "display_add_to_calendar_organizer": "Użyj e-maila „Dodaj do kalendarza” jako organizatora", + "display_email_as_organizer": "Wyświetlimy ten adres e-mail jako organizatora i wyślemy tutaj e-maile z potwierdzeniem.", + "if_enabled_email_address_as_organizer": "Jeśli włączone, wyświetlimy adres e-mail z „Dodaj do kalendarza” jako organizatora i wyślemy tam e-maile z potwierdzeniem.", + "reconnect_calendar_to_use": "Należy pamiętać, że może być konieczne odłączenie i ponowne połączenie konta 'Dodaj do kalendarza', aby skorzystać z tej funkcji.", "type": "Typ", "edit": "Edytuj", "add_input": "Dodaj Wejście", @@ -779,6 +848,9 @@ "requires_confirmation_description": "Rezerwację trzeba potwierdzić ręcznie, aby można było skierować ją do integracji i wysłać wiadomość z potwierdzeniem.", "recurring_event": "Wydarzenie cykliczne", "recurring_event_description": "Osoby mogą subskrybować wydarzenia cykliczne", + "cannot_be_used_with_paid_event_types": "Nie można używać z płatnymi typami wydarzeń", + "warning_payment_instant_meeting_event": "Natychmiastowe spotkania nie są jeszcze obsługiwane z cyklicznymi wydarzeniami i aplikacjami płatniczymi", + "warning_instant_meeting_experimental": "Eksperymentalne: Wydarzenia natychmiastowych spotkań są obecnie eksperymentalne.", "starting": "Rozpoczęcie", "disable_guests": "Wyłącz Gości", "disable_guests_description": "Wyłącz dodawanie dodatkowych gości podczas rezerwacji.", @@ -787,6 +859,7 @@ "private_link_label": "Link prywatny", "private_link_hint": "Twój link prywatny będzie odnawiać się po każdym użyciu", "copy_private_link": "Skopiuj link prywatny", + "copy_private_link_to_event": "Skopiuj prywatny link do wydarzenia", "private_link_description": "Wygeneruj prywatny adres URL do udostępniania bez ujawniania Twojej nazwy użytkownika {{appName}}", "invitees_can_schedule": "Zaproszeni mogą planować", "date_range": "Zakres czasu", @@ -846,6 +919,7 @@ "next_step": "Pomiń krok", "prev_step": "Poprzedni krok", "install": "Zainstaluj", + "start_paid_trial": "Rozpocznij darmowy okres próbny", "installed": "Zainstalowane", "active_install_one": "Aktywne instalacje: {{count}}", "active_install_other": "Aktywne instalacje: {{count}}", @@ -860,6 +934,7 @@ "toggle_calendars_conflict": "Przełącz kalendarze, które chcesz sprawdzić pod kątem konfliktów, aby uniknąć podwójnych rezerwacji.", "connect_additional_calendar": "Połącz dodatkowy kalendarz", "calendar_updated_successfully": "Kalendarz został zaktualizowany", + "check_here": "Sprawdź tutaj", "conferencing": "Konferencja", "calendar": "Kalendarz", "payments": "Płatności", @@ -937,6 +1012,8 @@ "verify_wallet": "Zweryfikuj portfel", "create_events_on": "Utwórz wydarzenia w", "enterprise_license": "To funkcja dla przedsiębiorstw", + "enterprise_license_locally": "Możesz przetestować tę funkcję lokalnie, ale nie na produkcji.", + "enterprise_license_sales": "Aby uaktualnić do wersji enterprise, skontaktuj się z naszym zespołem sprzedaży. Jeśli klucz licencyjny jest już wprowadzony, skontaktuj się z support@cal.com po pomoc.", "missing_license": "Brakująca licencja", "next_steps": "Następne kroki", "acquire_commercial_license": "Uzyskaj licencję komercyjną", @@ -978,6 +1055,7 @@ "seats_nearly_full": "Prawie wszystkie miejsca zajęte", "seats_half_full": "Miejsca szybko znikają", "number_of_seats": "Liczba miejsc na rezerwację", + "set_instant_meeting_expiry_time_offset_description": "Ustaw okno dołączenia do spotkania (sekundy): Czas w sekundach, w którym gospodarz może dołączyć i rozpocząć spotkanie. Po tym okresie, link do dołączenia do spotkania wygaśnie.", "enter_number_of_seats": "Wprowadź liczbę miejsc", "you_can_manage_your_schedules": "Możesz zarządzać swoimi harmonogramami na stronie Dostępności.", "booking_full": "Brak dostępnych miejsc", @@ -1029,15 +1107,21 @@ "user_impersonation_heading": "Podszywanie się pod użytkownika", "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.", + "cal_signup_description": "Darmowe dla osób indywidualnych. Plany zespołowe dla funkcji współpracy.", + "make_org_private": "Ustaw organizację jako prywatną", + "make_org_private_description": "Członkowie Twojej organizacji nie będą mogli widzieć innych członków organizacji, gdy ta opcja jest włączona.", "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 członków zespołu.", "you_cannot_see_team_members": "Nie możesz zobaczyć wszystkich członków zespołu prywatnego.", + "you_cannot_see_teams_of_org": "Nie możesz zobaczyć zespołów prywatnej organizacji.", "allow_booker_to_select_duration": "Zezwól rezerwującemu na wybranie czasu trwania", "impersonate_user_tip": "Wszystkie przypadki użycia tej funkcji są kontrolowane.", "impersonating_user_warning": "Podszywanie się pod użytkownika „{{user}}”.", "impersonating_stop_instructions": "Kliknij tutaj, aby zatrzymać", "event_location_changed": "Aktualizacja – lokalizacja Twojego wydarzenia zmieniła się", + "new_guests_added": "Dodano - Nowi goście dodani do Twojego wydarzenia", "location_changed_event_type_subject": "Zmieniono lokalizację: {{eventType}} z użytkownikiem {{name}} w dniu {{date}}", + "guests_added_event_type_subject": "Dodano gości: {{eventType}} z {{name}} w dniu {{date}}", "current_location": "Bieżąca lokalizacja", "new_location": "Nowa lokalizacja", "session": "Sesja", @@ -1049,7 +1133,11 @@ "set_location": "Określ lokalizację", "update_location": "Zaktualizuj lokalizację", "location_updated": "Lokalizacja zaktualizowana", + "guests_added": "Dodano gości", + "unable_to_add_guests": "Nie można dodać gości", "email_validation_error": "To nie wygląda jak adres e-mail", + "emails_must_be_unique_valid": "Adresy e-mail muszą być unikalne i prawidłowe", + "url_validation_error": "To nie wygląda jak URL", "place_where_cal_widget_appear": "Umieść ten kod w swoim kodzie HTML tam, gdzie ma pojawić się widżet {{appName}}.", "create_update_react_component": "Utwórz lub zaktualizuj istniejący komponent React jak pokazano poniżej.", "copy_code": "Skopiuj kod", @@ -1066,9 +1154,12 @@ "make_setup_instructions": "<0>Przejdź do sekcji <1><0>Link z zaproszeniem Make i zainstaluj aplikację Cal.com.<1><0>Zaloguj się do swojego konta Make i utwórz nowy Scenariusz (Scenario).<2>Wybierz Cal.com jako aplikację wyzwalającą. Wybierz również wydarzenie wyzwalające. Wybierz konto, a następnie wprowadź niepowtarzalny klucz interfejsu API.<4>Przetestuj wyzwalanie.<5>Wszystko gotowe!", "install_zapier_app": "Najpierw zainstaluj aplikację Zapier pobraną ze sklepu App Store.", "install_make_app": "Najpierw zainstaluj aplikację Make pobraną ze sklepu App Store.", + "app_not_installed": "Aplikacja nie zainstalowana", + "visit_our_app_store": "Przepraszamy, ta aplikacja nie jest zainstalowana na Twoim koncie. Odwiedź nasz sklep z aplikacjami, aby odkryć tę i inne świetne aplikacje.", "connect_apple_server": "Połącz z serwerem Apple", "calendar_url": "Adres URL kalendarza", "apple_server_generate_password": "Wygeneruj hasło aplikacji do użycia z {{appName}} w witrynie", + "unable_to_add_apple_calendar": "Nie można dodać tego konta Apple Calendar. Upewnij się, że używasz hasła specyficznego dla aplikacji, a nie hasła do konta.", "credentials_stored_encrypted": "Twoje poświadczenia będą przechowywane i szyfrowane.", "it_stored_encrypted": "Zostanie zapisany i zaszyfrowany.", "go_to_app_store": "Przejdź do sklepu App Store", @@ -1088,6 +1179,7 @@ "developer_documentation": "Dokumentacja dla programistów", "get_in_touch": "Kontakt", "contact_support": "Skontaktuj się z pomocą techniczną", + "premium_support": "Wsparcie Premium", "community_support": "Wsparcie społeczności", "feedback": "Opinia", "submitted_feedback": "Dziękujemy za opinię!", @@ -1138,6 +1230,8 @@ "day_timeUnit": "dni", "hour_timeUnit": "godz.", "minute_timeUnit": "min", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Utwórz swój pierwszy przepływ pracy", "new_workflow_description": "Przepływy pracy umożliwiają automatyzację wysyłania przypomnień i powiadomień.", "active_on": "Aktywny dnia", @@ -1165,6 +1259,8 @@ "may_require_confirmation": "Może wymagać potwierdzenia", "nr_event_type_one": "Liczba typów wydarzenia: {{count}}", "nr_event_type_other": "Liczba typów wydarzenia: {{count}}", + "count_team_one": "{{count}} zespół", + "count_team_other": "{{count}} zespoły", "add_action": "Dodaj czynność", "set_whereby_link": "Ustaw link do aplikacji Whereby", "invalid_whereby_link": "Podaj prawidłowy link do aplikacji Whereby", @@ -1185,11 +1281,14 @@ "reminder": "Przypomnienie", "rescheduled": "Przełożono", "completed": "Ukończono", + "rating": "Ocena", "reminder_email": "Przypomnienie: {{eventType}} z {{name}} w dniu {{date}}", "not_triggering_existing_bookings": "Nie uruchomi się w przypadku już istniejących rezerwacji, ponieważ użytkownik zostanie poproszony o numer telefonu podczas rezerwacji wydarzenia.", "minute_one": "{{count}} min", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} min", "hour_one": "{{count}} godz.", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} godz.", "invalid_input": "Nieprawidłowe dane wejściowe", "broken_video_action": "Do zaplanowanego wydarzenia nie można dodać linku do spotkania <1>{{location}}. Skontaktuj się z zaproszonymi osobami lub zaktualizuj wydarzenie w kalendarzu, aby dodać szczegóły. Możesz albo <3>zmienić lokalizację w typie wydarzenia, albo spróbować <5>usunąć aplikację i ponownie ją dodać.", @@ -1201,7 +1300,12 @@ "problem_updating_calendar": "Podczas aktualizowania kalendarza wystąpił problem", "active_on_event_types_one": "Aktywne w {{count}} typie wydarzenia", "active_on_event_types_other": "Aktywne w następującej liczbie typów wydarzeń: {{count}}", + "active_on_teams_one": "Aktywny w {{count}} zespole", + "active_on_teams_other": "Aktywny w {{count}} zespołach", + "active_on_all_event_types": "Aktywny we wszystkich typach wydarzeń", + "active_on_all_teams": "Aktywny we wszystkich zespołach", "no_active_event_types": "Brak aktywnych typów wydarzeń", + "no_active_teams": "Brak aktywnych zespołów", "new_seat_subject": "Nowy uczestnik ({{name}}) wydarzenia {{eventType}} odbywającego się {{date}}", "new_seat_title": "Ktoś dodał się do wydarzenia", "variable": "Zmienna", @@ -1219,6 +1323,7 @@ "upgrade": "Przejdź na wyższą wersję", "upgrade_to_access_recordings_title": "Przejdź na wyższą wersję, aby uzyskać dostęp do nagrań", "upgrade_to_access_recordings_description": "Nagrania są dostępne tylko w ramach naszego planu dla zespołów. Przejdź na wyższą wersję, aby zacząć nagrywać połączenia", + "upgrade_to_cal_ai_phone_number_description": "Ulepsz do wersji Enterprise, aby wygenerować numer telefonu agenta AI, który może dzwonić do gości w celu umówienia rozmów", "recordings_are_part_of_the_teams_plan": "Nagrania są częścią planu dla zespołów", "team_feature_teams": "To jest funkcja wersji Team. Aby sprawdzać dostępność Twojego zespołu, przejdź na wersję Team.", "team_feature_workflows": "To jest funkcja wersji Team. Aby za pomocą funkcji Przepływy pracy zautomatyzować powiadomienia o wydarzeniach i przypomnienia, przejdź na wersję Team.", @@ -1251,6 +1356,7 @@ "default_calendar_selected": "Domyślny kalendarz", "hide_from_profile": "Ukryj w profilu", "event_setup_tab_title": "Konfiguracja wydarzenia", + "availability_not_found_in_schedule_error": "Brak dostępności w harmonogramie", "event_limit_tab_title": "Limity", "event_limit_tab_description": "Jak często można rezerwować Twoje usługi", "event_advanced_tab_description": "Ustawienia kalendarza i więcej...", @@ -1265,12 +1371,16 @@ "2fa_required": "Wymagane uwierzytelnienie dwuskładnikowe", "incorrect_2fa": "Nieprawidłowy kod uwierzytelnienia dwuskładnikowego", "which_event_type_apply": "Do jakiego rodzaju wydarzenia będzie się to odnosić?", + "apply_to_all_event_types": "Zastosuj do wszystkich, w tym przyszłych typów wydarzeń", + "apply_to_all_teams": "Zastosuj do wszystkich typów wydarzeń zespołu i użytkownika", + "which_team_apply": "Do którego zespołu to zastosować?", "no_workflows_description": "Przepływy pracy umożliwiają prostą automatyzację wysyłania powiadomień i przypomnień, dzięki czemu możesz tworzyć procesy dotyczące Twoich wydarzeń.", "timeformat_profile_hint": "To jest ustawienie wewnętrzne, które nie będzie miało wpływu na to, jak godziny będą wyświetlane Tobie lub komuś, kto dokonuje u Ciebie rezerwacji na publicznych stronach rezerwacji.", "create_workflow": "Utwórz przepływ pracy", "do_this": "Zrób to", "turn_off": "Wyłącz", "turn_on": "Włącz", + "cancelled_bookings_cannot_be_rescheduled": "Anulowane rezerwacje nie mogą być ponownie zaplanowane", "settings_updated_successfully": "Ustawienia zaktualizowane pomyślnie", "error_updating_settings": "Błąd podczas aktualizacji ustawień", "personal_cal_url": "Mój osobisty adres URL aplikacji {{appName}}", @@ -1294,6 +1404,7 @@ "customize_your_brand_colors": "Dostosuj kolor marki na stronie rezerwacji.", "pro": "Pro", "removes_cal_branding": "Usuwa wszelkie znaki towarowe związane z {{appName}}, np. „Powered by {{appName}}”.", + "instant_meeting_with_title": "Natychmiastowe spotkanie z {{name}}", "profile_picture": "Zdjęcie profilowe", "upload": "Prześlij", "add_profile_photo": "Dodaj zdjęcie profilowe", @@ -1348,7 +1459,9 @@ "add_dynamic_variables": "Dodaj dynamiczne zmienne tekstowe", "event_name_info": "Nazwa typu wydarzenia", "event_date_info": "Data wydarzenia", + "event_duration_info": "Czas trwania wydarzenia", "event_time_info": "Godzina rozpoczęcia wydarzenia", + "event_type_not_found": "Typ wydarzenia nie znaleziony", "location_variable": "Lokalizacja", "location_info": "Lokalizacja wydarzenia", "additional_notes_variable": "Dodatkowe uwagi", @@ -1361,7 +1474,12 @@ "download_responses_description": "Pobierz wszystkie odpowiedzi do formularza w formacie CSV.", "download": "Pobierz", "download_recording": "Pobierz nagranie", + "transcription_enabled": "Transkrypcje są teraz włączone", + "transcription_stopped": "Transkrypcje zostały zatrzymane", + "download_transcript": "Pobierz transkrypcję", "recording_from_your_recent_call": "Nagranie z ostatniego połączenia w aplikacji {{appName}} jest gotowe do pobrania.", + "transcript_from_previous_call": "Transkrypcja z Twojej ostatniej rozmowy na {{appName}} jest gotowa do pobrania. Linki są ważne tylko przez 1 godzinę", + "link_valid_for_12_hrs": "Uwaga: Link do pobrania jest ważny tylko przez 12 godzin. Możesz wygenerować nowy link do pobrania, postępując zgodnie z instrukcjami <1>tutaj.", "create_your_first_form": "Utwórz pierwszy formularz", "create_your_first_form_description": "Za pomocą formularzy przekierowujących możesz zadawać pytania profilujące i przekierowywać użytkowników do odpowiednich osób lub typów wydarzeń.", "create_your_first_webhook": "Utwórz pierwszy Webhook", @@ -1391,10 +1509,12 @@ "slot_length": "Długość przedziału czasowego", "booking_appearance": "Wygląd rezerwacji", "appearance_team_description": "Zarządzaj ustawieniami wyglądu rezerwacji zespołu", + "appearance_org_description": "Zarządzaj ustawieniami wyglądu rezerwacji swojej organizacji", "only_owner_change": "Tylko właściciel tego zespołu może dokonywać zmian w rezerwacji zespołu ", "team_disable_cal_branding_description": "Usuwa wszelkie znaki marki związane z {{appName}}, np. „Powered by {{appName}}”", "invited_by_team": "{{teamName}} zaprasza Cię do dołączenia do zespołu jako {{role}}.", "token_invalid_expired": "Token jest nieprawidłowy lub wygasł.", + "view_booking": "Zobacz rezerwację", "exchange_add": "Połącz z Microsoft Exchange", "exchange_authentication": "Metoda uwierzytelniania", "exchange_authentication_standard": "Uwierzytelnianie podstawowe", @@ -1412,6 +1532,7 @@ "routing_forms_description": "Utwórz formularze kierujące uczestników do właściwych miejsc docelowych", "routing_forms_send_email_owner": "Wyślij wiadomość e-mail do właściciela", "routing_forms_send_email_owner_description": "Wysyła wiadomość e-mail do właściciela, gdy formularz zostanie przesłany.", + "routing_forms_send_email_to": "Wyślij e-mail do", "add_new_form": "Dodaj nowy formularz", "add_new_team_form": "Dodaj nowy formularz do zespołu", "create_your_first_route": "Utwórz pierwsze przekierowanie", @@ -1446,6 +1567,7 @@ "password_updated": "Hasło zostało zaktualizowane!", "pending_payment": "Płatność w toku", "pending_invites": "Oczekujące zaproszenia", + "pending_organization_invites": "Oczekujące zaproszenia do organizacji", "not_on_cal": "Niedostępne na {{appName}}", "no_calendar_installed": "Brak zainstalowanego kalendarza", "no_calendar_installed_description": "Nie połączono jeszcze żadnego kalendarza.", @@ -1457,6 +1579,8 @@ "report_app": "Zgłoś aplikację", "limit_booking_frequency": "Ogranicz częstotliwość rezerwacji", "limit_booking_frequency_description": "Ogranicz liczbę rezerwacji tego wydarzenia", + "only_show_first_available_slot": "Pokaż tylko pierwszy dostępny termin każdego dnia", + "only_show_first_available_slot_description": "To ograniczy Twoją dostępność dla tego typu wydarzenia do jednego terminu dziennie, zaplanowanego na najwcześniejszy dostępny czas.", "limit_total_booking_duration": "Ogranicz całkowity czas trwania rezerwacji", "limit_total_booking_duration_description": "Ogranicz całkowity czas, przez jaki można rezerwować to wydarzenie", "add_limit": "Dodaj limit", @@ -1496,6 +1620,7 @@ "how_long_after": "Jak długo po zakończeniu wydarzenia?", "no_available_slots": "Brak dostępnych przedziałów", "time_available": "Dostępny czas", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Nie możesz znaleźć odpowiedniej aplikacji do wideokonferencji? Odwiedź nasz <1>Sklep z Aplikacjami.", "install_new_calendar_app": "Zainstaluj nową aplikację kalendarza", "make_phone_number_required": "Ustaw wymóg podania numeru telefonu w celu rezerwacji wydarzenia", "new_event_type_availability": "{{eventTypeTitle}} – dostępność", @@ -1523,10 +1648,14 @@ "your_org_disbanded_successfully": "Twoja organizacja została rozwiązana.", "error_creating_team": "Podczas tworzenia zespołu wystąpił błąd", "you": "Ty", + "or_continue_with": "Lub kontynuuj z", "resend_email": "Wyślij ponownie wiadomość e-mail", "member_already_invited": "Członek został już zaproszony", "already_in_use_error": "Ta nazwa użytkownika jest już używana.", "enter_email_or_username": "Wprowadź adres e-mail lub nazwę użytkownika", + "enter_email": "Wprowadź email", + "enter_emails": "Wprowadź emaile", + "too_many_invites": "Możesz zaprosić maksymalnie {{nbUsers}} użytkowników jednocześnie.", "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", @@ -1539,6 +1668,7 @@ "attendee_email_info": "Adres e-mail osoby rezerwującej", "kbar_search_placeholder": "Wpisz polecenie lub wyszukaj...", "invalid_credential": "O nie! Wygląda na to, że uprawnienia wygasły lub zostały cofnięte. Zainstaluj aplikację ponownie.", + "invalid_credential_action": "Zainstaluj ponownie aplikację", "reschedule_reason": "Powód zmiany terminu", "choose_common_schedule_team_event": "Wybierz wspólny harmonogram", "choose_common_schedule_team_event_description": "Włącz tę opcję, jeśli chcesz używać wspólnego harmonogramu gospodarzy. Jeśli ją wyłączysz, rezerwacje u każdego gospodarza będą dokonywane na podstawie jego domyślnego harmonogramu.", @@ -1552,6 +1682,8 @@ "test_routing": "Przetestuj przekierowanie", "payment_app_disabled": "Administrator wyłączył aplikację płatniczą", "edit_event_type": "Edytuj typ wydarzenia", + "only_admin_can_see_members_of_org": "Ta organizacja jest prywatna i tylko administrator lub właściciel organizacji może zobaczyć jej członków.", + "only_admin_can_manage_sso_org": "Tylko administrator lub właściciel organizacji może zarządzać ustawieniami SSO", "collective_scheduling": "Zbiorowe ustalanie harmonogramu", "make_it_easy_to_book": "Uprość rezerwację zespołu, gdy wszyscy są dostępni.", "find_the_best_person": "Znajdź najlepszą dostępną osobę i przejrzyj listę członków swojego zespołu.", @@ -1606,10 +1738,12 @@ "individual": "Pojedyncza osoba", "all_bookings_filter_label": "Wszystkie rezerwacje", "all_users_filter_label": "Wszyscy użytkownicy", + "all_event_types_filter_label": "Wszystkie typy wydarzeń", "your_bookings_filter_label": "Twoje rezerwacje", "meeting_url_variable": "Adres URL spotkania", "meeting_url_info": "Adres URL konferencji na spotkaniu w ramach wydarzenia", "date_overrides": "Zastąpione daty", + "date_overrides_delete_on_date": "Usuń nadpisania daty w dniu {{date}}", "date_overrides_subtitle": "Dodaj daty, gdy Twoja dostępność zmieni się w stosunku do Twoich codziennych godzin.", "date_overrides_info": "Zastąpione daty są archiwizowane automatycznie po upływie danej daty", "date_overrides_dialog_which_hours": "W jakich godzinach jesteś dostępny(-a)?", @@ -1651,6 +1785,7 @@ "new_attendee": "Nowy uczestnik", "awaiting_approval": "Oczekiwanie na zatwierdzenie", "requires_google_calendar": "Ta aplikacja wymaga połączenia z Kalendarzem Google", + "event_type_requires_google_calendar": "„Dodaj do kalendarza” dla tego typu wydarzenia wymaga Kalendarza Google, aby Meet działał. Połącz go <1>tutaj.", "connected_google_calendar": "Połączono konto Kalendarza Google.", "using_meet_requires_calendar": "Aby korzystać z usługi Google Meet, należy podłączyć Kalendarz Google", "continue_to_install_google_calendar": "Kontynuuj instalację Kalendarza Google", @@ -1683,6 +1818,7 @@ "configure": "Konfiguruj", "sso_configuration": "Pojedyncze logowanie", "sso_configuration_description": "Skonfiguruj logowanie jednokrotne SAML/OIDC i zezwól członkom zespołu na logowanie się przy użyciu dostawcy tożsamości", + "sso_configuration_description_orgs": "Skonfiguruj SAML/OIDC SSO i pozwól członkom organizacji logować się za pomocą dostawcy tożsamości", "sso_oidc_heading": "Logowanie jednokrotne za pomocą OIDC", "sso_oidc_description": "Skonfiguruj logowanie jednokrotne OIDC przy użyciu wybranego dostawcy tożsamości.", "sso_oidc_configuration_title": "Konfiguracja OIDC", @@ -1702,9 +1838,11 @@ "organizer_timezone": "Strefa czasowa organizatora", "email_user_cta": "Wyświetl zaproszenie", "email_no_user_invite_heading_team": "Zaproszono Cię do dołączenia do zespołu {{appName}}", + "email_no_user_invite_heading_subteam": "Zostałeś zaproszony do dołączenia do zespołu organizacji {{parentTeamName}}", "email_no_user_invite_heading_org": "Zaproszono Cię do dołączenia do organizacji {{appName}}", "email_no_user_invite_subheading": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojemu zespołowi planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.", "email_user_invite_subheading_team": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojemu zespołowi planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.", + "email_user_invite_subheading_subteam": "{{invitedBy}} zaprosił Cię do dołączenia do zespołu {{teamName}} w ich organizacji {{parentTeamName}} na {{appName}}. {{appName}} to harmonogram zarządzający wydarzeniami, który umożliwia Tobie i Twojemu zespołowi planowanie spotkań bez wymiany wielu emaili.", "email_user_invite_subheading_org": "{{invitedBy}} zaprasza Cię do dołączenia do organizacji „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojej organizacji planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.", "email_no_user_invite_steps_intro": "Przeprowadzimy Cię przez kilka krótkich kroków i wkrótce w ramach {{entity}} zaczniesz z przyjemnością korzystać z bezstresowego planowania.", "email_no_user_step_one": "Wybierz nazwę użytkownika", @@ -1821,7 +1959,15 @@ "requires_at_least_one_schedule": "Musisz mieć co najmniej jeden harmonogram", "default_conferencing_bulk_description": "Aktualizuj lokalizacje wybranych typów wydarzeń", "locked_for_members": "Zablokowany dla członków", + "unlocked_for_members": "Odblokowane dla członków", "apps_locked_for_members_description": "Członkowie będą mogli sprawdzić aktywne aplikacje, ale nie będą mogli edytować ich ustawień", + "apps_unlocked_for_members_description": "Członkowie będą mogli zobaczyć aktywne aplikacje i edytować dowolne ustawienia aplikacji", + "apps_locked_by_team_admins_description": "Będziesz mógł zobaczyć aktywne aplikacje, ale nie będziesz mógł edytować żadnych ustawień aplikacji", + "apps_unlocked_by_team_admins_description": "Będziesz mógł zobaczyć aktywne aplikacje i edytować ustawienia dowolnej aplikacji.", + "workflows_locked_for_members_description": "Członkowie nie mogą dodawać swoich osobistych przepływów pracy do tego typu wydarzenia. Członkowie będą mogli zobaczyć aktywne przepływy pracy zespołu, ale nie będą mogli edytować żadnych ustawień przepływu pracy.", + "workflows_unlocked_for_members_description": "Członkowie będą mogli dodawać swoje osobiste przepływy pracy do tego typu wydarzenia. Członkowie będą mogli zobaczyć aktywne przepływy pracy zespołu, ale nie będą mogli edytować żadnych ustawień przepływu pracy.", + "workflows_locked_by_team_admins_description": "Będziesz mógł zobaczyć aktywne przepływy pracy zespołu, ale nie będziesz mógł edytować żadnych ustawień przepływu pracy ani dodawać swoich osobistych przepływów pracy do tego typu wydarzenia.", + "workflows_unlocked_by_team_admins_description": "Będziesz mógł włączać/wyłączać osobiste przepływy pracy dla tego typu wydarzenia. Będziesz mógł zobaczyć aktywne przepływy pracy zespołu, ale nie będziesz mógł edytować żadnych ustawień przepływu pracy zespołu.", "locked_by_team_admin": "Zablokowane przez administratora zespołu", "app_not_connected": "Nie podłączono konta {{appName}}.", "connect_now": "Podłącz teraz", @@ -1835,7 +1981,10 @@ "review_event_type": "Sprawdź typ wydarzenia", "looking_for_more_analytics": "Szukasz dokładniejszych danych analitycznych?", "looking_for_more_insights": "Szukasz dokładniejszych danych Insights?", + "filters": "Filtry", "add_filter": "Dodaj filtr", + "remove_filters": "Wyczyść wszystkie filtry", + "email_verified": "Email zweryfikowany", "select_user": "Wybierz użytkownika", "select_event_type": "Wybierz typ wydarzenia", "select_date_range": "Wybierz zakres dat", @@ -1926,18 +2075,23 @@ "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", + "create_instant_meeting_webhook_description": "Utwórz swój pierwszy webhook z 'Instant Meeting Created' jako wyzwalaczem dla tego typu wydarzenia", "install_app_on": "Zainstaluj aplikację na koncie", "create_for": "Utwórz dla", "currency": "Waluta", "organization_banner_description": "Utwórz środowisko, w którym zespoły będą mogły tworzyć wspólne aplikacje, przepływy pracy i typy wydarzeń przy użyciu algorytmu karuzelowego lub zbiorowego ustalania harmonogramu.", "organization_banner_title": "Zarządzaj organizacjami z wieloma zespołami", "set_up_your_organization": "Skonfiguruj swoją organizację", + "set_up_your_platform_organization": "Skonfiguruj swoją platformę", "organizations_description": "Organizacje to współdzielone środowiska, w których zespoły mogą tworzyć wspólne typy wydarzeń, aplikacje, przepływy pracy itd.", + "platform_organization_description": "Platforma Cal.com pozwala na bezproblemową integrację harmonogramowania z Twoją aplikacją za pomocą API i atomów platformy.", "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", + "platform_admin_email": "Twój adres email administratora", "admin_username": "Nazwa użytkownika administratora", "organization_name": "Nazwa organizacji", + "platform_name": "Nazwa platformy", "organization_url": "Adres URL organizacji", "organization_verify_header": "Zweryfikuj swój adres e-mail w organizacji", "organization_verify_email_body": "Użyj poniższego kodu, aby zweryfikować adres e-mail i kontynuować konfigurację swojej organizacji.", @@ -1990,6 +2144,8 @@ "add_times_to_your_email": "Wybierz kilka dostępnych terminów i osadź je w wiadomości e-mail", "select_time": "Wybierz godzinę", "select_date": "Wybierz datę", + "connecting_you_to_someone": "Łączymy Cię z kimś.", + "please_do_not_close_this_tab": "Proszę nie zamykać tej karty", "see_all_available_times": "Zobacz wszystkie dostępne godziny", "org_team_names_example_1": "np. zespół marketingowy", "org_team_names_example_2": "np. zespół ds. sprzedaży", @@ -2007,8 +2163,13 @@ "description_requires_booker_email_verification": "W celu weryfikacji adresu e-mail rezerwującego przed wydarzeniami z harmonogramu.", "requires_confirmation_mandatory": "Wiadomości tekstowe można wysyłać do uczestników tylko wtedy, gdy typ zdarzenia wymaga potwierdzenia.", "organizations": "Organizacje", + "upload_cal_video_logo": "Prześlij logo Cal Video", + "update_cal_video_logo": "Zaktualizuj logo Cal Video", + "upload_banner": "Prześlij baner", + "cal_video_logo_upload_instruction": "Aby upewnić się, że Twoje logo jest widoczne na ciemnym tle Cal Video, prześlij jasny obraz w formacie PNG lub SVG, aby zachować przezroczystość.", "org_admin_other_teams": "Inne zespoły", "org_admin_other_teams_description": "Tutaj możesz zobaczyć zespoły wewnątrz organizacji, do których nie należy. W razie potrzeby możesz do nich dołączyć.", + "not_part_of_org": "Nie jesteś częścią żadnej organizacji", "no_other_teams_found": "Nie znaleziono innych zespołów", "no_other_teams_found_description": "W tej organizacji nie ma żadnych innych zespołów.", "attendee_first_name_variable": "Imię uczestnika", @@ -2044,7 +2205,9 @@ "org_error_processing": "Podczas przetwarzania tej organizacji wystąpił błąd.", "orgs_page_description": "Lista wszystkich organizacji. Akceptacja organizacji pozwoli wszystkim użytkownikom z adresami e-mail z tej domeny rejestrację BEZ weryfikacji adresu e-mail.", "unverified": "Niezweryfikowane", + "verified": "Zweryfikowany", "dns_missing": "Brak DNS", + "dns_configured": "DNS skonfigurowany", "mark_dns_configured": "Oznacz jako DNS skonfigurowany", "value": "Wartość", "your_organization_updated_sucessfully": "Twoja organizacja została pomyślnie zaktualizowana.", @@ -2054,10 +2217,30 @@ "oAuth": "OAuth", "recently_added": "Niedawno dodane", "connect_all_calendars": "Podłącz wszystkie swoje kalendarze", + "connect_all_calendars_description": "{{appName}} odczytuje dostępność ze wszystkich Twoich istniejących kalendarzy.", "workflow_automation": "Automatyzacja przepływu pracy", + "workflow_automation_description": "Spersonalizuj swoje doświadczenie z harmonogramem za pomocą workflow", "scheduling_for_your_team": "Automatyzacja przepływu pracy", + "scheduling_for_your_team_description": "Zaplanuj dla swojego zespołu za pomocą zbiorowego i round-robin harmonogramu", "no_members_found": "Nie znaleziono członków", "directory_sync": "Synchronizacja katalogu", + "directory_name": "Nazwa katalogu", + "directory_provider": "Dostawca katalogu", + "directory_scim_url": "Podstawowy URL SCIM", + "directory_scim_token": "Token SCIM Bearer", + "directory_scim_url_copied": "Podstawowy URL SCIM skopiowany", + "directory_scim_token_copied": "Token SCIM Bearer skopiowany", + "directory_sync_info_description": "Twój dostawca tożsamości poprosi o następujące informacje, aby skonfigurować SCIM. Postępuj zgodnie z instrukcjami, aby zakończyć konfigurację.", + "directory_sync_configure": "Skonfiguruj synchronizację katalogu", + "directory_sync_configure_description": "Wybierz dostawcę tożsamości, aby skonfigurować katalog dla swojego zespołu.", + "directory_sync_title": "Skonfiguruj dostawcę tożsamości, aby rozpocząć korzystanie z SCIM.", + "directory_sync_created": "Połączenie synchronizacji katalogu utworzone.", + "directory_sync_description": "Twórz i usuwaj użytkowników za pomocą swojego dostawcy katalogu.", + "directory_sync_deleted": "Połączenie synchronizacji katalogu usunięte.", + "directory_sync_delete_connection": "Usuń połączenie", + "directory_sync_delete_title": "Usuń połączenie synchronizacji katalogu", + "directory_sync_delete_description": "Czy na pewno chcesz usunąć to połączenie synchronizacji katalogów?", + "directory_sync_delete_confirmation": "Tej akcji nie można cofnąć. To trwale usunie połączenie synchronizacji katalogów.", "event_setup_length_error": "Konfiguracja wydarzenia: czas trwania musi wynosić co najmniej minutę.", "availability_schedules": "Harmonogramy dostępności", "unauthorized": "Brak autoryzacji", @@ -2073,6 +2256,8 @@ "access_bookings": "Przeglądać, edytować i usuwać Twoje rezerwacje", "allow_client_to_do": "Czy chcesz umożliwić to klientowi ({{clientName}})?", "oauth_access_information": "Klikając „Zezwól”, pozwolisz tej aplikacji na korzystanie z Twoich danych zgodnie z jej regulaminem i polityką prywatności. Możesz odwołać pozwolenie na dostęp w ustawieniach sklepu aplikacji {{appName}}.", + "oauth_form_title": "Formularz tworzenia klienta OAuth", + "oauth_form_description": "To jest formularz do tworzenia nowego klienta OAuth", "allow": "Zezwól", "view_only_edit_availability_not_onboarded": "Ten użytkownik nie zakończył procesu wdrażania. Ustawienie jego dostępności będzie niedostępne, póki nie zakończy wdrażania.", "view_only_edit_availability": "Wyświetlasz dostępność tego użytkownika. Możesz edytować tylko własną dostępność.", @@ -2089,42 +2274,300 @@ "overlay_my_calendar": "Nakładka kalendarza", "overlay_my_calendar_toc": "Łącząc się z kalendarzem, akceptujesz naszą politykę prywatności i warunki użytkowania. Możesz odwołać pozwolenie na dostęp w dowolnym momencie.", "view_overlay_calendar_events": "Zobacz wydarzenia kalendarza, aby zapobiec kolidującym rezerwacjom.", + "join_event_location": "Dołącz do {{eventLocationType}}", + "troubleshooting": "Rozwiązywanie problemów", + "calendars_were_checking_for_conflicts": "Kalendarze, które sprawdzamy pod kątem konfliktów", + "availabilty_schedules": "Harmonogramy dostępności", + "manage_calendars": "Zarządzaj kalendarzami", + "manage_availability_schedules": "Zarządzaj harmonogramami dostępności", + "locked": "Zablokowane", + "unlocked": "Odblokowane", "lock_timezone_toggle_on_booking_page": "Zablokuj strefę czasową na stronie rezerwacji", "description_lock_timezone_toggle_on_booking_page": "Aby zablokować strefę czasową na stronie rezerwacji (przydatne dla wydarzeń stacjonarnych).", + "event_setup_multiple_payment_apps_error": "Możesz mieć tylko jedną aplikację płatniczą włączoną na typ wydarzenia.", + "number_in_international_format": "Proszę wprowadzić numer w formacie międzynarodowym.", + "install_calendar": "Zainstaluj kalendarz", + "branded_subdomain": "Markowa subdomena", + "branded_subdomain_description": "Uzyskaj własną markową subdomenę, taką jak acme.cal.com", + "org_insights": "Wgląd w całą organizację", + "org_insights_description": "Zrozum, jak cała twoja organizacja spędza czas", "extensive_whitelabeling": "Dedykowane wsparcie w zakresie wdrożenia i obsługi technicznej", + "extensive_whitelabeling_description": "Dostosuj swoje doświadczenie z harmonogramem za pomocą własnego logo, kolorów i innych elementów", + "unlimited_teams": "Nieograniczone zespoły", + "unlimited_teams_description": "Dodaj tyle podzespołów, ile potrzebujesz do swojej organizacji", + "unified_billing": "Zunifikowane rozliczenia", + "unified_billing_description": "Dodaj jedną kartę kredytową, aby opłacać wszystkie subskrypcje swojego zespołu", + "advanced_managed_events": "Zaawansowane zarządzane typy wydarzeń", + "advanced_managed_events_description": "Dodaj jedną kartę kredytową, aby opłacić wszystkie subskrypcje swojego zespołu", + "enterprise_description": "Ulepsz do wersji Enterprise, aby utworzyć swoją Organizację", + "create_your_org": "Utwórz swoją Organizację", + "create_your_org_description": "Ulepsz do wersji Organizations i otrzymaj subdomenę, zintegrowane rozliczenia, Insights, rozbudowane możliwości whitelabelingu i więcej", + "create_your_enterprise_description": "Ulepsz do wersji Enterprise i uzyskaj dostęp do synchronizacji Active Directory, automatycznego provisioningu użytkowników SCIM, agentów głosowych Cal.ai, API administracyjnych i więcej!", + "other_payment_app_enabled": "Możesz włączyć tylko jedną aplikację płatniczą na typ wydarzenia", + "admin_delete_organization_description": "
  • Zespoły będące członkami tej organizacji również zostaną usunięte wraz z ich typami wydarzeń
  • Użytkownicy będący częścią organizacji nie zostaną usunięci, ale ich nazwy użytkowników zostaną zmienione, aby mogli istnieć poza organizacją
  • Typy wydarzeń utworzone przez użytkowników po dołączeniu do organizacji zostaną usunięte
  • Zmigrowane typy wydarzeń użytkowników nie zostaną usunięte
", + "admin_delete_organization_title": "Usunąć {{organizationName}}?", + "published": "Opublikowane", + "unpublished": "Nieopublikowane", + "publish": "Opublikuj", + "org_publish_error": "Nie udało się opublikować organizacji", + "troubleshooter_tooltip": "Otwórz narzędzie do rozwiązywania problemów i sprawdź, co jest nie tak z Twoim harmonogramem", "need_help": "Potrzebujesz pomocy?", + "troubleshooter": "Narzędzie do rozwiązywania problemów", + "number_to_call": "Numer do zadzwonienia", + "guest_name": "Imię gościa", + "guest_email": "Email gościa", + "guest_company": "Firma gościa", + "please_install_a_calendar": "Zainstaluj kalendarz", + "instant_tab_title": "Natychmiastowa rezerwacja", + "instant_event_tab_description": "Pozwól ludziom rezerwować natychmiast", + "uprade_to_create_instant_bookings": "Ulepsz do wersji Enterprise i pozwól gościom dołączyć do natychmiastowego połączenia, do którego uczestnicy mogą od razu dołączyć. To jest tylko dla typów wydarzeń zespołowych", + "dont_want_to_wait": "Nie chcesz czekać?", + "meeting_started": "Spotkanie rozpoczęte", + "pay_and_book": "Zapłać, aby zarezerwować", + "cal_ai_event_tab_description": "Pozwól agentom AI rezerwować za Ciebie", + "booking_not_found_error": "Nie znaleziono rezerwacji", + "booking_seats_full_error": "Brak wolnych miejsc na rezerwację", + "missing_payment_credential_error": "Brak danych do płatności", + "missing_payment_app_id_error": "Brak identyfikatora aplikacji płatniczej", + "not_enough_available_seats_error": "Rezerwacja nie ma wystarczającej liczby dostępnych miejsc", + "user_redirect_title": "{{username}} jest obecnie niedostępny przez krótki czas.", + "user_redirect_description": "W międzyczasie, {{profile.username}} będzie odpowiedzialny za wszystkie nowe zaplanowane spotkania w imieniu {{username}}.", + "out_of_office": "Poza biurem", + "out_of_office_description": "Poinformuj swoich rezerwujących, kiedy jesteś poza biurem.", + "send_request": "Wyślij prośbę", + "start_date_and_end_date_required": "Wymagana jest data rozpoczęcia i zakończenia", + "start_date_must_be_before_end_date": "Data rozpoczęcia musi być przed datą zakończenia", + "start_date_must_be_in_the_future": "Data rozpoczęcia musi być w przyszłości", + "user_not_found": "Nie znaleziono użytkownika", + "out_of_office_entry_already_exists": "Wpis o nieobecności już istnieje", + "out_of_office_id_required": "Wymagany jest identyfikator wpisu o nieobecności", + "booking_redirect_infinite_not_allowed": "Istnieje już przekierowanie rezerwacji od tego użytkownika do Ciebie.", + "success_entry_created": "Pomyślnie utworzono nowy wpis", + "booking_redirect_email_subject": "Powiadomienie o przekierowaniu rezerwacji", + "booking_redirect_email_title": "Powiadomienie o przekierowaniu rezerwacji", + "booking_redirect_email_description": "Otrzymałeś przekierowanie rezerwacji od {{toName}}, więc ich linki profilowe będą przekierowywane do Twoich w przedziale czasowym: ", + "success_accept_booking_redirect": "Zaakceptowałeś tę prośbę o przekierowanie rezerwacji.", + "success_reject_booking_redirect": "Odrzuciłeś tę prośbę o przekierowanie rezerwacji.", + "copy_link_booking_redirect_request": "Skopiuj link, aby udostępnić prośbę", + "booking_redirect_request_title": "Prośba o przekierowanie rezerwacji", + "select_team_member": "Wybierz członka zespołu", + "going_away_title": "Wyjeżdżasz? Po prostu oznacz swój profil jako niedostępny na pewien czas.", + "redirect_team_enabled": "Podaj link do członka zespołu, gdy jesteś poza biurem", + "redirect_team_disabled": "Podaj link do członka zespołu, gdy jesteś poza biurem (wymagany plan zespołowy)", + "out_of_office_unavailable_list": "Lista niedostępności poza biurem", + "success_deleted_entry_out_of_office": "Pomyślnie usunięto wpis", + "temporarily_out_of_office": "Tymczasowo poza biurem?", + "add_a_redirect": "Dodaj przekierowanie", + "create_entry": "Utwórz wpis", + "time_range": "Zakres czasu", + "automatically_add_all_team_members": "Dodaj wszystkich członków zespołu, w tym przyszłych", + "redirect_to": "Przekieruj do", + "having_trouble_finding_time": "Masz problem ze znalezieniem czasu?", "show_more": "Wyświetl więcej", + "forward_params_redirect": "Przekaż parametry takie jak ?email=...&name=... i inne", + "assignment_description": "Zaplanuj spotkania, gdy wszyscy są dostępni lub rotacyjnie przez członków zespołu", + "lowest": "najniższy", + "low": "niski", + "medium": "średni", + "high": "wysoki", + "Highest": "najwyższy", + "send_booker_to": "Wyślij rezerwującego do", + "set_priority": "Ustaw priorytet", + "set_weight": "Ustaw wagę", + "enable_weights": "Włącz wagi", + "priority_for_user": "Priorytet dla {{userName}}", + "weights_description": "Wagi określają, jak spotkania są rozdzielane między gospodarzy. <1>Dowiedz się więcej", + "weight_for_user": "Waga dla {{userName}}", + "change_priority": "zmień priorytet", + "field_identifiers_as_variables": "Użyj identyfikatorów pól jako zmiennych do przekierowania niestandardowego wydarzenia", + "field_identifiers_as_variables_with_example": "Użyj identyfikatorów pól jako zmiennych do przekierowania niestandardowego wydarzenia (np. {{variable}})", + "account_already_linked": "Konto jest już połączone", "send_email": "Wyślij wiadomość e-mail", + "mark_as_no_show": "Oznacz jako nieobecny", + "unmark_as_no_show": "Usuń oznaczenie nieobecności", + "account_unlinked_success": "Konto zostało pomyślnie odłączone", + "account_unlinked_error": "Wystąpił błąd podczas odłączania konta", + "travel_schedule": "Harmonogram podróży", + "travel_schedule_description": "Zaplanuj podróż z wyprzedzeniem, aby zachować istniejący harmonogram w innej strefie czasowej i uniknąć rezerwacji o północy.", + "schedule_timezone_change": "Zaplanuj zmianę strefy czasowej", + "date": "Data", + "overlaps_with_existing_schedule": "To nakłada się na istniejący harmonogram. Proszę wybrać inną datę.", + "org_admin_no_slots|subject": "Brak dostępności dla {{name}}", + "org_admin_no_slots|heading": "Brak dostępności dla {{name}}", + "org_admin_no_slots|content": "Witaj Administratorze Organizacji,

Zwracamy uwagę, że {{username}} nie miał dostępności, gdy użytkownik odwiedził {{username}}/{{slug}}

Może być kilka powodów, dlaczego tak się dzieje:
Użytkownik nie ma połączonych żadnych kalendarzy
Ich harmonogramy przypisane do tego wydarzenia nie są włączone

Zalecamy sprawdzenie ich dostępności, aby rozwiązać ten problem.", + "org_admin_no_slots|cta": "Otwórz dostępność użytkowników", + "organization_no_slots_notification_switch_title": "Otrzymuj powiadomienia, gdy Twój zespół nie ma dostępności", + "organization_no_slots_notification_switch_description": "Administratorzy będą otrzymywać powiadomienia e-mail, gdy użytkownik spróbuje zarezerwować członka zespołu i napotka 'Brak dostępności'. Wysyłamy to powiadomienie po dwóch przypadkach i przypominamy co 7 dni na użytkownika.", + "email_team_invite|subject|added_to_org": "{{user}} dodał(a) Cię do organizacji {{team}} na {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} zaprosił(a) Cię do organizacji {{team}} na {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} dodał(a) Cię do zespołu {{team}} w organizacji {{parentTeamName}} na {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} zaprosił(a) Cię do zespołu {{team}} w organizacji {{parentTeamName}} na {{appName}}", "email_team_invite|subject|invited_to_regular_team": "{{user}} zaprosił Cię do dołączenia do zespołu {{team}} na {{appName}}", + "email_team_invite|heading|added_to_org": "Zostałeś(aś) dodany(a) do organizacji {{appName}}", + "email_team_invite|heading|invited_to_org": "Zostałeś(aś) zaproszony(a) do organizacji {{appName}}", + "email_team_invite|heading|added_to_subteam": "Zostałeś(aś) dodany(a) do zespołu w organizacji {{parentTeamName}}", + "email_team_invite|heading|invited_to_subteam": "Zostałeś(aś) zaproszony(a) do zespołu w organizacji {{parentTeamName}}", "email_team_invite|heading|invited_to_regular_team": "Zaproszono Cię do dołączenia do zespołu {{appName}}", + "email_team_invite|content|added_to_org": "{{invitedBy}} dodał(a) Cię do organizacji {{teamName}}.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} zaprosił(a) Cię do organizacji {{teamName}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} dodał(a) Cię do zespołu {{teamName}} w organizacji {{parentTeamName}}. {{appName}} to narzędzie do zarządzania spotkaniami, które umożliwia Tobie i Twojemu zespołowi planowanie spotkań bez konieczności wymiany wielu e-maili.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} zaprosił(a) Cię do zespołu {{teamName}} w organizacji {{parentTeamName}}. {{appName}} to narzędzie do zarządzania spotkaniami, które umożliwia Tobie i Twojemu zespołowi planowanie spotkań bez konieczności wymiany wielu e-maili.", "email_team_invite|content|invited_to_regular_team": "Użytkownik {{invitedBy}} zaprasza Cię do dołączenia do jego zespołu „{{teamName}}” w aplikacji {{appName}}. Aplikacja {{appName}} to terminarz do planowania wydarzeń, który umożliwi Tobie i Twojemu zespołowi planowanie spotkań bez czasochłonnej wymiany wiadomości e-mail.", + "email|existing_user_added_link_will_change": "Po zaakceptowaniu zaproszenia, Twój link zmieni się na domenę organizacji, ale nie martw się, wszystkie poprzednie linki będą nadal działać i przekierowywać odpowiednio.

Proszę zauważyć: Wszystkie Twoje osobiste typy wydarzeń zostaną przeniesione do organizacji {{teamName}}, co może również obejmować potencjalne osobiste linki.

Dla osobistych wydarzeń zalecamy utworzenie nowego konta z osobistym adresem e-mail.", + "email|existing_user_added_link_changed": "Twój link został zmieniony z {prevLinkWithoutProtocol} na {newLinkWithoutProtocol}, ale nie martw się, wszystkie poprzednie linki nadal działają i przekierowują odpowiednio.

Proszę zauważyć: Wszystkie Twoje osobiste typy wydarzeń zostały przeniesione do organizacji {teamName}, co może również obejmować potencjalny osobisty link.

Zaloguj się i upewnij się, że nie masz prywatnych wydarzeń na swoim nowym koncie organizacyjnym.

Dla osobistych wydarzeń zalecamy utworzenie nowego konta z osobistym adresem e-mail.

Ciesz się nowym, czystym linkiem: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Twoja organizacja została utworzona", + "your_current_plan": "Twój obecny plan", + "organization_price_per_user_month": "$37 za użytkownika miesięcznie (minimum 30 miejsc)", + "privacy_organization_description": "Zarządzaj ustawieniami prywatności dla swojej organizacji", "privacy": "Prywatność", - "signing_up_terms": "Kontynuując, zgadzasz się na <0>Warunki i <1>Politykę prywatności<1>", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "h", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} h", - "travel_schedule": "Harmonogram podróży", - "travel_schedule_description": "Zaplanuj swoją podróż z wyprzedzeniem, aby zachować swój obecny harmonogram w innej strefie czasowej i uniknąć rezerwacji o północy.", - "schedule_timezone_change": "Zmiana strefy czasowej w harmonogramie", - "schedule_tz_without_end_date": "Harmonogram strefy czasowej bez daty zakończenia", + "team_will_be_under_org": "Nowe zespoły będą pod Twoją organizacją", + "add_group_name": "Dodaj nazwę grupy", + "group_name": "Nazwa grupy", + "routers": "Routery", + "primary": "Główny", + "make_primary": "Ustaw jako główny", + "add_email": "Dodaj e-mail", + "add_emails": "Dodaj e-maile", + "add_email_description": "Dodaj adres e-mail, aby zastąpić główny lub użyć jako alternatywnego e-maila w typach wydarzeń.", + "confirm_email": "Potwierdź swój e-mail", + "scheduler_first_name": "Imię osoby rezerwującej", + "scheduler_last_name": "Nazwisko osoby rezerwującej", + "scheduler_name": "Nazwa rezerwującego", + "organizer_first_name": "Twoje imię", + "confirm_email_description": "Wysłaliśmy e-mail na adres {{email}}. Kliknij link w e-mailu, aby zweryfikować ten adres.", + "send_event_details_to": "Wyślij szczegóły wydarzenia do", + "schedule_tz_without_end_date": "Harmonogram strefy czasowej bez daty końcowej", + "select_members": "Wybierz członków", + "lock_event_types_modal_header": "Co zrobić z istniejącymi typami wydarzeń członka?", + "org_delete_event_types_org_admin": "Wszystkie indywidualne typy wydarzeń członków (z wyjątkiem zarządzanych) zostaną trwale usunięte. Nie będą mogli tworzyć nowych.", + "org_hide_event_types_org_admin": "Indywidualne typy wydarzeń członków (z wyjątkiem zarządzanych) zostaną ukryte z profili, ale linki będą nadal aktywne. Nie będą mogli tworzyć nowych.", + "hide_org_eventtypes": "Ukryj indywidualne typy wydarzeń", + "delete_org_eventtypes": "Usuń indywidualne typy wydarzeń", + "lock_org_users_eventtypes": "Zablokuj tworzenie indywidualnych typów wydarzeń", + "lock_org_users_eventtypes_description": "Uniemożliw członkom tworzenie własnych typów wydarzeń.", + "add_to_event_type": "Dodaj do typu wydarzenia", + "create_account_password": "Utwórz hasło do konta", + "error_creating_account_password": "Nie udało się utworzyć hasła do konta", + "cannot_create_account_password_cal_provider": "Nie można utworzyć hasła do konta dla kont kalendarza", + "cannot_create_account_password_already_existing": "Nie można utworzyć hasła do konta dla już istniejących", + "create_account_password_hint": "Nie masz hasła do konta, utwórz je, przechodząc do Bezpieczeństwo -> Hasło. Nie można się rozłączyć, dopóki nie zostanie utworzone hasło do konta.", + "disconnect_account": "Odłącz połączone konto", + "disconnect_account_hint": "Odłączenie połączonego konta zmieni sposób logowania. Będziesz mógł zalogować się na swoje konto tylko za pomocą e-maila i hasła.", + "cookie_consent_checkbox": "Wyrażam zgodę na naszą politykę prywatności i używanie plików cookie", + "make_a_call": "Wykonaj połączenie", + "skip_rr_assignment_label": "Pomiń przydział round robin, jeśli kontakt istnieje w Salesforce", + "skip_rr_description": "URL musi zawierać e-mail kontaktu jako parametr, np. ?email=contactEmail", + "select_account_header": "Wybierz konto", + "select_account_description": "Zainstaluj {{appName}} na swoim koncie osobistym lub na koncie zespołu.", + "select_event_types_header": "Wybierz typy wydarzeń", + "select_event_types_description": "Na którym typie wydarzenia chcesz zainstalować {{appName}}?", + "configure_app_header": "Skonfiguruj {{appName}}", + "configure_app_description": "Dokończ konfigurację aplikacji. Możesz zmienić te ustawienia później.", + "already_installed": "już zainstalowane", "ooo_reasons_unspecified": "Nieokreślone", - "ooo_reasons_vacation": "Wakacje", + "ooo_reasons_vacation": "Urlop", "ooo_reasons_travel": "Podróż", "ooo_reasons_sick_leave": "Zwolnienie lekarskie", - "ooo_reasons_public_holiday": "Święto publiczne", - "ooo_forwarding_to": "Przekazywanie do {{username}}", - "ooo_not_forwarding": "Brak przekazywania", + "ooo_reasons_public_holiday": "Święto państwowe", + "ooo_forwarding_to": "Przekierowanie do {{username}}", + "ooo_not_forwarding": "Brak przekierowania", "ooo_empty_title": "Utwórz OOO", - "ooo_empty_description": "Komunikuj się ze swoimi rezerwującymi, gdy nie jesteś dostępny do przyjmowania rezerwacji. Mogą cię nadal zarezerwować po twoim powrocie lub możesz przekazać ich do członka zespołu.", + "ooo_empty_description": "Poinformuj swoich rezerwujących, kiedy nie jesteś dostępny do przyjmowania rezerwacji. Mogą nadal rezerwować spotkania po Twoim powrocie lub możesz przekierować ich do członka zespołu.", "ooo_user_is_ooo": "{{displayName}} jest OOO", - "ooo_slots_returning": "<0>{{displayName}} może uczestniczyć w swoich spotkaniach podczas nieobecności.", + "ooo_slots_returning": "<0>{{displayName}} może przyjmować spotkania, gdy jest nieobecny.", "ooo_slots_book_with": "Zarezerwuj {{displayName}}", "ooo_create_entry_modal": "Wyjdź z biura", "ooo_select_reason": "Wybierz powód", - "enterprise_license_locally": "Możesz przetestować tę funkcję lokalnie, ale nie w środowisku produkcyjnym.", - "enterprise_license_sales": "Aby uaktualnić do wersji enterprise, skontaktuj się z naszym zespołem sprzedaży. Jeśli klucz licencyjny jest już zainstalowany, skontaktuj się z support@cal.com w celu uzyskania pomocy.", - "apply_to_all_event_types": "Stosuje się do wszystkich, w tym przyszłych typów wydarzeń", + "create_an_out_of_office": "Wyjdź z biura", + "submit_feedback": "Prześlij opinię", + "host_no_show": "Twój gospodarz się nie pojawił", + "no_show_description": "Możesz przełożyć spotkanie na inny termin", + "how_can_we_improve": "Jak możemy poprawić naszą usługę?", + "most_liked": "Co podobało Ci się najbardziej?", + "review": "Recenzja", + "reviewed": "Zrecenzowano", + "unreviewed": "Nieocenione", + "rating_url_info": "URL formularza opinii", + "no_show_url_info": "URL formularza nieobecności", + "no_support_needed": "Brak potrzeby wsparcia?", + "hide_support": "Ukryj wsparcie", + "event_ratings": "Średnie oceny", + "event_no_show": "Nieobecność gospodarza", + "recent_ratings": "Ostatnie oceny", + "no_ratings": "Brak ocen", + "no_ratings_description": "Dodaj przepływ pracy z 'Oceną', aby zbierać oceny po spotkaniach", + "most_no_show_host": "Członkowie z największą liczbą nieobecności", + "highest_rated_members": "Członkowie z najwyżej ocenianymi spotkaniami", + "lowest_rated_members": "Członkowie z najniżej ocenianymi spotkaniami", + "csat_score": "Wynik CSAT", + "lockedSMS": "Zablokowane SMS", + "leave_without_assigning_anyone": "Opuścić bez przypisywania nikogo?", + "leave_without_adding_attendees": "Czy na pewno chcesz opuścić to wydarzenie bez dodawania uczestników?", + "no_availability_shown_to_bookers": "Jeśli nie przypiszesz nikogo do tego wydarzenia, nie będzie dostępności dla rezerwujących.", + "go_back_and_assign": "Wróć i przypisz", + "leave_without_assigning": "Opuść bez przypisywania", + "signing_up_terms": "Kontynuując, zgadzasz się na <0>Warunki i <1>Politykę prywatności<1>", + "always_show_x_days": "Zawsze dostępne {{x}} dni", + "unable_to_subscribe_to_the_platform": "Wystąpił błąd podczas próby subskrypcji planu platformy, spróbuj ponownie później", + "updating_oauth_client_error": "Wystąpił błąd podczas aktualizacji klienta OAuth, spróbuj ponownie później", + "creating_oauth_client_error": "Wystąpił błąd podczas tworzenia klienta OAuth, spróbuj ponownie później", + "event_type_color": "Kolor typu wydarzenia", + "event_type_color_description": "To jest używane tylko do rozróżniania typów wydarzeń i rezerwacji w aplikacji. Nie jest wyświetlane dla rezerwujących.", + "mark_as_no_show_title": "Oznacz jako nieobecny", + "x_marked_as_no_show": "{{x}} oznaczony jako nieobecny", + "x_unmarked_as_no_show": "{{x}} odznaczony jako nieobecny", + "team_select_info": "dotyczy wszystkich typów wydarzeń zespołowych i osobistych typów wydarzeń wszystkich członków zespołu", + "no_show_updated": "Status nieobecności zaktualizowany dla uczestników", + "email_copied": "Email skopiowany", + "USER_PENDING_MEMBER_OF_THE_ORG": "Użytkownik jest oczekującym członkiem organizacji", + "USER_ALREADY_INVITED_OR_MEMBER": "Użytkownik jest już zaproszony lub jest członkiem", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "Użytkownik jest członkiem organizacji, która nie jest częścią tego zespołu.", + "booking_reassigned": "Rezerwacja została przypisana ponownie", + "reassign": "Przypisz ponownie", + "reassign_to_another_rr_host": "Przypisz rezerwację do innego dostępnego hosta round robin", + "assign_team_member": "Przypisz członka zespołu", + "override_team_member_to_assign": "Zastąp członka zespołu, którego chcesz przypisać.", + "no_available_hosts": "Brak dostępnych hostów", + "reassign_round_robin_host": "Przypisz ponownie hosta round robin", + "skip_writing_to_calendar": "Nie zapisuj do kanału ICS", + "rescheduling_not_possible": "Przełożenie nie jest możliwe, ponieważ wydarzenie wygasło", + "event_expired": "To wydarzenie wygasło", + "skip_contact_creation": "Pomiń tworzenie kontaktów, jeśli nie istnieją w {{appName}}", + "skip_writing_to_calendar_note": "Jeśli Twój link ICS jest tylko do odczytu (np. Proton Calendar), zaznacz powyższe pole, aby uniknąć błędów. Będziesz musiał również ręcznie zaktualizować swój kalendarz w przypadku zmian.", + "attributes": "Atrybuty", + "new_attribute": "Nowy atrybut", + "add_attributes": "Dodaj atrybuty", + "add_attributes_description": "Dodaj atrybuty do członków zespołu", + "new_option": "Nowa opcja", + "update_profile": "Aktualizuj członka", + "attribute_updated_successfully": "Atrybut zaktualizowany pomyślnie", + "attributes_edited_successfully": "Atrybuty edytowane pomyślnie", + "attribute_meta_description": "Zarządzaj atrybutami członków zespołu", + "attributes_edit_description": "Edytuj atrybuty członków zespołu", + "back_to_attributes": "Powrót do atrybutów", + "delete_attribute": "Czy na pewno chcesz usunąć tę opcję?", + "delete_attribute_description": "Ta opcja jest przypisana do {{numberOfUsers}} członków. Usunięcie jej spowoduje usunięcie z ich profilu.", + "disable_all_emails_to_attendees": "Wyłącz standardowe e-maile do uczestników związane z tym typem wydarzenia", + "disable_all_emails_description": "Wyłącza standardową komunikację e-mailową związaną z tym typem wydarzenia, w tym potwierdzenia rezerwacji, przypomnienia i anulowania.", + "disable_all_emails_to_hosts": "Wyłącz standardowe e-maile do gospodarzy związane z tym typem wydarzenia", + "type_confirm_to_continue": "Wpisz potwierdzenie, aby kontynuować", + "disable_email": "Wyłącz e-mail", + "grant_admin_api": "Przyznaj dostęp do Admin API", + "revoke_admin_api": "Cofnij dostęp do Admin API", + "apple_connect_atom_label": "Połącz z Kalendarzem Apple", + "apple_connect_atom_already_connected_label": "Połączono z Kalendarzem Apple", + "apple_connect_atom_loading_label": "Sprawdzanie Kalendarza Apple", + "google_connect_atom_label": "Połącz z Kalendarzem Google", + "google_connect_atom_already_connected_label": "Połączono z Kalendarzem Google", + "google_connect_atom_loading_label": "Sprawdzanie Kalendarza Google", + "outlook_connect_atom_label": "Połącz z Kalendarzem Outlook", + "outlook_connect_atom_already_connected_label": "Połączono z Kalendarzem Outlook", + "outlook_connect_atom_loading_label": "Sprawdzanie kalendarza Outlook", + "booking_question_response_variables": "Zmienne odpowiedzi na pytania dotyczące rezerwacji", + "managed_by_teamAdmins": "Zarządzane przez {{teamAdmins}}", + "number_of_options": "{{count}} opcji", + "reschedule_with_same_round_robin_host_title": "Przełóż z tym samym gospodarzem Round-Robin", + "reschedule_with_same_round_robin_host_description": "Przełożone wydarzenia zostaną przypisane do tego samego gospodarza, co pierwotnie zaplanowane", + "disable_input_if_prefilled": "Wyłącz wprowadzanie, jeśli identyfikator URL jest wypełniony", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Dodaj nowe ciągi powyżej ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/pt-BR/common.json b/apps/web/public/static/locales/pt-BR/common.json index 7901a2a621638e..281a212b06ba83 100644 --- a/apps/web/public/static/locales/pt-BR/common.json +++ b/apps/web/public/static/locales/pt-BR/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} segundos", "upgrade_now": "Atualizar agora", "accept_invitation": "Aceitar convite", + "max_characters": "Máx. Caracteres", + "min_characters": "Mín. Caracteres", "calcom_explained": "{{appName}} é a alternativa de código aberto ao Calendly que coloca você no controle dos seus dados, fluxo de trabalho e aparência.", "calcom_explained_new_user": "Termine de configurar sua conta do {{appName}}! Falta pouco para você solucionar todos os seus problemas de agendamento.", "have_any_questions": "Precisa de ajuda? Estamos aqui para ajudar.", @@ -45,6 +47,7 @@ "no_options_available": "Sem opções disponíveis", "cancellation_reason": "Motivo do cancelamento", "cancellation_reason_placeholder": "Por que você está cancelando?", + "rejection_reason_placeholder": "Por que você está rejeitando?", "rejection_reason": "Motivo da recusa", "rejection_reason_title": "Recusar a solicitação de reserva?", "rejection_reason_description": "Tem certeza de que deseja recusar a reserva? Avisaremos a pessoa que tentou reservar. Se quiser, informe um motivo abaixo.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "Sua reunião está aguardando o pagamento", "dark_theme_contrast_error": "A cor do tema escuro não foi aprovada pela verificação de contraste. Recomendamos que você altere esta cor para que seus botões fiquem mais visíveis.", "light_theme_contrast_error": "A cor do tema claro não foi aprovada pela verificação de contraste. Recomendamos que você altere esta cor para que seus botões fiquem mais visíveis.", + "event_type_color_light_theme_contrast_error": "A cor do Tema Claro não passa na verificação de contraste. Recomendamos que você altere essa cor para que a cor dos seus tipos de eventos seja mais visível.", + "event_type_color_dark_theme_contrast_error": "A cor do Tema Escuro não passa na verificação de contraste. Recomendamos que você altere essa cor para que a cor dos seus tipos de eventos seja mais visível.", "payment_not_created_error": "O pagamento não pôde ser criado", "couldnt_charge_card_error": "Não foi possível cobrar o cartão para o pagamento", "no_available_users_found_error": "Nenhum usuário disponível foi encontrado. Você poderia tentar outra faixa horária?", @@ -102,6 +107,9 @@ "new_event_request": "Solicitação de novo evento: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Confirmar ou recusar a reserva", "check_bookings_page_to_confirm_or_reject": "Consulte a sua página de reservas para confirmar ou recusar a reserva.", + "check_in_assistant": "Assistente de Check-in", + "check_in_assistant_description": "Faz uma chamada para verificar se o compromisso agendado funciona ou se você deseja reagendar.", + "create_your_own_prompt": "Crie seu próprio prompt e use-o para fazer uma chamada.", "event_awaiting_approval": "Um evento está aguardando a sua aprovação", "event_awaiting_approval_recurring": "Um evento recorrente aguarda a sua aprovação", "someone_requested_an_event": "Alguém solicitou o agendamento de um evento em sua agenda.", @@ -163,6 +171,9 @@ "link_expires": "P.S.: Expira em {{expiresIn}} horas.", "upgrade_to_per_seat": "Atualize para \"Por assento\"", "seat_options_doesnt_support_confirmation": "Não é possível usar reservas com assento quando a reserva exigir confirmação", + "multilocation_doesnt_support_seats": "Múltiplas Localizações não suportam a opção de assentos", + "no_show_fee_doesnt_support_seats": "A taxa de não comparecimento não suporta a opção de assentos", + "seats_option_doesnt_support_multi_location": "A opção de assentos não suporta Múltiplas Localizações", "team_upgrade_seats_details": "Dos {{memberCount}} membros da sua equipe, há {{unpaidCount}} assento(s) não pago(s). A ${{seatPrice}}/mês por assento, o custo total estimado da sua assinatura é de ${{totalCost}}/mês.", "team_upgrade_banner_description": "Agradecemos por testar nosso novo plano de equipe. Notamos que a sua equipe \"{{teamName}}\" precisa ser atualizada.", "upgrade_banner_action": "Atualizar aqui", @@ -460,6 +471,7 @@ "booking_cancelled": "Reserva cancelada", "booking_rescheduled": "Reserva Reagendada", "recording_ready": "Link para download de gravação pronto", + "recording_transcription_generated": "Transcrição Gerada", "booking_created": "Reserva Criada", "booking_rejected": "Reserva recusada", "booking_requested": "Reserva solicitada", @@ -467,6 +479,7 @@ "meeting_ended": "Reunião encerrada", "form_submitted": "Formulário enviado", "booking_paid": "Reserva paga", + "booking_no_show_updated": "Não Comparecimento Atualizado", "event_triggers": "Gatilhos de eventos", "subscriber_url": "URL do assinante", "create_new_webhook": "Criar um novo webhook", @@ -700,6 +713,7 @@ "default_duration_no_options": "Escolha as durações disponíveis primeiro", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minutos", "use_cal_ai_to_make_call_description": "Use Cal.ai para adquirir um número de telefone com IA ou faça ligações para convidados.", "round_robin": "Round Robin", @@ -765,6 +779,8 @@ "brand_color": "Cor da Marca", "light_brand_color": "Cor da marca (tema claro)", "dark_brand_color": "Cor da marca (tema escuro)", + "light_event_type_color": "Cor do Tipo de Evento (Tema Claro)", + "dark_event_type_color": "Cor do Tipo de Evento (Tema Escuro)", "file_not_named": "Arquivo não é [idOrSlug]/[user]", "create_team": "Criar Time", "name": "Nome", @@ -1039,6 +1055,7 @@ "seats_nearly_full": "Assentos quase preenchidos", "seats_half_full": "Assentos sendo preenchidos rapidamente", "number_of_seats": "Número de assentos por reserva", + "set_instant_meeting_expiry_time_offset_description": "Defina a janela de entrada da reunião (segundos): O período de tempo em segundos dentro do qual o anfitrião pode entrar e iniciar a reunião. Após esse período, a URL de entrada da reunião expirará.", "enter_number_of_seats": "Insira a quantidade de assentos", "you_can_manage_your_schedules": "Você pode gerenciar suas agendas na página de Disponibilidade.", "booking_full": "Não há mais assentos disponíveis", @@ -1102,7 +1119,9 @@ "impersonating_user_warning": "Representando o nome de usuário \"{{user}}\".", "impersonating_stop_instructions": "Clique aqui para parar", "event_location_changed": "Atualização: o local do seu evento foi alterado", + "new_guests_added": "Adicionado - Novos convidados adicionados ao seu evento", "location_changed_event_type_subject": "Local alterado: {{eventType}} com {{name}} em {{date}}", + "guests_added_event_type_subject": "Convidados Adicionados: {{eventType}} com {{name}} em {{date}}", "current_location": "Local atual", "new_location": "Novo local", "session": "Sessão", @@ -1114,7 +1133,11 @@ "set_location": "Definir local", "update_location": "Atualizar local", "location_updated": "Local atualizado", + "guests_added": "Convidados adicionados", + "unable_to_add_guests": "Não foi possível adicionar convidados", "email_validation_error": "Isso não parece um endereço de e-mail", + "emails_must_be_unique_valid": "Os e-mails devem ser únicos e válidos", + "url_validation_error": "Isso não parece ser uma URL", "place_where_cal_widget_appear": "Coloque este código no seu HTML onde você quiser que o seu widget do {{appName}} apareça.", "create_update_react_component": "Crie ou atualize um componente existente do React como demonstrado abaixo.", "copy_code": "Copiar código", @@ -1131,6 +1154,8 @@ "make_setup_instructions": "<0>Vá para <1><0>Vincular convite do Make e instale o aplicativo do Cal.com.<1>Entre na conta do Make e crie um novo Cenário.<2>Selecione Cal.com como seu aplicativo de gatilho. Escolha também um evento de gatilho.<3>Escolha sua conta e insira sua chave de API única.<4>Teste seu gatilho.<5>Tudo pronto!", "install_zapier_app": "Instale primeiro o app do Zapier na loja de apps.", "install_make_app": "Instale primeiro o aplicativo do Make na loja de aplicativos.", + "app_not_installed": "Aplicativo não instalado", + "visit_our_app_store": "Desculpe, este aplicativo não está instalado na sua conta. Por favor, visite nossa loja de aplicativos para explorar e descobrir este e outros ótimos aplicativos.", "connect_apple_server": "Conectar com o servidor da Apple", "calendar_url": "URL do calendário", "apple_server_generate_password": "Gerar uma senha específica de app para usar com o {{appName}} em", @@ -1205,6 +1230,8 @@ "day_timeUnit": "dias", "hour_timeUnit": "hours", "minute_timeUnit": "minutos", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Criar seu primeiro fluxo de trabalho", "new_workflow_description": "Fluxos de trabalho permitem que você automatize o envio de lembretes e notificações.", "active_on": "Ativar em", @@ -1232,6 +1259,8 @@ "may_require_confirmation": "Pode exigir confirmação", "nr_event_type_one": "{{count}} tipo de evento", "nr_event_type_other": "{{count}} tipos de evento", + "count_team_one": "{{count}} equipe", + "count_team_other": "{{count}} equipes", "add_action": "Adicionar ação", "set_whereby_link": "Definir link do Whereby", "invalid_whereby_link": "Insira um link válido do Whereby", @@ -1256,8 +1285,10 @@ "reminder_email": "Lembrete: {{eventType}} com {{name}} em {{date}}", "not_triggering_existing_bookings": "Não será acionado para reservas já existentes, pois o usuário deverá fornecer o número de telefone ao fazer um pedido no evento.", "minute_one": "{{count}} minuto", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} minutos", "hour_one": "{{count}} hora", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} horas", "invalid_input": "Entrada inválida", "broken_video_action": "Não foi possível adicionar o link da reunião de <1>{{location}} ao seu evento agendado. Entre em contato com seus convidados ou atualize o evento no seu calendário para acrescentar detalhes. Você poderá <3>alterar sua localização no tipo de evento ou tentar <5>remover e adicionar o app novamente.", @@ -1269,7 +1300,12 @@ "problem_updating_calendar": "Ocorreu um problema ao atualizar seu calendário", "active_on_event_types_one": "Ativo em {{count}} tipo de evento", "active_on_event_types_other": "Ativo em {{count}} tipos de eventos", + "active_on_teams_one": "Ativo em {{count}} equipe", + "active_on_teams_other": "Ativo em {{count}} equipes", + "active_on_all_event_types": "Ativo em todos os tipos de eventos", + "active_on_all_teams": "Ativo em todas as equipes", "no_active_event_types": "Nenhum tipo de evento ativo", + "no_active_teams": "Nenhuma equipe ativa", "new_seat_subject": "Novo participante {{name}} no {{eventType}} em {{date}}", "new_seat_title": "Alguém se adicionou a um evento", "variable": "Variável", @@ -1335,6 +1371,9 @@ "2fa_required": "Requer autenticação de dois fatores", "incorrect_2fa": "Código de autenticação de dois fatores incorreto", "which_event_type_apply": "A que tipo de evento isto se aplica?", + "apply_to_all_event_types": "Aplicar a todos, incluindo futuros tipos de eventos", + "apply_to_all_teams": "Aplicar a todos os tipos de eventos de equipe e usuário", + "which_team_apply": "A qual equipe isso se aplicará?", "no_workflows_description": "Fluxo de trabalho permitem uma simples automação para enviar notificações e lembretes que permitem que você crie processos em torno de seus eventos.", "timeformat_profile_hint": "Esta é uma configuração interna e não afetará a quantidade de exibições em páginas públicas de reservas para você ou outra pessoa que estiver fazendo reserva.", "create_workflow": "Criar fluxo de trabalho", @@ -1420,6 +1459,7 @@ "add_dynamic_variables": "Adicionar variáveis de texto dinâmicas", "event_name_info": "O nome do tipo de evento", "event_date_info": "A data do evento", + "event_duration_info": "A duração do evento", "event_time_info": "O horário inicial do evento", "event_type_not_found": "Tipo de evento não encontrado", "location_variable": "Local", @@ -1436,6 +1476,7 @@ "download_recording": "Baixar gravação", "transcription_enabled": "As transcrições foram habilitadas", "transcription_stopped": "As transcrições foram desabilitadas", + "download_transcript": "Baixar Transcrição", "recording_from_your_recent_call": "Uma gravação da sua chamada recente no {{appName}} está pronta para ser baixada", "transcript_from_previous_call": "As transcrições da sua ligação recente no {{appName}} já estão prontas para serem baixadas. Os links são válidos por apenas 1 hora", "link_valid_for_12_hrs": "Nota: O link para baixar só é válido por 12 horas. Você pode gerar um novo link para baixar seguindo as seguintes instruções <1>aqui.", @@ -1473,6 +1514,7 @@ "team_disable_cal_branding_description": "Remover qualquer marca relacionada a {{appName}}, ex.: \"Desenvolvido pela {{appName}}\"", "invited_by_team": "{{teamName}} enviou um convite para juntar-se à equipe como {{role}}", "token_invalid_expired": "O token é inválido ou expirou.", + "view_booking": "Ver Reserva", "exchange_add": "Conectar-se ao Microsoft Exchange", "exchange_authentication": "Método de autenticação", "exchange_authentication_standard": "Autenticação básica", @@ -1537,6 +1579,8 @@ "report_app": "Denunciar aplicativo", "limit_booking_frequency": "Limite frequência de reserva", "limit_booking_frequency_description": "Limite quantas vezes este evento pode ser reservado", + "only_show_first_available_slot": "Mostrar apenas o primeiro horário disponível de cada dia", + "only_show_first_available_slot_description": "Isso limitará sua disponibilidade para este tipo de evento a um horário por dia, agendado no primeiro horário disponível.", "limit_total_booking_duration": "Limitar duração total de reserva", "limit_total_booking_duration_description": "Limite de quanto tempo este evento pode ser reservado", "add_limit": "Adicione limite", @@ -1576,6 +1620,7 @@ "how_long_after": "Quanto tempo após o término do evento?", "no_available_slots": "Não há espaços disponíveis", "time_available": "Tempo disponível", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Não consegue encontrar o aplicativo de conferência certo? Visite nossa <1>App Store.", "install_new_calendar_app": "Instale novo aplicativo de calendário", "make_phone_number_required": "Torne o número de telefone necessário para o evento de reserva", "new_event_type_availability": "Disponibilidade de {{eventTypeTitle}}", @@ -1740,6 +1785,7 @@ "new_attendee": "Novo participante", "awaiting_approval": "Aguardando aprovação", "requires_google_calendar": "Este aplicativo requer uma conexão com o Google Calendar", + "event_type_requires_google_calendar": "O “Adicionar ao calendário” para este tipo de evento precisa ser um Google Calendar para o Meet funcionar. Conecte-o <1>aqui.", "connected_google_calendar": "Você se conectou com uma conta do Google Calendar.", "using_meet_requires_calendar": "É preciso ter um Google Calendar conectado para usar o Google Meet", "continue_to_install_google_calendar": "Continuar para instalar o Google Calendar", @@ -2327,12 +2373,18 @@ "Highest": "mais alto", "send_booker_to": "Enviar reserva para", "set_priority": "Definir prioridade", + "set_weight": "Definir Peso", + "enable_weights": "Habilitar Pesos", "priority_for_user": "Prioridade para {{userName}}", + "weights_description": "Os pesos determinam como as reuniões são distribuídas entre os anfitriões. <1>Saiba mais", + "weight_for_user": "Peso para {{userName}}", "change_priority": "alterar prioridade", "field_identifiers_as_variables": "Use identificadores de campo como variáveis para seu redirecionamento de evento personalizado", "field_identifiers_as_variables_with_example": "Use identificadores de campo como variáveis para seu redirecionamento de evento personalizado (por exemplo {{variable}} )", "account_already_linked": "A conta já está vinculada", "send_email": "Enviar e-mail", + "mark_as_no_show": "Marcar como não compareceu", + "unmark_as_no_show": "Desmarcar como não compareceu", "account_unlinked_success": "Conta vinculada com sucesso", "account_unlinked_error": "Houve um erro ao desvincular a conta", "travel_schedule": "Agendar Viagem", @@ -2375,8 +2427,13 @@ "primary": "Primário", "make_primary": "Tornar primário", "add_email": "Adicionar e-mail", + "add_emails": "Adicionar e-mails", "add_email_description": "Adicione um endereço de e-mail para substituir seu e-mail principal ou para usar como e-mail alternativo em seus tipos de eventos.", "confirm_email": "Confirme seu e-mail", + "scheduler_first_name": "O primeiro nome da pessoa que está agendando", + "scheduler_last_name": "O sobrenome da pessoa que está agendando", + "scheduler_name": "Nome do agendador", + "organizer_first_name": "Seu primeiro nome", "confirm_email_description": "Enviamos um e-mail para {{email}} . Clique no link do e-mail para verificar este endereço.", "send_event_details_to": "Envie detalhes do evento para", "schedule_tz_without_end_date": "Agendar fuso horário sem data final", @@ -2388,6 +2445,7 @@ "delete_org_eventtypes": "Apagar tipos de evento individuais", "lock_org_users_eventtypes": "Bloquear criação de tipos de evento individuais", "lock_org_users_eventtypes_description": "Impedir membros de criar seus próprios tipos de evento.", + "add_to_event_type": "Adicionar ao tipo de evento", "create_account_password": "Crie a senha da conta", "error_creating_account_password": "Erro ao criar senha da conta", "cannot_create_account_password_cal_provider": "Não é permitido criar senha de conta para contas cal", @@ -2397,6 +2455,15 @@ "disconnect_account_hint": "Disconectar sua conta conectada mudará a maneira como você faz login. Você só poderá fazer login usando e-mail + senha", "cookie_consent_checkbox": "Ao criar uma conta, você concorda com nossa política de privacidade e o uso de cookies", "make_a_call": "Fazer uma Ligação", + "skip_rr_assignment_label": "Pular atribuição round robin se o contato existir no Salesforce", + "skip_rr_description": "A URL deve conter o e-mail do contato como um parâmetro, ex. ?email=contactEmail", + "select_account_header": "Selecionar Conta", + "select_account_description": "Instale {{appName}} na sua conta pessoal ou em uma conta de equipe.", + "select_event_types_header": "Selecionar Tipos de Evento", + "select_event_types_description": "Em qual tipo de evento você deseja instalar {{appName}}?", + "configure_app_header": "Configurar {{appName}}", + "configure_app_description": "Finalize a configuração do App. Você pode alterar essas configurações mais tarde.", + "already_installed": "já instalado", "ooo_reasons_unspecified": "Não especificado", "ooo_reasons_vacation": "Férias", "ooo_reasons_travel": "Viagem", @@ -2434,11 +2501,73 @@ "lowest_rated_members": "Membros com a menor taxa de reuniões", "csat_score": "Pontuação CSAT", "lockedSMS": "SMS Bloqueado", + "leave_without_assigning_anyone": "Sair sem atribuir ninguém?", + "leave_without_adding_attendees": "Tem certeza de que deseja sair deste evento sem adicionar participantes?", + "no_availability_shown_to_bookers": "Se você não atribuir ninguém para este evento, não haverá disponibilidade mostrada para os agendadores.", + "go_back_and_assign": "Voltar e Atribuir", + "leave_without_assigning": "Sair sem Atribuir", "signing_up_terms": "Ao continuar, você concorda com nossos <0>Termos e <1>Política de Privacidade.", "always_show_x_days": "Sempre {{x}} dias disponíveis", "unable_to_subscribe_to_the_platform": "Um erro ocorreu ao tentar adicionar ao plano da plataforma, por favor tente novamente mais tarde", "updating_oauth_client_error": "Um erro ocorreu ao tentar atualizar o cliente OAuth, por favor tente novamente mais tarde", "creating_oauth_client_error": "Um erro ocorreu ao tentar criar o cliente OAuth, por favor tente novamente mais tarde", - "apply_to_all_event_types": "Aplicar a todos, incluindo tipos de eventos futuros", + "event_type_color": "Cor do tipo de evento", + "event_type_color_description": "Isso é usado apenas para diferenciação de tipo de evento e agendamento dentro do aplicativo. Não é exibido para os agendadores.", + "mark_as_no_show_title": "Marcar como não compareceu", + "x_marked_as_no_show": "{{x}} marcado como não compareceu", + "x_unmarked_as_no_show": "{{x}} desmarcado como não compareceu", + "team_select_info": "disparadores para todos os tipos de eventos da equipe e todos os tipos de eventos pessoais dos membros da equipe", + "no_show_updated": "Status de não comparecimento atualizado para os participantes", + "email_copied": "Email copiado", + "USER_PENDING_MEMBER_OF_THE_ORG": "Usuário é um membro pendente da organização", + "USER_ALREADY_INVITED_OR_MEMBER": "Usuário já foi convidado ou é membro", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "Usuário é membro de uma organização que esta equipe não faz parte.", + "booking_reassigned": "Reserva foi reatribuída", + "reassign": "Reatribuir", + "reassign_to_another_rr_host": "Reatribuir reserva para outro anfitrião disponível de round robin", + "assign_team_member": "Atribuir membro da equipe", + "override_team_member_to_assign": "Substituir qual membro da equipe você deseja atribuir.", + "no_available_hosts": "Nenhum anfitrião disponível", + "reassign_round_robin_host": "Reatribuir anfitrião de round robin", + "skip_writing_to_calendar": "Não escrever no feed ICS", + "rescheduling_not_possible": "Reagendamento não é possível, pois o evento expirou", + "event_expired": "Este evento expirou", + "skip_contact_creation": "Pular criação de contatos se eles não existirem no {{appName}}", + "skip_writing_to_calendar_note": "Se o seu link ICS for somente leitura (por exemplo, Proton Calendar), marque a caixa acima para evitar erros. Você também precisará atualizar manualmente seu calendário para mudanças.", + "attributes": "Atributos", + "new_attribute": "Novo atributo", + "add_attributes": "Adicionar atributos", + "add_attributes_description": "Adicionar atributos aos membros da sua equipe", + "new_option": "Nova opção", + "update_profile": "Atualizar membro", + "attribute_updated_successfully": "Atributo atualizado com sucesso", + "attributes_edited_successfully": "Atributos editados com sucesso", + "attribute_meta_description": "Gerencie atributos para os membros da sua equipe", + "attributes_edit_description": "Edite atributos para os membros da sua equipe", + "back_to_attributes": "Voltar para atributos", + "delete_attribute": "Tem certeza de que deseja excluir esta opção?", + "delete_attribute_description": "Esta opção está atribuída a {{numberOfUsers}} membros. Excluí-la a removerá de seus perfis.", + "disable_all_emails_to_attendees": "Desativar e-mails padrão para participantes relacionados a este tipo de evento", + "disable_all_emails_description": "Desativa a comunicação por e-mail padrão relacionada a este tipo de evento, incluindo confirmações de reserva, lembretes e cancelamentos.", + "disable_all_emails_to_hosts": "Desativar e-mails padrão para anfitriões relacionados a este tipo de evento", + "type_confirm_to_continue": "Digite confirmar para continuar", + "disable_email": "Desativar e-mail", + "grant_admin_api": "Conceder acesso à API de administrador", + "revoke_admin_api": "Revogar acesso à API de administrador", + "apple_connect_atom_label": "Conectar Calendário Apple", + "apple_connect_atom_already_connected_label": "Calendário Apple conectado", + "apple_connect_atom_loading_label": "Verificando Calendário Apple", + "google_connect_atom_label": "Conectar Calendário Google", + "google_connect_atom_already_connected_label": "Calendário Google conectado", + "google_connect_atom_loading_label": "Verificando Calendário Google", + "outlook_connect_atom_label": "Conectar Calendário Outlook", + "outlook_connect_atom_already_connected_label": "Calendário Outlook conectado", + "outlook_connect_atom_loading_label": "Verificando Calendário Outlook", + "booking_question_response_variables": "Variáveis de resposta de perguntas de reserva", + "managed_by_teamAdmins": "Gerenciado por {{teamAdmins}}", + "number_of_options": "{{count}} opções", + "reschedule_with_same_round_robin_host_title": "Reagendar com o mesmo anfitrião Round-Robin", + "reschedule_with_same_round_robin_host_description": "Eventos reagendados serão atribuídos ao mesmo anfitrião inicialmente agendado", + "disable_input_if_prefilled": "Desativar entrada se o identificador da URL estiver preenchido", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Adicione suas novas strings aqui em cima ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/pt/common.json b/apps/web/public/static/locales/pt/common.json index 688aca24ecc60d..b34e08526766b3 100644 --- a/apps/web/public/static/locales/pt/common.json +++ b/apps/web/public/static/locales/pt/common.json @@ -7,6 +7,8 @@ "second_other": "{{count}} segundos", "upgrade_now": "Atualize agora", "accept_invitation": "Aceitar convite", + "max_characters": "Máx. Caracteres", + "min_characters": "Mín. Caracteres", "calcom_explained": "{{appName}} é a alternativa de código aberto de Calendly que lhe dá o controlo dos seus próprios dados, do seu fluxo de trabalho e da apresentação.", "calcom_explained_new_user": "Conclua a configuração da sua conta {{appName}}! Está apenas a alguns passos de resolver todos os seus problemas com agendamentos.", "have_any_questions": "Tem perguntas? Estamos disponíveis para ajudar.", @@ -45,6 +47,7 @@ "no_options_available": "Não existem opções disponíveis", "cancellation_reason": "Motivo do cancelamento", "cancellation_reason_placeholder": "Porque está a cancelar? (opcional)", + "rejection_reason_placeholder": "Por que está a rejeitar?", "rejection_reason": "Motivo da rejeição", "rejection_reason_title": "Rejeitar o pedido de reserva?", "rejection_reason_description": "De certeza que quer rejeitar a reserva? Avisaremos a pessoa que tentou reservar. Pode indicar uma razão abaixo.", @@ -67,6 +70,8 @@ "meeting_awaiting_payment": "A sua reunião aguarda pagamento", "dark_theme_contrast_error": "Cor do tema escuro não passa por uma verificação do contraste. Recomendamos que você altere esta cor para que seus botões fiquem mais visíveis.", "light_theme_contrast_error": "Cor do tema claro não passa em uma verificação do contraste. Recomendamos que você altere esta cor para que seus botões fiquem mais visíveis.", + "event_type_color_light_theme_contrast_error": "A cor do Tema Claro não passa na verificação de contraste. Recomendamos que altere esta cor para que a cor dos seus tipos de eventos seja mais visível.", + "event_type_color_dark_theme_contrast_error": "A cor do Tema Escuro não passa na verificação de contraste. Recomendamos que altere esta cor para que a cor dos seus tipos de eventos seja mais visível.", "payment_not_created_error": "O pagamento não foi criado", "couldnt_charge_card_error": "Não foi possível pagar com o cartão", "no_available_users_found_error": "Nenhum usuário disponível foi encontrado. Você poderia tentar outro horário?", @@ -102,6 +107,9 @@ "new_event_request": "Pedido de novo evento: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Confirmar ou rejeitar o pedido", "check_bookings_page_to_confirm_or_reject": "Consulte a sua página de reservas para confirmar ou rejeitar a reserva.", + "check_in_assistant": "Assistente de Check-in", + "check_in_assistant_description": "Faz uma chamada para verificar se a reunião agendada funciona ou se deseja reagendar.", + "create_your_own_prompt": "Crie o seu próprio prompt e use-o para fazer uma chamada.", "event_awaiting_approval": "Um novo evento aguarda a sua aprovação", "event_awaiting_approval_recurring": "Um evento recorrente aguarda a sua aprovação", "someone_requested_an_event": "Alguém pediu para agendar um evento no seu calendário.", @@ -463,6 +471,7 @@ "booking_cancelled": "Reserva cancelada", "booking_rescheduled": "Reserva Reagendada", "recording_ready": "Ligação de transferência da gravação pronta", + "recording_transcription_generated": "Transcrição Gerada", "booking_created": "Reserva Criada", "booking_rejected": "Reserva rejeitada", "booking_requested": "Reserva solicitada", @@ -470,6 +479,7 @@ "meeting_ended": "A reunião terminou", "form_submitted": "Formulário enviado", "booking_paid": "Reserva paga", + "booking_no_show_updated": "Atualização de Falta de Comparecimento", "event_triggers": "Causadores de eventos", "subscriber_url": "URL do assinante", "create_new_webhook": "Criar um novo webhook", @@ -703,6 +713,7 @@ "default_duration_no_options": "Por favor, selecione primeiro as durações disponíveis", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "Minutos", "use_cal_ai_to_make_call_description": "Utilize o Cal.ai para obter um número de telefone suportado por IA ou para fazer chamadas para convidados.", "round_robin": "Round Robin", @@ -768,6 +779,8 @@ "brand_color": "Cor da marca", "light_brand_color": "Cor da marca (tema claro)", "dark_brand_color": "Cor da marca (tema escuro)", + "light_event_type_color": "Cor do Tipo de Evento (Tema Claro)", + "dark_event_type_color": "Cor do Tipo de Evento (Tema Escuro)", "file_not_named": "Ficheiro não é [idOrSlug]/[user]", "create_team": "Criar Equipa", "name": "Nome", @@ -1042,6 +1055,7 @@ "seats_nearly_full": "Lugares quase esgotados", "seats_half_full": "Lugares rapidamente ocupados", "number_of_seats": "Número de lugares por reserva", + "set_instant_meeting_expiry_time_offset_description": "Definir janela de entrada na reunião (segundos): O período de tempo em segundos dentro do qual o anfitrião pode entrar e iniciar a reunião. Após este período, o URL de entrada na reunião expirará.", "enter_number_of_seats": "Digite um número de lugares", "you_can_manage_your_schedules": "Pode gerir os seus horários na página de Disponibilidade.", "booking_full": "Não há mais lugares disponíveis", @@ -1105,7 +1119,9 @@ "impersonating_user_warning": "Representar o nome de utilizador \"{{user}}\".", "impersonating_stop_instructions": "Clique aqui para parar", "event_location_changed": "Actualizado - Foi alterada a localização do seu evento", + "new_guests_added": "Adicionado - Novos convidados adicionados ao seu evento", "location_changed_event_type_subject": "Localização alterada: {{eventType}} com {{name}} em {{date}}", + "guests_added_event_type_subject": "Convidados Adicionados: {{eventType}} com {{name}} em {{date}}", "current_location": "Localização actual", "new_location": "Nova localização", "session": "Sessão", @@ -1117,7 +1133,11 @@ "set_location": "Definir localização", "update_location": "Actualizar localização", "location_updated": "Localização actualizada", + "guests_added": "Convidados adicionados", + "unable_to_add_guests": "Não foi possível adicionar convidados", "email_validation_error": "Isto não parece ser um endereço de email", + "emails_must_be_unique_valid": "Os emails devem ser únicos e válidos", + "url_validation_error": "Isso não parece um URL", "place_where_cal_widget_appear": "Insira este código no seu HTML onde pretende mostrar o seu widget do {{appName}}.", "create_update_react_component": "Crie ou actualize um componente React existente, como mostrado abaixo.", "copy_code": "Copiar código", @@ -1134,6 +1154,8 @@ "make_setup_instructions": "<0>Aceda a <1><0>Criar ligação de convite e instale a aplicação Cal.com.<1>Inicie sessão na sua conta Make e crie um novo Cenário.<2>Selecione Cal.com como a sua aplicação de Trigger. Escolha também um evento de Trigger.<3>Escolha a sua conta e depois introduza a sua Chave da API Única.<4>Teste o seu Trigger.<5>Está pronto!", "install_zapier_app": "Por favor, primeiro instale a aplicação Zapier da App Store.", "install_make_app": "Instale primeiro a aplicação Make na app store.", + "app_not_installed": "Aplicação não instalada", + "visit_our_app_store": "Desculpe, esta aplicação não está instalada na sua conta. Por favor, visite a nossa loja de aplicações para explorar e descobrir esta e outras ótimas aplicações.", "connect_apple_server": "Ligar a Apple Server", "calendar_url": "URL do calendário", "apple_server_generate_password": "Crie uma palavra-passe de aplicação específica para utilizar com {{appName}} em", @@ -1208,6 +1230,8 @@ "day_timeUnit": "dias", "hour_timeUnit": "horas", "minute_timeUnit": "minutos", + "minute_short": "m", + "hour_short": "h", "new_workflow_heading": "Crie seu primeiro fluxo de trabalho", "new_workflow_description": "Os fluxos de trabalho permitem automatizar o envio de lembretes e notificações.", "active_on": "Activo em", @@ -1235,6 +1259,8 @@ "may_require_confirmation": "Pode necessitar de confirmação", "nr_event_type_one": "{{count}} tipo de evento", "nr_event_type_other": "{{count}} tipos de evento", + "count_team_one": "{{count}} equipa", + "count_team_other": "{{count}} equipas", "add_action": "Adicionar acção", "set_whereby_link": "Configurar ligação do Whereby", "invalid_whereby_link": "Insira uma ligação válida do Whereby", @@ -1259,8 +1285,10 @@ "reminder_email": "Lembrete: {{eventType}} com {{name}} em {{date}}", "not_triggering_existing_bookings": "Não será accionado para reservas já existentes, uma vez que será pedido o número de telefone ao utilizador ao reservar o evento.", "minute_one": "{{count}} minuto", + "minute_one_short": "{{count}}m", "minute_other": "{{count}} minutos", "hour_one": "{{count}} hora", + "hour_one_short": "{{count}}h", "hour_other": "{{count}} horas", "invalid_input": "Preenchimento inválido", "broken_video_action": "Não foi possível adicionar a ligação da reunião em <1>{{location}} no seu evento agendado. Contacte os seus convidados ou atualize o evento do calendário para adicionar detalhes. Pode <3> alterar a localização no seu tipo de evento ou tentar <5>remover e adicionar de novo a aplicação.", @@ -1272,7 +1300,12 @@ "problem_updating_calendar": "Ocorreu um problema ao atualizar o seu calendário", "active_on_event_types_one": "Activo em {{count}} tipo de evento", "active_on_event_types_other": "Activo em {{count}} tipos de evento", + "active_on_teams_one": "Ativo em {{count}} equipa", + "active_on_teams_other": "Ativo em {{count}} equipas", + "active_on_all_event_types": "Ativo em todos os tipos de eventos", + "active_on_all_teams": "Ativo em todas as equipas", "no_active_event_types": "Nenhum tipo de evento activo", + "no_active_teams": "Sem equipas ativas", "new_seat_subject": "Novo participante {{name}} em {{eventType}} em {{date}}", "new_seat_title": "Alguém se adicionou a um evento", "variable": "Variável", @@ -1338,6 +1371,9 @@ "2fa_required": "Requer autenticação de dois fatores", "incorrect_2fa": "Código de autenticação de dois fatores incorreto", "which_event_type_apply": "A que tipo de evento isto se aplica?", + "apply_to_all_event_types": "Aplicar a todos, incluindo futuros tipos de eventos", + "apply_to_all_teams": "Aplicar a todos os tipos de eventos de equipa e utilizador", + "which_team_apply": "A que equipa se aplica isto?", "no_workflows_description": "Os fluxos de trabalho permitem automações simples para enviar notificações e lembretes, permitindo criar processos à volta dos seus eventos.", "timeformat_profile_hint": "Isto é uma configuração interna e não irá afetar a forma como os horários são apresentados nas páginas públicas de agendamento, seja para si ou para qualquer pessoa que esteja a fazer uma reserva.", "create_workflow": "Criar um fluxo de trabalho", @@ -1423,6 +1459,7 @@ "add_dynamic_variables": "Adicione variáveis de texto dinâmicas", "event_name_info": "O nome do tipo de evento", "event_date_info": "A data do evento", + "event_duration_info": "A duração do evento", "event_time_info": "A hora de início do evento", "event_type_not_found": "Tipo de evento não encontrado", "location_variable": "Localização", @@ -1477,6 +1514,7 @@ "team_disable_cal_branding_description": "Remove qualquer identificação de marca relacionada o {{appName}}, por exemplo, 'Com tecnologia {{appName}}'", "invited_by_team": "{{teamName}} enviou um convite para se juntar à sua equipa como {{role}}", "token_invalid_expired": "O token é inválido ou expirou.", + "view_booking": "Ver Reserva", "exchange_add": "Associar ao Microsoft Exchange", "exchange_authentication": "Método de autenticação", "exchange_authentication_standard": "Autenticação básica", @@ -1541,6 +1579,8 @@ "report_app": "Reportar aplicação", "limit_booking_frequency": "Limitar a frequência das reservas", "limit_booking_frequency_description": "Limitar o número de vezes que este evento pode ser reservado", + "only_show_first_available_slot": "Mostrar apenas o primeiro horário disponível de cada dia", + "only_show_first_available_slot_description": "Isto limitará a sua disponibilidade para este tipo de evento a um horário por dia, agendado na primeira hora disponível.", "limit_total_booking_duration": "Limitar a duração total da reserva", "limit_total_booking_duration_description": "Limitar o tempo total que pode ser reservado para este evento", "add_limit": "Adicionar limite", @@ -1580,6 +1620,7 @@ "how_long_after": "Quanto tempo após o fim do evento?", "no_available_slots": "Sem vagas disponíveis", "time_available": "Tempo disponível", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Não consegue encontrar a aplicação de conferência certa? Visite a nossa <1>App Store.", "install_new_calendar_app": "Instalar a nova aplicação de calendário", "make_phone_number_required": "Tornar o número de telefone obrigatório na reserva de um evento", "new_event_type_availability": "Disponibilidade de {{eventTypeTitle}}", @@ -1744,6 +1785,7 @@ "new_attendee": "Novo participante", "awaiting_approval": "Aguarda aprovação", "requires_google_calendar": "Esta aplicação requer uma ligação ao Google Calendar", + "event_type_requires_google_calendar": "O “Adicionar ao calendário” para este tipo de evento precisa de ser um Google Calendar para o Meet funcionar. Conecte-o <1>aqui.", "connected_google_calendar": "Você associou uma conta do Google Calendar.", "using_meet_requires_calendar": "A utilização do Google Meet requer uma ligação ao Google Calendar", "continue_to_install_google_calendar": "Continuar a instalar o Google Calendar", @@ -2331,7 +2373,11 @@ "Highest": "a mais alta", "send_booker_to": "Enviar responsável pela reserva para", "set_priority": "Definir prioridade", + "set_weight": "Definir Peso", + "enable_weights": "Ativar Pesos", "priority_for_user": "Prioridade para {{userName}}", + "weights_description": "Os pesos determinam como as reuniões são distribuídas entre os anfitriões. <1>Saiba mais", + "weight_for_user": "Peso para {{userName}}", "change_priority": "alterar prioridade", "field_identifiers_as_variables": "Utilize identificadores de campo como variáveis para o seu redirecionamento de evento personalizado", "field_identifiers_as_variables_with_example": "Utilize identificadores de campo como variáveis para o seu redirecionamento de evento personalizado (ex.: {{variable}})", @@ -2381,10 +2427,12 @@ "primary": "Primário", "make_primary": "Tornar primário", "add_email": "Adicionar e-mail", + "add_emails": "Adicionar Emails", "add_email_description": "Adicione um endereço de e-mail para substituir o seu primário ou para utilizar como um e-mail alternativo nos seus tipos de evento.", "confirm_email": "Confirme o seu e-mail", "scheduler_first_name": "O primeiro nome da reserva da pessoa", "scheduler_last_name": "O último nome da reserva da pessoa", + "scheduler_name": "Nome do Agendador", "organizer_first_name": "O seu primeiro nome", "confirm_email_description": "Enviámos um e-mail para {{email}}. Clique na ligação nesse e-mail para verificar este endereço.", "send_event_details_to": "Enviar detalhes do evento para", @@ -2453,29 +2501,73 @@ "lowest_rated_members": "Membros com as reuniões com as piores classificações", "csat_score": "Pontuação CSAT", "lockedSMS": "SMS bloqueado", - "signing_up_terms": "Ao continuar, você concorda com os nossos <0>Termos e <1>Política de Privacidade.", "leave_without_assigning_anyone": "Sair sem atribuir ninguém?", "leave_without_adding_attendees": "Tem a certeza de que deseja sair deste evento sem adicionar participantes?", "no_availability_shown_to_bookers": "Se não atribuir ninguém a este evento, não será apresentada disponibilidade aos responsáveis da reserva.", "go_back_and_assign": "Voltar e atribuir", "leave_without_assigning": "Sair sem atribuir", + "signing_up_terms": "Ao continuar, você concorda com os nossos <0>Termos e <1>Política de Privacidade.", "always_show_x_days": "Sempre {{x}} dias disponíveis", "unable_to_subscribe_to_the_platform": "Ocorreu um erro ao tentar subscrever o plano Platform. Tente novamente mais tarde", "updating_oauth_client_error": "Ocorreu um erro ao atualizar o cliente OAuth. Tente novamente mais tarde", "creating_oauth_client_error": "Ocorreu um erro ao criar o cliente OAuth. Tente novamente mais tarde", + "event_type_color": "Cor do tipo de evento", + "event_type_color_description": "Isto é usado apenas para diferenciar tipos de eventos e reservas dentro da aplicação. Não é exibido para os reservadores.", "mark_as_no_show_title": "Marcar como falta de comparência", "x_marked_as_no_show": "{{x}} marcado como falta de comparência", "x_unmarked_as_no_show": "{{x}} desmarcado como falta de comparência", + "team_select_info": "triggers para todos os tipos de eventos da equipa e todos os tipos de eventos pessoais dos membros da equipa", "no_show_updated": "Estado de falta de comparência atualizado para os participantes", "email_copied": "E-mail copiado", "USER_PENDING_MEMBER_OF_THE_ORG": "O utilizador é um membro pendente da organização", "USER_ALREADY_INVITED_OR_MEMBER": "O utilizador já está convidado ou já é um membro", "USER_MEMBER_OF_OTHER_ORGANIZATION": "O utilizador é membro de uma organização da qual esta equipa não faz parte.", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "min", - "hour_short": "h", - "minute_one_short": "{{count}} min", - "hour_one_short": "{{count}} h", - "apply_to_all_event_types": "Aplicar a todos, incluindo tipos de eventos futuros", + "booking_reassigned": "A reserva foi reatribuída", + "reassign": "Reatribuir", + "reassign_to_another_rr_host": "Reatribuir a reserva a outro anfitrião disponível de round robin", + "assign_team_member": "Atribuir membro da equipa", + "override_team_member_to_assign": "Substituir o membro da equipa que deseja atribuir.", + "no_available_hosts": "Não há anfitriões disponíveis", + "reassign_round_robin_host": "Reatribuir anfitrião de round robin", + "skip_writing_to_calendar": "Não escrever no feed ICS", + "rescheduling_not_possible": "Não é possível reagendar, pois o evento expirou", + "event_expired": "Este evento expirou", + "skip_contact_creation": "Ignorar a criação de contactos se não existirem no {{appName}}", + "skip_writing_to_calendar_note": "Se o seu link ICS for apenas de leitura (por exemplo, Proton Calendar), marque a caixa acima para evitar erros. Também precisará de atualizar manualmente o seu calendário para alterações.", + "attributes": "Atributos", + "new_attribute": "Novo atributo", + "add_attributes": "Adicionar atributos", + "add_attributes_description": "Adicionar atributos aos membros da sua equipa", + "new_option": "Nova opção", + "update_profile": "Atualizar membro", + "attribute_updated_successfully": "Atributo atualizado com sucesso", + "attributes_edited_successfully": "Atributos editados com sucesso", + "attribute_meta_description": "Gerir atributos para os membros da sua equipa", + "attributes_edit_description": "Editar atributos para os membros da sua equipa", + "back_to_attributes": "Voltar aos atributos", + "delete_attribute": "Tem a certeza de que deseja eliminar esta opção?", + "delete_attribute_description": "Esta opção está atribuída a {{numberOfUsers}} membros. Eliminá-la irá removê-la dos seus perfis.", + "disable_all_emails_to_attendees": "Desativar emails padrão para os participantes relacionados com este tipo de evento", + "disable_all_emails_description": "Desativa a comunicação por email padrão relacionada com este tipo de evento, incluindo confirmações de reserva, lembretes e cancelamentos.", + "disable_all_emails_to_hosts": "Desativar emails padrão para os anfitriões relacionados com este tipo de evento", + "type_confirm_to_continue": "Digite confirmar para continuar", + "disable_email": "Desativar email", + "grant_admin_api": "Conceder acesso à API de administrador", + "revoke_admin_api": "Revogar acesso à API de administrador", + "apple_connect_atom_label": "Conectar Calendário Apple", + "apple_connect_atom_already_connected_label": "Calendário Apple Conectado", + "apple_connect_atom_loading_label": "Verificando Calendário Apple", + "google_connect_atom_label": "Conectar Calendário Google", + "google_connect_atom_already_connected_label": "Calendário Google Conectado", + "google_connect_atom_loading_label": "Verificando Calendário Google", + "outlook_connect_atom_label": "Conectar Calendário Outlook", + "outlook_connect_atom_already_connected_label": "Calendário Outlook Conectado", + "outlook_connect_atom_loading_label": "Verificando Calendário Outlook", + "booking_question_response_variables": "Variáveis de resposta às perguntas de reserva", + "managed_by_teamAdmins": "Gerido por {{teamAdmins}}", + "number_of_options": "{{count}} opções", + "reschedule_with_same_round_robin_host_title": "Reagendar com o mesmo anfitrião Round-Robin", + "reschedule_with_same_round_robin_host_description": "Os eventos reagendados serão atribuídos ao mesmo anfitrião inicialmente agendado", + "disable_input_if_prefilled": "Desativar entrada se o identificador de URL estiver pré-preenchido", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Add your new strings above here ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/ru/common.json b/apps/web/public/static/locales/ru/common.json index 1c5433ab80793b..9bf2928d4fcb19 100644 --- a/apps/web/public/static/locales/ru/common.json +++ b/apps/web/public/static/locales/ru/common.json @@ -7,16 +7,27 @@ "second_other": "{{count}} сек.", "upgrade_now": "Обновить", "accept_invitation": "Принять приглашение", + "max_characters": "Макс. символов", + "min_characters": "Мин. символов", "calcom_explained": "{{appName}} предоставляет инфраструктуру для планирования событий для каждого.", "calcom_explained_new_user": "Завершите настройку учетной записи {{appName}}. Вы в считанных шагах от решения всех своих проблем с планированием.", "have_any_questions": "Есть вопросы? Мы здесь, чтобы помочь.", "reset_password_subject": "{{appName}}: Инструкция по сбросу пароля", "verify_email_subject": "{{appName}}: подтвердите учетную запись", + "verify_email_subject_verifying_email": "{{appName}}: Подтвердите ваш email", "check_your_email": "Проверьте электронную почту", + "old_email_address": "Старый Email", + "new_email_address": "Новый Email", "verify_email_page_body": "Мы отправили письмо на адрес {{email}}. Обязательно подтвердите адрес электронной почты, чтобы обеспечить гарантированную доставку уведомлений от {{appName}} по электронной почте и в календаре.", "verify_email_banner_body": "Подтвердите адрес электронной почты для обеспечения гарантированной доставки уведомлений по электронной почте и в календаре", "verify_email_email_header": "Подтвердите свой адрес электронной почты", "verify_email_email_button": "Подтвердить эл. почту", + "cal_ai_assistant": "Cal AI Ассистент", + "verify_email_change_description": "Вы недавно запросили изменение адреса электронной почты, который вы используете для входа в ваш аккаунт {{appName}}. Пожалуйста, нажмите кнопку ниже, чтобы подтвердить ваш новый адрес электронной почты.", + "verify_email_change_success_toast": "Ваш email обновлен на {{email}}", + "verify_email_change_failure_toast": "Не удалось обновить email.", + "change_of_email": "Подтвердите ваш новый email для {{appName}}", + "change_of_email_toast": "Мы отправили ссылку для подтверждения на {{email}}. Мы обновим ваш адрес электронной почты, как только вы нажмете на эту ссылку.", "copy_somewhere_safe": "Сохраните этот ключ API в надежном месте, сервис показывает его только один раз.", "verify_email_email_body": "Подтвердите адрес электронной почты, нажав кнопку ниже.", "verify_email_by_code_email_body": "Подтвердите адрес электронной почты с помощью приведенного ниже кода.", @@ -36,6 +47,7 @@ "no_options_available": "Нет доступных вариантов", "cancellation_reason": "Причина отмены (необязательно)", "cancellation_reason_placeholder": "Укажите причину отмены подписки", + "rejection_reason_placeholder": "Почему вы отклоняете?", "rejection_reason": "Причина отказа", "rejection_reason_title": "Отказаться от бронирования?", "rejection_reason_description": "Отказаться от брони? Мы сообщим пользователю, который пытался оформить бронь. Вы можете указать причину отказа ниже.", @@ -57,6 +69,18 @@ "awaiting_payment_subject": "Ожидание оплаты: {{title}} на {{date}}", "meeting_awaiting_payment": "Ваша встреча ожидает оплаты", "dark_theme_contrast_error": "Темный цвет темы не проходит проверку на контрастность. Мы рекомендуем вам изменить этот цвет, чтобы ваши кнопки были более заметны.", + "light_theme_contrast_error": "Цвет светлой темы не проходит проверку контраста. Мы рекомендуем изменить этот цвет, чтобы ваши кнопки были более заметными.", + "event_type_color_light_theme_contrast_error": "Цвет светлой темы не проходит проверку контраста. Мы рекомендуем изменить этот цвет, чтобы цвет ваших типов событий был более заметным.", + "event_type_color_dark_theme_contrast_error": "Цвет темной темы не проходит проверку контраста. Мы рекомендуем изменить этот цвет, чтобы цвет ваших типов событий был более заметным.", + "payment_not_created_error": "Не удалось создать платеж", + "couldnt_charge_card_error": "Не удалось списать средства с карты для оплаты", + "no_available_users_found_error": "Не найдено доступных пользователей. Попробуйте выбрать другое время.", + "request_body_end_time_internal_error": "Внутренняя ошибка. В теле запроса отсутствует время окончания", + "create_calendar_event_error": "Не удалось создать событие в календаре организатора", + "update_calendar_event_error": "Не удалось обновить событие в календаре.", + "delete_calendar_event_error": "Не удалось удалить событие в календаре.", + "already_signed_up_for_this_booking_error": "Вы уже зарегистрированы на это бронирование.", + "hosts_unavailable_for_booking": "Некоторые из хостов недоступны для бронирования.", "help": "Помощь", "price": "Цена", "paid": "Оплачено", @@ -64,6 +88,8 @@ "payment": "Платеж", "missing_card_fields": "Пропущены поля карты", "pay_now": "Оплатить сейчас", + "general_prompt": "Общий запрос", + "begin_message": "Начать сообщение", "codebase_has_to_stay_opensource": "Код должен оставаться открытым исходным кодом, независимо от того, был ли он изменен или нет", "cannot_repackage_codebase": "Вы не можете переупаковывать или продавать код", "acquire_license": "Получить коммерческую лицензию для удаления этих терминов по электронной почте", @@ -81,6 +107,9 @@ "new_event_request": "Новый запрос события: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "Подтвердите или отклоните запись", "check_bookings_page_to_confirm_or_reject": "Проверьте страницу мероприятий, чтобы подтвердить или отклонить запись.", + "check_in_assistant": "Ассистент регистрации", + "check_in_assistant_description": "Совершает исходящий звонок, чтобы проверить, подходит ли запланированная встреча или нужно ли перенести.", + "create_your_own_prompt": "Создайте свой собственный запрос и используйте его для исходящего звонка.", "event_awaiting_approval": "Новое событие ждет вашего одобрения", "event_awaiting_approval_recurring": "Повторяющееся событие ждет вашего одобрения", "someone_requested_an_event": "Кто-то записался на встречу в вашем календаре.", @@ -91,7 +120,9 @@ "event_still_awaiting_approval": "Событие все еще ждет вашего подтверждения", "booking_submitted_subject": "Бронирование отправлено: {{title}}, {{date}}", "download_recording_subject": "Скачайте запись: {{title}}, {{date}}", + "download_transcript_email_subject": "Скачать стенограмму: {{title}} от {{date}}", "download_your_recording": "Скачать запись", + "download_your_transcripts": "Скачать ваши стенограммы", "your_meeting_has_been_booked": "Ваша встреча была забронирована", "event_type_has_been_rescheduled_on_time_date": "Ваше {{title}} было перенесено на {{date}}.", "event_has_been_rescheduled": "Ваше событие было перенесено.", @@ -102,6 +133,7 @@ "requested_to_reschedule_subject_attendee": "Требуется перенести бронирование: забронируйте новое время для {{eventType}} с {{name}}", "hi_user_name": "Привет {{name}}", "ics_event_title": "{{eventType}} с {{name}}", + "please_book_a_time_sometime_later": "Упс, мы не смогли вас соединить в этот раз. Пожалуйста, запланируйте звонок на будущее.", "new_event_subject": "Новое событие: {{attendeeName}} - {{date}} - {{eventType}}", "join_by_entrypoint": "Присоединиться с {{entryPoint}}", "notes": "Примечания", @@ -113,26 +145,35 @@ "invitee_timezone": "Часовой пояс приглашенного", "time_left": "Осталось времени", "event_type": "Тип события", + "duplicate_event_type": "Дублировать тип события", "enter_meeting": "Войти в встречу", "video_call_provider": "Провайдер видеозвонков", "meeting_id": "ID встречи", "meeting_password": "Пароль встречи", "meeting_url": "URL встречи", + "meeting_url_not_found": "URL встречи не найден", + "token_not_found": "Токен не найден", + "some_other_host_already_accepted_the_meeting": "Другой хост уже принял встречу. Вы все еще хотите присоединиться? <1>Продолжить к встрече", "meeting_request_rejected": "Ваш запрос на встречу отклонен", "rejected_event_type_with_organizer": "Отклонено: {{eventType}} с {{organizer}} на {{date}}", "hi": "Привет", "join_team": "Вступить в команду", "manage_this_team": "Управление этой командой", "team_info": "Информация о команде", + "join_meeting": "Присоединиться к встрече", "request_another_invitation_email": "Если вы не хотите использовать {{toEmail}} как ваш {{appName}} адрес электронной почты или уже есть аккаунт {{appName}}, пожалуйста, запросите другое приглашение на это письмо.", "you_have_been_invited": "Вас пригласили присоединиться к команде {{teamName}}", "user_invited_you": "{{user}} пригласил вас в команду {{team}} {{entity}} в {{appName}}", + "user_invited_you_to_subteam": "{{user}} пригласил вас присоединиться к команде {{team}} организации {{parentTeamName}} на {{appName}}", "hidden_team_member_title": "В этой команде вы скрытый пользователь", "hidden_team_member_message": "Ваше место не оплачено. Перейдите на аккаунт PRO или свяжитесь с руководителем команды, чтобы сообщить ему, что он может оплатить ваше место.", "hidden_team_owner_message": "Чтобы работать с командами, необходим аккаунт Pro. До перехода на этот тариф Вы остаетесь скрытым пользователем.", "link_expires": "p.s. Это истекает через {{expiresIn}} часов.", "upgrade_to_per_seat": "Перейти на оплату из расчета за количество мест", "seat_options_doesnt_support_confirmation": "При использовании обязательного подтверждения параметр «Места» не поддерживается", + "multilocation_doesnt_support_seats": "Множественные локации не поддерживают опцию мест", + "no_show_fee_doesnt_support_seats": "Плата за неявку не поддерживает опцию мест", + "seats_option_doesnt_support_multi_location": "Опция мест не поддерживает множественные локации", "team_upgrade_seats_details": "В вашей команде {{memberCount}} пользователей; из них не оплачено еще {{unpaidCount}} мест. При оплате ${{seatPrice}} в месяц за место общая сумма к оплате составляет ${{totalCost}} в месяц.", "team_upgrade_banner_description": "Спасибо, что попробовали наш новый тариф Team. Для работы с командой «{{teamName}}» необходимо изменить тариф.", "upgrade_banner_action": "Изменить", @@ -226,8 +267,10 @@ "create_account": "Создать аккаунт", "confirm_password": "Подтвердите пароль", "reset_your_password": "Задайте новый пароль. Инструкции о том, как это сделать, мы отправили на ваш адрес электронной почты.", + "org_banner_instructions": "Пожалуйста, загрузите изображение шириной {{width}} и высотой {{height}}.", "email_change": "Войдите, используя новый адрес электронной почты и пароль.", "create_your_account": "Создайте аккаунт", + "create_your_calcom_account": "Создайте свой аккаунт на Cal.com", "sign_up": "Регистрация", "youve_been_logged_out": "Вы вышли из аккаунта", "hope_to_see_you_soon": "Мы надеемся скоро увидеть вас снова!", @@ -265,6 +308,9 @@ "nearly_there_instructions": "И последнее: добавьте краткую информацию о себе и свою фотографию; так людям будет проще понять, с кем они бронируют встречу.", "set_availability_instructions": "Определите диапазон времени, в который вы обычно доступны. В дальнейшем можно будет добавить ещё диапазоны и назначить их разным календарям.", "set_availability": "Задайте время в которое вы доступны", + "set_availbility_description": "Установите расписание для времени, когда вы хотите быть доступными для бронирования.", + "share_a_link_or_embed": "Поделитесь ссылкой или встраивайте", + "share_a_link_or_embed_description": "Поделитесь своей ссылкой {{appName}} или встраивайте на своем сайте.", "availability_settings": "Настройки доступности", "continue_without_calendar": "Продолжить без подключения календаря", "continue_with": "Продолжить с {{appName}}", @@ -280,6 +326,7 @@ "welcome_to_calcom": "Добро пожаловать в {{appName}}", "welcome_instructions": "Скажите как вас зовут и в каком вы часовом поясе. Эту информацию потом можно будет изменить.", "connect_caldav": "Подключение к CalDav (бета)", + "connect_ics_feed": "Подключиться к ICS-ленте", "connect": "Подключить", "try_for_free": "Попробовать бесплатно", "create_booking_link_with_calcom": "Создайте свою собственную ссылку бронирования на {{appName}}", @@ -293,8 +340,10 @@ "add_another_calendar": "Добавить другой календарь", "other": "Прочее", "email_sign_in_subject": "Ссылка для входа в {{appName}}", + "round_robin_emailed_you_and_attendees": "Вы встречаетесь с {{user}}. Мы отправили всем письмо с приглашением в календарь с деталями.", "emailed_you_and_attendees": "Мы отправили вам и другим участникам приглашение в календарь со всеми деталями.", "emailed_you_and_attendees_recurring": "Мы отправили вам и другим участникам в календарь приглашение на первое из этой серии повторяющихся событий.", + "round_robin_emailed_you_and_attendees_recurring": "Вы встречаетесь с {{user}}. Мы отправили всем электронное письмо с приглашением в календарь с деталями для первого из этих повторяющихся событий.", "emailed_you_and_any_other_attendees": "Вы и другие участники были уведомлены по электронной почте.", "needs_to_be_confirmed_or_rejected": "Ваша встреча будет подтверждена или отклонена.", "needs_to_be_confirmed_or_rejected_recurring": "Ваша повторяющаяся встреча все еще должна быть подтверждена или отклонена.", @@ -418,9 +467,11 @@ "browse_api_documentation": "Посмотрите нашу документацию API", "leverage_our_api": "Используйте наш API для возможности полного управления и настройки.", "create_webhook": "Создать веб-хук", + "instant_meeting": "Мгновенная встреча создана", "booking_cancelled": "Бронирование отменено", "booking_rescheduled": "Бронирование изменено", "recording_ready": "Ссылка для скачивания записи готова", + "recording_transcription_generated": "Транскрипция создана", "booking_created": "Бронирование создано", "booking_rejected": "Бронирование отклонено", "booking_requested": "Запрос на бронирование отправлен", @@ -428,6 +479,7 @@ "meeting_ended": "Встреча завершилась", "form_submitted": "Форма отправлена", "booking_paid": "Бронирование оплачено", + "booking_no_show_updated": "Обновление статуса отсутствия на встрече", "event_triggers": "Триггеры событий", "subscriber_url": "URL-адрес подписчика", "create_new_webhook": "Создать новый веб-хук", @@ -532,6 +584,7 @@ "enter_number_between_range": "Введите число от 1 до {{maxOccurences}}", "email_address": "Адрес электронной почты", "enter_valid_email": "Укажите допустимый адрес электронной почты", + "please_schedule_future_call": "Пожалуйста, запланируйте будущий звонок, если мы не будем доступны через {{seconds}} секунд", "location": "Местоположение", "address": "Адрес", "enter_address": "Введите адрес", @@ -584,6 +637,7 @@ "number_selected": "выбрано: {{count}}", "owner": "Владелец", "admin": "Админ", + "admin_api": "Admin API", "administrator_user": "Администратор", "lets_create_first_administrator_user": "Давайте создадим первого пользователя с правами администратора.", "admin_user_created": "Настройка администратора", @@ -591,6 +645,7 @@ "new_member": "Новый участник", "invite": "Пригласить", "add_team_members": "Добавление участников команды", + "add_org_members": "Добавить участников", "add_team_members_description": "Пригласите других пользователей в свою команду", "add_team_member": "Добавить участника команды", "invite_new_member": "Пригласить нового участника команды", @@ -605,6 +660,7 @@ "hide_book_a_team_member_description": "Скрыть кнопку «Забронировать встречу с одним из членов команды» с ваших публичных страниц.", "danger_zone": "Опасная зона", "account_deletion_cannot_be_undone": "Внимание! Удаление учетной записи нельзя отменить.", + "team_deletion_cannot_be_undone": "Будьте осторожны. Удаление команды необратимо.", "back": "Назад", "cancel": "Отмена", "cancel_all_remaining": "Отменить все оставшиеся", @@ -640,6 +696,7 @@ "user_from_team": "{{user}} из {{team}}", "preview": "Предпросмотр", "link_copied": "Ссылка скопирована!", + "copied": "Скопировано!", "private_link_copied": "Защищенная ссылка скопирована!", "link_shared": "Ссылка отправлена!", "title": "Заголовок", @@ -656,7 +713,9 @@ "default_duration_no_options": "Пожалуйста, выберите сначала доступную продолжительность", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "мин.", + "use_cal_ai_to_make_call_description": "Используйте Cal.ai для получения номера телефона с поддержкой ИИ или для звонков гостям.", "round_robin": "По кругу", "round_robin_description": "Цикл встреч между несколькими членами команды.", "managed_event": "Управляемое событие", @@ -668,9 +727,12 @@ "add_members": "Добавить участников...", "no_assigned_members": "Нет назначенных участников", "assigned_to": "Назначено участнику", + "you_must_be_logged_in_to": "Вы должны войти в систему, чтобы {{url}}", "start_assigning_members_above": "Начните назначать участников", "locked_fields_admin_description": "Участники не смогут это редактировать", + "unlocked_fields_admin_description": "Участники могут редактировать", "locked_fields_member_description": "Эта опция заблокирована администратором команды", + "unlocked_fields_member_description": "Разблокировано администратором команды", "url": "URL", "hidden": "Скрытый", "readonly": "Только для чтения", @@ -717,6 +779,8 @@ "brand_color": "Цвет бренда", "light_brand_color": "Цвет бренда (светлая тема)", "dark_brand_color": "Цвет бренда (темная тема)", + "light_event_type_color": "Цвет типа события (светлая тема)", + "dark_event_type_color": "Цвет типа события (темная тема)", "file_not_named": "Файл должен называться [idOrSlug]/[user]", "create_team": "Создать команду", "name": "Имя", @@ -772,6 +836,10 @@ "additional_input_description": "Необходимо ввести в планировщик дополнительную информацию до подтверждения бронирования", "label": "Название", "placeholder": "Placeholder", + "display_add_to_calendar_organizer": "Используйте электронное письмо \"Добавить в календарь\" в качестве организатора", + "display_email_as_organizer": "Мы покажем этот адрес электронной почты как организатора и отправим сюда подтверждающие письма.", + "if_enabled_email_address_as_organizer": "Если включено, мы покажем адрес электронной почты из вашего \"Добавить в календарь\" как организатора и отправим туда подтверждающие письма.", + "reconnect_calendar_to_use": "Обратите внимание, что вам может потребоваться отключить и затем повторно подключить вашу учетную запись 'Добавить в календарь', чтобы использовать эту функцию.", "type": "Тип", "edit": "Изменить", "add_input": "Добавить вопрос", @@ -780,6 +848,9 @@ "requires_confirmation_description": "Необходимо подвердить бронирование вручную, прежде чем оно будет передано интеграциям и будет отправлено письмо с подтверждением.", "recurring_event": "Повторяющееся событие", "recurring_event_description": "Пользователи могут подписываться на повторяющиеся события", + "cannot_be_used_with_paid_event_types": "Это не может быть использовано с платными типами событий", + "warning_payment_instant_meeting_event": "Мгновенные встречи пока не поддерживаются для повторяющихся событий и платежных приложений", + "warning_instant_meeting_experimental": "Экспериментально: Мгновенные встречи в настоящее время находятся на стадии эксперимента.", "starting": "Начало", "disable_guests": "Отключить участников", "disable_guests_description": "Отключить добавление дополнительных участников к бронированию.", @@ -788,6 +859,7 @@ "private_link_label": "Защищенная ссылка", "private_link_hint": "Защищенная ссылка повторно генерируется после каждого использования", "copy_private_link": "Копировать защищенную ссылку", + "copy_private_link_to_event": "Скопировать приватную ссылку на событие", "private_link_description": "Генерировать защищенный URL-адрес, при отправке которого ваше имя пользователя в {{appName}} остается скрытым", "invitees_can_schedule": "Участники могут бронировать встречи", "date_range": "Диапазон дат", @@ -847,6 +919,7 @@ "next_step": "Пропустить шаг", "prev_step": "Предыдущий шаг", "install": "Установить", + "start_paid_trial": "Начать бесплатный пробный период", "installed": "Установлено", "active_install_one": "Активные установки: {{count}}", "active_install_other": "Активные установки: {{count}}", @@ -861,6 +934,7 @@ "toggle_calendars_conflict": "Переключайте календари для проверки на наличие конфликтов, чтобы избежать двойного бронирования.", "connect_additional_calendar": "Подключить дополнительный календарь", "calendar_updated_successfully": "Календарь обновлен", + "check_here": "Проверьте здесь", "conferencing": "Конференции", "calendar": "Календарь", "payments": "Платежи", @@ -938,6 +1012,8 @@ "verify_wallet": "Подтвердить кошелек", "create_events_on": "Создавать события в календаре:", "enterprise_license": "Это функция корпоративного тарифного плана", + "enterprise_license_locally": "Вы можете протестировать эту функцию локально, но не в производственной среде.", + "enterprise_license_sales": "Чтобы перейти на корпоративную версию, свяжитесь с нашей командой продаж. Если у вас уже есть лицензионный ключ, обратитесь за помощью по адресу support@cal.com.", "missing_license": "Отсутствует лицензия", "next_steps": "Следующие шаги", "acquire_commercial_license": "Приобрести коммерческую лицензию", @@ -979,6 +1055,7 @@ "seats_nearly_full": "Свободных мест почти не осталось", "seats_half_full": "Свободные места быстро разбирают", "number_of_seats": "Количество мест на одну бронь", + "set_instant_meeting_expiry_time_offset_description": "Установите окно присоединения к встрече (в секундах): временной интервал в секундах, в течение которого организатор может присоединиться и начать встречу. После этого периода URL для присоединения к встрече истечет.", "enter_number_of_seats": "Укажите количество мест", "you_can_manage_your_schedules": "Расписаниями можно управлять на странице «Доступность».", "booking_full": "Мест больше нет", @@ -1030,15 +1107,21 @@ "user_impersonation_heading": "Вход от имени пользователя", "user_impersonation_description": "Позволяет нашей службе поддержки временно входить в систему от вашего имени, чтобы быстро решать любые проблемы, о которых вы нам сообщаете.", "team_impersonation_description": "Позволяет участникам и администраторам вашей команды временно входить в систему под вашим именем.", + "cal_signup_description": "Бесплатно для индивидуальных пользователей. Командные планы для совместной работы.", + "make_org_private": "Сделать организацию приватной", + "make_org_private_description": "Члены вашей организации не смогут видеть других членов организации, когда эта опция включена.", "make_team_private": "Сделать команду закрытой", "make_team_private_description": "Если эта опция включена, участники вашей команды не смогут видеть других участников команды.", "you_cannot_see_team_members": "Вы не можете видеть список участников закрытой команды.", + "you_cannot_see_teams_of_org": "Вы не можете видеть команды приватной организации.", "allow_booker_to_select_duration": "Разрешить пользователю, оформляющему бронирование, выбирать длительность", "impersonate_user_tip": "Все варианты использования этой функции проверяются.", "impersonating_user_warning": "Олицетворение пользователя \"{{user}}\".", "impersonating_stop_instructions": "Нажмите здесь, чтобы закончить", "event_location_changed": "Обновлено – местоположение вашего события изменено", + "new_guests_added": "Добавлено - Новые гости добавлены к вашему событию", "location_changed_event_type_subject": "Местоположение изменено: {{eventType}} с {{name}}, {{date}}", + "guests_added_event_type_subject": "Гости добавлены: {{eventType}} с {{name}} на {{date}}", "current_location": "Текущее местоположение", "new_location": "Новое местоположение", "session": "Сеанс", @@ -1050,7 +1133,11 @@ "set_location": "Установить местоположение", "update_location": "Обновить местоположение", "location_updated": "Местоположение обновлено", + "guests_added": "Гости добавлены", + "unable_to_add_guests": "Не удалось добавить гостей", "email_validation_error": "Недопустимый адрес электронной почты", + "emails_must_be_unique_valid": "Электронные адреса должны быть уникальными и действительными", + "url_validation_error": "Это не похоже на URL", "place_where_cal_widget_appear": "Разместите этот код в той части HTML, где нужно отобразить виджет {{appName}}.", "create_update_react_component": "Создайте новый компонент React или обновите существующий, как показано ниже.", "copy_code": "Копировать код", @@ -1067,9 +1154,12 @@ "make_setup_instructions": "<0>Перейдите по <1><0>пригласительной ссылке Make и установите приложение Cal.com.<1>Войдите в аккаунт Make и создайте новый сценарий.<2>Выберите Cal.com в качестве приложения-триггера. Также выберите событие-триггер.<3>Выберите свою учетную запись и введите уникальный ключ API.<4>Проверьте триггер.<5>Готово!", "install_zapier_app": "Сначала установите приложение Zapier из App Store.", "install_make_app": "Сначала установите приложение Make из App Store.", + "app_not_installed": "Приложение не установлено", + "visit_our_app_store": "Извините, это приложение не установлено в вашей учетной записи. Пожалуйста, посетите наш магазин приложений, чтобы изучить и открыть для себя это и другие отличные приложения.", "connect_apple_server": "Подключиться к серверу Apple", "calendar_url": "URL-адрес календаря", "apple_server_generate_password": "Сгенерируйте пароль для программы, чтобы использовать его в {{appName}}, по адресу", + "unable_to_add_apple_calendar": "Не удалось добавить эту учетную запись Apple Calendar. Пожалуйста, убедитесь, что вы используете пароль, специфичный для приложения, а не пароль от учетной записи.", "credentials_stored_encrypted": "Ваши учетные данные будут сохранены в зашифрованном виде.", "it_stored_encrypted": "Он будет храниться в зашифрованном виде.", "go_to_app_store": "Перейти в App Store", @@ -1089,6 +1179,7 @@ "developer_documentation": "Документация для разработчиков", "get_in_touch": "Связаться с нами", "contact_support": "Обратиться в службу поддержки", + "premium_support": "Премиум поддержка", "community_support": "Поддержка со стороны сообщества", "feedback": "Отзыв", "submitted_feedback": "Спасибо за отзыв!", @@ -1139,6 +1230,8 @@ "day_timeUnit": "дн.", "hour_timeUnit": "ч.", "minute_timeUnit": "мин.", + "minute_short": "м", + "hour_short": "ч", "new_workflow_heading": "Создайте свой первый рабочий процесс", "new_workflow_description": "Рабочие процессы позволяют автоматизировать отправку напоминаний и уведомлений.", "active_on": "Активен с", @@ -1166,6 +1259,8 @@ "may_require_confirmation": "Может потребоваться подтверждение", "nr_event_type_one": "Типы событий: {{count}}", "nr_event_type_other": "Типы событий: {{count}}", + "count_team_one": "{{count}} команда", + "count_team_other": "{{count}} команд", "add_action": "Добавить действие", "set_whereby_link": "Ссылка на Whereby", "invalid_whereby_link": "Укажите допустимую ссылку на Whereby", @@ -1186,11 +1281,14 @@ "reminder": "Напоминание", "rescheduled": "Перенесено", "completed": "Завершено", + "rating": "Рейтинг", "reminder_email": "Напоминание: {{eventType}} с {{name}} {{date}}", "not_triggering_existing_bookings": "Не работает для уже созданных бронирований, так как при бронировании события пользователь должен будет ввести номер телефона.", "minute_one": "{{count}} минута", + "minute_one_short": "{{count}}м", "minute_other": "{{count}} минут(ы)", "hour_one": "{{count}} час", + "hour_one_short": "{{count}}ч", "hour_other": "{{count}} часа(ов)", "invalid_input": "Недопустимые данные", "broken_video_action": "Не удалось добавить в ваше запланированное событие ссылку на встречу на <1>{{location}}. Свяжитесь с участниками или обновите событие в календаре, добавив нужную информацию. Вы можете <3> изменить место проведения для типа события или попробовать <5>удалить и снова добавить приложение.", @@ -1202,7 +1300,12 @@ "problem_updating_calendar": "Не удалось обновить ваш календарь", "active_on_event_types_one": "Работает для {{count}} типа событий", "active_on_event_types_other": "Работает для {{count}} типов событий", + "active_on_teams_one": "Активен в {{count}} команде", + "active_on_teams_other": "Активен в {{count}} командах", + "active_on_all_event_types": "Активен для всех типов событий", + "active_on_all_teams": "Активен во всех командах", "no_active_event_types": "Нет активных типов событий", + "no_active_teams": "Нет активных команд", "new_seat_subject": "{{eventType}}, {{date}}: новый участник {{name}}", "new_seat_title": "Кто-то добавился к событию", "variable": "Переменная", @@ -1220,6 +1323,7 @@ "upgrade": "Перейти", "upgrade_to_access_recordings_title": "Перейдите на другой тарифный план для доступа к записям", "upgrade_to_access_recordings_description": "Записи поддерживаются только в тарифном плане Teams. Перейдите на этот тарифный план, чтобы записывать созвоны", + "upgrade_to_cal_ai_phone_number_description": "Обновитесь до Enterprise, чтобы получить номер телефона AI-агента, который может звонить гостям для назначения звонков", "recordings_are_part_of_the_teams_plan": "Записи поддерживаются в тарифном плане Teams", "team_feature_teams": "Эта функция доступна в тарифном плане Team. Перейдите на тариф Team, чтобы видеть доступность участников команды.", "team_feature_workflows": "Эта функция доступна в тарифном плане Team. Перейдите на тариф Team, чтобы использовать рабочие процессы для автоматизации уведомлений и напоминаний о событиях.", @@ -1252,6 +1356,7 @@ "default_calendar_selected": "Календарь по умолчанию", "hide_from_profile": "Скрыть в профиле", "event_setup_tab_title": "Настройка события", + "availability_not_found_in_schedule_error": "Доступность не найдена в расписании", "event_limit_tab_title": "Лимиты", "event_limit_tab_description": "Как часто можно забронировать для вас событие", "event_advanced_tab_description": "Настройки календаря и ещё...", @@ -1266,12 +1371,16 @@ "2fa_required": "Требуется двухфакторная авторизация", "incorrect_2fa": "Неверный код двухфакторной авторизации", "which_event_type_apply": "К какому типу событий применить?", + "apply_to_all_event_types": "Применить ко всем, включая будущие типы событий", + "apply_to_all_teams": "Применить ко всем типам событий команды и пользователя", + "which_team_apply": "К какой команде это будет применено?", "no_workflows_description": "С помощью рабочих процессов можно с легкостью автоматизировать отправку уведомлений и напоминаний, формируя процессы вокруг событий.", "timeformat_profile_hint": "Это внутренняя настройка. Для вас и других пользователей, оформляющих бронирование, отображение времени на публичных страницах бронирования не изменится.", "create_workflow": "Создать рабочий процесс", "do_this": "Сделать", "turn_off": "Выключить", "turn_on": "Включить", + "cancelled_bookings_cannot_be_rescheduled": "Отмененные бронирования не могут быть перенесены", "settings_updated_successfully": "Настройки успешно обновлены", "error_updating_settings": "Ошибка при обновлении настроек", "personal_cal_url": "URL-адрес моего персонального {{appName}}", @@ -1295,6 +1404,7 @@ "customize_your_brand_colors": "Настройте фирменный цвет для страницы бронирования.", "pro": "Pro", "removes_cal_branding": "Тарифный план без логотипов и надписей {{appName}}, например, без «Powered by {{appName}}».", + "instant_meeting_with_title": "Мгновенная встреча с {{name}}", "profile_picture": "Фото профиля", "upload": "Загрузить", "add_profile_photo": "Добавить фото профиля", @@ -1349,7 +1459,9 @@ "add_dynamic_variables": "Добавить переменные с динамическим текстом", "event_name_info": "Название типа события", "event_date_info": "Дата события", + "event_duration_info": "Продолжительность события", "event_time_info": "Время начала события", + "event_type_not_found": "Тип события не найден", "location_variable": "Местоположение", "location_info": "Место проведения события", "additional_notes_variable": "Дополнительная информация", @@ -1362,7 +1474,12 @@ "download_responses_description": "Скачать все ответы пользователей, заполнивших форму, в формате CSV.", "download": "Скачать", "download_recording": "Скачать запись", + "transcription_enabled": "Транскрипции теперь включены", + "transcription_stopped": "Транскрипции теперь остановлены", + "download_transcript": "Скачать транскрипт", "recording_from_your_recent_call": "Запись вашего недавнего созвона в {{appName}} готова для скачивания", + "transcript_from_previous_call": "Транскрипт вашего недавнего звонка в {{appName}} готов к скачиванию. Ссылки действительны только 1 час", + "link_valid_for_12_hrs": "Примечание: Ссылка для скачивания действительна только 12 часов. Вы можете создать новую ссылку для скачивания, следуя инструкциям <1>здесь.", "create_your_first_form": "Создайте первую форму", "create_your_first_form_description": "Формы маршрутизации позволяют задавать пользователям уточняющие вопросы, чтобы перенаправлять их к соответствующему лицу или типу события.", "create_your_first_webhook": "Создайте свой первый вебхук", @@ -1392,10 +1509,12 @@ "slot_length": "Величина интервала", "booking_appearance": "Внешний вид страницы бронирования", "appearance_team_description": "Настройка внешнего вида страниц бронирования для вашей команды", + "appearance_org_description": "Управляйте настройками внешнего вида бронирования вашей организации", "only_owner_change": "Вносить изменения в забронированные события команды может только ее владелец ", "team_disable_cal_branding_description": "Скрыть брендинг, связанный с {{appName}}, например «Powered by {{appName}}»", "invited_by_team": "{{teamName}} приглашает вас присоединиться к команде с ролью «{{role}}»", "token_invalid_expired": "Токен недействителен или просрочен.", + "view_booking": "Просмотреть бронирование", "exchange_add": "Подключиться к Microsoft Exchange", "exchange_authentication": "Способ авторизации", "exchange_authentication_standard": "Базовая авторизация", @@ -1413,6 +1532,7 @@ "routing_forms_description": "Создавайте формы, чтобы направлять участников к нужному сотруднику", "routing_forms_send_email_owner": "Отправляйте письма владельцу", "routing_forms_send_email_owner_description": "Отправляйте владельцу формы электронное письмо, когда пользователь ее заполняет", + "routing_forms_send_email_to": "Отправить письмо на", "add_new_form": "Добавить новую форму", "add_new_team_form": "Добавить новую форму в команду", "create_your_first_route": "Создайте первый маршрут", @@ -1447,6 +1567,7 @@ "password_updated": "Пароль обновлен.", "pending_payment": "Ожидает оплаты", "pending_invites": "Приглашения, ожидающие ответа", + "pending_organization_invites": "Ожидающие приглашения в организацию", "not_on_cal": "Не является пользователем {{appName}}", "no_calendar_installed": "Нет установленных календарей", "no_calendar_installed_description": "Вы еще не подключили ни один календарь", @@ -1458,6 +1579,8 @@ "report_app": "Пожаловаться на приложение", "limit_booking_frequency": "Ограничивать периодичность бронирования", "limit_booking_frequency_description": "Ограничивать количество бронирований для данного типа событий", + "only_show_first_available_slot": "Показывать только первый доступный слот каждого дня", + "only_show_first_available_slot_description": "Это ограничит вашу доступность для этого типа событий одним слотом в день, запланированным на самое раннее доступное время.", "limit_total_booking_duration": "Ограничить общую продолжительность забронированных событий", "limit_total_booking_duration_description": "Ограничить общую продолжительность забронированных событий данного типа", "add_limit": "Добавить ограничение", @@ -1497,6 +1620,7 @@ "how_long_after": "Спустя какое время после окончания события?", "no_available_slots": "Нет доступных интервалов", "time_available": "Доступное время", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Не можете найти подходящее приложение для видеоконференций? Посетите наш <1>App Store.", "install_new_calendar_app": "Установить новое приложение календаря", "make_phone_number_required": "Сделать номер телефона обязательным для бронирования", "new_event_type_availability": "{{eventTypeTitle}} | Доступность", @@ -1524,10 +1648,14 @@ "your_org_disbanded_successfully": "Ваша организация расформирована", "error_creating_team": "Ошибка при создании команды", "you": "Вы", + "or_continue_with": "Или продолжите с", "resend_email": "Отправить письмо еще раз", "member_already_invited": "Участник уже приглашен", "already_in_use_error": "Имя пользователя уже используется", "enter_email_or_username": "Введите адрес электронной почты или имя пользователя", + "enter_email": "Введите email", + "enter_emails": "Введите email-адреса", + "too_many_invites": "Вы можете пригласить не более {{nbUsers}} пользователей одновременно.", "team_name_taken": "Это название уже занято", "must_enter_team_name": "Необходимо ввести название команды", "team_url_required": "Необходимо ввести URL-адрес команды", @@ -1540,6 +1668,7 @@ "attendee_email_info": "Электронная почта участника, на которого оформляется бронирование", "kbar_search_placeholder": "Введите команду или начните поиск...", "invalid_credential": "Похоже, разрешение истекло или было отозвано. Необходима переустановка.", + "invalid_credential_action": "Переустановите приложение", "reschedule_reason": "Причина переноса", "choose_common_schedule_team_event": "Выберите общее расписание", "choose_common_schedule_team_event_description": "Позволяет организаторам использовать общее расписание. Если общее расписание отключено, то для каждого организатора бронирование выполняется в соответствии с его индивидуальным расписанием по умолчанию.", @@ -1553,6 +1682,8 @@ "test_routing": "Проверить машрутизацию", "payment_app_disabled": "Администратор отключил платёжное приложение", "edit_event_type": "Редактировать тип мероприятия", + "only_admin_can_see_members_of_org": "Эта организация является частной, и только администратор или владелец организации может просматривать её участников.", + "only_admin_can_manage_sso_org": "Только администратор или владелец организации может управлять настройками SSO", "collective_scheduling": "Совместное планирование", "make_it_easy_to_book": "Оформляйте бронирование для команды, когда все пользователи доступны. Теперь это несложно.", "find_the_best_person": "Выбирайте наиболее подходящего сотрудника из команды в порядке очередности.", @@ -1607,10 +1738,12 @@ "individual": "Пользователь", "all_bookings_filter_label": "Все бронирования", "all_users_filter_label": "Все пользователи", + "all_event_types_filter_label": "Все типы событий", "your_bookings_filter_label": "Ваши бронирования", "meeting_url_variable": "URL-адрес встречи", "meeting_url_info": "Url-адрес мероприятия / встречи / конференции", "date_overrides": "Переопределение дат", + "date_overrides_delete_on_date": "Удалить переопределения даты на {{date}}", "date_overrides_subtitle": "Добавляйте даты, в которые вы свободны не как обычно.", "date_overrides_info": "Переопределения дат автоматически архивируются по прошествии даты", "date_overrides_dialog_which_hours": "В какие часы вы свободны?", @@ -1652,6 +1785,7 @@ "new_attendee": "Новый участник", "awaiting_approval": "Ожидает одобрения", "requires_google_calendar": "Для этого приложения необходимо подключение к Google Календарю", + "event_type_requires_google_calendar": "Для типа этого события требуется Google Календарь, чтобы Meet работал. Подключите его <1>здесь.", "connected_google_calendar": "Вы подключили аккаунт Google Календаря.", "using_meet_requires_calendar": "Чтобы использовать Google Meet, требуется подключение к Google Календарю", "continue_to_install_google_calendar": "Продолжить установку Google Календаря", @@ -1684,6 +1818,7 @@ "configure": "Настроить", "sso_configuration": "Единый вход", "sso_configuration_description": "Настройте единый вход на основе SAML или OIDC и разрешите участникам команды входить с помощью поставщика удостоверений", + "sso_configuration_description_orgs": "Настройте SAML/OIDC SSO и позвольте членам организации входить в систему с помощью провайдера идентификации", "sso_oidc_heading": "Единый вход на основе OIDC", "sso_oidc_description": "Настройте единый вход на основе OIDC с использованием поставщика удостоверений на ваш выбор.", "sso_oidc_configuration_title": "Конфигурация OIDC", @@ -1703,9 +1838,11 @@ "organizer_timezone": "Часовой пояс организатора", "email_user_cta": "Посмотреть приглашение", "email_no_user_invite_heading_team": "Вас пригласили в команду {{appName}}", + "email_no_user_invite_heading_subteam": "Вас пригласили присоединиться к команде организации {{parentTeamName}}", "email_no_user_invite_heading_org": "Вас пригласили в организацию {{appName}}", "email_no_user_invite_subheading": "{{invitedBy}} пригласил(-а) вас в команду в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.", "email_user_invite_subheading_team": "{{invitedBy}} пригласил(а) вас в команду в `{{teamName}}` в приложении {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.", + "email_user_invite_subheading_subteam": "{{invitedBy}} пригласил вас присоединиться к команде {{teamName}} в их организации {{parentTeamName}} на {{appName}}. {{appName}} — это планировщик событий, который позволяет вам и вашей команде назначать встречи без бесконечной переписки по email.", "email_user_invite_subheading_org": "{{invitedBy}} пригласил(а) вас в организацию `{{teamName}}` в {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого вы и ваша организация можете планировать встречи без утомительной переписки по электронной почте.", "email_no_user_invite_steps_intro": "Всего несколько шагов — и вы сможете оперативно и без стресса планировать встречи в рамках вашей {{entity}}.", "email_no_user_step_one": "Выберите имя пользователя", @@ -1822,7 +1959,15 @@ "requires_at_least_one_schedule": "У вас должно быть по крайней мере одно расписание", "default_conferencing_bulk_description": "Обновить местоположение для выбранных типов событий", "locked_for_members": "Заблокировано для участников", + "unlocked_for_members": "Разблокировано для участников", "apps_locked_for_members_description": "Участники смогут видеть активные приложения, но не смогут редактировать их настройки", + "apps_unlocked_for_members_description": "Участники смогут видеть активные приложения и редактировать любые настройки приложений", + "apps_locked_by_team_admins_description": "Вы сможете видеть активные приложения, но не сможете редактировать настройки приложений", + "apps_unlocked_by_team_admins_description": "Вы сможете видеть активные приложения и редактировать любые настройки приложений", + "workflows_locked_for_members_description": "Участники не могут добавлять свои личные рабочие процессы к этому типу событий. Участники смогут видеть активные командные рабочие процессы, но не смогут редактировать настройки рабочих процессов.", + "workflows_unlocked_for_members_description": "Участники смогут добавлять свои личные рабочие процессы к этому типу событий. Участники смогут видеть активные рабочие процессы команды, но не смогут изменять настройки любых рабочих процессов.", + "workflows_locked_by_team_admins_description": "Вы сможете видеть активные рабочие процессы команды, но не сможете изменять настройки любых рабочих процессов или добавлять свои личные рабочие процессы к этому типу событий.", + "workflows_unlocked_by_team_admins_description": "Вы сможете включать/отключать личные рабочие процессы для этого типа событий. Вы сможете видеть активные рабочие процессы команды, но не сможете изменять настройки любых командных рабочих процессов.", "locked_by_team_admin": "Заблокировано администратором команды", "app_not_connected": "Вы не подключили аккаунт {{appName}}.", "connect_now": "Подключить", @@ -1836,7 +1981,10 @@ "review_event_type": "Пересмотреть тип события", "looking_for_more_analytics": "Нужно больше аналитики?", "looking_for_more_insights": "Нужно больше Insights?", + "filters": "Фильтры", "add_filter": "Добавить фильтр", + "remove_filters": "Очистить все фильтры", + "email_verified": "Электронная почта подтверждена", "select_user": "Выбрать пользователя", "select_event_type": "Выбрать тип события", "select_date_range": "Выбрать диапазон дат", @@ -1927,18 +2075,23 @@ "connect_google_workspace": "Подключить Google Workspace", "google_workspace_admin_tooltip": "Эту функцию может использовать только администратор Workspace", "first_event_type_webhook_description": "Создайте первый вебхук для этого типа событий", + "create_instant_meeting_webhook_description": "Создайте свой первый вебхук с триггером 'Создано мгновенное собрание' для этого типа событий", "install_app_on": "Установить приложение в", "create_for": "Создать для", "currency": "Валюта", "organization_banner_description": "Создавайте рабочие среды, в рамках которых ваши команды смогут создавать общие приложения, рабочие процессы и типы событий с назначением участников по очереди и коллективным планированием.", "organization_banner_title": "Управляйте организациями с несколькими командами", "set_up_your_organization": "Настройка профиля организации", + "set_up_your_platform_organization": "Настройте свою платформу", "organizations_description": "Организация — это общая рабочая среда, в которой команды могут создавать общие типы событий, приложения, рабочие процессы и многое другое.", + "platform_organization_description": "Платформа Cal.com позволяет легко интегрировать планирование в ваше приложение с помощью API и атомов платформы.", "must_enter_organization_name": "Необходимо ввести название организации", "must_enter_organization_admin_email": "Необходимо ввести ваш адрес электронной почты в организации", "admin_email": "Адрес электронной почты в организации", + "platform_admin_email": "Ваш адрес электронной почты администратора", "admin_username": "Имя пользователя администратора", "organization_name": "Название организации", + "platform_name": "Название платформы", "organization_url": "URL-адрес организации", "organization_verify_header": "Подтвердите свой адрес электронной почты в организации", "organization_verify_email_body": "С помощью кода ниже подтвердите свой адрес электронной почты, чтобы продолжить настройку организации.", @@ -1991,6 +2144,8 @@ "add_times_to_your_email": "Выберите доступные промежутки времени и вставьте их в письмо", "select_time": "Выбрать время", "select_date": "Выбрать дату", + "connecting_you_to_someone": "Мы соединяем вас с кем-то.", + "please_do_not_close_this_tab": "Пожалуйста, не закрывайте эту вкладку", "see_all_available_times": "Посмотреть все доступные интервалы времени", "org_team_names_example_1": "например, команда по маркетингу", "org_team_names_example_2": "например, Отдел продаж", @@ -2008,8 +2163,13 @@ "description_requires_booker_email_verification": "Чтобы подтвердить электронную почту пользователя, оформляющего бронирование, до планирования событий", "requires_confirmation_mandatory": "Участникам можно отправлять сообщения, только если тип события предполагает подтверждение.", "organizations": "Организации", + "upload_cal_video_logo": "Загрузить логотип Cal Video", + "update_cal_video_logo": "Обновить логотип Cal Video", + "upload_banner": "Загрузить баннер", + "cal_video_logo_upload_instruction": "Чтобы ваш логотип был виден на темном фоне Cal Video, загрузите светлое изображение в формате PNG или SVG для сохранения прозрачности.", "org_admin_other_teams": "Другие команды", "org_admin_other_teams_description": "Это перечень команд вашей организации, в которые вы не входите. При необходимости можно добавить себя в эти команды.", + "not_part_of_org": "Вы не являетесь частью какой-либо организации", "no_other_teams_found": "Другие команды не найдены", "no_other_teams_found_description": "В этой организации нет других команд.", "attendee_first_name_variable": "Имя участника", @@ -2045,7 +2205,9 @@ "org_error_processing": "При обработке этой организации произошла ошибка", "orgs_page_description": "Список всех организаций. При приеме организации все пользователи с этим доменом электронной почты смогут регистрироваться БЕЗ подтверждения электронной почты.", "unverified": "Не подтверждено", + "verified": "Подтверждено", "dns_missing": "Отсутствует DNS", + "dns_configured": "DNS настроен", "mark_dns_configured": "Отметить как \"конфигурация DNS завершена\"", "value": "Значение", "your_organization_updated_sucessfully": "Данные об организации успешно обновлены", @@ -2055,10 +2217,30 @@ "oAuth": "OAuth", "recently_added": "Недавно добавленные", "connect_all_calendars": "Подключите все свои календари", + "connect_all_calendars_description": "{{appName}} считывает доступность из всех ваших существующих календарей.", "workflow_automation": "Автоматизация при помощи рабочих процессов", + "workflow_automation_description": "Персонализируйте свой опыт планирования с помощью рабочих процессов", "scheduling_for_your_team": "Автоматизация при помощи рабочих процессов", + "scheduling_for_your_team_description": "Планируйте для своей команды с помощью коллективного и round-robin планирования", "no_members_found": "Участники не найдены", "directory_sync": "Синхронизация каталогов", + "directory_name": "Имя каталога", + "directory_provider": "Поставщик каталога", + "directory_scim_url": "Базовый URL SCIM", + "directory_scim_token": "Токен SCIM Bearer", + "directory_scim_url_copied": "Базовый URL SCIM скопирован", + "directory_scim_token_copied": "Токен SCIM Bearer скопирован", + "directory_sync_info_description": "Ваш поставщик удостоверений запросит следующую информацию для настройки SCIM. Следуйте инструкциям, чтобы завершить настройку.", + "directory_sync_configure": "Настроить синхронизацию каталога", + "directory_sync_configure_description": "Выберите поставщика удостоверений для настройки каталога для вашей команды.", + "directory_sync_title": "Настройте поставщика удостоверений, чтобы начать работу с SCIM.", + "directory_sync_created": "Соединение синхронизации каталога создано.", + "directory_sync_description": "Создавайте и удаляйте пользователей с помощью вашего поставщика каталога.", + "directory_sync_deleted": "Соединение синхронизации каталога удалено.", + "directory_sync_delete_connection": "Удалить соединение", + "directory_sync_delete_title": "Удалить соединение синхронизации каталога", + "directory_sync_delete_description": "Вы уверены, что хотите удалить это соединение синхронизации каталога?", + "directory_sync_delete_confirmation": "Это действие нельзя отменить. Это навсегда удалит соединение синхронизации каталога.", "event_setup_length_error": "Настройка события: продолжительность должна быть не менее 1 минуты.", "availability_schedules": "График с информацией о доступности", "unauthorized": "Неавторизован(а)", @@ -2074,6 +2256,8 @@ "access_bookings": "Читать, редактировать и удалять ваши бронирования", "allow_client_to_do": "Разрешить {{clientName}} эти действия?", "oauth_access_information": "Нажимая кнопку «Разрешить», вы разрешаете этому приложению использовать информацию о вас в соответствии с условиями предоставления услуг и политикой конфиденциальности. Можно запретить доступ в {{appName}} App Store.", + "oauth_form_title": "Форма создания OAuth клиента", + "oauth_form_description": "Это форма для создания нового OAuth клиента", "allow": "Разрешить", "view_only_edit_availability_not_onboarded": "Этот пользователь не прошел онбординг. Вы сможете настроить для него информацию о доступность, только когда он пройдет онбординг.", "view_only_edit_availability": "Вы просматриваете информацию о доступности этого пользователя. Вы можете редактировать только информацию о собственной доступности.", @@ -2090,42 +2274,300 @@ "overlay_my_calendar": "Объединить календарь", "overlay_my_calendar_toc": "Подключая календарь, вы принимаете нашу политику конфиденциальности и условия использования. Доступ можно отменить в любое время.", "view_overlay_calendar_events": "Просматривайте события календаря, чтобы не допустить накладок по времени при бронировании.", + "join_event_location": "Присоединиться к {{eventLocationType}}", + "troubleshooting": "Устранение неполадок", + "calendars_were_checking_for_conflicts": "Календари, которые мы проверяем на конфликты", + "availabilty_schedules": "Графики доступности", + "manage_calendars": "Управление календарями", + "manage_availability_schedules": "Управление расписаниями доступности", + "locked": "Заблокировано", + "unlocked": "Разблокировано", "lock_timezone_toggle_on_booking_page": "Заблокируйте часовой пояс на странице бронирования", "description_lock_timezone_toggle_on_booking_page": "Блокировка часового пояса на странице бронирования подходит для личных событий.", + "event_setup_multiple_payment_apps_error": "Вы можете включить только одно платежное приложение для каждого типа события.", + "number_in_international_format": "Пожалуйста, введите номер в международном формате.", + "install_calendar": "Установить календарь", + "branded_subdomain": "Брендированный поддомен", + "branded_subdomain_description": "Получите свой собственный брендированный поддомен, например, acme.cal.com", + "org_insights": "Аналитика по всей организации", + "org_insights_description": "Понимание того, как вся ваша организация тратит время", "extensive_whitelabeling": "Индивидуальная техподдержка и помощь при онбординге", + "extensive_whitelabeling_description": "Настройте свой опыт планирования с помощью собственного логотипа, цветов и многого другого", + "unlimited_teams": "Неограниченное количество команд", + "unlimited_teams_description": "Добавьте столько подкоманд, сколько нужно вашей организации", + "unified_billing": "Единый биллинг", + "unified_billing_description": "Добавьте одну кредитную карту для оплаты всех подписок вашей команды", + "advanced_managed_events": "Расширенные управляемые типы событий", + "advanced_managed_events_description": "Добавьте одну кредитную карту для оплаты всех подписок вашей команды", + "enterprise_description": "Обновитесь до Enterprise, чтобы создать свою организацию", + "create_your_org": "Создайте свою организацию", + "create_your_org_description": "Обновитесь до Organizations и получите поддомен, единый биллинг, аналитику, расширенные возможности брендирования и многое другое", + "create_your_enterprise_description": "Обновитесь до Enterprise и получите доступ к синхронизации Active Directory, автоматическому предоставлению пользователей SCIM, голосовым агентам Cal.ai, административным API и многому другому!", + "other_payment_app_enabled": "Вы можете включить только одно платежное приложение для каждого типа события", + "admin_delete_organization_description": "
  • Команды, являющиеся членами этой организации, также будут удалены вместе с их типами событий
  • Пользователи, которые были частью организации, не будут удалены, но их имена пользователей будут изменены, чтобы они могли существовать вне организации
  • Типы событий пользователей, созданные после того, как пользователь был в организации, будут удалены
  • Мигрированные типы событий пользователей не будут удалены
", + "admin_delete_organization_title": "Удалить {{organizationName}}?", + "published": "Опубликовано", + "unpublished": "Не опубликовано", + "publish": "Опубликовать", + "org_publish_error": "Не удалось опубликовать организацию", + "troubleshooter_tooltip": "Откройте средство устранения неполадок и выясните, что не так с вашим расписанием", "need_help": "Нужна помощь?", + "troubleshooter": "Средство устранения неполадок", + "number_to_call": "Номер для звонка", + "guest_name": "Имя гостя", + "guest_email": "Электронная почта гостя", + "guest_company": "Компания гостя", + "please_install_a_calendar": "Пожалуйста, установите календарь", + "instant_tab_title": "Мгновенное бронирование", + "instant_event_tab_description": "Позвольте людям бронировать сразу", + "uprade_to_create_instant_bookings": "Обновитесь до Enterprise и позвольте гостям присоединиться к мгновенному звонку, в который участники могут сразу войти. Это только для командных типов событий", + "dont_want_to_wait": "Не хотите ждать?", + "meeting_started": "Встреча началась", + "pay_and_book": "Оплатить и забронировать", + "cal_ai_event_tab_description": "Позвольте AI-агентам бронировать для вас", + "booking_not_found_error": "Не удалось найти бронирование", + "booking_seats_full_error": "Все места для бронирования заняты", + "missing_payment_credential_error": "Отсутствуют платежные реквизиты", + "missing_payment_app_id_error": "Отсутствует идентификатор платежного приложения", + "not_enough_available_seats_error": "Недостаточно доступных мест для бронирования", + "user_redirect_title": "{{username}} временно отсутствует.", + "user_redirect_description": "Тем временем {{profile.username}} будет отвечать за все новые запланированные встречи от имени {{username}}.", + "out_of_office": "Нет на месте", + "out_of_office_description": "Сообщите вашим клиентам, когда вы отсутствуете.", + "send_request": "Отправить запрос", + "start_date_and_end_date_required": "Необходимы даты начала и окончания", + "start_date_must_be_before_end_date": "Дата начала должна быть раньше даты окончания", + "start_date_must_be_in_the_future": "Дата начала должна быть в будущем", + "user_not_found": "Пользователь не найден", + "out_of_office_entry_already_exists": "Запись об отсутствии уже существует", + "out_of_office_id_required": "Требуется идентификатор записи об отсутствии", + "booking_redirect_infinite_not_allowed": "Уже существует перенаправление бронирования от этого пользователя к вам.", + "success_entry_created": "Новая запись успешно создана", + "booking_redirect_email_subject": "Уведомление о перенаправлении бронирования", + "booking_redirect_email_title": "Уведомление о перенаправлении бронирования", + "booking_redirect_email_description": "Вы получили перенаправление бронирования от {{toName}}, поэтому их ссылки на профиль будут перенаправлены на ваш в течение следующего временного интервала: ", + "success_accept_booking_redirect": "Вы приняли запрос на перенаправление бронирования.", + "success_reject_booking_redirect": "Вы отклонили запрос на перенаправление бронирования.", + "copy_link_booking_redirect_request": "Скопировать ссылку для запроса", + "booking_redirect_request_title": "Запрос на перенаправление бронирования", + "select_team_member": "Выбрать члена команды", + "going_away_title": "Уезжаете? Просто отметьте свою ссылку на профиль как недоступную на определенный период времени.", + "redirect_team_enabled": "Предоставьте ссылку на члена команды, когда вы отсутствуете", + "redirect_team_disabled": "Предоставьте ссылку на члена команды, когда вы отсутствуете (требуется командный план)", + "out_of_office_unavailable_list": "Список недоступности", + "success_deleted_entry_out_of_office": "Запись успешно удалена", + "temporarily_out_of_office": "Временно отсутствуете?", + "add_a_redirect": "Добавить перенаправление", + "create_entry": "Создать запись", + "time_range": "Диапазон времени", + "automatically_add_all_team_members": "Добавить всех членов команды, включая будущих", + "redirect_to": "Перенаправить на", + "having_trouble_finding_time": "Трудно найти время?", "show_more": "Показать больше", + "forward_params_redirect": "Перенаправить параметры, такие как ?email=...&name=... и другие", + "assignment_description": "Назначайте встречи, когда все доступны, или чередуйте участников команды", + "lowest": "самый низкий", + "low": "низкий", + "medium": "средний", + "high": "высокий", + "Highest": "самый высокий", + "send_booker_to": "Отправить бронирующего на", + "set_priority": "Установить приоритет", + "set_weight": "Установить вес", + "enable_weights": "Включить веса", + "priority_for_user": "Приоритет для {{userName}}", + "weights_description": "Веса определяют, как распределяются встречи среди хостов. <1>Узнать больше", + "weight_for_user": "Вес для {{userName}}", + "change_priority": "изменить приоритет", + "field_identifiers_as_variables": "Используйте идентификаторы полей как переменные для вашего пользовательского перенаправления события", + "field_identifiers_as_variables_with_example": "Используйте идентификаторы полей как переменные для вашего пользовательского перенаправления события (например, {{variable}})", + "account_already_linked": "Аккаунт уже связан", "send_email": "Отправить письмо", + "mark_as_no_show": "Отметить как неявку", + "unmark_as_no_show": "Снять отметку о неявке", + "account_unlinked_success": "Аккаунт успешно отвязан", + "account_unlinked_error": "Произошла ошибка при отвязывании аккаунта", + "travel_schedule": "Расписание поездок", + "travel_schedule_description": "Планируйте свою поездку заранее, чтобы сохранить текущее расписание в другом часовом поясе и избежать бронирования на полночь.", + "schedule_timezone_change": "Изменение часового пояса расписания", + "date": "Дата", + "overlaps_with_existing_schedule": "Это пересекается с существующим расписанием. Пожалуйста, выберите другую дату.", + "org_admin_no_slots|subject": "Нет доступности для {{name}}", + "org_admin_no_slots|heading": "Нет доступности для {{name}}", + "org_admin_no_slots|content": "Здравствуйте, администраторы организации,

Обратите внимание: Нам сообщили, что у {{username}} не было доступности, когда пользователь посетил {{username}}/{{slug}}

Есть несколько причин, почему это могло произойти:
Пользователь не подключил ни одного календаря
Их расписания, прикрепленные к этому событию, не активированы

Мы рекомендуем проверить их доступность для решения этой проблемы.", + "org_admin_no_slots|cta": "Открыть доступность пользователей", + "organization_no_slots_notification_switch_title": "Получать уведомления, когда у вашей команды нет доступности", + "organization_no_slots_notification_switch_description": "Администраторы будут получать уведомления по электронной почте, когда пользователь пытается забронировать время у члена команды и сталкивается с 'Нет доступности'. Мы отправляем это письмо после двух случаев и напоминаем вам каждые 7 дней на пользователя.", + "email_team_invite|subject|added_to_org": "{{user}} добавил вас в организацию {{team}} на {{appName}}", + "email_team_invite|subject|invited_to_org": "{{user}} пригласил вас присоединиться к организации {{team}} на {{appName}}", + "email_team_invite|subject|added_to_subteam": "{{user}} добавил вас в команду {{team}} организации {{parentTeamName}} на {{appName}}", + "email_team_invite|subject|invited_to_subteam": "{{user}} пригласил вас присоединиться к команде {{team}} организации {{parentTeamName}} на {{appName}}", "email_team_invite|subject|invited_to_regular_team": "{{user}} пригласил вас присоединиться к команде {{team}} в {{appName}}", + "email_team_invite|heading|added_to_org": "Вы добавлены в организацию {{appName}}", + "email_team_invite|heading|invited_to_org": "Вас пригласили в организацию {{appName}}", + "email_team_invite|heading|added_to_subteam": "Вы добавлены в команду организации {{parentTeamName}}", + "email_team_invite|heading|invited_to_subteam": "Вас пригласили в команду организации {{parentTeamName}}", "email_team_invite|heading|invited_to_regular_team": "Вас пригласили в команду {{appName}}", + "email_team_invite|content|added_to_org": "{{invitedBy}} добавил вас в организацию {{teamName}}.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} пригласил вас присоединиться к организации {{teamName}}.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} добавил вас в команду {{teamName}} в их организации {{parentTeamName}}. {{appName}} — это планировщик событий, который позволяет вам и вашей команде назначать встречи без бесконечной переписки по электронной почте.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} пригласил вас присоединиться к команде {{teamName}} в их организации {{parentTeamName}}. {{appName}} — это планировщик событий, который позволяет вам и вашей команде назначать встречи без бесконечной переписки по электронной почте.", "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} пригласил(а) вас в команду в `{{teamName}}` в приложении {{appName}}. {{appName}} — это гибкий планировщик событий, с помощью которого пользователи и целые команды могут планировать встречи без утомительной переписки по электронной почте.", + "email|existing_user_added_link_will_change": "После принятия приглашения ваша ссылка изменится на домен вашей организации, но не волнуйтесь, все предыдущие ссылки будут по-прежнему работать и перенаправлять корректно.

Обратите внимание: Все ваши личные типы событий будут перемещены в организацию {teamName}, что также может включать потенциальную личную ссылку.

Для личных событий мы рекомендуем создать новую учетную запись с личным адресом электронной почты.", + "email|existing_user_added_link_changed": "Ваша ссылка была изменена с {prevLinkWithoutProtocol} на {newLinkWithoutProtocol}, но не волнуйтесь, все предыдущие ссылки по-прежнему работают и перенаправляют корректно.

Обратите внимание: Все ваши личные типы событий были перемещены в организацию {teamName}, что также может включать потенциальную личную ссылку.

Пожалуйста, войдите в систему и убедитесь, что у вас нет частных событий в вашей новой организационной учетной записи.

Для личных событий мы рекомендуем создать новую учетную запись с личным адресом электронной почты.

Наслаждайтесь вашей новой чистой ссылкой: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Ваша организация была создана", + "your_current_plan": "Ваш текущий план", + "organization_price_per_user_month": "$37 за пользователя в месяц (минимум 30 мест)", + "privacy_organization_description": "Управление настройками конфиденциальности для вашей организации", "privacy": "Конфиденциальность", - "signing_up_terms": "Продолжая, вы соглашаетесь с <0>Терминами и <1>Политикой конфиденциальности<1>", - "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", - "minute_short": "мин", - "hour_short": "ч", - "minute_one_short": "{{count}} мин", - "hour_one_short": "{{count}} ч", - "travel_schedule": "Расписание путешествий", - "travel_schedule_description": "Планируйте свою поездку заранее, чтобы сохранить свое текущее расписание в другом часовом поясе и избежать бронирования в полночь.", - "schedule_timezone_change": "Изменение часового пояса расписания", - "schedule_tz_without_end_date": "Расписание с часовым поясом без даты окончания", + "team_will_be_under_org": "Новые команды будут под вашей организацией", + "add_group_name": "Добавить название группы", + "group_name": "Название группы", + "routers": "Маршрутизаторы", + "primary": "Основной", + "make_primary": "Сделать основным", + "add_email": "Добавить Email", + "add_emails": "Добавить Email-адреса", + "add_email_description": "Добавьте адрес электронной почты, чтобы заменить основной или использовать его в качестве альтернативного для ваших типов событий.", + "confirm_email": "Подтвердите ваш email", + "scheduler_first_name": "Имя человека, бронирующего встречу", + "scheduler_last_name": "Фамилия человека, бронирующего встречу", + "scheduler_name": "Имя планировщика", + "organizer_first_name": "Ваше имя", + "confirm_email_description": "Мы отправили письмо на {{email}}. Нажмите на ссылку в письме, чтобы подтвердить этот адрес.", + "send_event_details_to": "Отправить детали события", + "schedule_tz_without_end_date": "Запланировать часовой пояс без даты окончания", + "select_members": "Выбрать участников", + "lock_event_types_modal_header": "Что нам делать с существующими типами событий ваших участников?", + "org_delete_event_types_org_admin": "Все индивидуальные типы событий ваших участников (кроме управляемых) будут навсегда удалены. Они не смогут создавать новые.", + "org_hide_event_types_org_admin": "Индивидуальные типы событий ваших участников будут скрыты (кроме управляемых) из профилей, но ссылки останутся активными. Они не смогут создавать новые.", + "hide_org_eventtypes": "Скрыть отдельные типы событий", + "delete_org_eventtypes": "Удалить отдельные типы событий", + "lock_org_users_eventtypes": "Заблокировать создание отдельных типов событий", + "lock_org_users_eventtypes_description": "Запретить участникам создавать свои собственные типы событий.", + "add_to_event_type": "Добавить к типу события", + "create_account_password": "Создать пароль для аккаунта", + "error_creating_account_password": "Не удалось создать пароль для аккаунта", + "cannot_create_account_password_cal_provider": "Невозможно создать пароль для аккаунтов cal", + "cannot_create_account_password_already_existing": "Невозможно создать пароль для уже существующих аккаунтов", + "create_account_password_hint": "У вас нет пароля для аккаунта, создайте его, перейдя в Безопасность -> Пароль. Невозможно отключиться, пока не создан пароль для аккаунта.", + "disconnect_account": "Отключить подключенный аккаунт", + "disconnect_account_hint": "Отключение подключенного аккаунта изменит способ входа. Вы сможете войти в свой аккаунт только с помощью электронной почты и пароля", + "cookie_consent_checkbox": "Я согласен с нашей политикой конфиденциальности и использованием файлов cookie", + "make_a_call": "Совершить звонок", + "skip_rr_assignment_label": "Пропустить round robin назначение, если контакт существует в Salesforce", + "skip_rr_description": "URL должен содержать электронную почту контакта в качестве параметра, например, ?email=contactEmail", + "select_account_header": "Выбрать аккаунт", + "select_account_description": "Установите {{appName}} на свой личный аккаунт или на командный аккаунт.", + "select_event_types_header": "Выбрать типы событий", + "select_event_types_description": "На какой тип события вы хотите установить {{appName}}?", + "configure_app_header": "Настроить {{appName}}", + "configure_app_description": "Завершите настройку приложения. Вы можете изменить эти настройки позже.", + "already_installed": "уже установлено", "ooo_reasons_unspecified": "Не указано", "ooo_reasons_vacation": "Отпуск", "ooo_reasons_travel": "Путешествие", "ooo_reasons_sick_leave": "Больничный", "ooo_reasons_public_holiday": "Праздничный день", - "ooo_forwarding_to": "Переадресовывать на {{username}}", - "ooo_not_forwarding": "Без переадресации", + "ooo_forwarding_to": "Перенаправление к {{username}}", + "ooo_not_forwarding": "Без перенаправления", "ooo_empty_title": "Создать OOO", - "ooo_empty_description": "Сообщите своим заказчикам, когда вы не можете принимать заказы. Они все равно могут забронировать вас по вашему возвращению или вы можете перенаправить их к члену команды.", - "ooo_user_is_ooo": "{{displayName}} находится в режиме OOO", - "ooo_slots_returning": "<0>{{displayName}} может принимать свои встречи, пока отсутствует.", + "ooo_empty_description": "Сообщите вашим клиентам, когда вы недоступны для бронирования. Они все равно могут забронировать вас после вашего возвращения или вы можете перенаправить их к члену команды.", + "ooo_user_is_ooo": "{{displayName}} находится вне офиса", + "ooo_slots_returning": "<0>{{displayName}} может проводить встречи, пока они отсутствуют.", "ooo_slots_book_with": "Забронировать {{displayName}}", "ooo_create_entry_modal": "Выйти из офиса", "ooo_select_reason": "Выберите причину", - "enterprise_license_locally": "Вы можете протестировать эту функцию локально, но не в производственной среде.", - "enterprise_license_sales": "Чтобы обновить до корпоративной версии, обратитесь к нашей команде продаж. Если лицензионный ключ уже установлен, обратитесь в поддержку support@cal.com за помощью.", - "apply_to_all_event_types": "Применяется ко всем, включая будущие типы событий", + "create_an_out_of_office": "Выйти из офиса", + "submit_feedback": "Отправить отзыв", + "host_no_show": "Ваш хост не появился", + "no_show_description": "Вы можете переназначить встречу с ними", + "how_can_we_improve": "Как мы можем улучшить наш сервис?", + "most_liked": "Что вам понравилось больше всего?", + "review": "Отзыв", + "reviewed": "Отзыв оставлен", + "unreviewed": "Без отзыва", + "rating_url_info": "URL для формы обратной связи с рейтингом", + "no_show_url_info": "URL для обратной связи о неявке", + "no_support_needed": "Поддержка не требуется?", + "hide_support": "Скрыть поддержку", + "event_ratings": "Средние оценки", + "event_no_show": "Организатор не явился", + "recent_ratings": "Недавние оценки", + "no_ratings": "Оценок нет", + "no_ratings_description": "Добавьте рабочий процесс с 'Оценкой', чтобы собирать отзывы после встреч", + "most_no_show_host": "Чаще всего не являющиеся участники", + "highest_rated_members": "Участники с самыми высокими оценками встреч", + "lowest_rated_members": "Участники с самыми низкими оценками встреч", + "csat_score": "CSAT оценка", + "lockedSMS": "Заблокированные SMS", + "leave_without_assigning_anyone": "Покинуть без назначения кого-либо?", + "leave_without_adding_attendees": "Вы уверены, что хотите покинуть это событие, не добавив участников?", + "no_availability_shown_to_bookers": "Если вы не назначите никого на это событие, доступность не будет показана бронирующим.", + "go_back_and_assign": "Вернуться и назначить", + "leave_without_assigning": "Покинуть без назначения", + "signing_up_terms": "Продолжая, вы соглашаетесь с <0>Терминами и <1>Политикой конфиденциальности<1>", + "always_show_x_days": "Всегда доступно {{x}} дней", + "unable_to_subscribe_to_the_platform": "Произошла ошибка при попытке подписаться на план платформы, пожалуйста, попробуйте позже", + "updating_oauth_client_error": "Произошла ошибка при обновлении OAuth клиента, пожалуйста, попробуйте позже", + "creating_oauth_client_error": "Произошла ошибка при создании OAuth клиента, пожалуйста, попробуйте позже", + "event_type_color": "Цвет типа события", + "event_type_color_description": "Используется только для различения типов событий и бронирования в приложении. Не отображается для бронирующих.", + "mark_as_no_show_title": "Отметить как не явившегося", + "x_marked_as_no_show": "{{x}} отмечен как не явившийся", + "x_unmarked_as_no_show": "{{x}} снята отметка о неявке", + "team_select_info": "триггеры для всех типов событий команды и всех личных типов событий участников команды", + "no_show_updated": "Статус неявки обновлен для участников", + "email_copied": "Электронная почта скопирована", + "USER_PENDING_MEMBER_OF_THE_ORG": "Пользователь ожидает подтверждения членства в организации", + "USER_ALREADY_INVITED_OR_MEMBER": "Пользователь уже приглашен или является членом", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "Пользователь является членом другой организации, которая не входит в эту команду.", + "booking_reassigned": "Бронирование переназначено", + "reassign": "Переназначить", + "reassign_to_another_rr_host": "Переназначить бронирование другому доступному round robin хосту", + "assign_team_member": "Назначить члена команды", + "override_team_member_to_assign": "Изменить назначение члена команды", + "no_available_hosts": "Нет доступных хостов", + "reassign_round_robin_host": "Переназначить round robin хоста", + "skip_writing_to_calendar": "Не записывать в ICS ленту", + "rescheduling_not_possible": "Перенос невозможен, так как событие истекло", + "event_expired": "Это событие истекло", + "skip_contact_creation": "Пропустить создание контактов, если они не существуют в {{appName}}", + "skip_writing_to_calendar_note": "Если ваша ICS ссылка только для чтения (например, Proton Calendar), отметьте вышеуказанное поле, чтобы избежать ошибок. Вам также нужно будет вручную обновить свой календарь для внесения изменений.", + "attributes": "Атрибуты", + "new_attribute": "Новый атрибут", + "add_attributes": "Добавить атрибуты", + "add_attributes_description": "Добавьте атрибуты для членов вашей команды", + "new_option": "Новый вариант", + "update_profile": "Обновить профиль", + "attribute_updated_successfully": "Атрибут успешно обновлен", + "attributes_edited_successfully": "Атрибуты успешно отредактированы", + "attribute_meta_description": "Управляйте атрибутами для членов вашей команды", + "attributes_edit_description": "Редактируйте атрибуты для членов вашей команды", + "back_to_attributes": "Назад к атрибутам", + "delete_attribute": "Вы уверены, что хотите удалить этот вариант?", + "delete_attribute_description": "Этот вариант назначен {{numberOfUsers}} членам. Удаление удалит его из их профиля.", + "disable_all_emails_to_attendees": "Отключить стандартные письма участникам, связанные с этим типом события", + "disable_all_emails_description": "Отключает стандартную email-коммуникацию, связанную с этим типом события, включая подтверждения бронирования, напоминания и отмены.", + "disable_all_emails_to_hosts": "Отключить стандартные письма организаторам, связанные с этим типом события", + "type_confirm_to_continue": "Введите 'подтвердить', чтобы продолжить", + "disable_email": "Отключить email", + "grant_admin_api": "Предоставить доступ к Admin API", + "revoke_admin_api": "Отозвать доступ к Admin API", + "apple_connect_atom_label": "Подключить календарь Apple", + "apple_connect_atom_already_connected_label": "Календарь Apple подключен", + "apple_connect_atom_loading_label": "Проверка календаря Apple", + "google_connect_atom_label": "Подключить календарь Google", + "google_connect_atom_already_connected_label": "Календарь Google подключен", + "google_connect_atom_loading_label": "Проверка календаря Google", + "outlook_connect_atom_label": "Подключить календарь Outlook", + "outlook_connect_atom_already_connected_label": "Календарь Outlook подключен", + "outlook_connect_atom_loading_label": "Проверка календаря Outlook", + "booking_question_response_variables": "Переменные ответов на вопросы бронирования", + "managed_by_teamAdmins": "Управляется {{teamAdmins}}", + "number_of_options": "{{count}} вариантов", + "reschedule_with_same_round_robin_host_title": "Переназначить с тем же организатором Round-Robin", + "reschedule_with_same_round_robin_host_description": "Перенесённые события будут назначены тому же ведущему, что и изначально", + "disable_input_if_prefilled": "Отключить ввод, если URL-идентификатор уже заполнен", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Добавьте строки выше ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/apps/web/public/static/locales/zh-CN/common.json b/apps/web/public/static/locales/zh-CN/common.json index efccac2db0c86d..919553f3861d32 100644 --- a/apps/web/public/static/locales/zh-CN/common.json +++ b/apps/web/public/static/locales/zh-CN/common.json @@ -7,11 +7,14 @@ "second_other": "{{count}} 秒", "upgrade_now": "立刻升级", "accept_invitation": "接受邀请", + "max_characters": "最大字符数", + "min_characters": "最小字符数", "calcom_explained": "{{appName}} 绝对为每个人提供日程安排基础设施。", "calcom_explained_new_user": "完成您的 {{appName}} 账户设置!您距离解决所有日程安排问题仅几步之遥。", "have_any_questions": "有疑问?获取我们的帮助。", "reset_password_subject": "{{appName}}: 重置密码教程", "verify_email_subject": "{{appName}}:验证您的账户", + "verify_email_subject_verifying_email": "{{appName}}:验证您的邮箱", "check_your_email": "查看您的电子邮件", "old_email_address": "旧邮箱", "new_email_address": "新电子邮箱地址", @@ -19,6 +22,7 @@ "verify_email_banner_body": "验证您的电子邮件地址以确保最佳的电子邮件和日历递送能力", "verify_email_email_header": "验证您的电子邮件地址", "verify_email_email_button": "验证电子邮件", + "cal_ai_assistant": "Cal AI 助手", "verify_email_change_description": "您最近更改了登陆您的帐户 {{appName}} 时所使用的电子邮箱地址。请点击下方按钮以确认您的新邮箱地址。", "verify_email_change_success_toast": "将您的电子邮箱地址变更为 {{email}}", "verify_email_change_failure_toast": "更新电子邮箱地址时出现了错误。", @@ -43,6 +47,7 @@ "no_options_available": "没有可用选项", "cancellation_reason": "取消原因(选填)", "cancellation_reason_placeholder": "您为什么要取消?", + "rejection_reason_placeholder": "您拒绝的原因是什么?", "rejection_reason": "拒绝原因", "rejection_reason_title": "拒绝预约请求?", "rejection_reason_description": "您确定要拒绝预约吗?我们会通知试图预约的人,您可以在下面解释原因。", @@ -65,6 +70,8 @@ "meeting_awaiting_payment": "您有会议待付款", "dark_theme_contrast_error": "暗黑模式未能通过对比度检测。我们建议您修改当前的颜色设置以便使您的按钮更容易分辨。", "light_theme_contrast_error": "浅色模式未能通过对比度检测。我们建议您修改当前的颜色设置以便使您的按钮更容易分辨。", + "event_type_color_light_theme_contrast_error": "浅色主题颜色未通过对比度检查。我们建议您更改此颜色,以便您的事件类型颜色更明显。", + "event_type_color_dark_theme_contrast_error": "深色主题颜色未通过对比度检查。我们建议您更改此颜色,以便您的事件类型颜色更明显。", "payment_not_created_error": "付款创建失败", "couldnt_charge_card_error": "无法修改支付卡", "no_available_users_found_error": "找不到可用时间。请尝试另一个时间段。", @@ -100,6 +107,9 @@ "new_event_request": "新的活动请求: {{attendeeName}} - {{date}} - {{eventType}}", "confirm_or_reject_request": "确认或拒绝该请求", "check_bookings_page_to_confirm_or_reject": "前往您的预约页面以确认或拒绝预约。", + "check_in_assistant": "签到助手", + "check_in_assistant_description": "拨打外呼电话,检查预约是否有效或是否需要重新安排。", + "create_your_own_prompt": "创建您自己的提示,并使用它进行外呼。", "event_awaiting_approval": "有活动正在等待您的批准", "event_awaiting_approval_recurring": "有定期活动正在等待您的批准", "someone_requested_an_event": "有人请求在您的日历上安排一个活动。", @@ -110,7 +120,9 @@ "event_still_awaiting_approval": "有活动仍在等待您的批准", "booking_submitted_subject": "已提交预订:{{title}},于 {{date}}", "download_recording_subject": "下载录制内容: {{date}} 的 {{title}}", + "download_transcript_email_subject": "下载记录:{{title}} 于 {{date}}", "download_your_recording": "下载您的录制内容", + "download_your_transcripts": "下载您的记录", "your_meeting_has_been_booked": "您的会议已预定", "event_type_has_been_rescheduled_on_time_date": "您的 {{title}} 已改期至 {{date}}。", "event_has_been_rescheduled": "已更新 - 您的活动已被重新安排", @@ -159,6 +171,9 @@ "link_expires": "另外,它将在 {{expiresIn}} 小时后过期。", "upgrade_to_per_seat": "升级到每个位置", "seat_options_doesnt_support_confirmation": "位置选项不支持确认要求", + "multilocation_doesnt_support_seats": "多地点不支持座位选项", + "no_show_fee_doesnt_support_seats": "未到场费用不支持座位选项", + "seats_option_doesnt_support_multi_location": "座位选项不支持多地点", "team_upgrade_seats_details": "您团队中一共 {{memberCount}} 人, 其中 {{unpaidCount}} 个位置未付费. 按 ${{seatPrice}}/月/人 来估算您的花费为 ${{totalCost}}/月", "team_upgrade_banner_description": "感谢您试用我们的新团队计划。我们注意到您的团队“{{teamName}}”需要升级。", "upgrade_banner_action": "在此处升级", @@ -325,8 +340,10 @@ "add_another_calendar": "添加另一个日历", "other": "其他", "email_sign_in_subject": "您的 {{appName}} 登录链接", + "round_robin_emailed_you_and_attendees": "您将与 {{user}} 会面。我们已向所有人发送了包含详细信息的日历邀请邮件。", "emailed_you_and_attendees": "我们通过电子邮件给您和其他参与者发送了一份包含所有详细信息的日历邀请。", "emailed_you_and_attendees_recurring": "我们通过电子邮件给您和其他参与者发送了第一次定期活动的日历邀请。", + "round_robin_emailed_you_and_attendees_recurring": "您将与 {{user}} 会面。我们已向所有人发送了包含详细信息的日历邀请邮件,适用于这些重复事件的第一次。", "emailed_you_and_any_other_attendees": "已向您和其他参与者发送了关于此信息的电子邮件", "needs_to_be_confirmed_or_rejected": "您的预约仍然需要确认或拒绝。", "needs_to_be_confirmed_or_rejected_recurring": "您的定期会议仍然需要确认或拒绝。", @@ -454,6 +471,7 @@ "booking_cancelled": "预约已取消", "booking_rescheduled": "预约已改期", "recording_ready": "录制内容下载链接就绪", + "recording_transcription_generated": "记录生成", "booking_created": "预约已创建", "booking_rejected": "预约被拒绝", "booking_requested": "预约已请求", @@ -461,6 +479,7 @@ "meeting_ended": "会议已结束", "form_submitted": "表格已提交", "booking_paid": "预约已付款", + "booking_no_show_updated": "预订未到场已更新", "event_triggers": "事件触发", "subscriber_url": "订阅者链接", "create_new_webhook": "创建一个新的 Webhook", @@ -618,6 +637,7 @@ "number_selected": "已选择 {{count}} 个", "owner": "所有者", "admin": "管理员", + "admin_api": "管理员 API", "administrator_user": "管理员用户", "lets_create_first_administrator_user": "让我们创建第一个管理员用户。", "admin_user_created": "管理员用户设置", @@ -676,6 +696,7 @@ "user_from_team": "来自 {{team}} 的 {{user}}", "preview": "预览", "link_copied": "链接已复制!", + "copied": "已复制!", "private_link_copied": "私有链接已复制!", "link_shared": "链接已分享!", "title": "标题", @@ -693,6 +714,7 @@ "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", "multiple_duration_timeUnit_short": "{{count}} $t({{unit}}_short)", + "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "分钟", "use_cal_ai_to_make_call_description": "使用 Cal.ai 获得人工智能驱动的电话号码或拨打电话给访客。", "round_robin": "轮流模式", @@ -758,6 +780,8 @@ "brand_color": "品牌颜色", "light_brand_color": "品牌颜色(浅色主题)", "dark_brand_color": "品牌颜色(深色主题)", + "light_event_type_color": "事件类型颜色(浅色主题)", + "dark_event_type_color": "事件类型颜色(深色主题)", "file_not_named": "文件名不是 [idOrSlug]/[user]", "create_team": "新建团队", "name": "名称", @@ -989,6 +1013,8 @@ "verify_wallet": "验证钱包", "create_events_on": "活动创建于:", "enterprise_license": "这是企业版功能", + "enterprise_license_locally": "您可以在本地测试此功能,但不能在生产环境中。", + "enterprise_license_sales": "要升级到企业版,请联系我们的销售团队。如果您已经有许可证密钥,请联系 support@cal.com 获取帮助。", "missing_license": "缺少许可证", "next_steps": "下一步", "acquire_commercial_license": "获取商业许可证", @@ -1030,6 +1056,7 @@ "seats_nearly_full": "位置几乎已满", "seats_half_full": "位置迅速填满", "number_of_seats": "每个预约的位置数目", + "set_instant_meeting_expiry_time_offset_description": "设置会议加入窗口(秒):主持人可以在此时间范围内加入并开始会议。超过此时间后,会议加入链接将失效。", "enter_number_of_seats": "输入位置数目", "you_can_manage_your_schedules": "您可以在“可预约时间”页面管理您的时间表。", "booking_full": "没有更多可用位置", @@ -1093,7 +1120,9 @@ "impersonating_user_warning": "正在模拟用户名“{{user}}”。", "impersonating_stop_instructions": "点击此处停止", "event_location_changed": "已更新 - 您的活动更改了位置", + "new_guests_added": "已添加 - 新嘉宾已添加到您的活动", "location_changed_event_type_subject": "位置已更改: 和 {{name}} 在 {{date}} 的 {{eventType}}", + "guests_added_event_type_subject": "嘉宾已添加:{{eventType}} 与 {{name}} 于 {{date}}", "current_location": "当前位置", "new_location": "新位置", "session": "会议", @@ -1105,7 +1134,11 @@ "set_location": "设置位置", "update_location": "更新位置", "location_updated": "位置已更新", + "guests_added": "嘉宾已添加", + "unable_to_add_guests": "无法添加嘉宾", "email_validation_error": "这看起来不像是电子邮件地址", + "emails_must_be_unique_valid": "电子邮件必须唯一且有效", + "url_validation_error": "这看起来不像是一个 URL", "place_where_cal_widget_appear": "将此代码放置在您希望显示 {{appName}} 小组件的 HTML 中。", "create_update_react_component": "创建或更新现有的 React 组件,如下所示。", "copy_code": "复制代码", @@ -1122,6 +1155,8 @@ "make_setup_instructions": "<0>转到 <1><0>Make 邀请链接并安装 Cal.com 应用。<1>登录您的 Make 账户并创建一个新 Scenario。<2>选择 Cal.com 作为您的 Trigger 应用。同时选择一个 Trigger 事件。<3>选择您的账户,然后输入您的唯一 API 密钥。<4>测试您的 Trigger。<5>设置完毕!", "install_zapier_app": "请首先从 App Store 安装 Zapier 应用。", "install_make_app": "请先在 App Store 安装 Make 应用。", + "app_not_installed": "应用未安装", + "visit_our_app_store": "抱歉,此应用未安装在您的账户中。请访问我们的应用商店,探索和发现此应用及其他优秀应用。", "connect_apple_server": "连接到 Apple 服务器", "calendar_url": "日历链接", "apple_server_generate_password": "生成应用特定的密码以将 {{appName}} 配合用于", @@ -1225,6 +1260,8 @@ "may_require_confirmation": "可能需要确认", "nr_event_type_one": "{{count}} 种活动类型", "nr_event_type_other": "{{count}} 种活动类型", + "count_team_one": "{{count}} 团队", + "count_team_other": "{{count}} 团队", "add_action": "添加操作", "set_whereby_link": "设置 Whereby 链接", "invalid_whereby_link": "请输入有效的 Whereby 链接", @@ -1250,9 +1287,11 @@ "not_triggering_existing_bookings": "不会针对已经存在的预约而触发,因为用户在预约活动时会被要求提供电话号码。", "minute_one": "{{count}} 分钟", "minute_one_short": "{{count}} 分钟", + "minute_one_short": "{{count}}分钟", "minute_other": "{{count}} 分钟", "hour_one": "{{count}} 小时", "hour_one_short": "{{count}} 小时", + "hour_one_short": "{{count}}小时", "hour_other": "{{count}} 小时", "invalid_input": "输入无效", "broken_video_action": "我们无法将 <1>{{location}} 会议链接添加至您的预约活动。请联系您的受邀者或更新日历活动以添加详细信息。您可以<3>更改活动类型的位置,或尝试<5>删除应用再重新添加应用。", @@ -1264,7 +1303,12 @@ "problem_updating_calendar": "更新日历时出现问题", "active_on_event_types_one": "活跃于 {{count}} 个活动类型", "active_on_event_types_other": "活跃于 {{count}} 个活动类型", + "active_on_teams_one": "活跃于 {{count}} 团队", + "active_on_teams_other": "活跃于 {{count}} 团队", + "active_on_all_event_types": "活跃于所有事件类型", + "active_on_all_teams": "活跃于所有团队", "no_active_event_types": "没有活跃的活动类型", + "no_active_teams": "没有活跃的团队", "new_seat_subject": "{{date}} 的 {{eventType}} 有新参与者 {{name}}", "new_seat_title": "有人将自己添加到活动中", "variable": "变量", @@ -1330,6 +1374,9 @@ "2fa_required": "需要两步验证", "incorrect_2fa": "两步验证代码不正确", "which_event_type_apply": "这将适用于哪种活动类型?", + "apply_to_all_event_types": "适用于所有,包括未来的事件类型", + "apply_to_all_teams": "适用于所有团队和用户事件类型", + "which_team_apply": "这将适用于哪个团队?", "no_workflows_description": "工作流程可实现简单的自动化来发送通知和提醒,让您可以围绕活动构建流程。", "timeformat_profile_hint": "这是一项内部设置,不会影响公开预约页面上向您或向预约您的任何人显示时间的方式。", "create_workflow": "创建工作流程", @@ -1415,6 +1462,7 @@ "add_dynamic_variables": "添加动态文本变量", "event_name_info": "活动类型名称", "event_date_info": "活动日期", + "event_duration_info": "事件持续时间", "event_time_info": "活动开始时间", "event_type_not_found": "活动类型未找到", "location_variable": "位置", @@ -1429,7 +1477,12 @@ "download_responses_description": "以 CSV 格式下载对表格的所有回复。", "download": "下载", "download_recording": "下载录制内容", + "transcription_enabled": "转录功能已启用", + "transcription_stopped": "转录功能已停止", + "download_transcript": "下载转录文件", "recording_from_your_recent_call": "您最近在 {{appName}} 上的通话录制内容可供下载", + "transcript_from_previous_call": "您最近在{{appName}}上的通话转录文件已准备好下载。链接仅在1小时内有效", + "link_valid_for_12_hrs": "注意:下载链接仅在12小时内有效。您可以按照<1>此处的说明生成新的下载链接。", "create_your_first_form": "创建您的第一个表格", "create_your_first_form_description": "利用途径表格,您可以提出符合条件的问题,并可根据途径找到正确的人或活动类型。", "create_your_first_webhook": "创建您的第一个 Webhook", @@ -1464,6 +1517,7 @@ "team_disable_cal_branding_description": "删除任何与 {{appName}} 相关的品牌,即“由 {{appName}} 提供支持”的品牌", "invited_by_team": "{{teamName}} 已邀请您以 {{role}} 的身份加入他们的团队", "token_invalid_expired": "代币无效或过期。", + "view_booking": "查看预订", "exchange_add": "连接到 Microsoft Exchange", "exchange_authentication": "身份验证方法", "exchange_authentication_standard": "基本身份验证", @@ -1528,6 +1582,8 @@ "report_app": "报告应用", "limit_booking_frequency": "限制预约频率", "limit_booking_frequency_description": "限制可以预约此活动的次数", + "only_show_first_available_slot": "仅显示每天的第一个可用时段", + "only_show_first_available_slot_description": "这将限制此事件类型的可用性,每天仅安排在最早的可用时间段。", "limit_total_booking_duration": "限制总预约时长", "limit_total_booking_duration_description": "限制可以预约此活动的总时间", "add_limit": "添加限制", @@ -1567,6 +1623,7 @@ "how_long_after": "活动结束后多久?", "no_available_slots": "没有可用的时间段", "time_available": "可用时间", + "cant_find_the_right_conferencing_app_visit_our_app_store": "找不到合适的会议应用?访问我们的<1>应用商店。", "install_new_calendar_app": "安装新的日历应用", "make_phone_number_required": "预约活动时要求提供电话号码", "new_event_type_availability": "{{eventTypeTitle}} 可预约时间", @@ -1731,6 +1788,7 @@ "new_attendee": "新参与者", "awaiting_approval": "待批准", "requires_google_calendar": "此应用需要 Google 日历连接", + "event_type_requires_google_calendar": "此事件类型的“添加到日历”需要Google日历才能使Meet正常工作。在<1>此处连接。", "connected_google_calendar": "您已连接一个 Google 日历账户。", "using_meet_requires_calendar": "使用 Google Meet 需要连接 Google 日历", "continue_to_install_google_calendar": "继续安装 Google 日历", @@ -1928,7 +1986,8 @@ "looking_for_more_insights": "寻找更多的 Insights?", "filters": "过滤", "add_filter": "添加筛选器", - "remove_filters": "清除所有过滤", + "remove_filters": "清楚所有过滤", + "email_verified": "电子邮件已验证", "select_user": "选择用户", "select_event_type": "选择活动类型", "select_date_range": "选择日期范围", @@ -2026,12 +2085,16 @@ "organization_banner_description": "创建环境,以便让您的团队可以在其中通过轮流和集体日程安排来创建共享的应用、工作流程和活动类型。", "organization_banner_title": "管理具有多个团队的组织", "set_up_your_organization": "设置您的组织", + "set_up_your_platform_organization": "设置您的平台", "organizations_description": "组织是一种共享环境,团队可以在其中创建共享的活动类型、应用、工作流程等。", + "platform_organization_description": "Cal.com平台让您可以使用平台API和原子轻松将调度集成到您的应用中。", "must_enter_organization_name": "必须输入组织名称", "must_enter_organization_admin_email": "必须输入您组织的电子邮件地址", "admin_email": "您在组织中的电子邮件地址", + "platform_admin_email": "您的管理员电子邮件地址", "admin_username": "管理员用户名", "organization_name": "组织名称", + "platform_name": "平台名称", "organization_url": "组织链接", "organization_verify_header": "验证您的组织电子邮件", "organization_verify_email_body": "请使用下面的代码验证您的电子邮件地址以继续设置您的组织。", @@ -2167,6 +2230,7 @@ "directory_name": "目录名称", "directory_provider": "目录提供程序", "directory_scim_url": "SCIM 基本 URL", + "directory_scim_token": "SCIM承载令牌", "directory_scim_url_copied": "SCIM 基本 URL 已复制", "directory_scim_token_copied": "SCIM Bearer Token 已复制", "directory_sync_info_description": "您的身份提供者将要求提供以下信息来配置 SCIM。请按照说明完成设置。", @@ -2241,6 +2305,7 @@ "enterprise_description": "升级到企业版以创建您的组织", "create_your_org": "创建您的组织", "create_your_org_description": "升级到企业版获得子域名、统一计费、分析见解、全面的白标功能等等", + "create_your_enterprise_description": "升级到企业版,获取Active Directory同步、SCIM自动用户配置、Cal.ai语音代理、管理员API等功能!", "other_payment_app_enabled": "每种事件类型只能启用一个支付应用程序", "admin_delete_organization_description": "
  • 属于该组织的团队及其事件类型也将被删除
  • 曾属于该组织的用户不会被删除,他们的事件类型也将保持不变。
  • 用户名将被更改,以允许他们在组织之外存在
", "admin_delete_organization_title": "是否删除 {{organizationName}}?", @@ -2302,6 +2367,7 @@ "redirect_to": "重定向到", "having_trouble_finding_time": "找不到合适的时间?", "show_more": "显示更多", + "forward_params_redirect": "转发参数,如?email=...&name=....等", "assignment_description": "安排每个人都有空时的会议,或轮换团队成员", "lowest": "最低", "low": "低", @@ -2310,12 +2376,31 @@ "Highest": "最高", "send_booker_to": "将预订者发送到", "set_priority": "设置优先级", + "set_weight": "设置权重", + "enable_weights": "启用权重", "priority_for_user": "{{userName}} 的优先级", + "weights_description": "权重决定会议在主持人之间的分配方式。<1>了解更多", + "weight_for_user": "{{userName}}的权重", "change_priority": "更改优先级", "field_identifiers_as_variables": "使用字段标识符作为自定义事件重定向的变量", "field_identifiers_as_variables_with_example": "使用字段标识符作为自定义事件重定向的变量(例如 {{variable}})", "account_already_linked": "帐户已链接", "send_email": "发送电子邮件", + "mark_as_no_show": "标记为未出席", + "unmark_as_no_show": "取消未出席标记", + "account_unlinked_success": "账户取消关联成功", + "account_unlinked_error": "解除账户链接时发生错误", + "travel_schedule": "旅行计划", + "travel_schedule_description": "提前计划您的行程,以便在不同的时区内保持现有的日程安排,避免在午夜被预订。", + "schedule_timezone_change": "安排时区更改", + "date": "日期", + "overlaps_with_existing_schedule": "这与现有的日程安排重叠。请选择不同的日期。", + "org_admin_no_slots|subject": "{{name}}没有可用时间", + "org_admin_no_slots|heading": "{{name}}没有可用时间", + "org_admin_no_slots|content": "您好,组织管理员,

请注意:我们发现当用户访问{{username}}/{{slug}}时,{{username}}没有任何可用时间。

这可能有几个原因:
用户没有连接任何日历
与此事件相关的日程未启用

我们建议检查他们的可用时间以解决此问题。", + "org_admin_no_slots|cta": "打开用户可用时间", + "organization_no_slots_notification_switch_title": "当您的团队没有可用时间时接收通知", + "organization_no_slots_notification_switch_description": "当用户尝试预订团队成员但遇到“没有可用时间”时,管理员将收到电子邮件通知。我们在发生两次后触发此电子邮件,并每7天提醒您一次。", "email_team_invite|subject|added_to_org": "{{user}} 将您添加到 {{appName}} 上的组织 {{team}}", "email_team_invite|subject|invited_to_org": "{{user}} 邀请您加入 {{appName}} 上的组织 {{team}}", "email_team_invite|subject|added_to_subteam": "{{user}} 将您添加到 {{appName}} 上的组织 {{parentTeamName}} 的团队 {{team}} 中", @@ -2345,10 +2430,16 @@ "primary": "主要", "make_primary": "设置为主要", "add_email": "添加邮箱", + "add_emails": "添加电子邮件", "add_email_description": "添加电子邮件地址以替换您的主要地址,或在您的活动类型中用作备用电子邮件。", "confirm_email": "确认您的邮箱", + "scheduler_first_name": "预订人的名字", + "scheduler_last_name": "预订人的姓氏", + "scheduler_name": "预订人姓名", + "organizer_first_name": "您的名字", "confirm_email_description": "我们向 {{email}} 发送了一封邮件。点击邮件里的链接来确认这个地址。", "send_event_details_to": "发送事件详情给", + "schedule_tz_without_end_date": "安排没有结束日期的时区", "select_members": "选择成员", "lock_event_types_modal_header": "我们该如何处理您成员现有的事件类型?", "org_delete_event_types_org_admin": "您所有成员的个人事件类型(管理的事件类型除外)将被永久删除。他们将无法创建新的事件类型。", @@ -2357,8 +2448,40 @@ "delete_org_eventtypes": "删除个人事件类型", "lock_org_users_eventtypes": "锁定个人事件类型创建", "lock_org_users_eventtypes_description": "阻止成员创建自己的事件类型。", - "cookie_consent_checkbox": "创建账户即表示您同意我们的隐私政策和cookie使用", + "add_to_event_type": "添加到事件类型", + "create_account_password": "创建账户密码", + "error_creating_account_password": "创建账户密码失败", + "cannot_create_account_password_cal_provider": "无法为cal账户创建密码", + "cannot_create_account_password_already_existing": "无法为已创建的账户设置密码", + "create_account_password_hint": "您还没有账户密码,请通过导航到“安全 -> 密码”来创建一个。在创建账户密码之前,无法断开连接。", + "disconnect_account": "断开已连接的账户", + "disconnect_account_hint": "断开已连接的账户将改变您的登录方式。您只能使用邮箱和密码登录您的账户。", + "cookie_consent_checkbox": "我同意 Cal.com 的隐私政策以及 cookie 使用政策", "make_a_call": "打电话", + "skip_rr_assignment_label": "如果联系人存在于Salesforce中,则跳过round robin分配", + "skip_rr_description": "URL必须包含联系人的电子邮件作为参数,例如 ?email=contactEmail", + "select_account_header": "选择账户", + "select_account_description": "在您的个人账户或团队账户上安装{{appName}}。", + "select_event_types_header": "选择事件类型", + "select_event_types_description": "您想在哪种事件类型上安装{{appName}}?", + "configure_app_header": "配置{{appName}}", + "configure_app_description": "完成应用设置。您可以稍后更改这些设置。", + "already_installed": "已安装", + "ooo_reasons_unspecified": "未指定", + "ooo_reasons_vacation": "休假", + "ooo_reasons_travel": "出差", + "ooo_reasons_sick_leave": "病假", + "ooo_reasons_public_holiday": "公共假期", + "ooo_forwarding_to": "转发给 {{username}}", + "ooo_not_forwarding": "不转发", + "ooo_empty_title": "创建一个OOO", + "ooo_empty_description": "当您无法接受预订时,向您的预订者传达信息。他们仍然可以在您返回后预订您,或者您可以将他们转发给团队成员。", + "ooo_user_is_ooo": "{{displayName}} 正在OOO", + "ooo_slots_returning": "<0>{{displayName}} 可以在他们离开时接受会议。", + "ooo_slots_book_with": "预订 {{displayName}}", + "ooo_create_entry_modal": "外出办公", + "ooo_select_reason": "选择原因", + "create_an_out_of_office": "外出办公", "submit_feedback": "提交反馈", "host_no_show": "您的主持人没有出现", "no_show_description": "您可以与他们重新安排另一次会议", @@ -2369,27 +2492,85 @@ "unreviewed": "未评论", "rating_url_info": "评级反馈表的 URL", "no_show_url_info": "无反馈的 URL", - "signing_up_terms": "继续使用,即表示您同意我们的<0>使用条款和<1>隐私政策", - "travel_schedule": "旅行日程", - "travel_schedule_description": "提前计划您的旅行,以在不同时区保持您现有的日程安排,并防止在午夜被预订。", - "schedule_timezone_change": "日程时区更改", - "schedule_tz_without_end_date": "无结束日期的日程时区", - "ooo_reasons_unspecified": "未指定", - "ooo_reasons_vacation": "休假", - "ooo_reasons_travel": "旅行", - "ooo_reasons_sick_leave": "病假", - "ooo_reasons_public_holiday": "公共假日", - "ooo_forwarding_to": " 转发给{{username}}", - "ooo_not_forwarding": "不转发", - "ooo_empty_title": "创建外出", - "ooo_empty_description": "当您无法接受预订时,请与您的预订者沟通。他们可以在您回来时仍然预订您,或者您可以将他们转发给团队成员。", - "ooo_user_is_ooo": "{{displayName}} 处于外出状态", - "ooo_slots_returning": "<0>{{displayName}} 在离开期间可以参加他们的会议。", - "ooo_slots_book_with": "预订 {{displayName}}", - "ooo_create_entry_modal": "外出办公", - "ooo_select_reason": "选择原因", - "enterprise_license_locally": "您可以在本地测试此功能,但不能在生产环境中使用。", - "enterprise_license_sales": " 要升级到企业版,请联系我们的销售团队。如果许可证密钥已经到位,请联系 support@cal.com 寻求帮助。", - "apply_to_all_event_types": "适用于所有类型,包括未来的事件类型", + "no_support_needed": "不需要支持?", + "hide_support": "隐藏支持", + "event_ratings": "平均评分", + "event_no_show": "主持人未出现", + "recent_ratings": "最近评分", + "no_ratings": "没有评分", + "no_ratings_description": "添加一个包含“评分”的工作流程,以在会议后收集评分", + "most_no_show_host": "缺席最多的成员", + "highest_rated_members": "评分最高的成员", + "lowest_rated_members": "评分最低的成员", + "csat_score": "客户满意度评分", + "lockedSMS": "锁定短信", + "leave_without_assigning_anyone": "不分配任何人就离开?", + "leave_without_adding_attendees": "您确定要在不添加与会者的情况下离开此事件吗?", + "no_availability_shown_to_bookers": "如果您不为此事件分配任何人,预订者将无法看到可用时间。", + "go_back_and_assign": "返回并分配", + "leave_without_assigning": "不分配就离开", + "signing_up_terms": "继续即表示您同意我们的<0>条款和<1>隐私政策。", + "always_show_x_days": "始终显示{{x}}天的可用时间", + "unable_to_subscribe_to_the_platform": "尝试订阅平台计划时发生错误,请稍后再试", + "updating_oauth_client_error": "更新OAuth客户端时发生错误,请稍后再试", + "creating_oauth_client_error": "创建OAuth客户端时发生错误,请稍后再试", + "event_type_color": "事件类型颜色", + "event_type_color_description": "这仅用于在应用程序内区分事件类型和预订,不会显示给预订者。", + "mark_as_no_show_title": "标记为未出席", + "x_marked_as_no_show": "{{x}} 被标记为未出席", + "x_unmarked_as_no_show": "{{x}} 被取消标记为未出席", + "team_select_info": "触发所有团队事件类型和所有团队成员的个人事件类型", + "no_show_updated": "未出席状态已更新", + "email_copied": "电子邮件已复制", + "USER_PENDING_MEMBER_OF_THE_ORG": "用户是组织的待定成员", + "USER_ALREADY_INVITED_OR_MEMBER": "用户已被邀请或已是成员", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "用户是其他组织的成员,该团队不属于该组织。", + "booking_reassigned": "预订已重新分配", + "reassign": "重新分配", + "reassign_to_another_rr_host": "将预订重新分配给另一个可用的 round robin 主机", + "assign_team_member": "分配团队成员", + "override_team_member_to_assign": "覆盖要分配的团队成员。", + "no_available_hosts": "没有可用的主机", + "reassign_round_robin_host": "重新分配 round robin 主机", + "skip_writing_to_calendar": "不要写入 ICS 提要", + "rescheduling_not_possible": "由于事件已过期,无法重新安排", + "event_expired": "此事件已过期", + "skip_contact_creation": "如果联系人在 {{appName}} 中不存在,则跳过创建联系人", + "skip_writing_to_calendar_note": "如果您的 ICS 链接是只读的(例如 Proton Calendar),请勾选上面的框以避免错误。您还需要手动更新日历以进行更改。", + "attributes": "属性", + "new_attribute": "新属性", + "add_attributes": "添加属性", + "add_attributes_description": "为您的团队成员添加属性", + "new_option": "新选项", + "update_profile": "更新成员", + "attribute_updated_successfully": "属性更新成功", + "attributes_edited_successfully": "属性编辑成功", + "attribute_meta_description": "管理团队成员的属性", + "attributes_edit_description": "编辑团队成员的属性", + "back_to_attributes": "返回属性", + "delete_attribute": "您确定要删除此选项吗?", + "delete_attribute_description": "此选项已分配给{{numberOfUsers}}名成员。删除它将从他们的资料中移除。", + "disable_all_emails_to_attendees": "禁用与此事件类型相关的标准邮件发送给参与者", + "disable_all_emails_description": "禁用与此事件类型相关的标准电子邮件通信,包括预订确认、提醒和取消。", + "disable_all_emails_to_hosts": "禁用与此事件类型相关的标准邮件发送给主持人", + "type_confirm_to_continue": "输入确认以继续", + "disable_email": "禁用电子邮件", + "grant_admin_api": "授予管理员API访问权限", + "revoke_admin_api": "撤销管理员API访问权限", + "apple_connect_atom_label": "连接Apple日历", + "apple_connect_atom_already_connected_label": "已连接Apple日历", + "apple_connect_atom_loading_label": "检查Apple日历", + "google_connect_atom_label": "连接Google日历", + "google_connect_atom_already_connected_label": "已连接Google日历", + "google_connect_atom_loading_label": "检查Google日历", + "outlook_connect_atom_label": "连接Outlook日历", + "outlook_connect_atom_already_connected_label": "已连接的 Outlook 日历", + "outlook_connect_atom_loading_label": "正在检查 Outlook 日历", + "booking_question_response_variables": "预订问题响应变量", + "managed_by_teamAdmins": "由 {{teamAdmins}} 管理", + "number_of_options": "{{count}} 个选项", + "reschedule_with_same_round_robin_host_title": "与同一轮询主持人重新安排", + "reschedule_with_same_round_robin_host_description": "重新安排的事件将分配给最初安排的同一主持人", + "disable_input_if_prefilled": "如果 URL 标识符已预填,则禁用输入", "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ 在此上方添加您的新字符串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" } diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 88a3f8a73526c9..00000000000000 --- a/crowdin.yml +++ /dev/null @@ -1,126 +0,0 @@ -# -# Your Crowdin credentials -# -"project_id_env": "CROWDIN_PROJECT_ID" -"api_token_env": "CROWDIN_PERSONAL_TOKEN" -"base_path": "." -"base_url": "https://cal.crowdin.com" - -# -# Choose file structure in Crowdin -# e.g. true or false -# -"preserve_hierarchy": true - -# -# Files configuration -# -files: [ - { - # - # Source files filter - # e.g. "/resources/en/*.json" - # - "source": "/apps/web/public/static/locales/en/common.json", - - # - # Where translations will be placed - # e.g. "/resources/%two_letters_code%/%original_file_name%" - # - "translation": "/apps/web/public/static/locales/%two_letters_code%/%original_file_name%", - # - # Files or directories for ignore - # e.g. ["/**/?.txt", "/**/[0-9].txt", "/**/*\?*.txt"] - # - #"ignore" : [], - - # - # The dest allows you to specify a file name in Crowdin - # e.g. "/messages.json" - # - #"dest" : "", - - # - # File type - # e.g. "json" - # - #"type" : "", - - # - # The parameter "update_option" is optional. If it is not set, after the files update the translations for changed strings will be removed. Use to fix typos and for minor changes in the source strings - # e.g. "update_as_unapproved" or "update_without_changes" - # - #"update_option" : "", - - # - # Start block (for XML only) - # - - # - # Defines whether to translate tags attributes. - # e.g. 0 or 1 (Default is 1) - # - # "translate_attributes" : 1, - - # - # Defines whether to translate texts placed inside the tags. - # e.g. 0 or 1 (Default is 1) - # - # "translate_content" : 1, - - # - # This is an array of strings, where each item is the XPaths to DOM element that should be imported - # e.g. ["/content/text", "/content/text[@value]"] - # - # "translatable_elements" : [], - - # - # Defines whether to split long texts into smaller text segments - # e.g. 0 or 1 (Default is 1) - # - # "content_segmentation" : 1, - - # - # End block (for XML only) - # - - # - # Start .properties block - # - - # - # Defines whether single quote should be escaped by another single quote or backslash in exported translations - # e.g. 0 or 1 or 2 or 3 (Default is 3) - # 0 - do not escape single quote; - # 1 - escape single quote by another single quote; - # 2 - escape single quote by backslash; - # 3 - escape single quote by another single quote only in strings containing variables ( {0} ). - # - # "escape_quotes" : 3, - - # - # Defines whether any special characters (=, :, ! and #) should be escaped by backslash in exported translations. - # e.g. 0 or 1 (Default is 0) - # 0 - do not escape special characters - # 1 - escape special characters by a backslash - # - # "escape_special_characters": 0 - # - - # - # End .properties block - # - - # - # Does the first line contain header? - # e.g. true or false - # - #"first_line_contains_header" : true, - - # - # for spreadsheets - # e.g. "identifier,source_phrase,context,uk,ru,fr" - # - # "scheme" : "", - }, - ] diff --git a/i18n.json b/i18n.json new file mode 100644 index 00000000000000..e273f25802d61a --- /dev/null +++ b/i18n.json @@ -0,0 +1,28 @@ +{ + "version": 1.2, + "locale": { + "source": "en", + "targets": [ + "de", + "cs", + "es", + "es-419", + "fr", + "he", + "it", + "nl", + "ru", + "pl", + "pt", + "pt-BR", + "zh-CN" + ] + }, + "buckets": { + "json": { + "include": [ + "apps/web/public/static/locales/[locale]/common.json" + ] + } + } +} \ No newline at end of file diff --git a/i18n.lock b/i18n.lock new file mode 100644 index 00000000000000..e5fabd12324c1f --- /dev/null +++ b/i18n.lock @@ -0,0 +1,2574 @@ +version: 1 +checksums: + 76a1ee1ae6f7c2f515beace0bc21adc7: + identity_provider: ba3796c0c695c476942adc2270810116 + trial_days_left: dc118491aee4c7c9b68f93f28dee0d40 + day_one: 662a181afa42bc61e05a6ba3203cb0d2 + day_other: e9b80f492afa190f80a5fa855d227f5a + second_one: eca62f1c8e7e2e407f29d6acd03ed238 + second_other: d558d34e6b0d8969830650d4acea68e4 + upgrade_now: 059e020c0eddd549ac6c6369a427915a + accept_invitation: 8de2e2e357dd63d75e00a67bb00e6229 + max_characters: 3740a3537a6a69ce3ce0cabfcfb59bd1 + min_characters: 2fff28b51dd9fa8cfe10ed9876e4a7d5 + calcom_explained: 1095d14f7bf834c343af9512e694b576 + calcom_explained_new_user: 2665f186e6edd591e62399afeea1694f + have_any_questions: 0b34c2b28d7b43d4b5bd7083cb490d37 + reset_password_subject: 6cb079319334bba4cf58623e2f8c944d + verify_email_subject: 0ce3732deb20fb1d907488ace43ddc55 + verify_email_subject_verifying_email: c060f08e88391043501776565d403ce8 + check_your_email: c51aa8640fe15af146f3e2dd4602e0c1 + old_email_address: a0997d29018f8eca4191f04254d7f3c2 + new_email_address: 45b7a175e9f4aaf32558ae59dbfa9541 + verify_email_page_body: 720f28b38e87f7e703c864249a712208 + verify_email_banner_body: f259317dafe60ec0085915633f1c0258 + verify_email_email_header: 5c96f738bd6153ee07b72094cdfd2b98 + verify_email_email_button: 42dcab68d931f9145d9b6d76740a5c66 + cal_ai_assistant: b015d2022d06f05133b6fd6de0e04de7 + verify_email_change_description: 21e50aab7ae115057a90847a36cf79ac + verify_email_change_success_toast: e7e1e80adcf69038b6fc4cd8cad1ab6a + verify_email_change_failure_toast: b75e83b28d79a0879eea5bf10f7334a2 + change_of_email: 5bb2d7434da6e429c922e092d6a891e7 + change_of_email_toast: 141ae7430a072d015b99f7064bca6397 + copy_somewhere_safe: 6eb4782a735ec3de629612a0566fa8ab + verify_email_email_body: b8d4f80619dd3fd1adefc064e67fb7e1 + verify_email_by_code_email_body: c4760a0e2284470b70fd164f47941175 + verify_email_email_link_text: a1634d37169cf4772cef8eaab2bde40e + email_verification_code: 4a787736e92ea6fcffc8c294c5382d35 + email_verification_code_placeholder: 84073514517d6a99939d54b77e0d8083 + incorrect_email_verification_code: 2f5a2fa8fcd111ea50b764cbbf4b8ddd + email_sent: 981021f0402b2dee2589123c60480ef0 + email_not_sent: 936997b1197826f6c43af51b1c3f15a7 + event_declined_subject: a79e8aec2181a8a9e3c68e683e9792a0 + event_cancelled_subject: 3370b9760bee4fdec5904dc6a823fa99 + event_request_declined: c9073a992aa0f82ad7059037507632db + event_request_declined_recurring: d1cbc5a80ca61e7b15fab0ebd8782bdf + event_request_cancelled: 130fd0087bd535dc755eec339732dcaf + organizer: cff6864d56049b2de93285c6fb7648ca + need_to_reschedule_or_cancel: 8e4fcedd363b7f923dceb26c8143ba54 + no_options_available: 1578bfcdda54521607e7695776832765 + cancellation_reason: 8e73160be8cdaed6e71565a4ec49e0e0 + cancellation_reason_placeholder: f4eac23857afdc8b674ba077e25e8799 + rejection_reason_placeholder: 7323623572496dbb1a170f7f6818e3fb + rejection_reason: 548de89f2233af9e74699412356fbda8 + rejection_reason_title: 8eb009c9ce928946ba27b0d8f92396d8 + rejection_reason_description: 4193b5036a73af541cb2163aef3ee68b + rejection_confirmation: 2c5797462c46f2eb34df08bec6b82120 + manage_this_event: 533596ac3a32d12f498397093ad8abf0 + invite_team_member: fe8b820b010a3fa419451fba5a593338 + invite_team_individual_segment: 64451e3adc9835aaa7f5f2a1d382be69 + invite_team_bulk_segment: 21417787440263b05878f80b81becc6e + invite_team_notifcation_badge: 2d3717ca8f12eea664bc33133214b1e8 + your_event_has_been_scheduled: 8a58b3fd25f34ef465be3a6a6d789eee + your_event_has_been_scheduled_recurring: fbcf1564f5ae6b0a7d32333df425a7d8 + accept_our_license: 7b59f051c8900e4db37d7efaaaf17d8c + remove_banner_instructions: ee7c7e409a9edcbda37c391aa18a524f + error_message: 62d090dd2ad47954cb97bdb3d3db295b + refund_failed_subject: d77a78bf1a16fbf9b5a83599ec910fb2 + refund_failed: 26a74600ea8bf5a7c44cf6bceacccb6f + check_with_provider_and_user: 83308363333d30d4c3df9b522d23e0c4 + a_refund_failed: e4b01c02b10252707108921417d80ca5 + awaiting_payment_subject: b8134c9082bedeb9ee302c47651c385b + meeting_awaiting_payment: c5a2ac9e8df09da25b012bc13c333b35 + dark_theme_contrast_error: da76b5b3c7480fd57bbadba6fae56a7e + light_theme_contrast_error: a050b398fe7a76928b3d8a29b47bd94f + event_type_color_light_theme_contrast_error: 9780774abb466bcffc203b39e24b1c8c + event_type_color_dark_theme_contrast_error: 048db3b08748278ad1889b09496cf44b + payment_not_created_error: bf0f5d21317b5e7a21b55530b2d11f77 + couldnt_charge_card_error: 65a52bdfcb16c44ecd6c757b3025f10f + no_available_users_found_error: 12759d781387c445ba29ef601fb19ceb + request_body_end_time_internal_error: c90ce14f6e59a9d9c516a5cb72df38cf + create_calendar_event_error: 091b91da9edbc336bf248bae5e546cde + update_calendar_event_error: 44f226890fc07ebabafdaddc88097145 + delete_calendar_event_error: 5990731c10b4748c21c1ed31e8729605 + already_signed_up_for_this_booking_error: ad057090220b6b8adf9d4e6bd0072a1a + hosts_unavailable_for_booking: d26a4fa6c90f863ec4b955badfd43369 + help: 62712a1f2fcef75e399e9a9a9ddbd495 + price: 6e3258d4cf5835177d174a5259a9cfd6 + paid: 5e2fa7af50cd5d877d9c54fd87bb3bb5 + refunded: dc61a49d169634b04452274c9c82d7c5 + payment: 95142d3fd8b6a6f551aba771842e9c11 + missing_card_fields: 4058c35da951b5305375f531f58db045 + pay_now: 9f0624f296aa513df5d1072ce5026a31 + general_prompt: a2020a9450e308f870cecbfe60fc6929 + begin_message: 84cad8e85b31272d1fac456e465ece28 + codebase_has_to_stay_opensource: 1c31cfa7fff0f771d5799146390e01d0 + cannot_repackage_codebase: 357fd3ad360ae6be67c7d044227b7675 + acquire_license: 932e298cf044f0b655d6726c00c53829 + terms_summary: 7121a78a137026e90798cea1ebe2e332 + open_env: e93254f3314098f4cdfb6b4318d4fd3c + env_changed: 504b2ccbed0f4ec19564ac2a1afdf367 + accept_license: 1a83a54fdc1248f7a8f48386020e7c98 + still_waiting_for_approval: 9a2d726b0c04f779cdea51bc2a41365a + event_is_still_waiting: ff866d6d3fbe18bdacdc79956c6adbbb + no_more_results: 1adb2c45a869a814fa64ed45fe7ff3ce + no_results: 0e9b73265c6542240f5a3bf6b43e9280 + load_more_results: 0ca3ac0fd1450284ce8dbd609e3b5b56 + integration_meeting_id: 7d3c4737b92e54e29276e6b2678d067d + confirmed_event_type_subject: 0fe2dd2e2f7b0e350994b7e3d21aae89 + new_event_request: 4cafc52d7dff28a54f592274c99a8121 + confirm_or_reject_request: e2a64596b3cbe3d765811d00758ab5f7 + check_bookings_page_to_confirm_or_reject: ec8baaf71e14070333c31533e5b33a65 + check_in_assistant: 3c160bd0e1a45d0fb90a81ffabf92a15 + check_in_assistant_description: 08ef31125f931c20a89421b004065d75 + create_your_own_prompt: 4cc63537f4ec31c54b170b0014e554b3 + event_awaiting_approval: 03b027ae88d47037ca242597662de1fd + event_awaiting_approval_recurring: 1dacc9c5f2c6b5e9a3bf04b67c39093a + someone_requested_an_event: 4d984cfdc219b9fe2e96be0b10e49188 + someone_requested_password_reset: e5bc2734f1dd9c285a0f50a714d7f59f + password_reset_email_sent: 6a8c1fc25c9a2be0846e3e5d5d33af3b + password_reset_instructions: ad68ae54e341bb72424a0ba4a96e625e + event_awaiting_approval_subject: f92b5cbfacff19d77467892320736018 + event_still_awaiting_approval: 9debdd5d10b553b7ecdfbfe29f23cb30 + booking_submitted_subject: ceb7f1299d26b96be129a6522da9f361 + download_recording_subject: 4d536459a57075a225f2cd12ebcfc9d2 + download_transcript_email_subject: 7c3d559005a0083508d822891f657f9b + download_your_recording: ec19c05dbf745ac9759ee0efcc756d82 + download_your_transcripts: 880d1c6fef8f49132b790645f24fb988 + your_meeting_has_been_booked: 5eb47861d87db595c13bc734ac681505 + event_type_has_been_rescheduled_on_time_date: 2f6ee619cb5a1d95d75b3d87d1e3ea00 + event_has_been_rescheduled: b99efaf65a500bf8c5e6d27004d3a0ff + request_reschedule_subtitle: 697e1517dfa385fdd2c47ab7ad2b8310 + request_reschedule_title_organizer: 9a8f9d51dcd6bfff75c5d0fca72d2dc2 + request_reschedule_subtitle_organizer: 9f645042a725df147bb290a49cf96635 + rescheduled_event_type_subject: 6f57c7cfe95a25a594948a909f0cbaef + requested_to_reschedule_subject_attendee: 8c41aa43f412fd739407d9a1eaa82c15 + hi_user_name: fc0d6128cf9a150638e635d2b2aa7397 + ics_event_title: ad10ef33288a55748e6001607d528ff3 + please_book_a_time_sometime_later: 89f131f8b3c7b4bc1a288a0ba052541c + new_event_subject: eea212a9fd5e66baf8b983b8bc9d7d63 + join_by_entrypoint: 116d507f1b3a64cd2538e1073935173c + notes: 93c7ef9bc767f51fbe360afcf6b1fecb + manage_my_bookings: f00b48d9085306ee3c38ce42db2af876 + need_to_make_a_change: 174d067631b3cf605b118e57e418f967 + new_event_scheduled: 534f2c7047803be73742ae8328431608 + new_event_scheduled_recurring: 5682b69455d5e75c557d36845e5e3b42 + invitee_email: 44e476a2d773f0b82713dfff0ab68611 + invitee_timezone: a22737be6331e1e09afc40a1fe6f9bce + time_left: 1050d0becba1fe6e2bc9f4210f20c01c + event_type: ff909027848e62f76ba7ba5f11adf170 + duplicate_event_type: c3dc03f4dc75e16620a7c9f9f8779b0d + enter_meeting: 60d65932d03df890679ea9d8ed7eaf79 + video_call_provider: df4bfa0c70ab204dd6e241d15440977c + meeting_id: 83f4302f4c4536ad853688fd974ab19b + meeting_password: d53ded20fbaf05133898a6a31610b3ed + meeting_url: 3e745fd2a8d559dd31efe004c9044ccf + meeting_url_not_found: 84f2f9b2a37f1436513678c28a6621e8 + token_not_found: 12d500df8fbb4e49d47be1a62ea753f3 + some_other_host_already_accepted_the_meeting: 24f61e898f58fb6d1d0db1e238c7fb79 + meeting_request_rejected: 358d667f522908f066c76526e2758326 + rejected_event_type_with_organizer: 8b96d12a8e4b95db1557f61ce79b9abe + hi: f974ffa6b9a4a8ed32dd18cd5907e556 + join_team: 2bde845db26a588641efbd716278c6b2 + manage_this_team: edc61b081cc278076e0336bcea02701d + team_info: bb74bf7860950932f431390b3b1453b2 + join_meeting: 0bccee2b25fe8de4398f4ecd8cd88bf5 + request_another_invitation_email: af0ffc5d4f4c003acea868f01882d9b0 + you_have_been_invited: f17c0473137ee3dc5b92f9364c14055f + user_invited_you: 9033fbe167a98b56fd051b3de41dd15a + user_invited_you_to_subteam: 4e092a42d411379917be7aa44daca876 + hidden_team_member_title: 6de3c064d68944f39816c8422f46c31e + hidden_team_member_message: 5900f7ebef28846c9fda5576abaaf17a + hidden_team_owner_message: 7cb51deef09f45cece1e1f34cf271296 + link_expires: bae1c1c11c4dfd5bc7e8377aeabd1095 + upgrade_to_per_seat: 8f8476b228036ade34f87f176d0786f0 + seat_options_doesnt_support_confirmation: 568dbec69dcd23aeb4ef85814f46f5f8 + multilocation_doesnt_support_seats: 7efb6a1eec1983ae7b07cdead04d7768 + no_show_fee_doesnt_support_seats: efb4fef529a0975929e64c77948de331 + seats_option_doesnt_support_multi_location: 5d441f293b0bd74d14342ea8ec455795 + team_upgrade_seats_details: b7cb7e96463b1d2a3d26ec84c092265b + team_upgrade_banner_description: c030cfa96cc1d75ca6a3232945a2156a + upgrade_banner_action: 28c07fcc57aec68e102cc1b8cc7e5491 + team_upgraded_successfully: 5fe06959c6b890e55f02633f802d4008 + org_upgrade_banner_description: 5a1acb34eb2a3682f4dceb478b425d15 + org_upgraded_successfully: b803e2b8a503792206beaf1f4f2c861e + use_link_to_reset_password: 75eea563335b8773fa581c61307b4b22 + hey_there: ab526f798b3a2000aee04d9455a05dbe + forgot_your_password_calcom: e25822f11d138676f1151900a12be61f + delete_webhook_confirmation_message: e6c1794d4d697286d2b55eb24c08990f + confirm_delete_webhook: ef3672fcdca099306496ef20d846724d + edit_webhook: d4aee9a0c6dfaf562cabce90f6dc64d8 + delete_webhook: 892fb9f7b08c5113b7abad05b78df25a + webhook_status: 3da75cd61eb6a3ed8e2da5265175aa00 + webhook_enabled: be2173e0957606bdaa87b091e140a55a + webhook_disabled: 99fe63e5f2e5b6da44c8afed175ac40b + webhook_response: 560022605ca28622704d7e6939d7ebf6 + webhook_test: e5e24d4aeb89ec198800793a2346eb71 + manage_your_webhook: 0e98b60ceea53bb6637469cceb2bf16d + webhook_created_successfully: a28d4b9a5427109de72d7519e6b4fdcb + webhook_updated_successfully: 268f4f92524ec2e59868e765bfa815e5 + webhook_removed_successfully: a85ed28b09a5d30e1ab32ce74641bc03 + payload_template: d6b932029eeff062358604bb4990d9ea + dismiss: c2f298165cbfc17041b795065bfeb57c + no_data_yet: e4446716d5db8ad0e49c7e763c385af3 + ping_test: e72193d7e1f1790e0cefdeb4767c5762 + add_to_homescreen: 996a0c305cf3f343173194ca9ce1d79f + upcoming: 512c91951b0b40020c215ed04b18a5f9 + recurring: 61ece72e3dc8a368f6e57316f6725048 + past: fe9fc1fd19c1c30a3682dd8840836ce1 + choose_a_file: c223545570ef239aab5dfb57f418bed4 + upload_image: 801f0d9058deb2448da5e9cd5454f223 + upload_target: 3ba107518b521d05afd55a8d78fb9f58 + no_target: d5ee7d5dc493a00f6d6c42b97e1e338e + slide_zoom_drag_instructions: c85ce5d88e36d858de0a9a586b57d34f + view_notifications: cc622a9c6901ad67253f47ba0a6ad6a0 + view_public_page: ec22552c40f2e67e2ec4c873cae82d48 + copy_public_page_link: c0588480464a911cd42c908df3795cd4 + sign_out: 6d842546a84e919c519bf8cbffdf25a0 + add_another: 26ee6c7439e99431bd4e8d6181e23ac0 + install_another: f8e5dab6ee03046bcf4e3446312766c5 + until: 13271248d8ed1f956c713f8612e327db + powered_by: 991fb9abe285a33341a1aaeed2eaf031 + unavailable: a91890f6cd8577d39b86f8c0816cfaf2 + set_work_schedule: f3536138061fa39bd333d6226b9717e8 + change_bookings_availability: 01952afde421d31c602a3b4a02946743 + select: e9b003b302c453ac00d647685bd7943f + 2fa_confirm_current_password: 7815146bd37e6648a6a6637bf9e0095f + 2fa_scan_image_or_use_code: 3cb0e8fd9e1c12e3a85bb4e1bac15ee5 + text: 4ddccc1974775ed7357f9beaf9361cec + your_phone_number: 19d09d6891d9cb015de82ab6492f0e34 + multiline_text: 87ecc91110d662b84890920c9d26d539 + number: 2789f8391f63e7200a5521078aab017d + checkbox: 6c83cdf357556d2be8141286a6129ca8 + is_required: b6c231d5d1a8dfe37615d1efd38ed8e0 + required: 04d7fb6f37ffe0a6ca97d49e2a8b6eb5 + optional: 396fb9a0472daf401c392bdc3e248943 + input_type: df4865b5d0a598a8d7f563dcec104df5 + rejected: 30202c9a9a2093021b0e9a1c61717fe9 + unconfirmed: a9cb4019bbb8bec185d170f199d19aa9 + guests: 756a3f36da0e6efd1408771b7f6b7633 + guest: 2aec6d6ebe0d9a1db0a5c8cd5a98b8c3 + web_conferencing_details_to_follow: de8fbfde846f5ee46e8403c09082b0f4 + 404_the_user: 44a7f00ad59be26279cc448d36413dc3 + username: 2ee65bc2dd2f12cf2672f95b2a054bf8 + is_still_available: 3b7a9c58064ca5bc84047dff01cda07a + documentation: 1563fcb5ddb5037b0709ccd3dd384a92 + documentation_description: 0b53209605b375546d96e8be405921fd + api_reference: 7dcc877064bfdf889ec55dbc9e06a242 + api_reference_description: d5450b590e4fd168b9c9ef16ff63f2b6 + blog: 7feb9b36be2028520ffe37de06505148 + blog_description: 8b5eb9a25181831a301bdf5a561d8646 + join_our_community: 325d3631b84ebb0d15a100ffa4719059 + 404_claim_entity_user: 43c5bbfea73344b5aa8d8e1f197bc3d2 + popular_pages: 79ff582da54db9efd65458024c8d3096 + register_now: faae74911debb940b1f2b4a35f3a5ebf + register: 70217f3c73ff414d22893a4f13be84d6 + page_doesnt_exist: 7b6bcd0a4f23e42eeb0c972c2004efad + check_spelling_mistakes_or_go_back: 1de0398045bb1a144ff899d47d74d29f + 404_page_not_found: fb6fd76673d10b5f30246131f8e9e847 + booker_event_not_found: cc6d91b6d2eb1bd6ca6ffc57c7a79dba + getting_started: fbd403146395526d68ac68d142a50e21 + 15min_meeting: acb3ec45eebc0d105cdbd298a4b46acb + 30min_meeting: 5a880b44ab82b2d4130e12ce52e0d75c + secret: f041e5eb96121c8b4f2b8af7e0f83a9b + leave_blank_to_remove_secret: 780c5c8c3d25d3c13ff26e051bd479a1 + webhook_secret_key_description: c965b3194b24252677e8e476415adad7 + secret_meeting: b22ebd9b53662182d95749b3a6b5d3de + login_instead: 4e7a13b6c39065d8e093c554345ccd7c + already_have_an_account: 699043a787e26ec2ecad53f52df28d5b + create_account: 3c3c9666b2acc1404eaa89e34e17f946 + confirm_password: b5cdb861d8deb598b0613d48098b82b6 + reset_your_password: 092dcca439cd79d85489ef004cdfdcc1 + org_banner_instructions: 3d1e6ab6ae5844ff11bfc012cf62de1b + email_change: 7064fbed3979d2b93e80b8c3b72f1847 + create_your_account: 99ef5a3eeab6aa98f0b5577b013b5e76 + create_your_calcom_account: 06e939953ea056809946a8214c525e4a + sign_up: a6a0b995463f62ce6a12e37f1d05a9bd + youve_been_logged_out: 9a86ae629ff892ba2e455698816e42a2 + hope_to_see_you_soon: 376d14816b4e2afad591f5f69101e9b1 + logged_out: 97e1afeb82703f49334088c6d382483c + please_try_again_and_contact_us: 919aa9fcaeead8b76ef344bfb819181b + incorrect_2fa_code: 933a9fe8053775fc95bf2425b6de821f + no_account_exists: e219253efd1d01ac245c3fc1f0d14c90 + 2fa_enabled_instructions: 308ba145b3dc485ff4f17387e977b1f9 + 2fa_enter_six_digit_code: a51f3b236b54d446a0d445796290a09c + create_an_account: bc53a57281d2701563f94f3169518028 + dont_have_an_account: 613efdc05ae6d04b7136d199645c56ac + 2fa_code: c8597a6518a04027bad18c0f232f3fc4 + sign_in_account: 774c919c1e3bbdf90d063d727fb157ef + sign_in: cb8757c7450e17de1e226e82fb0fa4a2 + go_back_login: ffd37c5383ee3aaa9c94ad0cafa51cd3 + error_during_login: 5508024b9bfef0a2e10198874f5dc18c + request_password_reset: bac799d0a3f1a8a0feac6c208aa8515e + send_invite: 782a5fd3a56437c705526e6ad694ccc1 + forgot_password: 87302ecbbfead42d1abecddd442ad77b + forgot: 1376a5669e3e0a69729f126d79703f8e + done: ffd408fa29d5bc9039ef8ea1b9b699bb + all_done: e5f82091c03fcd91d6472bca5b96165a + all: 5e2e93f8e2a5f315b6fecdd0a0e6f55f + yours: eeb51a501bfcd2ac61a01639c1810a0a + available_apps: 6d722c3370d98620acce31eb6c6c310b + available_apps_lower_case: bdc6d9add2c4aadff6367146844ab26b + available_apps_desc: 01d1ec20f484df8f223d2c60a725760b + fixed_host_helper: f40c3ffd83c8c8d84acfffd23a02a4a5 + round_robin_helper: 7c1df95abb4b36b2eb4d8a199ffd771f + check_email_reset_password: 5e9935930a0028c0a3fe9ce514486c4b + finish: ffa7a10f71182b48fefed7135bee24fa + organization_general_description: 7291b3669f5b70ca67b4f1cbdcd624bb + few_sentences_about_yourself: d7654a6ea56041d9156f90ccb7744d3d + nearly_there: 816b60667173ed8c09cb34c8ae24d683 + nearly_there_instructions: d917d2a7032d026ac7f84f2f5e504d52 + set_availability_instructions: f14d51965efa0832b592a2996b8cf183 + set_availability: ac81842339bf211890416c3e12ebf2f5 + set_availbility_description: 8e920e8c4f036222256d69c460596937 + share_a_link_or_embed: 48efbdfb09557618bb8346549ccce5c4 + share_a_link_or_embed_description: 48bc6c8ff23f1c7f6a37938090878db4 + availability_settings: 7d710e302eca54cfdb26e6a773eee97e + continue_without_calendar: c1fa7f2367a560be04ee5811548db75a + continue_with: 0ae1bdfffc35db9ab647cabde5a1e903 + connect_your_calendar: 5cd95797e99cd567bd62586315c8d258 + connect_your_video_app: 6b9ae7571e81a24036762ec2e911016f + connect_your_video_app_instructions: 55ca3584c4cf929f74264901bda5c91a + connect_your_calendar_instructions: 40129a4721c343d3c7b1efa5b3afa33f + set_up_later: ef3f9b469acc29421fee2cbd96496aec + current_time: 9b305d24a89fd53c07b95b1026c4013b + details: 2a8bbb1bc386c059783f925aca2cc522 + welcome: 3180ad6b8de344b781637750259e0f53 + welcome_back: 4928884739ba559e6e4b960e80fe1452 + welcome_to_calcom: f6071d1cab61b56a4adf8ef813341264 + welcome_instructions: 82a0aa89ef59533761ff379748a5bf79 + connect_caldav: cc1c33de630a5b8a7c45c9a44f5c1609 + connect_ics_feed: b947b289dd2a270f5905764467dfa1ca + connect: 8778ee245078a8be4a2ce855c8c56edc + try_for_free: f615a3b940c181229c620ffb55687382 + create_booking_link_with_calcom: 00c16fda593f244b86e009327b1f1e53 + who: f9add49e2056f1e0996c257350ff1d3f + what: 00ba858b3bbf5f58fa37027bb7c73e23 + when: a40ad3eed1b75e76226290eeb9bb20cd + where: 23aecda7d27f26121b057ec7f7327069 + add_to_calendar: 299c92d2ec5e016f3624091a8b290c49 + add_to_calendar_description: 72e3fa87058f8364e66d0386bdf27ca1 + add_events_to: dfb58cbce37ca5d8f67382ff870e7ca4 + add_another_calendar: 7c94f600d6ebe6d9bca54f405ec34bbe + other: 79acaa6cd481262bea4e743a422529d2 + email_sign_in_subject: d67308a3262ab416c083ca041b8690a1 + round_robin_emailed_you_and_attendees: 74b9d35a245724c3d901ea28a3221484 + emailed_you_and_attendees: e0f8269315964727ff509f17db78dec8 + emailed_you_and_attendees_recurring: ba5f9605b0e0f16d97cc1a4462c52924 + round_robin_emailed_you_and_attendees_recurring: 7166cfe983fb8d1dfcb0e816e599fec2 + emailed_you_and_any_other_attendees: 91fdd4bf3fb673086ebcbda8d8983b32 + needs_to_be_confirmed_or_rejected: 913a2d9efd305e965aac50a6687e47f8 + needs_to_be_confirmed_or_rejected_recurring: 3f4cdc1672c21265f74da0481ff31972 + user_needs_to_confirm_or_reject_booking: e8a322db1df6a70aea5dd11c131098d7 + user_needs_to_confirm_or_reject_booking_recurring: 8d1a2f03dd14a5242c0dc625a853c3f7 + meeting_is_scheduled: fb01d9a30a713ecd7e2541df85affc85 + meeting_is_scheduled_recurring: d9f1ec018609326e8d5a3c6046da9c98 + booking_submitted: a4d5675e1b0d96fad9290bf0ee223451 + booking_submitted_recurring: a234a96648ca23a7ac2f50fe9b0c257e + booking_confirmed: c0f37f584a0dd5cc3b7f9a1dde5fde14 + booking_confirmed_recurring: 1013d15058c5e1e22dfccbeb835871fe + warning_recurring_event_payment: 2db8e15b4a6ec9b1bae9d320073864e0 + warning_payment_recurring_event: a4436448310776893323b26c980226fd + enter_new_password: c66a365a8b6aa6da45676bfedf0ddb66 + reset_password: 52ec990b25991808a4f49db84986eefc + change_your_password: b767e3c485674fcfd0fd9f7e761afd33 + show_password: 8696d19a0f02613a86727810355fef47 + hide_password: dd9813264cfc4a7ae515cd5644943c1b + try_again: d65fad81c5f8f90405b26bf6e5d70ab9 + request_is_expired: 2db4dc95eeacb1543a8da8ac7ceaa492 + reset_instructions: 44d3c7538ed4389ed7cc9d8e728dec15 + request_is_expired_instructions: c20139c8e5486b86ef5337a23287cb03 + whoops: 936557caf1ce6f0337647a7ff27b923c + login: f4f219abeb5a465ecb1c7efaf50246de + success: c43827becada6750f7a25890905f38b9 + failed: 99f87615af1fffa2b8802866b096705a + password_has_been_reset_login: ab70a18a0e77fbb8694a4a7403d4a44a + layout: 8ab849bdcd801c13e7e85474299e4ee8 + bookerlayout_default_title: 882dca24bfdd71665707cada9b4326db + bookerlayout_description: 17e0af967c75ee9179c8aa19d9df1a86 + bookerlayout_user_settings_title: f700ba7ccbe3ed86029fc48fd3006205 + bookerlayout_user_settings_description: 2db9836a0a262afab690e631ea1f93e5 + bookerlayout_month_view: ae7bef950efc406ff0980affabc1a64c + bookerlayout_week_view: 9e687411dbf1248496a4ae5dd5391679 + bookerlayout_column_view: 727e175c2db22c35bc2e29efeb10919a + bookerlayout_error_min_one_enabled: 4aaa2f0908176eaec26b122307cabc72 + bookerlayout_error_default_not_enabled: 6555857b94b38aa43fbc75c4fd621da6 + bookerlayout_error_unknown_layout: 8e3f77fd6bf9bbbe7a697c922470983e + bookerlayout_override_global_settings: 3ab584003ac80a9884bcb4055bbcecca + unexpected_error_try_again: 2d5efbc171dd543294c618e7638fe90d + sunday_time_error: 73ab84cc35702e46ba8068b3d8302e90 + monday_time_error: b04a489aca5d46b3cb2d58726d57413b + tuesday_time_error: 40f93d8bc983c461cbb408fb2be654c7 + wednesday_time_error: fa8d8b984868cde62acac084a485a2e6 + thursday_time_error: 98d5765c26668fcc2acde34af78030e0 + friday_time_error: 850f53acf8e5bfc37f2f59086ba01ded + saturday_time_error: 315d6abe1dddd933b22edd444991205b + error_end_time_before_start_time: bafb5a497c7084da3eb0d90c5cfc6245 + error_end_time_next_day: cb07cdf16f0ff846ff9d23b05d03a083 + back_to_bookings: 31707a41bd8a4488dffe1d54e1b4c177 + free_to_pick_another_event_type: adc32eadcc346fe4784782433f0b4767 + cancelled: 342a409089d71ce45725add1c62b0ade + cancellation_successful: e65aac18bb95f1d23e9c8390f3126059 + really_cancel_booking: d8155209f014a4116151fa2890d2bd48 + cannot_cancel_booking: b9fed5d3d04c4e94b9b510d76951dfb0 + reschedule_instead: e57162959e7cc05cbc48bf6ed872f501 + event_is_in_the_past: a00ebe68aba330509fb89e12c287562c + cancelling_event_recurring: afd66a98289c67daf1d1d50d45ad5c7b + cancelling_all_recurring: 580c62869cc1004bab5ec60b418167b6 + error_with_status_code_occured: 3e90e9736235f8de2f2a5bc11a19a5eb + error_event_type_url_duplicate: b4646a112b251613f382326415185f71 + error_event_type_unauthorized_create: 752081d14164c3b4e0d533912af1a6f8 + error_event_type_unauthorized_update: 2c83c604f55cbd9f57bc217fe4929b2b + error_workflow_unauthorized_create: 1eb82724b36b56ea6da15498188cecd5 + error_schedule_unauthorized_create: 6396b9157afed8f07ae9e9496221ee81 + booking_already_cancelled: f7b2107f241aa0793c5cbdca161cce3d + booking_already_accepted_rejected: e2b6e1b5613c9db98192fdb82c97f20f + go_back_home: 377f3be7cfb6c1ffb55a75d90ce91f2f + or_go_back_home: 7a25555f7e10b0677c8d37a85183282d + no_meeting_found: c4e47c25e2fb3f96e32ba0a9d3ede0a7 + no_meeting_found_description: 28d04efbf84070cebbbfc25c528aec36 + no_status_bookings_yet: e8dd008c9764850e5a2ddbeedece71ab + no_status_bookings_yet_description: a36f966fb7f1606a55de3d994a2a10ae + event_between_users: e2e5e39331f86e0447ec2db4a7364716 + bookings: b6c73c2c1406f1f5fc13ef027ddb9352 + booking_not_found: 5ff77e63c3030e41e6aad0d2b01df81b + bookings_description: a15022467fd50a42445c81471a4432af + upcoming_bookings: d3fc7989c54476d11bed66275533e149 + recurring_bookings: bac6e0ecadf61aaf7802a2cad5c60049 + past_bookings: 8d16552b8697ea8216382c878ef84d85 + cancelled_bookings: 0181b746b4bebcae258e12aed2c336f8 + unconfirmed_bookings: 1774a76771a9138a5728cfa9b4b1eb2f + unconfirmed_bookings_tooltip: 6644ced2af25273ba8f006124dbc12d2 + on: 221bc27170a3baba6741482c0b28baa1 + and: ce8b9bb44f031705708a70e068bb73c8 + calendar_shows_busy_between: e8db61d88590ba8187b0446a789ba50c + troubleshoot: 642534eb1cb8eafb52d6f7e892853462 + troubleshoot_description: 4bb213014daf1d6b7175648562fc64a8 + overview_of_day: 4d0e94f2984f6c9c92141580a3f23adc + hover_over_bold_times_tip: 1d73f9ecba0185b2f4916d196ae019c7 + start_time: e4b89e056780606bc35acc06c2138cbc + end_time: d874e0a79649ea9e2b38aead2710d286 + buffer_time: e48741a14b113e6fd53d33e4aba50d99 + before_event: 7af1c8e457ccd7c2bb07455caf002afb + after_event: 0db2ba44642dab25387aac684e46039e + event_buffer_default: d40e82cb89ad56ab9c3edcfd47b63ecc + buffer: 041e96d12eef971ca3d270c7ac45d6a2 + your_day_starts_at: beaf925e8e702de29bb1ae82caf5fe81 + your_day_ends_at: 3fd2c3f27b7b70ff4e13cf18d877a579 + launch_troubleshooter: 519740d758da8228762f594c9d741225 + troubleshoot_availability: f4c3bb8a1c0fa074c9ff327b19fc8db1 + change_available_times: 2dfb9f74811fd214b90acf8958a5efec + change_your_available_times: 1509f7e547f3eba58aeb7b765eb9475f + change_start_end: 054d73fc0a6f9d2deb1efdfef666dfc0 + change_start_end_buffer: b95d03a205e8a4b40d48f78f24bfe6c0 + current_start_date: 3028ce008378d0f9c896cbdc6205ce07 + start_end_changed_successfully: 8e4859be6242a8a2629019cfe4337793 + and_end_at: 365e1cba4a11c679979b5450bd9d21d2 + light: bb78ea2c6edd8662676c81a8a13ecb93 + dark: 73e6e208ba628b26e90fcf6dce15e1b2 + automatically_adjust_theme: 57f975f2ce8bdf69f3cb79083dd18829 + user_dynamic_booking_disabled: 08d69412e183e9dd95c46d32753c908a + allow_dynamic_booking_tooltip: 22ada5d4bbb521deb86260dd44ad396a + allow_dynamic_booking: 19c086c37cc0aec137e730dd8fc3ae34 + dynamic_booking: 927c71b4f3ba40240b664d7c9a1c8efd + allow_seo_indexing: 421a6a2100fd741cbffa8764f5e0e72d + seo_indexing: 8d91183c10c7e4b56e0208acecb79d21 + email: e7f34943a0c2fb849db1839ff6ef5cb5 + email_placeholder: 06962d9f03dcdbd4fa1b876f240054e8 + full_name: f45991923345e8322c9ff8cd6b7e2b16 + browse_api_documentation: 5be3aeab0dbeb2a15e598fc40aac22d2 + leverage_our_api: ba4107d9134c22e9d51a873826bfe853 + create_webhook: cfdf13fccad5cf204d601e667cbe0a0c + instant_meeting: 4252d62378b237db909db56b8c537016 + booking_cancelled: ca83012224d43d0c989a0f1b2ff2a15f + booking_rescheduled: 6b30618c6e47db0cc578132be20b57df + recording_ready: d97314ee6b7624c95e54fb8840a39ead + recording_transcription_generated: b630598a07022c0089cc55f1f3262aef + booking_created: f8121c72f29ea921c8f93caa6ce665d1 + booking_rejected: 7e68af1da7a0bcb2094776e9256dc6fe + booking_requested: e0154fb2be14f50e637cff08892bd21f + booking_payment_initiated: 18d4b70909502a7bf98a04defd9f93da + meeting_ended: 758c721237c979537b271a6c47a51c16 + form_submitted: d81abd89531ce80f0561a90c4ac4aced + booking_paid: a5e465bca749d839cab0f84ef26735dd + booking_no_show_updated: fdcfaf9b5d3eaa701629cba77ec4ded5 + event_triggers: ebba3ce0a361e6ac0632f921ac86aaec + subscriber_url: 654ecae8a1b307053052d8c8823c3f3b + create_new_webhook: 24db1245d45c7363763ba8d1c780c78c + webhooks: 0329bc102d3ab3c73410d126e119de12 + team_webhooks: 3970bf2f8b3a4b3b7c2725c9ca8400e0 + create_new_webhook_to_account: e16d3079172cb11a98bd3ab86feb39ec + new_webhook: 7494fba975b4b06f64410a77c5dff492 + receive_cal_meeting_data: 112b093b898a300efb06be13f308c4a4 + receive_cal_event_meeting_data: 751a2731a55982d1d6d6d80ab99145ef + responsive_fullscreen_iframe: 42127f483fb1338afa781a61bd96400c + loading: 82b4ea7ed1439094d7c4be13aaba9a66 + deleting: 683cd814a3fc94e50b3e4e4a9c90c19c + standard_iframe: 6a277110bb6d16ddf298b7453cf81b19 + developer: 7a803617347f091e19a92d8579555af7 + manage_developer_settings: 7aa2cfd93a6c9ba9382868d7d526b0b0 + iframe_embed: a344321489515fde58ff11206d5626b6 + embed_calcom: d596d6d83c91c442fb680380bbdd7663 + integrate_using_embed_or_webhooks: 4c5f2211c48d0682418ed26ee4d1d61d + schedule_a_meeting: 185a75777b713c6699dc823bc9c87c4f + view_and_manage_billing_details: 0410cf2ffa43dd1acbf69588fcf03821 + view_and_edit_billing_details: eb2bb992572892e74f75f03dec52ea2f + go_to_billing_portal: fceb73e79c708b920207b3b74886542b + need_anything_else: 927d4322e310a0e02372b354da55f2e4 + further_billing_help: 2c01d0b62be20505a1bb94475b3fcc96 + contact: 9afa39bc47019ee6dec6c74b6273967c + our_support_team: e5cc58cdb5af1527fce30bddb5910bbf + contact_our_support_team: 5cc9242ea6d1bf372a1dbaceaa76f877 + uh_oh: cc24ad24915ebc45d9424a72496bd81a + no_event_types_have_been_setup: f25ad327b8c8a4a2fbb9d9379718b930 + edit_logo: 51a8a1f2e747da646d9d62d3cc47f8e2 + upload_a_logo: 8e8a18bb1ba47118a420e2165155e5c0 + upload_logo: 02e6b6bf1d8c6e3b2e9bc748fe99efa9 + remove_logo: f60f1803e6fc8017b1eae7c30089107f + enable: 463972a7a95f50f3105d09b92508f2cd + code: 343bc5386149b97cece2b093c39034b2 + code_is_incorrect: 18ba0a631354584d52f81ef356b9a006 + add_time_availability: adc907ffdb285c471f49e125957ee0a8 + add_an_extra_layer_of_security: 1429e4eeaea193f15fb508875d4fb601 + 2fa: 8bc1572b5995cc2b222f381d0f75d873 + 2fa_disabled: bfc0d5bf602ecc6dff07c0d2642ce531 + enable_2fa: e6b0e9ebe6342f9f7e9b938bcea8b24a + disable_2fa: c09f0976133a1e83969971554f57c5c6 + disable_2fa_recommendation: f81ac20c3864f1a252a4813b5f9b719a + error_disabling_2fa: e8dddd4ec4bc61e842f5db4ccf7e224d + error_enabling_2fa: d361ef27d20ea7dd9ca7bb916c2a18a6 + security: 4b34923fef858a2b9a4a914c3e822889 + manage_account_security: 4f4fc0daf3f64e97a58e0b0927c48d11 + password: 223a61cf906ab9c40d22612c588dff48 + password_updated_successfully: 44a306d5cb080e6c529445467e9eb6b4 + password_has_been_changed: 9a60e0564d2e305de3c187c2cf2a9a1c + error_changing_password: e8d0e2018b00225a81ee2617566bcd0b + session_timeout_changed: 0ff8588b78cea70477e377d800c9f5e2 + session_timeout_change_error: 63f736cc2ff539f76b47cffa07f40f9d + something_went_wrong: d2178e82ee8359dea326f25cbe89018b + something_doesnt_look_right: 81b08ae13ac80c71cd9cc14a138eb1e6 + please_try_again: 346a18a54564881c888b95873d03df44 + super_secure_new_password: 63a8809582a9385c4aa1435bbfebc57c + new_password: 80d809edd5d1b66123b18faaac10537b + your_old_password: f72398b5e3d07117041de2b17300ab21 + current_password: 2e186f3990c3fcacb1f892c94f7ecae1 + change_password: a552fc5c4189ebc3e2e6018edda7d18f + change_secret: 70642fa705e0de9f5f774b47d8622337 + new_password_matches_old_password: 81851d9cd0f2c525bb6a448132e75f0d + forgotten_secret_description: 0d10e0b3c6c350430aac56038370cc73 + current_incorrect_password: 6a78b152b2037fd6cc274efc855e11f8 + password_hint_caplow: 8696533eb006764e947290cf918da2b1 + password_hint_min: 7957387157951c867b5682fcb8df58ff + password_hint_admin_min: 598be688f1129e19aa78eb85d9e19727 + password_hint_num: 58fb33a486aa4dadfc05e3242fc7ea0b + max_limit_allowed_hint: 9442506bbd488e99cabce6afabee6074 + invalid_password_hint: c7e77398d88e52f2eeaf7321ae984c61 + incorrect_password: 71e55653ad6069e798a0fcba04235028 + incorrect_email_password: 2c027506af9e937c7338e70f5ae39b0b + use_setting: 17f4d0e75b86bcdbf9f1efec8ce16869 + am_pm: 850c2297a006fc072c94ed6c1b9e46ce + time_options: 9929d48aeafcbef6f3341f7daaf9020a + january: 8616cdc9a9fe56662bcbd47b15faca81 + february: c182c434df65c8920455290217c1da92 + march: 9ad45c85bd80029e825d53bc6bcad16f + april: 35fa86ffb828b5ca6f860105c4c27e56 + may: 320223c5afaaf28560a3a84d3527d51c + june: 0b84e81fc9079892b275f7916f0429b5 + july: 308acce99b27144413a705f300fb6f73 + august: 0e3ca87719ea08c316bb8082f0954300 + september: a4a49fc69f451bfe70eb5deaf76e6788 + october: eaef824e51baf5add7e82480ae17810d + november: c234fbe98d185e3dfac1417067a87727 + december: 241ad95709e4828ada7e2f7f339dfbdd + monday: b4b1c8396e445e8b7956c747da2cf601 + tuesday: 5667db9a55f400c374b8a39724e85a97 + wednesday: 61f1e0b70e7ce89cd5e0c067aa78f4ff + thursday: 01e20fb9f69123568120f93299f66436 + friday: 320c91ba40b99148d9eabd578b89ddc6 + saturday: 77b65adf8ae2b69eaed51b6104ded65e + sunday: d21934fb36dd8a82e36352968207d44e + all_booked_today: bdab79de8e2e1ce95fd004be0cf03c98 + slots_load_fail: 9a7bdf5a0dfdee3b369f464251e47d36 + additional_guests: f3530c852edd1ef8eee32aab7001ccf3 + your_name: b00c01deec0af9a441331a5134210de1 + your_full_name: d9a233fafa8d9e9658f1143da07fd266 + no_name: ace6b34a8e589f004055e11e9dd771ce + enter_number_between_range: e6fc5e0aa1a6a6406db5ff5934e8a682 + email_address: 3ba3f099b1b9be6c35ad797da660cb9f + enter_valid_email: c28f92f8e6f25c64ef583a3419fdd08c + please_schedule_future_call: 919003f1000bbcf317d0de7ab957fa3b + location: 036cbdfe32bbe9ad67b5d06ef6a02a16 + address: 5a9a8bc26f90d84c90105690a2eb23a1 + enter_address: ae81e883ee62fe3e92be6c93a1ea884d + in_person_attendee_address: 9620fe8db891bf885df702be9581a2f8 + yes: ec580fd11a45779b039466f1e35eed2a + no: 8c708225830b06df2d1141c536f2a0d6 + additional_notes: 416243d69874a5fd915db4c16a5311cc + booking_fail: 77f1e488f78c5f4a2af375991fc96d23 + reschedule_fail: ca83a60ca80f311d5e508cb407e86cae + share_additional_notes: 9d7459f0bc433d02e6362128473ea3a7 + booking_confirmation: 4a0d9c7b2b0d954e0292ea041d5adf27 + booking_reschedule_confirmation: e56b7d1664db01da5d9559b96e0b8870 + in_person_meeting: b14a2ec508192561bcb238f76ac795db + in_person: 922f164c49846d473c8841e213894e70 + link_meeting: e509c5f94221792522a7d449f6bd4723 + phone_number: 704845f9e3c7c39379047333e20d2bed + attendee_phone_number: 2dddb9aba8d6cee421940a22c79bff1f + organizer_phone_number: ec7a31ee7bf0514078672773e2281dcf + enter_phone_number: b378762e4f487c5e5eff599d3ccc879d + reschedule: 43c56f164b43d555665ab406c75c3002 + reschedule_this: f2b899f14c54a0828ba3f2d2adced603 + book_a_team_member: b8e5675f47f7e25bbad229647464b1c5 + or: 0208d355f231c386b19390f0bea41b95 + go_back: 050ad9e6589a60da7605d8cca4cf155f + email_or_username: a7a5617eb5d02a1dea2ec6f189c941c4 + send_invite_email: 186fce16785eb3b26d51263601cef194 + role: 53743bbb6ca938f5b893552e839d067f + edit_role: b5c3ab76d07ed0d4603b2025efffc025 + edit_team: 4680e0297af8351fa95489ad0daec442 + reject: 417c19f66db70a0548bdeb398cdc46e0 + reject_all: 4ac22ea1ecf45606d90ad1646b56ac2d + accept: f8cc1de4f5e3c850cfdbbc0ec831ade7 + leave: a1405917a45b02f3ce85085eb8dc1d6c + profile: d7878693f91303a438852d617f6d35df + my_team_url: 69b165c7d6d77053f89c146f217ccd89 + my_teams: 598f7d005adf427eacf4b29b963e62e5 + team_name: d1a5f99dbf503ca53f06b3a98b511d02 + your_team_name: 40d861646af5a791f03554f580892f7d + team_updated_successfully: 5f769a5073aa0fcaad76f8ba73e17e97 + your_team_updated_successfully: 44922846a8714a842ac3ed11ede1b241 + your_org_updated_successfully: 937e929a441da11bd8fa34d17b9a14b1 + about: 944521eeeed2511833d2299931273c71 + team_description: 0d4e842a77109c6e674288a5a83fae0c + org_description: 9f846450b6524903b9fb6a0a7ad23376 + members: 0932e80cba1e3e0a7f52bb67ff31da32 + organization_members: d4b3152642d7371e24d4c2937d366cc1 + member: 1606dc30b369856b9dba1fe9aec425d2 + number_member_one: 5acb3b5d62cb96cb64f270bd646f2d7e + number_member_other: 6c3f87f290200f9213087dd1fe11e462 + number_selected: 318db53d5767f882155fc662cbbb7447 + owner: 9c0b3aeca046c3ebd3bdc352edc83e88 + admin: 90eb20f1400db82ab874744e47836dc6 + admin_api: 50147d6398b918cc2d6ec32f69a3fb5f + administrator_user: a2914635aa44714fbfb694060b51b291 + lets_create_first_administrator_user: 26fa570c50adc0034192cda19d6eaef4 + admin_user_created: 09c80b5a591995c299f06d405c6e70d5 + admin_user_created_description: 27c3f133312c6dcda76cec81496a9f81 + new_member: 7644a652721e9a35d7bab941145ea5d0 + invite: 181884cea804cbde665f160811ee7ad0 + add_team_members: dbff6b4ecf466f92715d0c3168959626 + add_org_members: 5222e45d220123cf8b27e4e608776606 + add_team_members_description: 5d2fa7a267068ccdfbb1ca41de935481 + add_team_member: 82213918a26054eb07adc8fee5975bee + invite_new_member: 8dcf47570a45020e1399886a08e9e1ab + invite_new_member_description: 068d4244bc20aa01b4cc668e92725ab4 + invite_new_team_member: 6dbebf65e5f10f548e23797e8a74fbb8 + upload_csv_file: e80f10537937922dd8535d84224c6bd8 + invite_via_email: fbfbade4d4293501d3ec8183e59afb0f + change_member_role: 469dea2707c7910fb0185817b0ae45e9 + disable_cal_branding: b00aa30770ee2ecfa29681b3b3d4eb9d + disable_cal_branding_description: 1e57b737071e610c1d5a0fdb0d1a3a6c + hide_book_a_team_member: bb36ad3c9ee01969ce50ca441ca8078e + hide_book_a_team_member_description: 578efa247fb72d5e29d79ccb1a282970 + danger_zone: 79466492fd0b4e50e28c490441959ea2 + account_deletion_cannot_be_undone: 7756c7c53553bda5f2c6aaad95bf4db4 + team_deletion_cannot_be_undone: cac4b6c616025fd0ae733b5a66c37fc5 + back: f541015a827e37cb3b1234e56bc2aa3c + cancel: 2e2a849c2223911717de8caa2c71bade + cancel_all_remaining: 7effc00853a384a79645b6685967c45b + apply: 0f03e8e3752eb120bf8ea0b8f8f5d244 + cancel_event: 449118ce1386fc62ad31126f73f93306 + continue: 3cfba90b4600131e82fc4260c568d044 + confirm: 90930b51154032f119fa75c1bd422d8b + confirm_all: 6036a9fe7a6ebf18ddeae6ae29af3e6f + disband_team: 6354c620ab30b648f29db8d51a5c099f + disband_team_confirmation_message: ff0bd1a2684ddeaa314adcd4a1321bfb + disband_org: 42b1888a9061220cc113ebda1796187d + disband_org_confirmation_message: 33116a107f3b5aa2abf4cd7f18118d39 + remove_member_confirmation_message: e73c04bb5092d345939e1ba3299b1de5 + confirm_disband_team: 4614e7f29a3af20fb6d10cb358330411 + confirm_remove_member: cf81d6148853ca34b2b03105ee68f067 + remove_member: 1d77c2ca3768e486fd1fb5df30cb60d9 + manage_your_team: fa86abcf667e44a90d13a061fc208455 + no_teams: b629f2ff400fbd38f3b34a25295f0146 + no_teams_description: 6394f038a3b71bf2036e82443e72591a + submit: 7c91ef5f747eea9f77a9c4f23e19fb2e + delete: 8bcf303dd10a645b5baacb02b47d72c9 + update: 079fc039262fd31b10532929685c2d1b + save: f7a2929f33bc420195e59ac5a8bcd454 + pending: 030a6f3395d5d4efddd3cc67d6009039 + open_options: a4578c0afbfdf4a76d5952a53085b72a + copy_link: 924cec57e2e36a390bd8762be5082abb + share: ab625547ab428626747e57f01d8abb06 + share_event: 28aa15f74691b6012341567fd6d84ad2 + copy_link_team: 693f1a5d605f82766b7c876a186756d8 + leave_team: db3d1f21fd2fcf5c5896138d311ff76c + confirm_leave_team: a5116b4eff029c7c96af49a91d8d619f + leave_team_confirmation_message: e50156380fc3a35358176d0deedaab2d + user_from_team: 07c46e0312e4bcc19343953d97e73c37 + preview: 3173ee1f0f1d4e50665ca4a84c38e15d + link_copied: 01272e0d53b93fac2d49775898ee3dc7 + copied: 0d1b21bf6919e363f5c4a4ac75dab210 + private_link_copied: a1420e9a982c8b586fd279c6c136da8d + link_shared: e38f669a2de0d00a3138a4e1f7b9b831 + title: 344e64395eaff6822a57d18623853e1a + description: e17686a22ffad04cc7bb70524ed4478b + apps_status: 1aef982da67797499497e1fb0da2becb + quick_video_meeting: 50794d8193bea6d7e3fb54f317e33cdc + scheduling_type: 0c33f24e334d1a0dffe48d03a0d204c7 + preview_team: 8d1d2d33d0c13633a28ca99e37237493 + collective: bdd178a76c56256abdd2e220b60f962f + collective_description: 4dea7338b629302d0c0df280824b8615 + duration: bf6ed0974fdd4eb9d8bd3f4f8c4bd5ae + available_durations: 6088e2e79d4a879aba2c05c8f34a967b + default_duration: 198586c507d8840015ea9b142751f5d3 + default_duration_no_options: ee1d69e3b976315cda26ca2fa400f93c + multiple_duration_mins: 778d90644d78de61ef9594597e81ae2f + multiple_duration_timeUnit: 5535f834645ae971a2a9dde63d70182d + multiple_duration_timeUnit_short: 99542681a50bb27edb8ecfaed253efcc + minutes: c5442938e948e2e3937fb812cf68869c + use_cal_ai_to_make_call_description: 5b0370a8b8c441186adc89ade6de4a8e + round_robin: 998652ffc86b77950604ad1e90e36ed8 + round_robin_description: 9a76c2ae7f3c045538b682c198541e95 + managed_event: 2625aa362fc478198a25fb1897ec8e1c + username_placeholder: eb69c662ee8b49b0cd5828d6f5fe4229 + managed_event_description: 0e9e9d3e97b00fa3bd581550b534c2f3 + managed: 1a24716d3163d55dfd94c23c48556393 + managed_event_url_clarification: 87d80fc4036d1250e245c54d81ef27be + assign_to: bf4290b924efc1120922555d3d8c226a + add_members: 496492b2ecacc2650c29b325ef84f490 + no_assigned_members: 5e0514e0e48908c2f444e533fddc249e + assigned_to: 34d9e500c2308e0e23d003919f5ca592 + you_must_be_logged_in_to: 9b5bf857507887ee5b2ed05dbac7bf41 + start_assigning_members_above: ad460af1342e4df9ce4f2540a4d8b173 + locked_fields_admin_description: 38c8606866be08210e279622b5408138 + unlocked_fields_admin_description: 6fc10ae09d19f0784d6d570e61d6fb21 + locked_fields_member_description: 3313b113f331b7036838f1f9d9fc2a93 + unlocked_fields_member_description: 31bd22d8ee295b7f47b6b88ef15eb2a3 + url: ca97457614226960d41dd18c3c29c86b + hidden: fa290c6ada5869d744ed35e9cca64699 + readonly: caf5f42d6cbb27f9cb629252ed19a7ad + one_time_link: 378f99979b1027710082eaaa5350d5cb + plan_description: 819833b93304e2e60173af7850952547 + plan_upgrade_invitation: bec7d9f09c10a7aa87fe37f7292a437e + plan_upgrade: 42dd5b1cb426a48c68126edfc9e90b31 + plan_upgrade_teams: 6b9820d47182528d5e06f798edab29c7 + plan_upgrade_instructions: bb056c49adf68cfb45c352820c33c02f + event_types_page_title: d14253e0bb08bfea3fcf7f4373548035 + event_types_page_subtitle: d449450df979638d5970acb27540af48 + new: 126d036fae5fb6b629728ecb97e6195b + new_event_type_btn: d1071b21fbd024333ebbdd6364821f70 + new_event_type_heading: 96e3851ed5a88e0a83aa5508677ea942 + new_event_type_description: 7c64a866d73d1695bdd006fd3808cc24 + event_type_created_successfully: 28c43e9f06cc711724a3737c5157a0fc + event_type_updated_successfully: a2c901cf1c551c578bdc0311f0accfe5 + event_type_deleted_successfully: 967d33b938882b34762d5f142bd73f9e + hours: e2807fc69709f121a8003caf52bfc586 + people: 3252cfea4b28953da45166db271641f8 + your_email: a8dc76bfa7ea911bfcbe4775ae53c208 + change_avatar: adc6f44e2ae068cbb994ebc65bae4d5a + upload_avatar: 948a2b0c52941c3e2f955b8b946b426a + language: 277fd1a41cc237a437cd1d5e4a80463b + timezone: 370780b854bdbef55320f977a4fb9ddb + first_day_of_week: c91aeed5bd4aa2435974cc8d5c66688b + repeats_up_to_one: 07b5bdceecc0bc7fc99a1d4d3eac33dc + repeats_up_to_other: 7a6b5679cd7295ad9851d4c9064e368a + every_for_freq: 38c786c5f3cf8fe2900d9f9489f621d2 + event_remaining_one: da8c0906cb0731d4593e193f706de070 + event_remaining_other: f8d6ab0649dc8e6f0abd504c9a09390c + repeats_every: cdb6a82afcd11fb32710c32493100e9c + occurrence_one: 48ff76aff652c255998d8e422f432c05 + occurrence_other: c17f14695a3dad9653fd8bb8c77c47ed + weekly_one: a220b7dd32511c8c2ae1bb2b8960a228 + weekly_other: 545de30df4f44d3f6d1d344af6a10815 + monthly_one: 001abb365f085fae1e0b02d207e7b8ca + monthly_other: da74749fbe80394fa0f72973d7b0964a + yearly_one: 741a8de5becde10963faff57382ec32b + yearly_other: eb4f5fdd2b320bf13e200fd6a6c1abff + plus_more: b835f28d2fa446ae63606868be5997e2 + max: 0f2c95417ecdfc5c09ca1b8ffb7ac975 + single_theme: 5653d42a95ee983c5a01da30432bbb76 + brand_color: 1ecd386e524ae29a1a6e8008552ce3f3 + light_brand_color: 210e6a3c6ac8369157a7b03738b06305 + dark_brand_color: 716c3c455e99967e6db557899f889d51 + light_event_type_color: 6144591373599b4d1fc43f354c81680c + dark_event_type_color: 2a620447632a5238af304040cb605f41 + file_not_named: 42e93dfbf3037148e169df7f873bb536 + create_team: d3cba7d5fb6932d919f9dfad7a1e9d9f + name: 9368b5a047572b6051f334af5aa76819 + create_new_team_description: aea7bc114f52617f8663748eec96d6a4 + create_new_team: d802300d68d2ca2d7c68b1e87d1ca620 + open_invitations: 7dd1d866291bb11eea7f40ba49ff1f3c + new_team: 77691aa0f3819d6269905fa4b97b9ec3 + create_first_team_and_invite_others: d4f0796a5cc46932dbc59651f0eb2840 + create_team_to_get_started: 3a7a514da3417b30fd8997f5828ddca3 + teams: b63448c05270497973ac4407047dae02 + team: c621ea9404a37af289def443b309bf1b + organization: 3dc8489af7e74121f65ce6d9677bc94d + team_billing: 097e83055f0c3ac4c859f13ca43c9d8e + team_billing_description: c8b5e767d28e8c1a582e8af2c5667766 + upgrade_to_flexible_pro_title: 031c20b17d1f4042c7e744b5fb9bf0f5 + upgrade_to_flexible_pro_message: d97fd8ef7f009f3a1ff63049d160b8aa + changed_team_billing_info: 952b34e0120d6c49d3c4d6aee38ff2d1 + create_manage_teams_collaborative: 50f45f434929663ef80879218ce7dc58 + only_available_on_pro_plan: cddec347fab83aefc9b676bd2b1e162a + remove_cal_branding_description: cc0a4a2ce6704e29e810c1d791c25cb5 + edit_profile_info_description: 641d124ca4fef5faf9f4af76f9766280 + change_email_tip: 970afa41c7059b31caa05d5e5d047407 + little_something_about: 9f745426c90698e9badefd7b6b13373d + profile_updated_successfully: 69f80a17693be64d56adb8f174edbb30 + your_user_profile_updated_successfully: 401d22b5f580fff641554b3b3ba70b67 + user_cannot_found_db: 3ffd76f18282daa426c49a04cbae9dc6 + embed_and_webhooks: 2272d6c740d1e4de30b7be846bcb2aec + enabled: 20236664b7e62df0e767921b4450205f + disabled: 0889a3dfd914a7ef638611796b17bf72 + disable: 81b754fd7962e0bd9b6ba87f3972e7fc + billing: b01dbdd049ebbd4a349fa64d6ce65a3b + manage_your_billing_info: 761a62cb360478bf678d6cd3be37c8db + availability: f141aa3e9adb2179806cc1c909b5516a + edit_availability: 899e894888ad242ace4b73085108793e + configure_availability: 4b93aeed5850c945e4f69ee3fa42b40d + copy_times_to: fafaf01e40a0a9c0714ad53ccf1495c0 + copy_times_to_tooltip: f4ac52a01971a0cd4377a1ad2d88f020 + change_weekly_schedule: 6acd502bcea3eacac72a33ecb8eff112 + logo: 47fa6b3978c1c06acc29b6cae393b0c9 + error: 3c95bcb32c2104b99a46f5b3dd015248 + at_least_characters_one: 77de5650c6dfbd41220039907f34dd9e + at_least_characters_other: 83327249a29f260040a67a86a1d81e89 + team_logo: d2529d0dd27e12f313fc1d2e6ab0872b + add_location: 33e32158d5cb0b584774e1ff0d69f909 + attendees: 44796e0b664cc408404b1bc3bb32752b + add_attendees: 6346e21f1a597f17b1d8274b01009320 + show_advanced_settings: e62afb3ad1a9c06c7b4645644c85c8e0 + event_name: e9ee5be0bc00804cc48c982d2ad1f849 + event_name_in_calendar: 2def5f7fe55e437e3c629d72697e1e19 + event_name_tooltip: a00ef459ffb3ee9c2660b4125a9afdea + meeting_with_user: 14ce863aa52d1a7342edab871a5d38d6 + additional_inputs: 1d54308ce5acc12e2d8bd53e5d3ff055 + additional_input_description: eb5cfbc3b8ea42128f4deebb0e4bfd8f + label: a5c71bf158481233f8215dbd38cc196b + placeholder: 88c2c168aff12ca70148fcb5f6b4c7b1 + display_add_to_calendar_organizer: 3ad569c25e32acb827851517c98a80bd + display_email_as_organizer: ba1cef03cfc1adbf1641e691d694de60 + if_enabled_email_address_as_organizer: 5dd23bc18abca229d10c4e0c132e2ae8 + reconnect_calendar_to_use: 7c0434234e8ac64477094675b769ce86 + type: f04471a7ddac844b9ad145eb9911ef75 + edit: eee7f39ff90b18852afc1671f21fbaa9 + add_input: b59c6567a19474e38d15f7a01e751430 + disable_notes: 26e3eaffcd889bf9d62be546080b3eaa + disable_notes_description: d778488f6709a75addc93c0eee488764 + requires_confirmation_description: 8e79eadfbbbafbf2963da3fbcb9122f1 + recurring_event: 64081e2a29e23cfc8eb421a44565da0c + recurring_event_description: 6652c7b8ad3562c04d4ace180a96bf09 + cannot_be_used_with_paid_event_types: c655cde68dd549884259b0b0fc93a888 + warning_payment_instant_meeting_event: 6f24d32aceec42d5deee8582c03a8eb1 + warning_instant_meeting_experimental: bc42e669e6c45264ac14ea18266da9a6 + starting: ecb6106868f7a5d0005c145872b1be85 + disable_guests: e814d044d7727cb1fc075ba224e439d6 + disable_guests_description: 281a1cbfe45420d8bff674beac8df8c7 + private_link: 1dd269915c46559a31ac22b426964a1d + enable_private_url: 7cc9be816380222c6803a4010a5d04a0 + private_link_label: 41eca128a29b390b73ce03f7e6f69c16 + private_link_hint: 5c17cb81a7095c7c832e4e57f921aca2 + copy_private_link: 17b4fc84532a12413bc804656eb8b09c + copy_private_link_to_event: 2f900b233cda31f1df5bcbdb0252b4c9 + private_link_description: cc71deeaf57fb44f29b77789d7f892bc + invitees_can_schedule: 321bac06ad52a60c31e8e16f4443560c + date_range: 9b3aa5954144de586931f60ef9594e99 + calendar_days: 4e3edb798f398b7a35cc3b630488d67e + business_days: e906b89c71a15737d407eb80162bb6f4 + set_address_place: 6d533d4da5afa23de952399272c526de + set_link_meeting: 3644b2e84fd81d5649898a7da65f6428 + cal_invitee_phone_number_scheduling: ce75ea0728746dd98323830b01f0230c + cal_provide_google_meet_location: 7f37aef9246df1f26bb8523a4b90ff94 + cal_provide_zoom_meeting_url: 92d0064b07d3886fcec3a04cee10670a + cal_provide_tandem_meeting_url: fc9a32f3fed1b757f362702e749dba50 + cal_provide_video_meeting_url: 37e332f9f86d9fadf8ebb27cec73ee18 + cal_provide_jitsi_meeting_url: 5e8c5e44cba414d16f78dbd2bae612a3 + cal_provide_huddle01_meeting_url: cb51d3eb63614802f4569ca9ec748fd6 + cal_provide_teams_meeting_url: 14a1fe002aaa7fc294bd88b53975b992 + require_payment: 5bd698c346c40e9ef6afcbf976fda18d + you_need_to_add_a_name: d279c28a840ae79fe08b1c4c806454f5 + commission_per_transaction: 28b00bc67e60823aeb3c082cb121c3da + event_type_updated_successfully_description: 23655ac2dcf93e4107958e20cbb03b73 + hide_event_type: 4d6b196998e33c165bdccd170c1ad1b2 + edit_location: 48b711cceb117c2709f1161b30ac94ba + into_the_future: cb1d8d95c455c0eaea13337f3c5deea1 + when_booked_with_less_than_notice: 9202544078efc6885edfdec74ea80733 + within_date_range: 439fc97de5740e5f2c98b9e9471cc4ed + indefinitely_into_future: d6caa681d72f58282c25b124f60220c6 + add_new_custom_input_field: 4115f3dee17c4c1fbf8eec12d7e79efb + quick_chat: 5e2327c480f35a5ea63133a27696fa03 + add_new_team_event_type: 91310d2339fa6f04069a5584d4052740 + add_new_event_type: 8e5daeaa02efd6fd30f6f68667d20b98 + new_event_type_to_book_description: 4a41017f9db37a4d15d22cc18bfaa58e + length: 754cca6fb827c7601a9807af9a307e76 + minimum_booking_notice: f6bc7f365a72bb841a9cda7ced48315f + offset_toggle: 9c012a72cacc90d6ff9ffce07785df4c + offset_toggle_description: db30d88f7aa56f2b95340e79980e287c + offset_start: b7a62dabfdeded6d72754b9f8e468687 + offset_start_description: bad3ee2a8ae7974914a8eb033c50a265 + slot_interval: 190f0802c51327c9221a7035f082f0a2 + slot_interval_default: 2e53db8b553dfab0b4d1643539e44b51 + delete_event_type: bba2565b21fe4b70881aa4489af62398 + delete_managed_event_type: f6f0b1257e0ee9ad15316061f2b8dbe0 + delete_event_type_description: e9788cf47b935372649e5b5e3b61616e + delete_managed_event_type_description: a5924a124f4580c91701b875b50d2917 + confirm_delete_event_type: 7a260e784409a9112f77d213754cd3e0 + delete_account: a9d11113f1a1d7e20582bdcc9633bcef + confirm_delete_account: b948c27343e38e9111f3370023c87d14 + delete_account_confirmation_message: c3192e058a4602a23d1a009781e1bf4e + integrations: 0ccce343287704cd90150c32e2fcad36 + apps: 0426c2059983ee847070ad3273996938 + apps_description: 7cf5650068c7fd394034371a492c0a80 + apps_listing: f084b1874c9389034b3566183e8b94ba + category_apps: 0d34fb06414435ed78d5d5bea8798f5a + app_store: 197ca35860dab533daae7095f7783e8f + app_store_description: 6abd9249a0ada5e759aaa39d47bff06b + settings: 8df6777277469c1fd88cc18dde2f1cc3 + event_type_moved_successfully: 617ccde0ea645ec6eba51e07e8d6f945 + next_step_text: f1b1016308534343ff1506a52960a7da + next_step: 897b0c126cef15e53f4bc72cb7c44725 + prev_step: 0caac5c945840c930df0137a5fe0a1d5 + install: dcae7fceaa82a84d1624bff782daed57 + start_paid_trial: 39a4275b07dbc318490cc66358da00c9 + installed: 9057a04c356a57b026248519d2d21f26 + active_install_one: a1b4aa1fc30540d94ad78c9c4949f74d + active_install_other: 7da418feb3d19a7983ca89a520b15141 + globally_install: ddd63fed3fbc1a46cabc864db742ea88 + app_successfully_installed: a769040a5be25d717948205caa587f5c + app_could_not_be_installed: 49d80da7d2003793c587f9d388d4ecde + disconnect: 8cd3daae20ec3d3bf09b25881caa2b8f + embed_your_calendar: 56a7a0c3ab061abb6d3d76a384bf3db4 + connect_your_favourite_apps: 9e3d4552723b46858992331ded2df47f + automation: c1e18f4da59ffc01dc2d6faa3b5ef669 + configure_how_your_event_types_interact: 642d6d33fe31128a55efb35a081fe87b + toggle_calendars_conflict: b6b9ef5de1b20a81a0f5dd899a379d2c + connect_additional_calendar: 74288000230667f97aaad64bdd548970 + calendar_updated_successfully: 83864da154a6c70eba61c719216e9564 + check_here: 40f8d8ea41b78e2dc2825b7ba8ac5546 + conferencing: dfcf52ec40afb55d510267eab361126f + calendar: f113fede755b1502d0a17ad5068ba005 + payments: 1ce1a8d31ed709fb29fce2057045d104 + not_installed: b31b4cddedc5c35eb15e6f6d388754ba + error_password_mismatch: 073113e68a96e0aa35eadc69a55ef9ef + error_required_field: 53a3c5c12c6975c2461a7edd9e2b4282 + status: 4e1fcce15854d824919b4a582c697c90 + team_view_user_availability: f0d011f4b1cbac0df5d9a98e1031f535 + team_view_user_availability_disabled: e0af085d713b34ae21d9f8de42ef428e + set_as_away: c22994713475fab18d70977b54e27116 + set_as_free: 86c31cf19d3b7297268e3b033b663c9d + toggle_away_error: 1140b92ad40143cb5562d2f2fa38d4d2 + user_away: 32b5c5e333576825ece60c32fcbaaed6 + user_away_description: 06b0d3917592e8d3a1b5f91f21fa4435 + meet_people_with_the_same_tokens: 676bac67e9ab9705ef7f3b24a8af7b12 + only_book_people_and_allow: bd25868b054395d2c2d1c0d3af4cf55b + account_created_with_identity_provider: ce8e557e3cb457fc4245afe3a7befb69 + account_managed_by_identity_provider: f7d4faf3d665fad1b5381c63afcd6af9 + account_managed_by_identity_provider_description: a6c96eb08932b6783483a89b47efe551 + signin_with_google: f84b1b8574fb23734c002b401cad49e2 + signin_with_saml: 932c77d607b1fa394c53aedf4259ecf8 + signin_with_saml_oidc: 3d9ec37d3e09a530398f25a77dc27070 + you_will_need_to_generate: deaaf4d09d215932679faf27827222c1 + import: 348b8ab981de5b7f1fca6d7302263bbd + import_from: 1b70c493a1f9dfe82be2702af4977905 + access_token: 9fbfdaa764861ef02e91ef6b5b6b5579 + visit_roadmap: c60f4a1acf30e566861bf130f13b9ae7 + featured_categories: 1b2d206f0e2dcc49c03fbbd5c8a901d3 + popular_categories: 12267f1482e37cfcf55ffc0f40b2c24d + number_apps_one: 497e4aa1f3d0ef480f7f1316a55fcdcf + number_apps_other: bdb76828901b2183fefb3581b4e160fd + trending_apps: 1510e5c8b31c276a2416c3a3f674a927 + most_popular: 794d089f06d8ac43ef688cc6f4543418 + installed_apps: 5701daf2adaf934a54dff06b804c8115 + free_to_use_apps: 0326365539c004f6088656f692602078 + no_category_apps: 5694109e8ed5d6f4b34a37bbe4bb1154 + all_apps: 32ffabc98c0ec286043ab6f51d56c22d + no_category_apps_description_calendar: cef1f095e7a7bac71bba576d53ba5d40 + no_category_apps_description_conferencing: 2d79f7f16869a692c2acee8da462077c + no_category_apps_description_payment: 890950adf0cf1969fd875f29e36c6b2d + no_category_apps_description_analytics: edcbebf03a04605fcc07c7675f307faa + no_category_apps_description_automation: 7adef99af001b2abb119c80312d553e0 + no_category_apps_description_other: 3fe604a8a8f062c911163c0b5675a6dd + no_category_apps_description_messaging: 5b8c9609c7087e4a1f50b84774155f70 + no_category_apps_description_crm: 0e850413b6489b8386a4f0040d354377 + installed_app_calendar_description: 6659cd73275da5ffbb9cf62fbaba498a + installed_app_payment_description: a4ad046acd0decf7d5c8808c3554ee97 + installed_app_analytics_description: b5b49e862eb5cab164e4b2f9063e25be + installed_app_other_description: 144ed1842af7ed23b76791c7d8ae4265 + installed_app_conferencing_description: 8f1e2db02770b3aa9bccfd879b68eb1b + installed_app_automation_description: a4a7b869e711363aa8611da8374b8dcd + installed_app_messaging_description: f3ae308c5d5b4e62b9e0cb8fdc41c07c + installed_app_crm_description: bce42e1a239ed72b75f8dda628a8d1f0 + analytics: ec67586974cc78f25959d47bb36683a7 + empty_installed_apps_headline: be1fd64bbaa5e8ab14fc3b6cb06b4d5e + empty_installed_apps_description: 528f9e50806b55fa50fa9a5b1dd793aa + empty_installed_apps_button: 6183330cbdf62a97822cc5e4097f4a52 + manage_your_connected_apps: e4bb0f632aea47da058b752fceb12f2c + browse_apps: 546545a0bf20a6ef203d61a569139d3d + features: 341ff316a339b106a178f0b8d362951b + permissions: 2160be68b1d6b6577e64634e9feba2ed + terms_and_privacy: 91ff888efefc9b0d9331b17198a7e5ac + published_by: c50f77374a87aa7672b732a4109d592f + subscribe: 5107e4c6230f58346b3af3061a57cfb8 + buy: 3b105aee054578c80c10d0834c04e3a8 + install_app: 697c0481ded812e08f052e906a854f3e + categories: fd4e44f3b1b2bba9ca45f3aef963d042 + pricing: ce27f1aeacccc542a174c4b2bce022b0 + learn_more: e598091d132f890c37a6d4ed94f6d794 + privacy_policy: 7459744a63ef8af4e517a09024bd7c08 + terms_of_service: 5add91f519e39025708e54a7eb7a9fc5 + remove: dba2fe5fe9f83f8078c687f28cba4b52 + add: 87c4a663507f2bcbbf79934af8164e13 + installed_other: 25f19e5931e29ffdbf4cec6ea0db8b93 + verify_wallet: ba0dac35dde0024fdf54f4db82b818a3 + create_events_on: eaa763ea656b9e7f8290bc5ed0984ab4 + enterprise_license: 45f91fd21b7f938a3c591775512f024f + enterprise_license_locally: 327a7ba96a6aa5638278b66dc945d060 + enterprise_license_sales: c3050be48188a2a066114fd8c89be77a + missing_license: 9ae9ce7650395265fe358b8209eae43c + next_steps: 12392fe73ae60b6e5a9d851256b8477e + acquire_commercial_license: cba688b700ac5f3d9eef805fc6fac0fc + the_infrastructure_plan: 28a78ab2fa000bd9bd718daf98a406ef + prisma_studio_tip: 066ec479a6e51dde3fe277cf241effd0 + prisma_studio_tip_description: c8dc3483ad3fded72ea29ad052d22167 + contact_sales: 94537da970ffef6210bba8fcecb74a8c + error_404: 978c8521afd0be2ce95291e6920c7cfd + default: d9c6dc5c412fe94143dfd1d332ec81d4 + set_to_default: 538a1fe3974e84a1e2726f00c7306598 + new_schedule_btn: 3ed90ee5292a8df7e1f5b13f0a132df9 + add_new_schedule: d0b75dad5cd4a7da4284262729b5cc49 + add_new_calendar: cf55065ffc4259b906d6af6ce45b85cf + set_calendar: b2824389a9a7969ab4148a19909738cf + delete_schedule: f214551d1abca46ff21d39c04fc8e27d + delete_schedule_description: fa1613734f70a118ce68cb6ec922a6ad + schedule_created_successfully: aa2f4ecee93fb44baa2fcebe66d1d212 + availability_updated_successfully: cad652a630c3b1cc4dcfb2aaa60043f3 + schedule_deleted_successfully: fe6e460999c4dd4a9b60a3f4d9578737 + default_schedule_name: ba5a9d4aeb2115431906be1fa91f14d3 + new_schedule_heading: c3d0781d91be1cf6cab5241f7445628f + new_schedule_description: 195d72b03024d485b69c2501c7509129 + requires_ownership_of_a_token: 81591b6e565824982da0fb4aeae85873 + example_name: febee8e9ab40b2fe5106d72675228d00 + time_format: 9e201cbc221c35de6d0a9ee98dcae426 + 12_hour: 1ae39cdcd90a67ddf49ebaab188629ce + 24_hour: 152997eec500817c71cc2e8a29f57277 + 12_hour_short: 650d9b5525bfaef7531b0a4a56e0d738 + 24_hour_short: 6f4110838ccea301a17b00fe1affe357 + redirect_success_booking: 1e101a2ec1211f7be2d3daab0ef8f56e + you_are_being_redirected: 52d0751d59f5c4523b04728e0c28b312 + external_redirect_url: 311307fdbd121cc1bd04d8d7b7ff046c + redirect_url_description: 837d96d921e54d838efacdd873990ca7 + duplicate: 27756566785c2b8463e21582c4bb619b + offer_seats: 397e1d0c97bf4c59d19893c4b5e4701a + offer_seats_description: 9d6c5062b2f56f01fa08cc094ec0833b + seats_available_one: 9c8f657f33007fcae972e3ec4581824b + seats_available_other: 9c8f657f33007fcae972e3ec4581824b + seats_nearly_full: 7503d4abf1b6b4ccf5825ed773cc2b96 + seats_half_full: 181ea52882ad228e8bcb2d438a8d13c3 + number_of_seats: 4eb4bda10e79f570717bfedc1d2ba229 + set_instant_meeting_expiry_time_offset_description: 59d7ec3033266c79d40b51b13ccde00b + enter_number_of_seats: 2a32c0f5e3b9316ef28e0b3a4cd4ef18 + you_can_manage_your_schedules: 65d89d86f4763cce234eb1ccbeeb5bb5 + booking_full: d28ac717cf6d24d69ef448984df0bfbd + api_keys: 07f3620a30e08136f0b072c9af8d1eef + api_key: 542874289b9d4a6a04aa3c29e253887e + test_api_key: d5d9443938f4faef3f12da52fdf2bee1 + test_passed: 0a4b30e739053d23d11a04154e669bac + test_failed: 1b2364c95fd318d99cc502745beac94a + provide_api_key: 7d1b77ce833342d1ec4b2f52867eeb39 + api_key_modal_subtitle: b26c6c5901e61446b2be679fd88c4ed5 + api_keys_subtitle: b457080c1c086673bc4c566a5785200a + create_api_key: ee35e3a7d5dfa5d0188f38784bff0913 + personal_note: f5aa257f53d9f2885f0d42c9406cca94 + personal_note_placeholder: cd211fa7e3e1946d5b9c9d8316a2c016 + api_key_no_note: e6e1dcd06587e971191254b62ccc5e01 + api_key_never_expires: 9569779fc4b38672924f35d924a52f1a + edit_api_key: e567da13542399414f3dc14b845cd674 + success_api_key_created: 815a8412083b6414248eea6f6448f6c6 + success_api_key_edited: 65193ed2225f231fc0b5a16743f0f568 + create: 757ccd28dd533ff3a933355273c1e32a + success_api_key_created_bold_tagline: 8ebd90454310951908f605d526ba3439 + you_will_only_view_it_once: 654e192352b399951a429262d84fcedb + copy_to_clipboard: 8992c838874db83e3cc89c9fb4442bfd + enabled_after_update: 500808eafd39d1486c84351d8f4c319e + enabled_after_update_description: 9c6ab79ab766edaf6c86e345f45d68db + confirm_delete_api_key: 0ae6fbc27c37e43ce2ad5801b427dd3a + revoke_api_key: 278769d33feb5a85db1616d0141303bf + api_key_copied: 8b33c94931a823baec8870b416d13cd9 + api_key_expires_on: 770371a0410f60f821f6ecbbfd047e4b + delete_api_key_confirm_title: 9b99bdfed0dd07845f48da1b74b12944 + copy: 627c00d2c850b9b45f7341a6ac01b6bb + expire_date: 3f6730fe84c53abcf3091479ad37fa0a + expired: 63b27cccba4ab2143e0f5f3d46e4168a + never_expires: 8c026523c6a48f8fe1f34617591358ca + expires: c7be2eba0aa8a35d1b057bde5229508d + request_reschedule_booking: 6352b53f6948954f2d42b548c75e554f + reason_for_reschedule: 5d42ce659745f0516015dbef09c6d3ac + book_a_new_time: 1ca793956ce56c0fdba656dae26c7612 + reschedule_request_sent: 2e30095d9d829f5cee770ae9b00488ed + reschedule_modal_description: a526303cf0ad69c14101e3f4b41abf01 + reason_for_reschedule_request: 148639cd414981ef56ed0a299ece2cd6 + send_reschedule_request: db4f38ab4530d6bed158f0faeb2fc942 + edit_booking: 44250460f9dac79699ecaff90e3aef54 + reschedule_booking: a135a0335380b5896bb1e93cd77481d2 + former_time: 656d6472cbd10a04f14a393df33d10ab + confirmation_page_gif: 3e71b28ab5b5c0a66b785243df15376a + search: 49dd6c21604b5e8d4153ff1aff2177e1 + impersonate: 253edc7ba708783ff03d3b9c009472e9 + user_impersonation_heading: 6848beb5cdd2cdb7bcd9151e523e2cd0 + user_impersonation_description: db29e600ba5e232da81ceab20e2d63e1 + team_impersonation_description: e801423222c9892f9c4e7a1b05f38465 + cal_signup_description: ae01d51f2528082ac740c4ee27809565 + make_org_private: b9bf11f00fabb937a3a0876f353b585d + make_org_private_description: 1058429a3e7266e46cc5b68031086f28 + make_team_private: ee83c94b4b81a8e5c672204fb9ee2da6 + make_team_private_description: c48915c8357c3687506183e92e6aa155 + you_cannot_see_team_members: dc7a5d20692b36f17081d7a10e66821c + you_cannot_see_teams_of_org: c6dafa34320944aa57a5f4053541c092 + allow_booker_to_select_duration: eeb542d3b07c062d8de9630bcaf592fc + impersonate_user_tip: b185a4d43f5d2bd47d90c3118a9e6a4a + impersonating_user_warning: 2df022b91992a4c819abee8ca62cdf1c + impersonating_stop_instructions: fc01010bfe9c16de03a6311a3a146f7c + event_location_changed: 608bfb5da4321e3480278c59b4d3c82a + new_guests_added: 9be00a29c97fd3e59c959a307f2c72eb + location_changed_event_type_subject: 02a24b08d79ad08819ad5116421dd408 + guests_added_event_type_subject: 500389b6dc96f51d8f68916861f6fd32 + current_location: 4ba63ce12f765b502e4ee0b472ca9565 + new_location: f398b0a9f9042891afdfa8719fd9d138 + session: 4618fe0f57ca0c8db90e17eedc351bec + session_description: 39cb4059d2fc78efe876f87a31811b23 + session_timeout_after: 8cffc026d0710e2e6ed84a420d71d600 + session_timeout: 555b57a5847f392814f3934375ff33b6 + session_timeout_description: 3833d51451f7871e45e510cddddcdde7 + no_location: 2d4849ac5507dc42e2908a71f558023e + set_location: 84a52cdae2ca02490055aaa40583fc1d + update_location: 741758fb7a9c090a9ab9e87a6c62fedc + location_updated: 639cd11ff17c5fea84384a06e686b782 + guests_added: a04cef448ca54083e9e741d1233ead0b + unable_to_add_guests: 10d1eebffb88f731d40144bdf8e9929b + email_validation_error: 0a26bc82b13d45d06d40a3e841877504 + emails_must_be_unique_valid: c02e5cfacae1f72c8f7f860abab580f2 + url_validation_error: 9d9c0b3fc75f01a5c3c07499a1d52d6e + place_where_cal_widget_appear: be5e0f6e9823738be1a3dfd78de11026 + create_update_react_component: b035d3aa6308cdcb291963fbd9cc9c5e + copy_code: 1722a0fe065d4c44df3d5e4a887dd1ae + code_copied: a04d6ab7807d65f274e9bce423a5911b + how_you_want_add_cal_site: 4d6423601bebc7fcfb9865daebacacad + choose_ways_put_cal_site: 9b135527b1fbb4b5f0ee4e96f9708257 + setting_up_zapier: 1ebfdf543bf4322de4b4b076fd0c37c8 + setting_up_make: 6d4084f9771533c79102a2dab822c0f8 + generate_api_key: 823074180dac924e03bb97f9496be8fe + generate_api_key_description: fb7970b85c0edcba6e84a428fddac144 + your_unique_api_key: 2bff5c31a9fa8f5d13d433df2de4ed36 + copy_safe_api_key: c03ff6d99812acb7800f4b44c32a2fe0 + zapier_setup_instructions: a060c179198e178296c5a6c99e0d48f7 + make_setup_instructions: 8254dd046c632a3a4a3ed0b1d1c56d98 + install_zapier_app: 97315e55c57d2c5b127c0918e6db30d0 + install_make_app: 867f8fd6d2b083881a77eb1c194347dd + app_not_installed: 9b2b84f621620dbb6c94ca7dd0fd078e + visit_our_app_store: 08ada736f1709ed221beb1700e641ca5 + connect_apple_server: 44e3ee03a9a34de3c066e53dc1de63b2 + calendar_url: 7bb11023fbf0a2f9f60597141c789876 + apple_server_generate_password: 98910c7a7282177d984e760b2a785697 + unable_to_add_apple_calendar: bbc3fbe2dc16e1840e93846aede1c073 + credentials_stored_encrypted: bb3fe1acbd5093cbf1ef8e2217aae72c + it_stored_encrypted: 82d2d13d7ca8986308b92fb814631112 + go_to_app_store: b34c266535aafe83b61b0cd77301a16e + calendar_error: b68531444de1f8cc0aa33f267208ad43 + set_your_phone_number: 85727714bdf5602da9f7501533e766ad + calendar_no_busy_slots: 6c575f959bf7f0da849f994d98c0c339 + display_location_label: 1f86e63b1a51f67f29cb825917d09849 + display_location_info_badge: 2e2bc3188ad42aae815929a5282cc479 + add_gif: 65106db302050a3815fee2a8bf43265a + search_giphy: 0ab905b46ab824b5a0b31448ad51d123 + add_link_from_giphy: 91a1aa9a5aa11c42c7fa33ab693ed390 + add_gif_to_confirmation: f5e6e78d43773168ab36265fa2edea19 + find_gif_spice_confirmation: 4a17adca2b35e600f95f88e8f8a52835 + share_feedback: f3c14bfa149fde4035b6965cb8d3e993 + resources: ec7fb05ed963bb6781a35782b3475502 + support_documentation: 4e3afaad32b4ec538480030d8435efe4 + developer_documentation: f7ad6da8aea997e88ec18ac2a2fccefa + get_in_touch: 35323605e31c113fd664486afc33f3eb + contact_support: fcbd9e317c7286b3e08752eb73eb1a81 + premium_support: cd1c7901eacf02b0ba00ccee975bc09c + community_support: 4b18cc0b0fe7310b6c97d0b94450f4ec + feedback: 6fac88806e0c269a30777b283988c61c + submitted_feedback: 07edd8c50685a52c0969d711df26d768 + feedback_error: 76ace7e0d575a9c103722bfc3ef54bc0 + comments: 7d6fbcb443faeeb8a39eba46df3ce97e + booking_details: 04a97396aac291579635ce1e7ed9816d + or_lowercase: 7b133c38bec0d5ee23cc6bcf9a8de50b + nevermind: 1c04e71586a1135ce2bb16500a6f6de1 + go_to: 4b11807174bc237c914f95a6b2c16cd0 + zapier_invite_link: f0f5af07489c2587faa42dfec6234b58 + meeting_url_provided_after_confirmed: a2a4a82b5f69c8fbcd79d9a9843e071d + dynamically_display_attendee_or_organizer: 923d7b47a73619f845685f98d15f5be9 + event_location: 1dbee6263744304e906c7e6a52dc9fa2 + reschedule_optional: 3881c441b50e30051719aef7f391e920 + reschedule_placeholder: 570995e535511f545d724fde6913d1e5 + event_cancelled: f6d0638d20450b98083b8ca7684dc898 + emailed_information_about_cancelled_event: 4fa4c2e48110f9b3d7e8ba5c9a18c1c4 + this_input_will_shown_booking_this_event: fc00718c715fd66b5c9a69627aa44f5a + meeting_url_in_confirmation_email: 63540ec6b53d9d0ba1fe9d8bee632ddd + url_start_with_https: 74a226cb97f58f89a741c17ca771165c + number_provided: 3486dd81e0aace30d7d39116a512dc77 + before_event_trigger: 8f4c3aa39367d1e1d22d0380ba73591c + event_cancelled_trigger: b5d22f397e0f564fcf431032b75ff1af + new_event_trigger: fbee38b5765412419941add7ff1e3fb9 + email_host_action: 9566929caf21c96cedc11447e1de34ff + email_attendee_action: 3ca2ca348baef93742f3a1889ffcc96b + sms_attendee_action: d916b1b13aaa72046eed49dcb3795b27 + sms_number_action: 7d2ab74c110418e376aacc199489765e + send_reminder_sms: 34d7f8bc9791479f6bed9e1b93cc3570 + whatsapp_number_action: e87557d1e1c641100df7b3ddfeca18a6 + whatsapp_attendee_action: e2228eb197bdff521e7f5580de775629 + workflows: b0c9c8615a9ba7d9cb73e767290a7f72 + new_workflow_btn: 39cf03f117133354542d7937f1d61861 + add_new_workflow: fc34bdfa29921346715ef27d4e520dbd + reschedule_event_trigger: 5a8f239d2d347402e65f0ccf41a4893a + trigger: 25f7594d1ac2f32a3d2774dcd11dddfe + triggers: 66488f38662a4199fb8a18967239c992 + action: c92af0bdf1698b0d10cf5b28d2ad4945 + workflows_to_automate_notifications: b7d1114e9d98be9aa0cedae92ad02853 + workflow_name: f47c05017304a9f86687859909abe6ab + custom_workflow: 95aa8edc4bc72210a063549beaac5873 + workflow_created_successfully: cdc0e790d559d08a9842f173e7fcfa26 + delete_workflow_description: 027ffcb9caef8216495ab0b56d228460 + delete_workflow: 1d453bab372eae6a971f2a37fe1fdb15 + confirm_delete_workflow: 91c62871ce1be606d6b3bc093e29b18e + workflow_deleted_successfully: 76fb3f1c782d1b4d2ab5b5e9f7df56e2 + how_long_before: 1ae44bfce343a5415e98b17be583d773 + day_timeUnit: c95fe8aedde21a0b5653dbd0b3c58b48 + hour_timeUnit: abd5b935394c7064aac85b2b3bf503e9 + minute_timeUnit: a7b78d86e2ba1ba944f5873c0a37c3b1 + minute_short: fdd6ed7636bb06ed894421209ca874d8 + hour_short: de15b952a456eadd27095d2ccce23473 + new_workflow_heading: e75843a422d875c0d8522f63f47ef89e + new_workflow_description: a308e3abbc0ec3469cf10c55125e0133 + active_on: f7b09ab07563adfe08d46408986f8980 + workflow_updated_successfully: 802e67bdfeceaf5111cf876c76323a0a + premium_to_standard_username_description: 69214ec8cc63363ca8a56730ef9d40e2 + premium_username: 17a888e3fa7ed0988596f1063dd16dae + current: 27f172f76ac28e72cb062f80002b0ad5 + premium: e6079ea8dd965b5f915fac72ead40d11 + standard: 90176871eca99a5bf573dbcddd012fa5 + confirm_username_change_dialog_title: 41feeedb35f6f4f9b15b1bcf56fa9403 + change_username_standard_to_premium: 961b5182573483f219ead1f841a5401c + change_username_premium_to_standard: 29d15635a771a1fa6641bbbce338b95b + go_to_stripe_billing: 5b22cda0c511bc9636bfcc6c18ba9186 + stripe_description: 25e5909e60db441db5b8f546e2a58dba + trial_expired: ca9f0532ac40ca427ca1ba4c86454e07 + remove_app: 12169d9bc1114dcf3bf83c167c3bd7a4 + yes_remove_app: 741e29ec0f6de8529764a83ed35755c9 + are_you_sure_you_want_to_remove_this_app: 52cf5b33b2960f09be65971198f54bea + app_removed_successfully: c3a10d7f9273a570fb199f45207b0bf6 + error_removing_app: 392d8006399c4f08c7ea98248a2b10cc + web_conference: 090bdbaa7e3c7c7238c4b6d70e347734 + requires_confirmation: 4cae2e553af2409683efe1b1e51d8053 + always_requires_confirmation: 1e1afee98f88029400e67f97a036f17f + requires_confirmation_threshold: 01f1f50b07af4b505c3fbc7f11e66d02 + may_require_confirmation: c403887dc2ed1a9cda5307c38f3849c6 + nr_event_type_one: 78229d4e5a9cb8cfc999bbaaae655ff5 + nr_event_type_other: 1a7f38d33dd06da42cb638ae6512191d + count_team_one: 0d58623be4aa8ccb91a5f5f301b7ca09 + count_team_other: 0820350c4364acba568b0c7b7cf7399d + add_action: 66fefc4dd6a7b939c2224272cf0d2669 + set_whereby_link: 1fb74b0e16b120cfa761dc05969b00a6 + invalid_whereby_link: 1c19506559fbf4534a82c89574ccd7a4 + set_around_link: 99621bff10f93bb91ec118e5bc54246d + invalid_around_link: 37c6602b576197aa8ee5c9b7afef056b + set_riverside_link: 3b1106af74af1f53058e635eaeab1a4a + invalid_riverside_link: 89b9fa2701e1c34dcf3d95a17d02f6ab + invalid_ping_link: 48db38a112b6951a46bcf5e08829c820 + add_exchange2013: ab5c2d97242172fc726e92dae14f92ac + add_exchange2016: a1219d84140ee0f06642c63001660e3d + custom_template: bf9b3f3049227c1508dc739750311f41 + email_body: d9328ed52130df702caba45fc784dc21 + text_message: c8f79f68bc43eac591cae0ca59e25d2b + specific_issue: bebf9152fd8c8e3d080b7db19fef76b4 + browse_our_docs: 6aee4451660a3bf883c00b934061447c + choose_template: dc3f22a8178d5aef8bdac9d3fc7cc268 + custom: b7b89901f46267f532600a23cfc54ae2 + reminder: 4e93cab74d138fe56b452f8eb9731924 + rescheduled: 2937af5d7cd4ab933106f48fa44e0ce9 + completed: 0e4bbce9985f25eb673d9a054c8d5334 + rating: c9fa231054678af1362b7f9c6ab35e23 + reminder_email: 2b6f2e4a961529ff10c54bc45aa201fa + not_triggering_existing_bookings: 44ca459bd1602b14c233685f549c2acc + minute_one: 72bb2e2059f623fa834725b869751710 + minute_one_short: 3579d6c418656b744f9ed8ab62551c1d + minute_other: 48733e6db98077b24a9f4d472da8d73b + hour_one: 8aaf1f284481ebf01ed72db828bc27a3 + hour_one_short: 2c4c89fba9fa5477220d354ee842c654 + hour_other: 905984b248eaf61c4cfb457b7762da00 + invalid_input: 5067156b8c48dd522fcc71b884f056a3 + broken_video_action: 2d2dec5339b382fdf6c6b0957d882cc2 + broken_calendar_action: 96d48d0aaadf6f1bb2da4a8513271492 + attendee_name: 78f0d068b99c1f9468c74de8e5e3989c + scheduler_full_name: 3678da451f29d64d763bf89ca51ec2c0 + broken_integration: 00d36fbf8befd947c4609a8ea8d1d86d + problem_adding_video_link: af11d98039b47c28fadb5ee7c29fdcf0 + problem_updating_calendar: cf3d0b44b595554c401f3eca10b45f5d + active_on_event_types_one: f3ff505c332f1526bc8effb379764402 + active_on_event_types_other: e346760870fc1f5f11de26d1ce9f8bbb + active_on_teams_one: dd4c4b1b42df0c6b9b425e6438df02da + active_on_teams_other: 10a9e3444668a07128ea95feaba61cb4 + active_on_all_event_types: d00db3b04d4fbfdf3b226158174ce480 + active_on_all_teams: 3775039a53df9263ea3a251f5faa3ad6 + no_active_event_types: 61ffe47c13345c7c792b2c7d5e13c83d + no_active_teams: c8fbdfd4084fd1cdea1491417178a9d5 + new_seat_subject: 75ccfd925ad9f167664c402d30499b4d + new_seat_title: 2bd30c0710403dc07f96b631d6629e23 + variable: c13db5775ba9791b1522cc55c9c7acce + event_name_variable: 428f887e21b9f88a71b9f88c646984be + attendee_name_variable: a22f05db9dbc4d4ed81acc8582cee94e + event_date_variable: 26d971c39b7c2249f57817c5e64bfefa + event_time_variable: abe6c12420e8adb6d2c4f66a7d94a622 + organizer_name_variable: da2da695330298cf7e964d0af9249516 + app_upgrade_description: 9135644f2912b86528ad210372de588a + invalid_number: 691727d3c2a8a7e010ecf5be56fde3b4 + invalid_url_error_message: 61c51e3f05b9ba8730630d62f18a94e8 + navigate: d656021ba5f485fa1a82f8aac6ecc5de + open: 9a8c3b16091ea6cef3f771fc6715ab67 + close: 2c2e22f8424a1031de89063bd0022e16 + upgrade: 63c3b52882e0d779859307d672c178c2 + upgrade_to_access_recordings_title: a420f9c3646522460bd6536b5d884394 + upgrade_to_access_recordings_description: 8398a9addffb1eb4e240387f1cc8e476 + upgrade_to_cal_ai_phone_number_description: 1b1d46490912d855a532d9ad64c480a4 + recordings_are_part_of_the_teams_plan: e7d77da8d3b5881c0987f3b6710da89a + team_feature_teams: 2da0616594250716530d253e0c7734bd + team_feature_workflows: 7be75f956387cc1b16e36ef7026de4cf + show_eventtype_on_profile: c28452f9cfa5f250b156b430c0283023 + embed: 61837ea9c7b814b23d6a22bbe0f5ba51 + new_username: e5e350dbc3a291f532ecfa0091fbf628 + current_username: 89812df7f83f4fdf38a2840687ce5f86 + example_1: 0ee6783288a980f471828fea266c1436 + example_2: 1f3fd3c4d3ce4f05b5f87ab31d2d4550 + booking_question_identifier: cdafe0b5ba5e6e9615444dca84c32825 + company_size: cfe0ea5020ec3ab2b4d58530ac33f3d4 + what_help_needed: 2e1ff902241cac19c2937c524b05835e + variable_format: 50ea7ed37857f8d8ca907321a10f7b33 + webhook_subscriber_url_reserved: 2f88b624f37239adf00d9f822c242d00 + custom_input_as_variable_info: 0d8c3acb7b78c4e465e7912114f7ecaa + using_booking_questions_as_variables: b31798bb7d7ec966af32c4fbbf96fd6e + download_desktop_app: 4794f4f960136e719ee4e9fec2a33c7c + set_ping_link: 952a8dc1ac80caa5777809eabff26201 + rate_limit_exceeded: ed8d75775422114635129c16d348ef89 + when_something_happens: 660efa16cf256435aa0f11cf055c02e7 + action_is_performed: d688e1fe0c327e56f886961afabff795 + test_action: d2874e5a1ccc867f944756aa22063c59 + notification_sent: fd56cd7912721aafac9498cc8f79cd53 + no_input: f5df9619ecb621d1cf9c7a80027ed78c + test_workflow_action: 3d603d102e78fae4dd63597717833bea + send_sms: 7537bf3f66a53a99128c84aff015c340 + send_sms_to_number: 6c831cc596b4de9a58c3cb2831440e06 + missing_connected_calendar: 07b57964be20aca10370621795685ef9 + connect_your_calendar_and_link: 39a00247fd714fb2e6a94f8577f32176 + default_calendar_selected: a261712074af618d1d222e95dbbb0c5c + hide_from_profile: 5a9e2f64b739f6ac6023702e7ef74da4 + event_setup_tab_title: 547d34044a5f032fd65b3ce45617dc79 + availability_not_found_in_schedule_error: ebe0dfb691e2963cc8a141e7c153c6d1 + event_limit_tab_title: b86fd2e3c3ad5d514b55ad8691bcf7be + event_limit_tab_description: 0a6df44e16911fed68d3757e82486f69 + event_advanced_tab_description: e742ae193d93e359f3707f1bb4612060 + event_advanced_tab_title: 16e9b03eda6f6c1324cce54b96bbccd6 + event_setup_multiple_duration_error: a30305a88bf672e8131cb3b7cae4c1d1 + event_setup_multiple_duration_default_error: 6767f85bf2a790eb77e2ad4d6a46ae7c + event_setup_booking_limits_error: c88422fdc86c4f62d2a6391cf06b918d + event_setup_duration_limits_error: 44bb0a6c815b7d3aadd954a13f269621 + select_which_cal: df0d30d1f74a00c520e1d883d71fedd7 + custom_event_name: a0db50a0098f673e637603f660d516a5 + custom_event_name_description: 6eb649cbedd4579e6ca13439bb97f290 + 2fa_required: f951d98d309d760db3b299b8aace50d9 + incorrect_2fa: 519240ae1fb190408388ef0b7cf1896e + which_event_type_apply: 2cb8134992d44112b764604ca61d0b62 + apply_to_all_event_types: 6b81c4f1140b3d4b45108a68ff859048 + apply_to_all_teams: 406e477924a9bca48718b6b08e043202 + which_team_apply: 37a912bc143f9e70a9f0a857763682e7 + no_workflows_description: c4d26061b0143c7ae4237bc231329e35 + timeformat_profile_hint: 473e068e1d3d392578f16cd53d544721 + create_workflow: 43d7f09165dc2d150bed5751bfd353f2 + do_this: 3d7e6b1f19262c1b59d42a37a33913fc + turn_off: ca045d2b1a8be7cf0ec7eeac120e03ac + turn_on: 687a922aeaea51a93b281c06c859720c + cancelled_bookings_cannot_be_rescheduled: d0d6e172a788b11a77a4c0b2d76bf626 + settings_updated_successfully: dc24a87d79e378ee848a9f5533190dc8 + error_updating_settings: 858e121bc27bdfcbc7e16ab2a2753429 + personal_cal_url: 1d8cd97fbd9f7116174aca6888207c5e + bio_hint: 07d73bb2679414939ac6b6f6ab8e02ef + user_has_no_bio: ed00c0588b37b5fb565baf7736ace2b1 + bio: 9c27cde7f812e40bb94f725ea488ffd9 + delete_account_modal_title: f5f7b88ff3122fb0d3a330e2b99d7e3d + confirm_delete_account_modal: 84d396629d6e50b61abc00ee91b167e0 + delete_my_account: b04b926d093149a2b63e7036f6a93533 + start_of_week: 03e64f54b4ebbe41f96a622b302b7d96 + recordings_title: 3269c07d12cdb058009a486b8a9c5d92 + recording: 0ad8b4267993e99dbd488ad0914db0a8 + happy_scheduling: d0d86076281c037f0534628e5107a9d7 + select_calendars: 76494251521a92fcd8b79820477cf2d9 + check_for_conflicts: 1610696a307e785ce733e21f0051cea8 + view_recordings: 716715559c58d480fb2195c8c893d415 + check_for_recordings: 366ab3e9e0ddf3206c927e1fbd27ab87 + adding_events_to: 8c41ca72fb6fd3f021255e23b0dde540 + follow_system_preferences: 931ceddd99fbf2cc3807d5cf721b08df + custom_brand_colors: e1fe163c753c111e90761411ddeb934c + customize_your_brand_colors: 0d3c40f05de858f1a9fda50761de3cd0 + pro: 682b3c9feab30112b4454cb5bb7974b1 + removes_cal_branding: 2f3ab978b8d13b1a02078ebdfe40b59c + instant_meeting_with_title: fd9f8c4e32200465ef3faf1859de9192 + profile_picture: 982f611801ab04620bb2b4cc399d8dd3 + upload: 4a6c84aa16db0f4e5697f49b45257bc7 + add_profile_photo: 5ca662b119fba02e2fda6bb8a5a63d56 + token_address: 527c50fd2fe702e3a8d17bca4a7b5b57 + blockchain: 6f650a5eea2c7133978f2915c12cd0cf + old_password: 2502e1fd4fc6a172b25d37459a70fbc8 + secure_password: 3481cb931addb21b467f6239f946f685 + error_updating_password: 3c0958841b6dc3f6bb842130cb9fa97e + two_factor_auth: 97a428a54e41d68810a12dbae075f371 + recurring_event_tab_description: eb44fb9581f4459bfadc5ef897a7fb1c + today: 1fc7ed1f2327bf89b4d6cda1c6581ccd + appearance: cdd8c41c5fb859234e8a603544fce631 + my_account: 4791806fd9fadc33912e3df7e4e3911c + general: b891e8f15579fc5d97bcaf3637f5ae59 + calendars: 5c886c639eb89b8593b189ee551c0665 + 2fa_auth: 396972e00c1bd7d778a7bf6cd202fcec + invoices: 2a9cab536b243f033848ec5dfd92b0a7 + embeds: b4eddec9f7233622c508db34d1ac1d45 + impersonation: 5cc8e11e5a89d71adf5882da844a33f1 + impersonation_description: fab0bda0e574a42f2208f0a7ea641f96 + users: fe42f97809c24d700d3912c8d02ed452 + user: 61073457a5c3901084b557d065f876be + profile_description: fe677c83722fcbddcdc6a3b349cd1d8f + users_description: 468c0d5f52fc3b0732b2881fac99f230 + users_listing: a79e266200945671e3344e38b51c903a + general_description: 0b5ced491ebfc074a472b15432a5e5ee + calendars_description: c1781b89bb51debd100f8763eb0fbfb9 + appearance_description: bbad614142bebdfc710f89f8b7c2e899 + conferencing_description: 7ff9d875c2ffacc5776395a53b37350c + add_conferencing_app: e52c61a18bc18e80b9ddd928f30535d2 + password_description: b4abf92f13c7a882531bdf9a3979fc71 + set_up_two_factor_authentication: e0ecdd6f43252f0e07a5ac48468dd3bc + we_just_need_basic_info: b464a1de99013d863016889c558b5f34 + skip: b7f28dfa2f58b80b149bb82b392d0291 + do_this_later: 1e6fc4c9ad0fe2bd0ac11dde8b6825ce + set_availability_getting_started_subtitle_1: 78e33d8cd546da46f0af73317bebe7f8 + set_availability_getting_started_subtitle_2: 1fd0220731b4665a47d6e78c7a28178a + connect_calendars_from_app_store: 265b755dcbae64a5a2257dd4dd47c8c6 + connect_conference_apps: 87f2c177e19cc26dd0b376df7304e51e + connect_calendar_apps: 46f91b99469fcadbd49955b7b1e7df15 + connect_payment_apps: e2af2aabc7c971cfa66e733e8d248889 + connect_automation_apps: 914fb001098839e6a08a94ead383bf5a + connect_analytics_apps: 1c92ac3a39617b596ee4ece5aeafb681 + connect_other_apps: 84c87410422ca9e6c5a5f77a0cfcc873 + connect_messaging_apps: ceca58ab8d9c4d20a5e808ed88096be4 + connect_crm_apps: a83d49bb99094e8b93bf3ab0f10c5e9e + current_step_of_total: 9fc2e1ce63cab942b11d7b4221bcaf7d + add_variable: 23f97e23aba763cc58934df4fa13ffc1 + custom_phone_number: 39bd85cb28015dc744da73e19fb1f6a8 + message_template: 6576a09b2eed0fdd268132c0bbf1d319 + email_subject: 7e613528403a455ae209441eeb4b10e2 + add_dynamic_variables: 3e6c3ef8fc03927fda1261b8f7ee5629 + event_name_info: aadf152d45b489f9ea2abeb55cd232db + event_date_info: 7f46762256f039f680e10e99851f3469 + event_duration_info: 2ed8fb3b9b152602e140a9c4e34ac9bd + event_time_info: a000c4195df3733507313d8312f7f1d5 + event_type_not_found: 51890a3a3fd93d173795a3f3196da032 + location_variable: 036cbdfe32bbe9ad67b5d06ef6a02a16 + location_info: 38a03a8e5d83713221944a25250d1e51 + additional_notes_variable: 416243d69874a5fd915db4c16a5311cc + additional_notes_info: 17b42b1273dd8e0c25b8c1fe1973229a + attendee_name_info: 83fd36e412cf5e450ff7e768a4c62329 + organizer_name_info: b9170e06950b1f151eb3c843e31e06cc + to: 24ef32707b456cff90a91d438df59bbe + workflow_turned_on_successfully: 5604db203ad9b318550fa6857bda0b9c + download_responses: 18a1643e50f260ebfb6520d58c155d7d + download_responses_description: 59f862e06fedcf377b6e02001c27ada4 + download: 56b7d0834952b39ee394b44bd8179178 + download_recording: 7f29ddbe21c013698a50849a300aea2b + transcription_enabled: 0fdc203ca56b3c7c48c77c16b5366f5d + transcription_stopped: 12b193d31b9d101ccbc07f4804dbfd62 + download_transcript: e6200f050dd5d0277c0dbad0cfe3b41a + recording_from_your_recent_call: b668afa4ace7a561853eff98d583532e + transcript_from_previous_call: 7485bc94e7ca0e7b2f9cefa8f5b12168 + link_valid_for_12_hrs: 7701a0f7bdc1ca82a14e6fa28583ac74 + create_your_first_form: 5d33316ece53f9ffddba51418869d7aa + create_your_first_form_description: deafa03d444fc9af9c16f48408d8048c + create_your_first_webhook: cbb0a8e44a610282d7c63fef7219c0be + create_your_first_webhook_description: 8a66186e3c707c886db51d3c4f66452d + for_a_maximum_of: 355f0cf102b22f22a1f8ca286ccbd2d2 + event_one: 05637d56624ec489002568414f00062d + event_other: 5376b6d2dd7fd95f3405001781e7944f + profile_team_description: 5c43c92e1199411be97ff8fc7752d8eb + profile_org_description: c770d28703ba50dba0f19b2ea37bad07 + members_team_description: 2865168e55b12c5f992a263b082d0752 + organization_description: ccd7947a4829cf8c8e8e1de67dae74fb + team_url: 29e1dfe4aef6e2ad84f0828ad60b1d3b + team_members: d148d3e9f3d013feddc4f41bb620ec28 + more: ee5e035ee328a8947be2ea44e338a57d + more_page_footer: e2deddfbcc810846fd0cded621687b73 + workflow_example_1: 5f72e83ced3d7155fbf3d5bbc86ac868 + workflow_example_2: c1153c28e0ec440735b0e19ee680cba9 + workflow_example_3: f5fc153e6b6e9b8aa6f91a84914cf3d1 + workflow_example_4: 05ec3b7900f5e4c19546914407ae1d8c + workflow_example_5: d2ee89e4551e043a4eeefc44b71d66f9 + workflow_example_6: 59fa576aa1cd974f666f4227c12b839b + welcome_to_cal_header: 7a43302ac23af654e035160bdbd47115 + edit_form_later_subtitle: 50d27171069ee6b0095ead6291c9b0e3 + connect_calendar_later: 53c6598172399637cbf12219a78c531a + problem_saving_user_profile: b09fe09e6ca552187dc6925470242ec5 + purchase_missing_seats: f76262024a8f1b3f3c74a6396a610b86 + slot_length: d1f804ebff8bf7f7aa339bd2de0ec99d + booking_appearance: c7a9e62aad423c132da22317051940d7 + appearance_team_description: c0bdc572130cace267631a4583cf434c + appearance_org_description: 892e1cef53ef0212348ff06d6a330b39 + only_owner_change: fb2decd5123faf5856c50f4d404717f4 + team_disable_cal_branding_description: 7cd8a15bd27dcdac17ccfbb4523fb739 + invited_by_team: 3423e3d8db47a0d68d5c82faccc2db4f + token_invalid_expired: 08c33b2288a77b5cf72c32cd2be89d8a + view_booking: 7cf5f429ec2460d57e91d54916ad960c + exchange_add: 14be8ffb208178dda05c0dfbbf3d2e0b + exchange_authentication: 6fefd55c386f997ec0cba65781ec5795 + exchange_authentication_standard: 92e7896b6bd703711359d6a195ef13b6 + exchange_authentication_ntlm: 7efa09a77fa304b3a6a25dd73f4c36b0 + exchange_compression: ebe506706d3a59536da7e1e3d8f40bff + exchange_version: 2753a334f50dc654d3f3a49cc02b9798 + exchange_version_2007_SP1: 5cb4b3c529fc942e3230d82e2f043668 + exchange_version_2010: d45bae2d5a783dbd2433db7b7c3b01d5 + exchange_version_2010_SP1: 7efde4fd821b5ea9dbd2726f3227744a + exchange_version_2010_SP2: f54864262007ec9cd862efd45f6c8b46 + exchange_version_2013: 25435f8bc821f3117279da7cee1f437c + exchange_version_2013_SP1: fe740dec189a7104a23fc564197c1ffa + exchange_version_2015: 50e79a72f00a2753fb9fb573ebd3e805 + exchange_version_2016: 2f05e1e406207f418ab99c35364c05c2 + routing_forms_description: ac1f7ea1413defaa500350053495fa4b + routing_forms_send_email_owner: ea60c8ba5274a1895df367b8a98156e3 + routing_forms_send_email_owner_description: be57f56ab885aa51dfa1f2a9d133a069 + routing_forms_send_email_to: 0f34b0ea67e220ed915aca804804d67c + add_new_form: ec5dacae48ffa2cd117165ea86d749ec + add_new_team_form: b217124744195de59468eb805236b422 + create_your_first_route: 3b20ab5e1ced3842b01afeabcc6eed73 + route_to_the_right_person: 69407ddfae2119a01251961530738e17 + form_description: 087ef954207ba2fe11e8806acc4236c7 + copy_link_to_form: 1c2cc8ec0322107c9542547798045ef3 + theme: 26a60012895802d36f7cbd11c8493f41 + theme_applies_note: a5481245c5e32c8d6aa4de1a024319f6 + app_theme: 9cb21b3ee79cdf3a86d1a883aac23078 + app_theme_applies_note: cb23a3c7d8cede766963222f3b071267 + theme_system: b86b75074126596ed417c2a1cd32ed5d + add_a_team: 017d560e0236ad8cf750204c6626fb81 + add_webhook_description: 3fa63ff4bfedc41523797a5b2b23642c + triggers_when: f7e8ec55f14e0e0c014584b271d1198d + test_webhook: 7312a89f1192a606e0006844121fccaf + enable_webhook: 294405d973ca60895c8ca7d827cb7fad + add_webhook: 20ba6e981d4237490d9da86dade7f7d2 + webhook_edited_successfully: 432e90bfe3321c6247da1c3a68c80661 + api_keys_description: abb0484b0e2ce3effc4d15bf62cf05c5 + new_api_key: db3088aedba6e4a99b46451c5b3d36ed + active: 93e6175c190bf235124f10f4d129c26a + api_key_updated: 1f4ae0c44718fda2379cdb5e614404f4 + api_key_update_failed: 8202098951c17496e5a889d08e4451b9 + embeds_title: 4bb86a1a16d1bda5dbd5fdec1f07146b + embeds_description: 15497d684a8868ebdb60a8bb922e4446 + create_first_api_key: 3e1e0d0d889dba881ad32a73843f3044 + create_first_api_key_description: 144231b4e593170e4c0b4b1abac30b8a + back_to_signin: 73252c5409668fdb0d59e1414217721d + reset_link_sent: c034c79494fb6ce1533fa5317250f72a + password_reset_email: 22dd2b946f56bc2e613b89089ca943c4 + password_reset_leading: 029dcb678781f32eb99393d3e2a1c76d + password_updated: 0bfdc3c174e6cdfb11dc6838c9e2accf + pending_payment: 56278ca172a80a624d84fccfec3d7c8d + pending_invites: 3f41764c00c258b3e45fa5de69bc72ad + pending_organization_invites: f504d2fd5e7c1f2a4dbf3dacf776e13e + not_on_cal: db3388ea63160a196e913b1b7aed5953 + no_calendar_installed: 6cf54042f3df4941a2b3b05644b36145 + no_calendar_installed_description: dd91732b26fa6d7fdcccdb99fad008eb + add_a_calendar: ed59e59573b2b4dc35575bb3363415b2 + change_email_hint: 987ac6f21d1c0950c23a63a12ccf64a9 + confirm_password_change_email: 98d7d01007e06e01606032976839bb8a + seats: 6e3f470ef5468c5195ae09f518b4dea4 + every_app_published: 1edfa8158f66dcc982e9ac2cd139d124 + report_app: c0750ae39ff1be84d0fc50aabd82d7a5 + limit_booking_frequency: 9e7c30057423c4db72b34b39cc156aa2 + limit_booking_frequency_description: 190fd6c3338a403e82dcbbdf62127f68 + only_show_first_available_slot: 50ffa7024a20bf2a2ba6321bd5c13a38 + only_show_first_available_slot_description: 2930140923f1201f42d7773fc8948dc2 + limit_total_booking_duration: 6a2453129b0be0a47cc0acd58877844d + limit_total_booking_duration_description: 164c5d1cfe1af4e2c37b66ae44951281 + add_limit: 85df0b7da795288daa6d7ab01222217e + team_name_required: 4cc2172c8b6e59637d454532d8d07996 + show_attendees: 4a9c313ecaaeb4976007efb413932b6c + show_available_seats_count: e9913b606cd2439415a472a194ab0c56 + how_booking_questions_as_variables: e801b257505cd7b9af894c94759a129d + format: 14dfd9f7515f22e0f6f2ba64bc6af47e + uppercase_for_letters: 12f5601089e8e42d3fc4cf73e3ec45f4 + replace_whitespaces_underscores: d785e8b787272f0755b0334469e30fc8 + manage_billing: 95d7c3339a608bdb9f0ff73be0107202 + manage_billing_description: d1dcdc64ba7a022f5cbf7da37d7b8a8c + billing_freeplan_title: eed9834cd3ca0eeb35fda88847fce65e + billing_freeplan_description: 87fe237c078f4b6bafabe6ddcecfe633 + billing_freeplan_cta: 18bede34413f128409b9c469890a6bb0 + billing_portal: dc3afa14ffe19f5920992a0c9d49d525 + billing_help_cta: 32a4dee2033635e334a5f4d34724e3e0 + ignore_special_characters_booking_questions: be1d14e97c9b96eb1e848a8ac56f076a + retry: 6e44d18639560596569a1278f9c83676 + fetching_calendars_error: 5916aa9a99732a5cb7dd45063f1bcd20 + calendar_connection_fail: aa56c14d05defad545afb64f85b521a5 + booking_confirmation_success: c0a1cd691c92988abd25f5a95e352eff + booking_rejection_success: 88e7a20e38d17549e93222b88ec764c6 + booking_tentative: 381b2c042fdad853c339c7fc6338dbbc + booking_accept_intent: 8238ab30c9038ecbb217c4ca98cebe4e + we_wont_show_again: 96067c79234a36bfaeefbc58853364a2 + couldnt_update_timezone: 1eb58f7bb419d652a48517f56b960b7e + updated_timezone_to: a5abdb01e44b5069c80893bb5523c5f4 + update_timezone: 9478ddf363d05eb816f714c6c5feda20 + update_timezone_question: 45df9c4f59921603f749a54d5ee76cab + update_timezone_description: d0eb0aa217e06f40efbd1e9552aba3b5 + dont_update: e1b2c29e5103ba177efb869e1a11eca2 + require_additional_notes: 74dcbc8424195094fdd47fc1497b0bed + require_additional_notes_description: 122b82a7aaa152c0699e515976722d23 + email_address_action: b2781c452a4f0a3f941d3219f4a6034f + after_event_trigger: c6eee0242d7bf2049809c45c8f83f279 + how_long_after: 5869f7636010a4c0afd608b1f369dc49 + no_available_slots: b19cb280c9094cf969fe0b016dfb8221 + time_available: 01de4783c7e7134ac8946d2123674f16 + cant_find_the_right_conferencing_app_visit_our_app_store: 0919dad2291f81d176b8459e61ace1f9 + install_new_calendar_app: b2c2e9c13ab273b06510148ad93e8fea + make_phone_number_required: 711f14c10933b4285b268f9b898b38ee + new_event_type_availability: 81845f2cb0630be2c0ec305f0d9e6d62 + error_editing_availability: 8f9804b8f36841df604e601739de0280 + dont_have_permission: a602e7d4046ff33fb1e616839e4ebf3d + saml_config: ebe88ea2802ec41f4cbbd14f17017bda + saml_configuration_placeholder: 378f11e83f0c4da4c49d42f93708dfce + saml_email_required: 65798625eea0e5149527ddd8a27faecd + saml_sp_title: 3b9f442b3e6bbd32200247e98864bd38 + saml_sp_description: 81e8664bb8cdd61d5b18d0f260b0a61a + saml_sp_acs_url: 095ef64853c69702a221800026217aaf + saml_sp_entity_id: 9598b06782949530c90b6809af028c92 + saml_sp_acs_url_copied: faa9fc53ffb4ec72e092f4fdcaabd805 + saml_sp_entity_id_copied: 27b317d859a245b631697cd8265b00e0 + add_calendar: 995fe627e3f7a8c1edb75a48ecd509ca + limit_future_bookings: 68419e88d46ad566ce0f8fe4ad0f00c0 + limit_future_bookings_description: 89d5a4d21e5d13b6f2ed4df09a391b95 + no_event_types: e2edbb070a2fbca22dbdd0c2e6fa31d8 + no_event_types_description: 8216c096649695031e7adc74ef80224d + billing_frequency: 99a9a500d46797c0b3e86bc53ef56321 + monthly: 818f1192e32bb855597f930d3e78806e + yearly: 87f43e016c19cb25860f456549a2f431 + checkout: a03cbd25ad34ec762c35441d6c5a86b5 + your_team_disbanded_successfully: 876e04b0db54044fd2fb05e1fa3c52e7 + your_org_disbanded_successfully: cef1863bd26106d44fd1f338d3a5f479 + error_creating_team: c3f17710f4bcef88fc6413b3a279f2b0 + you: db2a4a796b70cc1430d1b21f6ffb6dcb + or_continue_with: 11a7be95ef4cd680f510166b4d348c7f + resend_email: 3c9f0e90dcc03701c3ec012209b2b952 + member_already_invited: ee68f565c2f0ec8e0d77d1a711ce7770 + already_in_use_error: 9b4e1df158c384fc9904ccfcc0293b60 + enter_email_or_username: 2085b45a058a4ab7001181f0ea3ad0f1 + enter_email: 95407582c3c9538c5a57018b5ec42364 + enter_emails: 21074799f63234823aa53d81cdd5258c + too_many_invites: d5734ca05d3e82d5af1a0183d5eca977 + team_name_taken: abbc1e42e65398d5d977efdea5d247f7 + must_enter_team_name: 64c2df8bd21703a86798eaa4c7cb85a9 + team_url_required: fad840be739dbf99c8a6a9667913c0fa + url_taken: 441497053658bdaf76c2af6c2b23d70b + problem_registering_domain: 68d55d949e1a21f4e43cfae74eadcf37 + team_publish: bcadf047bdf5fd9e5b08467c74407b4e + number_text_notifications: 88a6af945bf12881d5fabf624f2d58b6 + number_sms_notifications: ad31276ea0a7846797a93fcc86d36d11 + attendee_email_variable: 31a830ea056b94cd705c86954c3312a9 + attendee_email_info: 682f8767c3a870a20fc3b82c3f7ebdb7 + kbar_search_placeholder: 1df07536a83ad006b7aafd795e233748 + invalid_credential: b250515b8a75c34919a2376a07fcd4cc + invalid_credential_action: 127776c374b77c1b3883d5cb7f9a8817 + reschedule_reason: 375399a84bfe199e31165cb63d833d3c + choose_common_schedule_team_event: 60d29b0f512b0a6482ecd6f13627b285 + choose_common_schedule_team_event_description: b787458df2c3f097756d7cdb60da6ece + reason: 9b66f286b86dd0e87b1ac0604c9d1ced + sender_id: 680bc78dc8a2c837c872bf6dcca5d1ad + sender_id_error_message: 2b4e0f06152b212b2a2bd53d2d9ce7b6 + test_routing_form: 37ef15daaa787cfd41d08d3d236d1b6d + test_preview: d4309d0237090c4ebede1b46d9c19edc + route_to: 58f5cdff35203cfe244573d7f95aa696 + test_preview_description: 58c3d898f5ace36eeabdcc0f0ac464b8 + test_routing: 24ba194022706d399f3d638160dc4573 + payment_app_disabled: fd8d92f39b4115a59fca9e1c79ff9b07 + edit_event_type: 3f77349b289c806b6c874de9a13445b0 + only_admin_can_see_members_of_org: d20dcbe43e5c10edbfd1d20316474fe3 + only_admin_can_manage_sso_org: e2a7e6af650c972af029c8145d1e0254 + collective_scheduling: 17c7a9426e7ff88e7ba0034ae1bc7348 + make_it_easy_to_book: eca39589fe5c4135a5efb30bb51ab0ab + find_the_best_person: cddde4af1e1cf65e25238c64d51b83d7 + fixed_round_robin: ed66a915617997b484a8802f6250f0ab + add_one_fixed_attendee: f6e0080c2ecec1758b8ca2525a5ceada + calcom_is_better_with_team: acdf5507f780dee5730fee3b85308dbd + the_calcom_team: f27321cd4a5593f07fdc08eefb7a99eb + add_your_team_members: 8304c40c36269f1c1c07744213ff65ff + booking_limit_reached: 72ae3fbb994879f476bdfe071a4183da + duration_limit_reached: 078ffb4e81d2d991ecd506142e3fb46c + admin_has_disabled: cce3e7a7a4b1bbec66badc1e87000211 + disabled_app_affects_event_type: 7f9e3220171741025732900dc23daf5f + event_replaced_notice: e0bf9d47652039d81fb6ab7fd287acbb + email_subject_slug_replacement: cc4f5bd334a5ae689056b76915b099d6 + email_body_slug_replacement_notice: 9ce6c0631a08d83fa5022db347906f8e + email_body_slug_replacement_info: fd52211d0853a99555934f6e59666274 + email_body_slug_replacement_suggestion: 245616786f7de0471c05b64b1ee81b4b + disable_payment_app: d8c73257059700387ddee88197ea26f9 + payment_disabled_still_able_to_book: 76fca6c61a2b3ad850ccc0725bb3b336 + app_disabled_with_event_type: ffe83147c5ac31d708dd25f60b720db7 + app_disabled_video: 1d2f1f0a240c19cb3e2b07d4c2bd1a89 + app_disabled_subject: 219fc3b0b6b35ed5419b364e21b51b2a + navigate_installed_apps: a7eb07075b0e7f3552f7623d5440bcde + disabled_calendar: c3e724697bcbdfbdb9eeedac1f8aaca3 + enable_apps: b2397e68c570dd64c127007fc225b654 + enable_apps_description: e2f4034b55c7c68a139c28d735e62430 + purchase_license: 6ec739f9035039c6610c83dc1f4cf7ce + already_have_account: 699043a787e26ec2ecad53f52df28d5b + already_have_key: 18768c72aec29b91c4a8fb5b9af7f77d + already_have_key_suggestion: c2c89f46f30bf9713e7ae09b63adc470 + app_is_enabled: 38a2bd1420d7cc809fb716dd73ffceda + app_is_disabled: da8f70cedc70b97cf1461f91952f1373 + keys_have_been_saved: d2aaa76ef379fc0b2d44a7fb1bfdb75b + disable_app: 1a9114cbd37c3f064be1f5c6b2c53925 + disable_app_description: 00297d36cedb089d7c88559d66bd333c + edit_keys: 13a333ab00dd21638972e7021444a129 + admin_apps_description: 51757ae6da78742a7d7678eef8e05e56 + no_available_apps: bd9c70aaec65a7f2eec371fd1a8582db + no_available_apps_description: 30a7371fd3dd7fe37ce14524723d83ba + no_apps: 5dc4413a4f08b5bb6ef0d0a3fabd12bb + no_apps_configured: 6bf0808af39566273132c3e01b25e1f9 + enable_in_settings: b7e5010755463e748205a0769d471cad + please_contact_admin: d80ea0146e8008ab34eca926847393c0 + apps_settings: 00d1243f3eb5129561511609dacf5cbf + fill_this_field: cdfd60b805d9fddf6139334d6e18bc7a + options: 59156082418d80acb211f973b1218f11 + enter_option: ec022f280869dde489ed1c0afaa62784 + add_an_option: c9ad5585c35231cf30fa5c3ba1b28a4f + location_already_exists: 496d351001b440af0b69a4e459625db4 + radio: 7245e4f0101574d5d3b6de4d03f7034c + google_meet_warning: 3e39e2a00c95f9ac42d7a197a4eebf5a + individual: 52ebce389ed97a13b6089802055ed667 + all_bookings_filter_label: be5363f82698cf0a32d648a14892b03d + all_users_filter_label: 5fb4b3d987f0b3bae0d628fdb174b57b + all_event_types_filter_label: 70958b2e72d7c41dc697936275eb8ca0 + your_bookings_filter_label: c0123aec3d6e32d1ca8fff14e37a5064 + meeting_url_variable: d2851c41dc7a74d687f91cd231a95652 + meeting_url_info: 378e8ac9488e700b7068f84da022b474 + date_overrides: b15287b91143b039a49fc6f74d05f361 + date_overrides_delete_on_date: 55eec74d0060d8f18999b9a4c81f1afc + date_overrides_subtitle: 490e48c9f9433e4b94d1df363ac573de + date_overrides_info: 90d1e911411d644dd3e6bebe1989d10e + date_overrides_dialog_which_hours: 22469c5700ef5247e539b244080714b2 + date_overrides_dialog_which_hours_unavailable: c010a6c26e7cf9f2cc60d6491a7e0f40 + date_overrides_dialog_title: 4daeb42d39976a935b803d0a466e0689 + date_overrides_unavailable: 7084cfb0ab887bb111cff0fe9b6d40de + date_overrides_mark_all_day_unavailable_one: bb97f6d537c9c1f3f8409355fdea9644 + date_overrides_mark_all_day_unavailable_other: 0d88fc3db1bed4deb7f627fc8ad8fe32 + date_overrides_add_btn: 0d84a29a140ea669a862dc739fdeefdb + date_overrides_update_btn: 6d41dd12ede59e87ab393691a8791e09 + date_successfully_added: b61c1a133ca7b12c7da5255c43aead39 + event_type_duplicate_copy_text: 2d542569948e5980be82ef5982bba351 + set_as_default: dcbc0ab506e0ed94bb83f5db42c419aa + hide_eventtype_details: 75c9d4f8c0b148a289949ecc78eb6ed6 + show_navigation: fcbed7271795f392382c09b5c2a95e44 + hide_navigation: 14cdcd3f1be41f3e2176829abc9f2bdf + verification_code_sent: c0abf5731013df53ed3e53a6329f58e1 + verified_successfully: 9a0492038f143640e013b152e4b36541 + wrong_code: 38edf077b2ff6b64c11d537f0b71e81c + not_verified: 702985645b380ed947d9a0e2653ff96d + no_availability_in_month: 2550fb427301f1029a7272781cabe8c4 + view_next_month: 8ef4e7245d6863295078abe3657dcd10 + send_code: 3604a3bd89c33a995b7dc7c695772947 + number_verified: 8853b69d7f63ea9f5f6e3e38995bd583 + create_your_first_team_webhook_description: dcecf0ae3fe4bee68717dbd9adaf0c3c + create_webhook_team_event_type: 2669af1fea840e277c61783bab12135f + disable_success_page: fe3367557c1751d8b880e02badc32232 + invalid_admin_password: ff6dc303578e24bd2314e4f6361f7b32 + change_password_admin: b62d433fd424ccdd1efb15fe7e9dc301 + username_already_taken: 08b41c30655938da61770a6dd2889141 + assignment: bc829dccab73b7b86f106ef70380c2d5 + fixed_hosts: fc9f9bb034fbb3769cdba9f3ddbff8c5 + add_fixed_hosts: 132602417bb8bad9f7b616ab9e29a460 + round_robin_hosts: 7679e7e73e93372d251ecdf39d7c642d + minimum_round_robin_hosts_count: 5582ab73362ba09b5366984f6d7df29e + hosts: e8f8791fcea6024eb21194a643d4dd5a + upgrade_to_enable_feature: 849f423d4f21d543f0859b1227f08ab1 + orgs_upgrade_to_enable_feature: e606877ec226f35bb274fb497fd30963 + new_attendee: 818656cd46e446313b8ed670f8361792 + awaiting_approval: 1587287d4d76a03d67940c18540b7e52 + requires_google_calendar: 6d16fbde7f48cba7737ea822ac7f481b + event_type_requires_google_calendar: 7811fc2eb267b1c840144a402a313a96 + connected_google_calendar: bee8c7705a30627cbd57b082965f22f7 + using_meet_requires_calendar: 0c37095d67499e9cd1139d9bb3974353 + continue_to_install_google_calendar: e2c0d65fc264543dd6d7468738c76512 + install_google_meet: 2271182330df23ab4d307e83348b14fc + install_google_calendar: 4ef0eabcfded8beadc482b0d9722e3b8 + sender_name: 6163e7c3751ec1648eb221404150afdb + already_invited: 94ec394650b1737a5d172bf630c60435 + no_recordings_found: 60499063b67f674e8f6e338821a3e829 + new_workflow_subtitle: b59148f6e4566b21abb40f392abb8804 + reporting: 97bf64946f8f76632eab6fb8767b16d7 + reporting_feature: 456f695bf045257c4568d6c8d3d3dbf6 + teams_plan_required: c61a304e0702c48259a503e7045e3726 + routing_forms_are_a_great_way: 5afdbaeb91eb63bfbe11f10241e3bbe4 + choose_a_license: 22a15e5629b764d3215c425ad38ab0ea + choose_license_description: a957b2d961fe5944773a01d8182d98c9 + license: ac2bcac75151e2fcd9eb768cea275a77 + agplv3_license: 3525c9a5d79f4f072e3978340e1115f4 + no_need_to_keep_your_code_open_source: 6bfd26e4fca799c8d6fd524b5477d74d + repackage_rebrand_resell: b31b372eb239207ee5e8f4e686c5a475 + a_vast_suite_of_enterprise_features: bf30feda142be459e426816106744c1e + free_license_fee: 92dc7e8efa9f9ec49b352a046c4da7e8 + forever_open_and_free: 9efbeffd3769ab1c1a5846c7903c99b6 + required_to_keep_your_code_open_source: 65f58c67c93855993322ccf632ccf344 + cannot_repackage_and_resell: c74a37c5892093fa27e3fe05e1fdf575 + no_enterprise_features: 3abb665a16568b77e06e9d639188a519 + step_enterprise_license: e81bf506f47968870c7bd07245648a0d + step_enterprise_license_description: acdb36ee6d8516d15a42763252dd7ad5 + setup: f86fa3a6189a3f354a21ba238dd7bd12 + setup_description: b3d7dcce80c5a19ecd4dcd4d800bd281 + configure: e3ab18ebb36c218cd4897c620f5809ac + sso_configuration: b562d4c80c590e48d428cab93c2e69cd + sso_configuration_description: b3780a7550be929456b276531a11c56e + sso_configuration_description_orgs: 48eac859f9adec7c0ed95d280303ddc6 + sso_oidc_heading: 9be7a5f0a4b5e0579fcda7f64a930463 + sso_oidc_description: e0833f15147746483b44882045c2d6d8 + sso_oidc_configuration_title: b416fb6728c84654fd751e81088cdd6e + sso_oidc_configuration_description: 2bfc7bd6f920baa5f4f84ba29c8460c6 + sso_oidc_callback_copied: 0b77f662230d92f92e69ebb0aace825a + sso_saml_heading: 179da7c86f4fa8770b972a66769192c0 + sso_saml_description: 2fff5d48a16c3cc64742145efdd8c74a + sso_saml_configuration_title: 039d29a670881480dacfd93d066e6970 + sso_saml_configuration_description: 94744a2222a72c477254ae66d407e422 + sso_saml_acsurl_copied: 2dd6200d7b19ca8f2451e4f7704bca3b + sso_saml_entityid_copied: 825dc5e071d5d715994b3e1d37392ab3 + sso_connection_created_successfully: 5b394b5544fda446ec3fae3b52e37edb + sso_connection_deleted_successfully: 259de0e5581ef056ca5eafc6ded309c7 + delete_sso_configuration: dd15c05842a08b9c503b4e3a276a6495 + delete_sso_configuration_confirmation: 0b2feac51cf8a0e7b2c8a7bac7d41f3f + delete_sso_configuration_confirmation_description: 60d81840d21bb15a508bf69275e7d2b4 + organizer_timezone: a97fbf27366f1dfe959d64042a2ac442 + email_user_cta: e15f010644b32a63c77aa2a1ae4bb885 + email_no_user_invite_heading_team: ba81c2f7a11c4c3b3fcd3687094c96bf + email_no_user_invite_heading_subteam: 3e05cf52967185a85d8785148f998e28 + email_no_user_invite_heading_org: 336d0326a07e9ca964502526df465e71 + email_no_user_invite_subheading: e0d5166214861fcc3d006318b2cff4ee + email_user_invite_subheading_team: b86fac86959e8df3f89de9657f47e93b + email_user_invite_subheading_subteam: 2effdf54f63be6a67395d117f19908ed + email_user_invite_subheading_org: 9adba70f412c6a68e27e9c0e1d8a4f54 + email_no_user_invite_steps_intro: 9d1d3d0e7e59c303d9ca5197b0421bc1 + email_no_user_step_one: e6d0f9043634335c7151a0ec0ceef15b + email_no_user_step_two: db68cae45dcd72cf673ce3de7e671cc5 + email_no_user_step_three: 0fa761304f78841dc7f9cd59df36007d + email_no_user_step_four: 8a73e2f2760febe6f3b2370730106578 + email_no_user_signoff: 0d1dc27f36dfc193d074e3779bc4694b + impersonation_user_tip: c198bd029aac4cd653771d3b2ba70d6e + available_variables: 9809fecd697df27a971951540c730f30 + scheduler: c6092671013a239aa1b62d1514822ddb + no_workflows: f75fa016a00ac2b432cac233d52dec8b + change_filter: 57aa0cf18fa707eb1d7405858022aaa0 + change_filter_common: 1fc0ff7ddf4a363eda9e18c4bbf6cdac + no_results_for_filter: 1fe4e4afbbf8f3e6c3a178e42cdc14ba + recommended_next_steps: a320d046805dae1c20a3f5bd6d3dd506 + create_a_managed_event: b214ec60da99687a7593b7bd0292a25c + meetings_are_better_with_the_right: 8bb16c88347c53c3a43eb976d92f3cca + create_a_one_one_template: b537b98a07064c244279966f11d716ed + collective_or_roundrobin: 2cf89a266b67bf7f30b4d50d809241fa + book_your_team_members: 2c2e1893aa56bd91a5ce99b1ac694b9c + event_no_longer_attending_subject: 80b5e77014c4574eebc5170c711d1cb3 + no_longer_attending: d3a214dcc30856d5a1d4db8ecc1574ff + attendee_no_longer_attending_subject: 7045242f498669b0b89860e1d478828c + attendee_no_longer_attending: 878b1ed0532838f793a704b3c606cab4 + attendee_no_longer_attending_subtitle: f34786c3e8e0a27537d9c1d2b4f8632e + create_event_on: 71829f5c0d8e567ef99184dfc4bdd075 + create_routing_form_on: 3f634f8c5a190ee869804df014c94017 + default_app_link_title: 449f7f5ed6e56536994089aa8f49e407 + default_app_link_description: c5e6ef98d08cb425c3b2759b13b9a9c2 + organizer_default_conferencing_app: 8cc159b92c6eb2bbcb90f0ddb70e7ee5 + under_maintenance: c07caeb218bfc9a104a00265857cd507 + under_maintenance_description: b6da95c38efa2247c7bb8834523bf67d + event_type_seats: a2dcd6b544ca1b20a2f1bf4166919e86 + booking_questions_title: f510f33c97da1f21fa4c7b5a9f7c8aec + booking_questions_description: f442e72577578183abfe4e63bb069968 + add_a_booking_question: 7db7665e4d56b231b4012b650477672d + identifier: 9e8ed8445c2507ba0f9deac1260dafce + duplicate_email: 5e8280ca94bc03b927f62aa30357f7b9 + booking_with_payment_cancelled: 1f2436bb21c864f063a8560d0eef608e + booking_with_payment_cancelled_already_paid: 27e02c756a46e580e60474cf130eacf3 + booking_with_payment_cancelled_refunded: ccdfcd6ec8408d23c3edc2d0bcda6730 + booking_confirmation_failed: 59daa6c4b4bcfff03dca5fb3776d5c29 + not_enough_seats: f2c120d55643caa712a0ef44350e56af + form_builder_field_already_exists: 623a2903bef6bc840794893083969567 + show_on_booking_page: 515d42a965a615916eb9299f9a8ba698 + get_started_zapier_templates: 0adfac5a026b181a55ff131b9572b5ab + team_is_unpublished: 57d5a8b888c52b11062c208a1c4f5146 + org_is_unpublished_description: 61c9364cb8fba87d1e442db181155c1e + team_is_unpublished_description: dc44c314e2e3ad208b06f6710e67809d + team_member: 93288066b5c4c693080959f9eaefe0b2 + a_routing_form: 0efb0603d4fa8a93c29815addfc5d7b7 + form_description_placeholder: 4527874b1b330670c90509d544656e1c + keep_me_connected_with_form: 6c4e124876798fa31e95263cfedc6128 + fields_in_form_duplicated: 141300cdba2154f3d7d4fa2e42560178 + form_deleted: 1826f64353f3707dd7ad3b4a5be622b7 + delete_form: 1e565cab4c0ac382e5ea4f6f4b0148ef + delete_form_action: da5c9924cbeb6409a29e044f7a8577d9 + delete_form_confirmation: 2758877c8c82f9a9cfbf19e6e73d24f2 + delete_form_confirmation_2: d99e294f332e4d41494d52cad3fe4173 + typeform_redirect_url_copied: 67b8feebd92c352ac29ac780e4a77dd5 + modifications_in_fields_warning: b146cf707935fb16136d91dc32eb0bd9 + connected_forms: b53d6c6fd998ca46ea0c222a013534ec + form_modifications_warning: fe466749a4e05d34d45d9a2c56398d3e + responses_collection_waiting_description: f7a07839d20be2cfc534116164c8f5bd + this_is_what_your_users_would_see: 0b6b3e6d5200414b33856a3a9fe1bfba + identifies_name_field: a8d5da9cc1f1fd21b3b493604a059a52 + add_1_option_per_line: a32405b9b923c039c1abbc91433aa162 + select_a_router: bd68d775026f2a9c0cefc621c1bd1c20 + add_a_new_route: ac145214c1b54e51a37e1969d2dd39a2 + make_informed_decisions: 9c532539f2703c0d63fcdc94cc7ca88f + make_informed_decisions_description: a5d029f2089e841a0d922e026dd19997 + view_bookings_across: 197c64ea722beb79bc3d80e6e7734a07 + view_bookings_across_description: 6353be6e8a13469dae1ac776f18c6c42 + identify_booking_trends: 52c83e876277ab0752a4adafe61ebf62 + identify_booking_trends_description: 7eef73fbcd53e70ca81f8371fc58c02c + spot_popular_event_types: dbecb8c3beab7f084d52cf7596a324cb + spot_popular_event_types_description: 8ff1abba9930287e7b666188e03082ec + no_responses_yet: 42f18aac9d17a87cc70042adb1147476 + no_routes_defined: f10c3c71d43ac7b044cd35ecbd390808 + this_will_be_the_placeholder: e1b727da446824f599c26825cdf93a17 + error_booking_event: c82fbbd043221c4e385d1152b879b739 + timeslot_missing_title: 5c356807990c4460e41ce9ac5e82a9d5 + timeslot_missing_description: 1bfec6d46585ae593d42a90c9332500f + timeslot_missing_cta: 8252d17b02e0e22da86650767b9b9f95 + switch_monthly: 8bd05db1c1119245387ff6d3032abe85 + switch_weekly: f4ed9cd5d4d550f460e181b864b832f5 + switch_multiday: af7947efefe9611c1daaf18c495ac821 + switch_columnview: c466e52a6c7557bd6a6e2f7c02a145d8 + num_locations: 94074fd0a648518e0020038d167935a9 + select_on_next_step: 54df3f2e68076d2c7f59ffcf8df3e9ec + this_meeting_has_not_started_yet: 95313245d60d266d960c16b565f7ea83 + this_app_requires_connected_account: 51860c2d521f0a4c8e139458cda81609 + connect_app: 08675bdb575f09ec1b33f33de8037b16 + app_is_connected: 71a5a33ca630d9fb38c0c3049ad95afa + requires_app: 6bb4cae1ac171ec2b31f4b8d22534020 + verification_code: 1c58165a0727ffb6a481dfa99785d98f + can_you_try_again: 540ea892abd7c38c02d1ec65ad3623a8 + verify: 6ad4aad279b2411ee9bf24a43e37ae03 + timezone_variable: 370780b854bdbef55320f977a4fb9ddb + timezone_info: 731aaf7a27ec27c4f22ec7b91220c80c + event_end_time_variable: 7466e7c857e5addbcdde666c160e84b0 + event_end_time_info: dff59c43944ee9ec4f0b14788f916ead + cancel_url_variable: 07203aef11c344e47a12a8dc3434a914 + cancel_url_info: 3e8674a30d8f4f5d59cb0023a1af3c56 + reschedule_url_variable: 07bbd334e84c8b81712a1fddceef7349 + reschedule_url_info: 1f9481606ab3e2a958add0a670ccd43e + invalid_event_name_variables: 04afea2e1a0eb553e9debf310ed0aa13 + select_all: ef9e1f8aaf1fbbdf868934209c85aea2 + default_conferencing_bulk_title: c5df8bbc4168913fc4772a695933c226 + members_default_schedule: cf79907b1abd9c78af75105eb9f7eb4c + set_by_admin: 74830399a6611a688f7f7649df169a33 + members_default_location: a277bd3d5efb38de6ae61080adb82fd6 + members_default_schedule_description: 2ff0f5923e26cc4ef9c341c76ea0417d + requires_at_least_one_schedule: ab0e8e70b8d0d05928dad8afff053072 + default_conferencing_bulk_description: a1d730bdcd6d8cb7f6b3a0fd215292c2 + locked_for_members: 1229138bdb1667cd909f7a8bc5a428f8 + unlocked_for_members: 0aba99def77ceebd74b0238b872a1d16 + apps_locked_for_members_description: 16448dfa18f8067211889352e8d51f52 + apps_unlocked_for_members_description: 77815313daff897bb5b1fe2fe1afb8cf + apps_locked_by_team_admins_description: 5b5390990836bec8a6c9934bd561560f + apps_unlocked_by_team_admins_description: 0670587fdf2810e55f9ef2efa990a3ce + workflows_locked_for_members_description: 27f16d65333da4e1ac3dd801d7f2f93c + workflows_unlocked_for_members_description: edb59754bf0d771666984d01fcffbaa7 + workflows_locked_by_team_admins_description: 8bfac6f17bbd494bb130c00ae5fcd4de + workflows_unlocked_by_team_admins_description: 457e6dd5da3072aa2fb1f84232bd2dbf + locked_by_team_admin: 539128c9579f340b95d58abbfa0880ef + app_not_connected: 25c979da79e9f983e6f5e62dcd1c47bb + connect_now: ca98ba0375aad91861c150bbc0fff9ec + managed_event_dialog_confirm_button_one: 57569c5943d7cf44f3373f763559a0d8 + managed_event_dialog_confirm_button_other: d665ecde0909425ff7433b417c45ada3 + managed_event_dialog_title_one: 11c192644024dffc351d11d9681a81f9 + managed_event_dialog_title_other: 39d57e0953fe0ddc077690c06df42bc0 + managed_event_dialog_information_one: a2d299c0ff087fe6e6b5330e73192a1b + managed_event_dialog_information_other: e26300355b2f070362bc94ac531d8431 + managed_event_dialog_clarification: 159f1bd7eec7654d03359be54a1399a1 + review_event_type: 34f2af12692f5df8a36af9bb6309e0f0 + looking_for_more_analytics: c64d3c279c351c0dd9b48028e3f2bdd7 + looking_for_more_insights: f245400c6511b85e78c316bacefe8a47 + filters: acf5accc113ff3c1992688058576732c + add_filter: ed5d8e9bfcb05cd1e10e4c403befbae6 + remove_filters: 0bc64da95ec15d9bc7fb12cb77f2838a + email_verified: 1198a84576c526d433d566f764117f2e + select_user: 44e74722fc9863dfeba9343661262440 + select_event_type: 780554d3ff06abb3254cca0ea80b7d1f + select_date_range: 11cb1a7083ead750d1deb07be4a985a6 + popular_events: 59fec7400d1f62f4d410105e8f7f4eb9 + no_event_types_found: 6803b59b46c3c5965244434e40da7059 + average_event_duration: 33fca66f62085a8e6d2250d80a2fb9ff + most_booked_members: d6d2af25595ee24c3589d0d46d2571a8 + least_booked_members: 80a8c65e9c5496978c050216aa982d87 + events_created: ca9ae014a15ab692f4b866db526068f6 + events_completed: ebda016459b52c4376f2a33427c95ed5 + events_cancelled: 347a398edad4b2094844d85134577a7a + events_rescheduled: 2c066379a8a9baec1a78b7f1a7a2d4ab + from_last_period: 433c60471d8372a6037c62f0b7d521b1 + from_to_date_period: 1c48446444714bec0958ae58a94b1779 + redirect_url_warning: 658b68e9f20fbebcf9b6b318d2bdc5c3 + event_trends: bf8dcdbcad2dfec560e7ed435ffc75c8 + clear_filters: 910145009088791bcdf30969880b0d30 + clear: d4c069de3111b7a5df96f3703f199f2f + hold: 13b950ffa499b52641d26fe0ec45e89b + on_booking_option: 4bef6b38688bfdbc37f784f64d2c6104 + hold_option: 6fc2b5c9350699c4f1ef8441b77dcec6 + card_held: 4416a9ac74f98a486116c2dc36b309be + charge_card: 0c12a3c055ff74a85b178499e31d51da + card_charged: 0d06e46a4e8496c1b8f59266a6e646e4 + no_show_fee_amount: f0f432f28ad1f2d3ad29373e54a3da92 + no_show_fee: 252dea7c59efe11486ce1ae44f4d3d3d + submit_card: 80deeed6e6bf10e28f49975e7f1e6b33 + submit_payment_information: 37d5a2ba13ac3dad305e5bd96fee938a + meeting_awaiting_payment_method: bdd959de93cb65861874c663318667f8 + no_show_fee_charged_email_subject: 88701646b17e06b06dd830b0a7ffb4d5 + no_show_fee_charged_text_body: 7a51201f87a9d6ba9d872e40e568c4ba + no_show_fee_charged_subtitle: cf14f5ea9c6c0016624ea30074e83beb + error_charging_card: c140bca6c3e238a99f0e5bdd988be505 + collect_no_show_fee: 25014619ab47fd885d14fae0b6e915a8 + no_show_fee_charged: eec2c8c1d29560837514491fa12eb0b8 + insights: 1e88b2537ba6966f2a90b0def1ce1ddc + testing_workflow_info_message: 63eb6b5f857e4fab7eae515a85e6bed5 + insights_no_data_found_for_filter: af12cfd502181543842597325894bb30 + acknowledge_booking_no_show_fee: 392224bac006a342a7fb63dad685689f + card_details: 12bfee4d5e5b0e0f1c52b0cc40427ad0 + something_went_wrong_on_our_end: e097e387d4b9987df0c3ce399799c1a1 + please_provide_following_text_to_suppport: 12912573e35d64fe41da3c33b5c8d4eb + seats_and_no_show_fee_error: 3f7e30e0cc1098fbe2518dad4a45bd01 + complete_your_booking: 2c6aefc870569474f33379e5f8a80f01 + complete_your_booking_subject: c3ca858e23ef5dd5333e1023a8eed867 + confirm_your_details: 1f89401de0cfc92f0f75c9f0f5d18ad5 + copy_invite_link: 181840a28f41caec62936fe6f8c4a80d + edit_invite_link: 77781b6137ece5d6d83ff456c8d57b36 + invite_link_copied: 4046f23a78e1cd5166671c3fb8a7ea6e + invite_link_deleted: cbad4a7a211c04c6c860402068e89ede + api_key_deleted: 6b63d1a15bea4b41acdd8432e680751a + invite_link_updated: d1834e3d59a0a4ef7b1a008772e244e5 + link_expires_after: 398b822c0aca1c04947095bd9dbc47f6 + one_day: ef1826660893c89de442e0d0c4c327d7 + seven_days: dd1d6ba705adea0c5804178661decf80 + thirty_days: 090dd31e080832d796142ab67744f04f + three_months: 5f9bd0849f0498bce7dce331b7d64dc9 + one_year: b4abff31e9b57b8c0558930a60836129 + team_invite_received: 8b67856be6aacf49a135440629a85dce + currency_string: 978f6ef7f5d13b52f8f6d3f6743ad864 + charge_card_dialog_body: 0b625c48810bf8f0b5e5bc1499a36f92 + charge_attendee: ad645fa3a6eff0c52346506f28cf37ec + payment_app_commission: 1fbcd7dd1ad287891777dfb0770bd350 + email_invite_team: 34d8eaf115741f00922ca0532a408052 + email_invite_team_bulk: badda2994be989859da93ab0ba24304c + error_collecting_card: 3c142382aeb2f2fc29e3f3b744e4a1fc + image_size_limit_exceed: ee124c3a2e8b574881c9d90867055204 + unauthorized_workflow_error_message: f11d80a4b28918a080bcbeaed0a2b7cd + inline_embed: 4e5e85f6a8feb730017569a1d7dc62b9 + load_inline_content: e2f39e035c7626c97b5e25913d137745 + floating_pop_up_button: 093dad0e22aab070e3992e76ad7e8266 + floating_button_trigger_modal: e9e5f0fbc5896de26ca983a55944de14 + pop_up_element_click: d91c699d48af89894ab53caaacf93ec0 + open_dialog_with_element_click: fa71b924f11690204e65301eadb2dc7c + need_help_embedding: ffcbb2c760751a559459730fe54f90b5 + book_my_cal: 001dc49a4f30635ba28ed75c25b48f2e + first_name: 9a22c348ecef9bbdb8934eb2e6fb873c + last_name: b6485b5d256edb09ef2a8cade41120d2 + first_last_name: 8d8bff27f28cfe83f56ee19705407645 + invite_as: 19ad0295dc3c2ee3a2c39fe17b1f4afd + form_updated_successfully: c8f8edc04769e741105b70db713242c7 + disable_attendees_confirmation_emails: da4f54fc83f204c9c64dd9b404ac10c8 + disable_attendees_confirmation_emails_description: 899b107433adb1292419d98fd13fc90c + disable_host_confirmation_emails: 91eaf59b8d2c356ae32f13df6293bb82 + disable_host_confirmation_emails_description: 2a89e42ebc778bd68cccc28971c1f13e + add_an_override: 65fefd77b8b019614f8bbe8d7b3e23d4 + import_from_google_workspace: d29987af7d5edd052f82e87b1dfb09c1 + connect_google_workspace: b0b8b8fbf937ffbdd4a2e1abb2052da8 + google_workspace_admin_tooltip: 65d8f872b89c934a52050256abdc259a + first_event_type_webhook_description: 0db7d427159c02266ea7d44000471376 + create_instant_meeting_webhook_description: f8254f9e34917af921a390cc2591c59f + install_app_on: a8f54dd6436ac94469258612b692c98e + create_for: b72f4f0864d6a7f07bc534e66a62c3fa + currency: d2ba9a9cea418ea653e3ca6785617a3f + organization_banner_description: 1e6c4d06a81130594054eb1c3c15bf28 + organization_banner_title: a06388a550f2027c46f4c424a5e33473 + set_up_your_organization: b021d3fcb90cccd0c516ed144fb16d58 + set_up_your_platform_organization: 639cfd98ed2cd3ee2f6a4e0fd5a2d8a4 + organizations_description: e77f86264212f368e855f99a06f27345 + platform_organization_description: 40524306837ee9de59f20fdbc00d268f + must_enter_organization_name: 8ace27e0ce3572194f4f2575b9f97d56 + must_enter_organization_admin_email: 2586d774473a2494b675858a9cc40600 + admin_email: ad95264ded24b885b101555d72a491bf + platform_admin_email: c2b96532d5bd4d48505129a9d91628fa + admin_username: 6df87aea05b9f77aef145bde5fb1a385 + organization_name: e69fb0acbe75358352890a6f04e4b9c0 + platform_name: aee444920c0e76d56c3da6f86d5d1357 + organization_url: 5cd044304d6897e9172c08a0e1718393 + organization_verify_header: 7b9ad675ca16779322e7534e21e38ad3 + organization_verify_email_body: a3738d5227ec746be8386e34b7c7fa8f + additional_url_parameters: 11ee8117618310a94f0cc0c8c0891792 + about_your_organization: ed902d519edf1867123698b78536d2e3 + about_your_organization_description: 59ccfd6cfa0c59b6b49b36e7d9e78a79 + create_your_teams: 62698a04b76aba6ea1b43c1026d182de + create_your_teams_description: e2c23300aef633bf3724392e2a89c67d + invite_organization_admins: c787c68ea9c1ba60be2cfab2ffba6196 + invite_organization_admins_description: e5475a0386df775fe285d7adac1e5691 + set_a_password: 1f4d40e575d4e43d65053adb5c0c9a7b + set_a_password_description: 026c7c8dc679f6c0d6e692acc4184b85 + organization_logo: 369a0a7a31ba9ad93726f8ee3d05499b + organization_about_description: 430c6584b7647d985e9b0c8c718a9fd3 + ill_do_this_later: bc7a10129e7b3449f9fe630bb6fc2bd5 + verify_your_email: b3a843c0adf26fe9db8c51841fa6e2b8 + enter_digit_code: baad33a987154de95cbd36bf9b4c7f6f + verify_email_organization: b6a4ac7ce00071cfd66b1d30d5daa71f + code_provided_invalid: f232671129b9fd56968552a78f46de6a + email_already_used: b9397536503ba3c67828282ac4a1be05 + organization_admin_invited_heading: 2fb651f9d04e1cf3c461481d76dd9b5c + organization_admin_invited_body: 347e7c67bef9ea700cc362e112358c33 + duplicated_slugs_warning: e55f4457a1d396f2696d1fbe8817b5a2 + team_names_empty: 9e25c1b951b97a2c3ab30350686b3b65 + team_names_repeated: f24b8d7215977b918d25e4b3d9c81436 + user_belongs_organization: f4930549bb93ee1f3c65f4af2c780528 + org_no_teams_yet: 12e194480db8d89f2d1d49849e006d0f + org_no_teams_yet_description: a33626f45a1e7a480855e2d58557899b + set_up: b9fd81483112f7f0f8ca6c8193560618 + my_profile: 0b50373a58d99e69ccabd0a73872bbb7 + my_settings: 4ddfdf2f93534c797b7671e2f2f7ea10 + crm: 441decfd55814370f4ef962cb9faaf4b + messaging: 84ef090280dd156c702e414598704083 + sender_id_info: a9932f818e07563027b457f42746f6b0 + org_admins_can_create_new_teams: 3d9a5f080809bffb33579a23eab6a4c1 + google_new_spam_policy: 6ff2ce7e3e134ae76ca72b1f616bf3c2 + resolve: 47362c1e812b301e132d9c4be5f0329e + no_organization_slug: be35bd3eb7d8bf2ff0ad206514d0c39f + copy_link_org: ecc1f4f62bc66bbf9f03bd8f47ff40c6 + 404_the_org: 7b9dd8a90a7e0af9a2f731097a8a4805 + 404_the_team: e4e4d1da28b2e92a9931c189b403d867 + 404_claim_entity_org: 4b1f782e6e3f794f5b48faeb2060faf4 + 404_claim_entity_team: 5cca8a2ca9f0c68a2c04b95fd6b006bf + insights_team_filter: 15f4ac2dce74a6a237c563dd623cbc31 + insights_user_filter: 36bccd6efac875b31245326c012987c1 + insights_subtitle: 38559f7536fd820961908b14efe9c6f9 + location_options: 5b0a1f717ef185b10b44002569a1aba0 + custom_plan: 4d406f4ff899f0da4e3711763599a9aa + email_embed: 01145dc429b3f8050733f1d4b6d71d9d + add_times_to_your_email: 572a04f56df1ec2623ea7ee8c9c9c5bb + select_time: cb9cc2393ca45c6faea13fe4c9d4d6a5 + select_date: 1e6063bfd25d982048726ff586df55dc + connecting_you_to_someone: 4fb9cd52b2caacf09de19b843407d1a9 + please_do_not_close_this_tab: b422b9c8c835fc89154e50bc785ad1b0 + see_all_available_times: 4213ac0595fa798d9c140e13ec5b1133 + org_team_names_example_1: 6dcddcb08fbac91d1eee90340088b33c + org_team_names_example_2: 9d2d66769cc5c05860b20d5ff529e2e0 + org_team_names_example_3: 9619d8e5897582dc7314374076680f41 + org_team_names_example_4: 5eefc03319cb13f1e53e7faaa271e38e + org_team_names_example_5: 1d9f7e3748ef3982dc19f2d1ab75336f + org_max_team_warnings: d9531388cb0e9541ad8f8a2bbe69ce85 + what_is_this_meeting_about: 7fac76d8f69ca161feceaa9a422e9a24 + add_to_team: 81ea05d21e72679f58a5bc77f6077ba1 + remove_users_from_org: 5b8a337674562e28e6edc4b85567b677 + remove_users_from_org_confirm: 0eaa017c65c82f4bebdd5bb3e130ed08 + user_has_no_schedules: e5d0b6aa04e67c8acf48ff92602a6da4 + user_isnt_in_any_teams: 937aeb3d084201cd70fb205c062d4eee + requires_booker_email_verification: aca667f422e911b6f3851dcf60d64500 + description_requires_booker_email_verification: 82ccb213337629af22e379f7b5a7eaac + requires_confirmation_mandatory: ff747a41552070f0291edbaa710d0946 + organizations: bd50dd0b17bd74a72b728a8385b5ee28 + upload_cal_video_logo: f9862229c89d41fe0e003bbde2243e6a + update_cal_video_logo: 071f8e4105226abd7670670cb131aebf + upload_banner: 5f3aa807f1d6380f64938a90f7cf253f + cal_video_logo_upload_instruction: 71968125a749d9335571e4be3af3d51b + org_admin_other_teams: f7353a811f3766d48b1d820c797a49cc + org_admin_other_teams_description: d00a00abea149cc7cb696fd379d7814e + not_part_of_org: 1ef3600750b37a8de66f6c1613f6bda0 + no_other_teams_found: 371d9fc11469936f3587c2110d8add5e + no_other_teams_found_description: c000b1a17b9c03bbe5eae07ef66b67d1 + attendee_first_name_variable: 43635ccc36e36cb848fb786587f6899d + attendee_last_name_variable: 4e90fde6a80c6af68ca8214761030ca7 + attendee_first_name_info: b4159787b05c02293cf0b6c721fef4d1 + attendee_last_name_info: dbcd4ad8e3de65df686114059e86bb1f + your_monthly_digest: e64898778719bd31139fc8d08e7826c6 + member_name: 35808e6e6218c0d849e169df38596d96 + most_popular_events: 3e39e95bebef3ca0fdff17e2db89a2a5 + summary_of_events_for_your_team_for_the_last_30_days: 461d07ec64a94861f5755424a0e510c7 + me: e0cdc99c6c88fe486dbd78d9d366b788 + monthly_digest_email: 07ffa7bd5300db6f7de3acf3dd0dbafe + monthly_digest_email_for_teams: 6bfade28f5788ca4f5dceb22b58ffd57 + verify_team_tooltip: 1e2dd94b5f862165e92a43338caecc5c + member_removed: c0f44b0f3e20c1bda1bc152a9cc4da84 + my_availability: 66d2346a7c062fed7f2158fe7f553a05 + team_availability: 2b296f5c5e3ea333646f3ef46e891c1b + backup_code: 41b15061acd32f7f3512d5a27dcc34b9 + backup_codes: 5449c9decb63f6b7ca68f124958a512f + backup_code_instructions: ecf77d8d17ccf64e1effc6ab131fea56 + backup_codes_copied: ad1831482cb16b57182220628af3d7d2 + incorrect_backup_code: a1b2cf5614913c5d5ce847ddce0f06b1 + lost_access: 70292321ff8232218d2261b11c40bc0a + missing_backup_codes: 4ee5ab918b8903e6506dc1b2808d1b7d + admin_org_notification_email_subject: 1707518099aca33658f30613f41ba89e + hi_admin: f1a32f3c8ff9ed4205a5ceba7e9e745b + admin_org_notification_email_title: 73f1209c633d31a82a736379fc9a2dd6 + admin_org_notification_email_body_part1: 786af066f00a1709576504e09d58b58b + admin_org_notification_email_body_part2: 88bf7405432860d9c22dbea42d5ed310 + admin_org_notification_email_body_part3: 6c2dcc777d87a638dca04aa876305c51 + admin_org_notification_email_cta: 33e5ad871457999a95825051578d4c92 + org_has_been_processed: 0801278eb202092ed1635e37946acaf3 + org_error_processing: 693ed6e09c7f0d3c5061573c0f89ee75 + orgs_page_description: 07779d1094a1d4222110005f6fbbc0fa + unverified: ca242b6ba48f73cfed7babd2a9f35895 + verified: 9566bd61c1f754dd5082eea5101f15a8 + dns_missing: 93137bce38d4511f9ee3c7a36129f1ee + dns_configured: ab617e5d56d35366023d50f002a64318 + mark_dns_configured: cd2fe2718d2e17c9e7151ede36d614fc + value: 34b0eaa85808b15cbc4be94c64d0146b + your_organization_updated_sucessfully: 6719f976c7d4a184f08f9556afe0e1ab + team_no_event_types: 90e8c8a4f0a23955537eec3406336d42 + seat_options_doesnt_multiple_durations: 0579c3f5e11a96659184889db97edfd3 + include_calendar_event: 9c1a7461cfb789aec6bd505d7c028afc + oAuth: 834fae0a02e83662b1367c68788ba247 + recently_added: fdc3bfbacff759fd61eaf619b4ab3920 + connect_all_calendars: 4cc7b86ae4a708e6a144ad5fc18061b0 + connect_all_calendars_description: 4f8d4df299b38226c6e4a9d213d86af7 + workflow_automation: eefe0e7e3fbbef2837b8a4d50420bd84 + workflow_automation_description: 989803912fbbf206c8576c203fdc2dc5 + scheduling_for_your_team: eefe0e7e3fbbef2837b8a4d50420bd84 + scheduling_for_your_team_description: c369c4fb6bbe0c80723a0a1b3fdc130b + no_members_found: fbab5ad192434e49b9208870aab07fd6 + directory_sync: 278b0e126cd6208f9089998da1e569c7 + directory_name: 353de006e16451bf64da469a81fbe451 + directory_provider: 84f11fea06f8decccd9b89994aed334f + directory_scim_url: a5c544de9bdf1fb45daaea8922eb2a96 + directory_scim_token: c644dac4842e610b42bf56fcd4bb9aad + directory_scim_url_copied: cd7494c3e8d0962c3254029220751153 + directory_scim_token_copied: 966b2decc90304e1432f154b4ab9e26f + directory_sync_info_description: 0b3e41a198045a92dbdcb60419daa74a + directory_sync_configure: a28635aa5e1fd8796b3860c6f1ade972 + directory_sync_configure_description: cf92ce00d57e9e7145ce6e099841f2f8 + directory_sync_title: 250446c1188b35c683ce4bba361c2b8f + directory_sync_created: 03c1b912091b71fc58b816bbde13c595 + directory_sync_description: d47e2c704db64bca40573b2f212afb07 + directory_sync_deleted: cd3868eb2d4ebbffe2c9b44e1f5c417c + directory_sync_delete_connection: 4a3678c88b130ac4716503e678ca795d + directory_sync_delete_title: 34887ab5dbbdea57677a5bed93d2f8ee + directory_sync_delete_description: 1d96c4d291322a12546a53ba4c1f5d66 + directory_sync_delete_confirmation: 4818f7b2035d19e7bbeeff4030178e69 + event_setup_length_error: 6c4a92da8a916d6284670f403d6089f5 + availability_schedules: be4baee845a85d07ce019524ae14327e + unauthorized: 556fa31baa40c7b7cd008f594de36a63 + access_cal_account: 06105f867908a47498418c6c329c08f0 + select_account_team: 55aba4b0fc8670f1888bb66c8d5b061c + allow_client_to: 4de357926e845859cfcf5197621c16d6 + associate_with_cal_account: ec10fc1a1273fde46b1c57d72d0a517f + see_personal_info: 54ebff17dcb2eec5c1e657262985982e + see_primary_email_address: 3db5897316700336268cec260dcbd72e + connect_installed_apps: 826f0d32cee995bc843f908dc775b2d0 + access_event_type: 3429534c40cd20078cdae1ee13f22e71 + access_availability: 938c941ca8186572262d7bdcaab42129 + access_bookings: 4721c2e387e1fed92102c0376254e37c + allow_client_to_do: 91f2330b79e7335120cf44fe1433895d + oauth_access_information: b7791ae66b7b2dd35a47597ff8767a95 + oauth_form_title: 5d2c439491c05b16bafe2e4fe20dac25 + oauth_form_description: f89809267353e7168d4df862f27e1160 + allow: 3e39cc5940255e6bff0fea95c817dd43 + view_only_edit_availability_not_onboarded: 0235351845cc8f287dac038b57de442e + view_only_edit_availability: 6f707624fbcc76e09ca57ef4b6ad478a + you_can_override_calendar_in_advanced_tab: d4946ecd9c86e7998df39f029d720d07 + edit_users_availability: 2c5c5762a144cf1f91ddb20d5f55ba87 + resend_invitation: e156bf18831bce104ad2c28f691c5635 + invitation_resent: 82006a33705050bbac2bfdab77ec872b + saml_sso: ebe88ea2802ec41f4cbbd14f17017bda + add_client: 4350a77597fdbb929d6581835a413d58 + copy_client_secret_info: f409a20284bf3b8cf34bfe93ac76e4d1 + add_new_client: 9c491d558b889c96a98ac07c1f978f3b + this_app_is_not_setup_already: d5b6d02fbc890d63b4d06d64c4a68f1f + as_csv: f1edbee3721e3c5eb8f8544d0dc2493f + overlay_my_calendar: 5afc9c3f5b6522832c2174b83bdb934f + overlay_my_calendar_toc: 54667dca6b2ebb973bd88754735e1cad + view_overlay_calendar_events: f8dc5ccf277c9949205f99bb51ae4073 + join_event_location: 193b4070a9cab8df8f7fc79c8bd726cd + troubleshooting: 6ac3805eb202cc0ba10ad61dc1ada045 + calendars_were_checking_for_conflicts: a58a3b36ecbc30d81d602be3560b11cd + availabilty_schedules: 38b68fcb7c53e16e9ba10609b8c337e8 + manage_calendars: 51c4d49ec5498cdc10d169c4225d3f89 + manage_availability_schedules: e8d2c17a13af0939f9f24a249dc041b5 + locked: 30950d887a19841aa481091affd091e6 + unlocked: 7bedb42ceeb989efa04e501555caadb3 + lock_timezone_toggle_on_booking_page: 01d8e8f2ccaf357cd0b7af8042d411cb + description_lock_timezone_toggle_on_booking_page: 50e604046b1706cd1e00748e14dd2cb1 + event_setup_multiple_payment_apps_error: 8fbf9e798ac9946f4a2453378e4d9a1b + number_in_international_format: 618fe1ebc542284e2e6f06a38247591d + install_calendar: 7002c52d807582a5514020389bb27b9b + branded_subdomain: 831f95c09f14b4bf2446d73ae9896e12 + branded_subdomain_description: d901380c6c62a33bfd22d15ecb38971c + org_insights: 3cf5a1c8ac721d5c0a528a44c5e7869c + org_insights_description: a7b52868494a0f53592798aac0d2fc1c + extensive_whitelabeling: 7dc952ad376a9e64667af3d9cc6b42b3 + extensive_whitelabeling_description: c72aefdf958f3701b07b79679922dfd9 + unlimited_teams: e6559390ae4f87837f8ccf12578a0315 + unlimited_teams_description: 59136fef836f13e0d734cf301c1d707d + unified_billing: 51f5adac94220d0eb69ab9e55d220823 + unified_billing_description: 4dfd8ad576f81e2e6b0b234c62d84ae7 + advanced_managed_events: 9fa74fcb5a63a4452599bd008ca63a05 + advanced_managed_events_description: 4dfd8ad576f81e2e6b0b234c62d84ae7 + enterprise_description: cd3740d29ced9d8f2cd985ffa9677072 + create_your_org: 0ac13e92f5227b4f08522707f911fd61 + create_your_org_description: d3c2a2cba0ce932123704baca89bb7d4 + create_your_enterprise_description: 42426099bf97d49dea548ab03f22e7b9 + other_payment_app_enabled: 2630450e1fbac6809df1cda21434ef5c + admin_delete_organization_description: 0938b21fe7ca90411a800a6baead6753 + admin_delete_organization_title: 220d9e44978007d35cade362cab3168c + published: ad5e035c44f71ed32d41e47c7643f32f + unpublished: 7239558b647feca27aac552977234c50 + publish: 4aa95ba4793bb293e771bd73b4f87c0f + org_publish_error: d41336ed09d192987160a1f5f0440773 + troubleshooter_tooltip: 09454c97ca0c80bd8d0485dd79ba0c86 + need_help: 04e7322f2d3ffb2d73ff2f64b71637c8 + troubleshooter: ac4a51cd3ebfacdd646583bf158235f5 + number_to_call: 49451e4a1f4bb0755d4a290402a2fce0 + guest_name: 7dc597e0c7e8b965e5a562410c3b6eda + guest_email: aa3370ca87a2d388bfcb87b083b2ebfc + guest_company: 4e97c9652dc844e63df735bf69d09b6b + please_install_a_calendar: 631309fbadbe5d07b89084636e01d4bb + instant_tab_title: e5c08febedd195515ff4944cc0c7e808 + instant_event_tab_description: aaaa74f05defa6ff317b1c474b556581 + uprade_to_create_instant_bookings: de2a9f2f62d21b5385760e0aaff5160f + dont_want_to_wait: c2a304b251c7fee8d8ea600de39737ae + meeting_started: 78608acb088dfe907d5bf7b8e5bf963f + pay_and_book: bc571cedcb2c822ccadb6cdeebc84595 + cal_ai_event_tab_description: 477a58fe16b63641665a86815fe7eabc + booking_not_found_error: e31d378528e85697dd393b2435adbfc9 + booking_seats_full_error: 8c9f7a1e8f253fe97e96c035ccf80379 + missing_payment_credential_error: 59b447c0fa6efdee42f50a6647b6797f + missing_payment_app_id_error: 1aff2f34584d95f30f562522fabf5524 + not_enough_available_seats_error: 7f0d2bf0bb998b336799cf8c89020a0a + user_redirect_title: c27191c139b63635b075d60a633c7882 + user_redirect_description: 2ee320eb71d882d85b9fa0237c48ec99 + out_of_office: 45d3cabaf72539864d1ec294b8ec1c8f + out_of_office_description: 766e9fa0b184e6781d10f3f967046f3f + send_request: 43a600ea8960441ced768689d604a2c7 + start_date_and_end_date_required: e8fc5e8ba8b93f6b2bd20bcf002a21af + start_date_must_be_before_end_date: a0843f6fe3115fa3210f92a9bef85f2c + start_date_must_be_in_the_future: a4c7ddb590a2559fe4098fab41564039 + user_not_found: 5903581136ac6c1c1351a482a6d8fdf7 + out_of_office_entry_already_exists: 549625f9f5ea3a18cc9c5208df992381 + out_of_office_id_required: ba936443299f151e2269f312a8de4216 + booking_redirect_infinite_not_allowed: 911c878147e9ad1f5a072e5ee4797c68 + success_entry_created: 7371d1da61d3b78c6859963bfc8df80d + booking_redirect_email_subject: 59a74aa72e693a193f0bdb513794d808 + booking_redirect_email_title: 7c0ba7628b1a872d7abf0b4ee50be4df + booking_redirect_email_description: 25a33f4d57c0d1e249f87b788c765a81 + success_accept_booking_redirect: f14fd998841a38aa2c23aeff4ce61605 + success_reject_booking_redirect: c9fb9a88a657c28b7f99839281961e47 + copy_link_booking_redirect_request: 086c87c753f24ffc12c0d68c6b2f8b0b + booking_redirect_request_title: 8b67995847947e764b759ce028240873 + select_team_member: 4531b2045d60fcd75e3952ad1476d64f + going_away_title: 9095f85f6823e7b68c666b20bcc50875 + redirect_team_enabled: cc1dc688e299889f8032b0074ed344d5 + redirect_team_disabled: b9fd7df03323ee79d11ce17f0466e6b1 + out_of_office_unavailable_list: 520c67a2c96bb755ace26f5e408ca4b2 + success_deleted_entry_out_of_office: fdd769cc635cbbf57efcedcfa869d900 + temporarily_out_of_office: 4db0581e873e13161cce7d49aab9ca14 + add_a_redirect: dc4b4a5d76c88e739fad799882bc043d + create_entry: be25d2f32deee78efc90009cb85f0e18 + time_range: 3da0b6965eab116cb1f42839ef7c9195 + automatically_add_all_team_members: 44cb8d897181d43cd5da998bb730382d + redirect_to: fc75633165a178c6fa57a7194d35af95 + having_trouble_finding_time: 577a1fe94e8358a34e5b247786f86b8d + show_more: 36b0433c56ba1e0f2deae76b8e04a557 + forward_params_redirect: 103430b06d8949ac7200d56ce6d46ac5 + assignment_description: dee88c1aa793ade57d2b5b6d21603161 + lowest: 89973cfb12b8260803d389d0f6c88388 + low: 7a4b6b827bd08422bdf42198feb338c8 + medium: e05c1a6b31c615503f19189ab18b456b + high: 45d5a4f2ac5805f935055d91289c60d6 + Highest: 7d50bbb35fbf4c09be8fb8257e84215a + send_booker_to: 0481d16aa79a6fafdb37f83c3b3e8492 + set_priority: c19fa5d86a0cdd2ad12a5ee46f972486 + set_weight: ff4c0e6969dbfa62a780037e6cbb6993 + enable_weights: a063bc4bfb9287937427fc87e16e5790 + priority_for_user: a51a38aff896a809944d82e5e659fff9 + weights_description: f6bb919ae4bf33597d6142fe4566fdc8 + weight_for_user: b3fe8dd7bb9852937809b1c347e0112b + change_priority: f6b12407b72c90a89ca259dfdcaeb7ab + field_identifiers_as_variables: 9f6c1036e8141f7395b20f605c1250b6 + field_identifiers_as_variables_with_example: 87ae50996eaecebd0f20caf83f1625a8 + account_already_linked: 26bea87b637a83247e0975aefc091bda + send_email: 0ef83c0bb40de25921a9ee7fa05babec + mark_as_no_show: c9b37eb27f7fb452f7e11c23bc496ac6 + unmark_as_no_show: cb8c1838e867ccdc9b5ffe65986ed92b + account_unlinked_success: a430407e61c9851877b727f2d4543355 + account_unlinked_error: b5a420fa16b5de0e6bd00d6c691e200c + travel_schedule: 045779318b2e533f7b0ffd4b75796df1 + travel_schedule_description: 08b9ea68635ad8f401637677554df459 + schedule_timezone_change: dab97ed5d76fab16c7465024f2f99e9d + date: 56f41c5d30a76295bb087b20b7bee4c3 + overlaps_with_existing_schedule: a1a0daa53997ed747b747dea990890bb + org_admin_no_slots%7Csubject: 81d04ef60e037a175504eef5d02c0f24 + org_admin_no_slots%7Cheading: 81d04ef60e037a175504eef5d02c0f24 + org_admin_no_slots%7Ccontent: 8c78dd3ba5aa7bc9c7bdf58e36b90285 + org_admin_no_slots%7Ccta: 5ba661090be09ce20c3de4065e9e6432 + organization_no_slots_notification_switch_title: 1cc2a64f54fd84bd5811feca5fc87ddd + organization_no_slots_notification_switch_description: 26328eb7a51cf76b0784548082304a9d + email_team_invite%7Csubject%7Cadded_to_org: 93e640f58f1b85bd28a57d701be296d8 + email_team_invite%7Csubject%7Cinvited_to_org: 24c4b84dc386b76c36ad163049627488 + email_team_invite%7Csubject%7Cadded_to_subteam: fd1877260436f261dccd59f7425f0f7f + email_team_invite%7Csubject%7Cinvited_to_subteam: 4e092a42d411379917be7aa44daca876 + email_team_invite%7Csubject%7Cinvited_to_regular_team: 3fd72aa454e50de6a0d261c37123172b + email_team_invite%7Cheading%7Cadded_to_org: 25490ae26fdf667ea1ed9d90e6e15c75 + email_team_invite%7Cheading%7Cinvited_to_org: 17d57fc9181805c77c016d4fee6e40fb + email_team_invite%7Cheading%7Cadded_to_subteam: 2d8030498d9a355611ae0208060e491a + email_team_invite%7Cheading%7Cinvited_to_subteam: a45c0664b50435ee4b6178356a784876 + email_team_invite%7Cheading%7Cinvited_to_regular_team: ba81c2f7a11c4c3b3fcd3687094c96bf + email_team_invite%7Ccontent%7Cadded_to_org: 228ab50000cb09c1b0eea3426b82ea27 + email_team_invite%7Ccontent%7Cinvited_to_org: 7a26da45524c1567c94f11e557299f6c + email_team_invite%7Ccontent%7Cadded_to_subteam: e5e8a2c26ed5c031b1404397fe9ea2ef + email_team_invite%7Ccontent%7Cinvited_to_subteam: 310dcf6609e353605c952a16c9c10ac9 + email_team_invite%7Ccontent%7Cinvited_to_regular_team: b86fac86959e8df3f89de9657f47e93b + email%7Cexisting_user_added_link_will_change: 48d14431790cad513404dbdaa89a9db2 + email%7Cexisting_user_added_link_changed: 460cedabb777955ccc566cfabd78317f + email_organization_created%7Csubject: a6823ec7bddbc991e23f952fa3082a18 + your_current_plan: c121f1735f41d10370d72529aff5664e + organization_price_per_user_month: 4b68ba434aaf1f4bf41b6bf115f95929 + privacy_organization_description: d6eee822af837061540b68f5445c8525 + privacy: 6007d5d5f6591c027b15bd49ab7a8c47 + team_will_be_under_org: 498295aff722e78e419e616170c3b737 + add_group_name: a0d81177b112464cabbe57f753040d8f + group_name: 76797f0870c6436b91ebf3675a3970b8 + routers: 2bdfc4d0be7d4d5a40d7170131fef3ea + primary: f5fb269c8406736788b7785a0c68e500 + make_primary: bdbffdaa687a9d80b87e5dc99bc419f1 + add_email: d599e4bb22d51ddcf7f631ddd9ff07df + add_emails: da0df34b3a50ebabcb79e394a13cd221 + add_email_description: 86620e8688fe3212c3d0341867f329ac + confirm_email: b3a52c3b2ac05c7db469c519736560ca + scheduler_first_name: 07e7edb32b4ca2f49575acf01b72cc84 + scheduler_last_name: 118b5c449032449d395b2d08455ab592 + scheduler_name: dc5b678d5a3ce40b72a8169e033de452 + organizer_first_name: d59d1e2b6fe34a3452dd84c4cf189cc9 + confirm_email_description: e2266ada9928810bb538125259704444 + send_event_details_to: 305c1c393570c2ea7fcb58c1983e615a + schedule_tz_without_end_date: 1802c26db3bcee8ddfa41c8dc5b3bdec + select_members: 2c6b34479a74ef7d7458f52aa02f5173 + lock_event_types_modal_header: cfb94e5815864664fb480b56eb3bee72 + org_delete_event_types_org_admin: d2416597d66816f58053a04798291b0d + org_hide_event_types_org_admin: 3404655e31e36b3e32a7fe09dde64a38 + hide_org_eventtypes: 7d6c39cfa941d37d24423abb2a38d356 + delete_org_eventtypes: 8b945604d095a193869cda164e2b26d5 + lock_org_users_eventtypes: 9b540b66be8c2aada9c3ba7e30597b88 + lock_org_users_eventtypes_description: 03457f2d4e1311209ae417982afeec86 + add_to_event_type: 372ae07e79c77be4504d31245fff222e + create_account_password: f9d4c3b6d3f9b7a218da8abb6a128a2c + error_creating_account_password: 4f8272ccba5d0745c17d76345a1aaff3 + cannot_create_account_password_cal_provider: ef87fdd935251ae04c49cd7b7c8758d3 + cannot_create_account_password_already_existing: ea1efae1f472bb23edd77580dbfdb478 + create_account_password_hint: 19792dcd3a8958a1374a9837f7383b39 + disconnect_account: c2d44bcc79bee8dc002bd937329eb5ac + disconnect_account_hint: edf4b2a1c881878660a7bd814e17c795 + cookie_consent_checkbox: b38fab80d85cbee397b6eeaa328014ff + make_a_call: 809ec7bb27e3b20c082999b9f7ab0c00 + skip_rr_assignment_label: 26980bd2315d3d2cfb7ba6e6364d88dc + skip_rr_description: d402731f4a64fecb15438b2c80cba7b3 + select_account_header: 78fede6efe10ba8e4028a8dc999e3fe3 + select_account_description: 267400e5ec8d243b30e7c15b88aa96c2 + select_event_types_header: c8d21f5fdc5aaa096ae125e903fdaa90 + select_event_types_description: 471a4b21096292f97c9ff2faf290fed1 + configure_app_header: a81389d190865a1788649aba0618955a + configure_app_description: 934dd7f0c8a5a87881216ebd2206defb + already_installed: d37bcaa2275cd6baf331f61bc2eb8b2f + ooo_reasons_unspecified: df3f5c48ec9a7dde2d76fd760d6bed57 + ooo_reasons_vacation: 07f602471ed572fc59c8f17f008c9204 + ooo_reasons_travel: e6cf3bb68973a168e2d27dd27ff5f1fb + ooo_reasons_sick_leave: 46d2355980368c3f0e8d077d8c644e83 + ooo_reasons_public_holiday: b4544944ff0510d57f491e889987ff69 + ooo_forwarding_to: 448eb1b10ccf05cf39bcb4e757c96121 + ooo_not_forwarding: a7ef00a2d055a217f92f51882abe87e5 + ooo_empty_title: 50ad4f343ac45e6dc21e65cf74acfa0d + ooo_empty_description: e9f4134ae0fcc947ce7fbfe30a0e3273 + ooo_user_is_ooo: fb1b2d5dc2f84177e6a13dc64c89af2c + ooo_slots_returning: 31fc344c8c0101e8e0a8708378d75a86 + ooo_slots_book_with: a39ec62497d617897c4c9607ff4bdc04 + ooo_create_entry_modal: a12683240675561fb369b523b3e32108 + ooo_select_reason: 7056206df2c686f8fe1959c4e7d83652 + create_an_out_of_office: a12683240675561fb369b523b3e32108 + submit_feedback: e4cd90d4a9f7f08de8bcfbd73831c39f + host_no_show: b7efc3f809401e4b69628c93e3dba2ac + no_show_description: 149ef7905f5091cd12eb7bdf8e410282 + how_can_we_improve: 08a62f0a92fed8a27c099d0bb556ea3e + most_liked: 2ad6ec52647a0571b5647548aa4ba28c + review: 299f75db25382980b2895622d7712927 + reviewed: 7387d3303c204db754abedb340f3e641 + unreviewed: ef38be566a419c5e25f93e7928998533 + rating_url_info: 81730c6478b71022bf3292e7ee53e298 + no_show_url_info: 3dd3b9a56e73b75e9c6d1d88e5772412 + no_support_needed: f34ec5e086847c4cb921a4a05f8ac5e0 + hide_support: e27577b695e1d51833cb5d16d08e6791 + event_ratings: d5aeb03d73f0f56e860126ab71891147 + event_no_show: d86d834154edfff363d3b6ef08568bb9 + recent_ratings: 15fdb1f17b10fd49fa30b0ef1716dc16 + no_ratings: 88d5a31c7619343c37ce6987277c5ef3 + no_ratings_description: 52eecc24f3f5bc8e26d49a844c568865 + most_no_show_host: f0d16c7c7f0c3a6e718e2c1387820586 + highest_rated_members: d607947496d982f2d08d1412d78f8ff3 + lowest_rated_members: ab7b4f78e153906f694b54f11b6f3373 + csat_score: 89a87f1069641bba10607d5b407cb0aa + lockedSMS: c4383559ce72e3083c2a3a9bc4fbb151 + leave_without_assigning_anyone: c2ac035d8c18446bb6592f05e36a2af2 + leave_without_adding_attendees: b29b87b478a4db4fe22df3337937caab + no_availability_shown_to_bookers: 938cf24a1f4f84e0c5cffd93168055c6 + go_back_and_assign: c1ee741d4d3eee36fb2d7030aa47e0b9 + leave_without_assigning: a4004aeb23a463fa1e457683470661bb + signing_up_terms: 968882850d9c83de77906c78f1e68068 + always_show_x_days: a37d937d9387b7df0a32bcd89b9c346a + unable_to_subscribe_to_the_platform: 13bcc85e03aff904d15b41ee85f0043f + updating_oauth_client_error: c465cc13dac8de9dd2d4ac3f034fcc68 + creating_oauth_client_error: 8835c0bcfcd2bd81bfe821184d9d526c + event_type_color: 77e3a36536e8c0b92958d47d774b3675 + event_type_color_description: 57beeabfcba747a34daa2ced1aa26968 + mark_as_no_show_title: af6696f3a72bcc72830f5ca0a16ae3f7 + x_marked_as_no_show: 572ed988bb428955ea77c0ffe9accb5f + x_unmarked_as_no_show: e4a1e9ecb9da5dc33fbd54c4e8f3d09a + team_select_info: 67576cede7244533acb9c4e3b31a6c52 + no_show_updated: ab2125e3ec6df87572ef5e0b76d26970 + email_copied: f8145a83c29485da2cf7bb36ff920470 + USER_PENDING_MEMBER_OF_THE_ORG: 22c8f28829f0542dc5afb0b47a7d7b98 + USER_ALREADY_INVITED_OR_MEMBER: 2ed415bc3a7bd57f234310680cc2cd6e + USER_MEMBER_OF_OTHER_ORGANIZATION: 1126e7a981f56f7b5fdcae4e8f4399d4 + booking_reassigned: 5f8563a43e4d9710f63cf7951828274f + reassign: 83e0f9829da50642e24120fa57bad543 + reassign_to_another_rr_host: dcf9fe1f34fc63bc6571e62db6546700 + assign_team_member: 3ad4f039b4eab3e6a3c8cc881a136ca5 + override_team_member_to_assign: 1deb8cd272e3ce91ca56e24bd273dc86 + no_available_hosts: 21441b4fefb59cd581c8103dc724e330 + reassign_round_robin_host: 87560e76bd2747cd22c7496fb8b575d4 + skip_writing_to_calendar: dac86d627e05c4b0762354e26bc42c52 + rescheduling_not_possible: 69dff8574ec3c34fb5a5d7732ee832a6 + event_expired: 9c29b7e4bdabcfe06f5dee618c2b7345 + skip_contact_creation: 7d919812b9d8502fe9c28bacaeb8cfef + skip_writing_to_calendar_note: e93ffca10fb6c176c2f435183b314dd0 + attributes: 86d0ae6fea0fbb119722ed3841f8385a + new_attribute: 9829382598c681de74130440a37b560f + add_attributes: 24227fca20240e54dd64fb1a03b6beb2 + add_attributes_description: f85cd2cd1c16a04478909abb1a188b03 + new_option: 53ef69223fa6d5d640121556cebfef27 + update_profile: 4c76016c39de93fbfaa15d71d66055d3 + attribute_updated_successfully: 0e64422156c29940cd4dab2f9d1f40b2 + attributes_edited_successfully: 2f7d5f01066da918c78ce93b8caf046d + attribute_meta_description: 965d429537f63c619fa098838d873d88 + attributes_edit_description: 85ca457819aa45b160cfea08cc446c34 + back_to_attributes: e24d63588f5ca9d67a3ac1257954894b + delete_attribute: e905cccc987b60a53375dbb9c1300403 + delete_attribute_description: 788b30226961c5059a3a3ffd41cf2b55 + disable_all_emails_to_attendees: 24bc6312936873e97d542c8981390564 + disable_all_emails_description: ba759c96b0c7dfd294283b389dbd13de + disable_all_emails_to_hosts: 019284dc00772b33b7100dd460ed37b4 + type_confirm_to_continue: 2bd70c6c45a43fdbf6b407a7bbb34dbb + disable_email: bd2f5d1abe9340d841ad01cf05646679 + grant_admin_api: 57e59ff0e0a24e8134a9447ba75ac199 + revoke_admin_api: 0d910a3c3874b9a199705e1e63281f19 + apple_connect_atom_label: ab6ea61350cc5eb812d450184115311d + apple_connect_atom_already_connected_label: 4ba5d56114cca48a21e2b76adff460ab + apple_connect_atom_loading_label: 50abf79580c18f4886be57161e383137 + google_connect_atom_label: bf562b7658442c0214fa053223ee89b0 + google_connect_atom_already_connected_label: 013620ac4ddbd9d62fa946fd635acdd3 + google_connect_atom_loading_label: c14bacc8d078d0de8f7cd33b13640d77 + outlook_connect_atom_label: 25337852f8c06dc4d93ee1dc01960fd0 + outlook_connect_atom_already_connected_label: 734727a604a5c679372f83233ea8800d + outlook_connect_atom_loading_label: 5e839068f5fb852287d1a3d8a01818e1 + booking_question_response_variables: b6619cf0eac72e4f894fbed23960d599 + managed_by_teamAdmins: b3f977831c90142705c9c979e0c37d2a + number_of_options: 61add413dabcfc36aa759d46ab7c225f + reschedule_with_same_round_robin_host_title: 0b315779fdae608827ceab1b1640423b + reschedule_with_same_round_robin_host_description: d581417695b5275d6706a08b8d7dd39a + disable_input_if_prefilled: 19415e3062d8ef1031beb38ce4a0b3c9 + ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS: 18323f2f3fabb169a7cb50ff62433850 diff --git a/packages/config/next-i18next.config.js b/packages/config/next-i18next.config.js index 381590392c5974..613845b1c7e013 100644 --- a/packages/config/next-i18next.config.js +++ b/packages/config/next-i18next.config.js @@ -10,7 +10,7 @@ const config = { "da", "de", "en", - // "es-419", // Disabled until Crowdin reaches at least 80% completion + "es-419", "es", "et", "fr", diff --git a/packages/emails/src/templates/OrganizerScheduledEmail.tsx b/packages/emails/src/templates/OrganizerScheduledEmail.tsx index 7bbd7a0a26a7a2..50b76125686e75 100644 --- a/packages/emails/src/templates/OrganizerScheduledEmail.tsx +++ b/packages/emails/src/templates/OrganizerScheduledEmail.tsx @@ -1,4 +1,4 @@ -import { SchedulingType } from "@prisma/client"; +import { SchedulingType } from "@calcom/prisma/enums"; import type { CalendarEvent, Person } from "@calcom/types/Calendar"; import { BaseScheduledEmail } from "./BaseScheduledEmail"; @@ -33,7 +33,9 @@ export const OrganizerScheduledEmail = ( const locale = props.teamMember?.language.locale || props.calEvent.organizer.language.locale; const timeFormat = props.teamMember?.timeFormat || props.calEvent.organizer?.timeFormat; - const isTeamEvent = props.calEvent.schedulingType === SchedulingType.ROUND_ROBIN || props.calEvent.schedulingType === SchedulingType.COLLECTIVE; + const isTeamEvent = + props.calEvent.schedulingType === SchedulingType.ROUND_ROBIN || + props.calEvent.schedulingType === SchedulingType.COLLECTIVE; const attendee = isTeamEvent && props.teamMember ? props.teamMember : props.attendee; return ( From bd410cf09fbc88990caed1df8d12c5d13c70c133 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Wed, 28 Aug 2024 19:24:56 +0900 Subject: [PATCH 10/64] chore: Use pull-request feature from Replexica (#16383) --- .github/workflows/pr.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 3ac2732202938d..77d7ceba5b67f6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -115,8 +115,11 @@ jobs: if: ${{ github.event.pull_request.head.sha != '' }} shell: bash - uses: replexica/replexica@main + env: + GH_TOKEN: ${{ github.token }} with: api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} + pull-request: true type-check: name: Type check @@ -152,7 +155,7 @@ jobs: if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/api-v2-production-build.yml secrets: inherit - + build-atoms: name: Production builds needs: [changes, check-label, deps] @@ -238,7 +241,6 @@ jobs: [ changes, lint, - i18n, type-check, unit-test, integration-test, From 356ecfe2fa61dd5dcb44af46aef109812c9fa976 Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:01:06 +0530 Subject: [PATCH 11/64] chore: display first 3 organizers photo in round robin event (#16331) * chore: display random organizer photo in round robin event * fix: avatar on instant booking --------- Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> --- .../features/bookings/Booker/components/InstantBooking.tsx | 4 +++- packages/features/bookings/components/event-meta/Members.tsx | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/features/bookings/Booker/components/InstantBooking.tsx b/packages/features/bookings/Booker/components/InstantBooking.tsx index ef0a9c9162de52..19b3ad9112c907 100644 --- a/packages/features/bookings/Booker/components/InstantBooking.tsx +++ b/packages/features/bookings/Booker/components/InstantBooking.tsx @@ -25,7 +25,9 @@ export const InstantBooking = ({ onConnectNow, event }: IInstantBookingProps) => slug: event.entity.orgSlug, name: event.entity.name || "", }} - users={event.schedulingType !== SchedulingType.ROUND_ROBIN ? event.users : []} + users={ + event.schedulingType !== SchedulingType.ROUND_ROBIN ? event.users : event.users.slice(0, 3) + } />
diff --git a/packages/features/bookings/components/event-meta/Members.tsx b/packages/features/bookings/components/event-meta/Members.tsx index 53117b8e3b5199..b888395ddf5df1 100644 --- a/packages/features/bookings/components/event-meta/Members.tsx +++ b/packages/features/bookings/components/event-meta/Members.tsx @@ -22,6 +22,7 @@ export const EventMembers = ({ schedulingType, users, profile, entity }: EventMe const username = useBookerStore((state) => state.username); const isDynamic = !!(username && username.indexOf("+") > -1); const isEmbed = useIsEmbed(); + const showMembers = schedulingType !== SchedulingType.ROUND_ROBIN; const shownUsers = showMembers ? users : []; // In some cases we don't show the user's names, but only show the profile name. From 6b244fc5b52d10db0c8e7014f8f76647dbadebc6 Mon Sep 17 00:00:00 2001 From: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Date: Wed, 28 Aug 2024 08:53:32 -0400 Subject: [PATCH 12/64] fix: Move `future/workflow/[workflow]` `getStaticProps` into separate file (#16124) --- .../app/future/workflows/[workflow]/page.tsx | 4 +++- .../workflow-single-view.getStaticProps.tsx | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 apps/web/modules/workflows/workflow-single-view.getStaticProps.tsx diff --git a/apps/web/app/future/workflows/[workflow]/page.tsx b/apps/web/app/future/workflows/[workflow]/page.tsx index 9aa90e2f25925d..783071bcc10915 100644 --- a/apps/web/app/future/workflows/[workflow]/page.tsx +++ b/apps/web/app/future/workflows/[workflow]/page.tsx @@ -1,4 +1,4 @@ -import LegacyPage, { getStaticProps } from "@pages/workflows/[workflow]"; +import LegacyPage from "@pages/workflows/[workflow]"; import { withAppDirSsg } from "app/WithAppDirSsg"; import type { PageProps } from "app/_types"; import { _generateMetadata } from "app/_utils"; @@ -7,6 +7,8 @@ import { headers, cookies } from "next/headers"; import { buildLegacyCtx } from "@lib/buildLegacyCtx"; +import { getStaticProps } from "~/workflows/workflow-single-view.getStaticProps"; + export const generateMetadata = async ({ params, searchParams }: PageProps) => { const { workflow } = await getData(buildLegacyCtx(headers(), cookies(), params, searchParams)); return await _generateMetadata( diff --git a/apps/web/modules/workflows/workflow-single-view.getStaticProps.tsx b/apps/web/modules/workflows/workflow-single-view.getStaticProps.tsx new file mode 100644 index 00000000000000..0104997452f09e --- /dev/null +++ b/apps/web/modules/workflows/workflow-single-view.getStaticProps.tsx @@ -0,0 +1,19 @@ +import type { GetStaticProps } from "next"; +import { z } from "zod"; + +const querySchema = z.object({ + workflow: z.string(), +}); + +export const getStaticProps: GetStaticProps = (ctx) => { + const params = querySchema.safeParse(ctx.params); + console.log("Built workflow page:", params); + if (!params.success) return { notFound: true }; + + return { + props: { + workflow: params.data.workflow, + }, + revalidate: 10, // seconds + }; +}; From ee8cc81862aec72952e5529fd83ec791a3806e89 Mon Sep 17 00:00:00 2001 From: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:05:14 +0300 Subject: [PATCH 13/64] fix: api v2 booking controller with api key (#16358) * fix: api v2 booking controller with api key * add test * fixup! add test * fixup! Merge branch 'fix-booking-controller-api-key' of github.com:calcom/cal.com into fix-booking-controller-api-key * fixup! Merge branch 'fix-booking-controller-api-key' of github.com:calcom/cal.com into fix-booking-controller-api-key --- .../api/v2/src/ee/bookings/bookings.module.ts | 3 +- .../bookings.controller.e2e-spec.ts | 81 +++++++++++++++++-- .../controllers/bookings.controller.ts | 21 ++++- apps/api/v2/src/lib/enums/auth-methods.ts | 6 ++ .../methods/get-auth-methods.decorator.ts | 13 +++ .../strategies/api-auth/api-auth.strategy.ts | 8 +- 6 files changed, 118 insertions(+), 14 deletions(-) create mode 100644 apps/api/v2/src/lib/enums/auth-methods.ts create mode 100644 apps/api/v2/src/modules/auth/decorators/methods/get-auth-methods.decorator.ts diff --git a/apps/api/v2/src/ee/bookings/bookings.module.ts b/apps/api/v2/src/ee/bookings/bookings.module.ts index 8e1be0f3e7c74e..b91c65392ec13c 100644 --- a/apps/api/v2/src/ee/bookings/bookings.module.ts +++ b/apps/api/v2/src/ee/bookings/bookings.module.ts @@ -1,4 +1,5 @@ import { BookingsController } from "@/ee/bookings/controllers/bookings.controller"; +import { ApiKeyRepository } from "@/modules/api-key/api-key-repository"; import { BillingModule } from "@/modules/billing/billing.module"; import { OAuthClientRepository } from "@/modules/oauth-clients/oauth-client.repository"; import { OAuthFlowService } from "@/modules/oauth-clients/services/oauth-flow.service"; @@ -10,7 +11,7 @@ import { Module } from "@nestjs/common"; @Module({ imports: [PrismaModule, RedisModule, TokensModule, BillingModule], - providers: [TokensRepository, OAuthFlowService, OAuthClientRepository], + providers: [TokensRepository, OAuthFlowService, OAuthClientRepository, ApiKeyRepository], controllers: [BookingsController], }) export class BookingsModule {} diff --git a/apps/api/v2/src/ee/bookings/controllers/bookings.controller.e2e-spec.ts b/apps/api/v2/src/ee/bookings/controllers/bookings.controller.e2e-spec.ts index c8731539f55d0d..cec587562a2af6 100644 --- a/apps/api/v2/src/ee/bookings/controllers/bookings.controller.e2e-spec.ts +++ b/apps/api/v2/src/ee/bookings/controllers/bookings.controller.e2e-spec.ts @@ -14,6 +14,7 @@ import { NestExpressApplication } from "@nestjs/platform-express"; import { Test } from "@nestjs/testing"; import { User } from "@prisma/client"; import * as request from "supertest"; +import { ApiKeysRepositoryFixture } from "test/fixtures/repository/api-keys.repository.fixture"; import { BookingsRepositoryFixture } from "test/fixtures/repository/bookings.repository.fixture"; import { EventTypesRepositoryFixture } from "test/fixtures/repository/event-types.repository.fixture"; import { UserRepositoryFixture } from "test/fixtures/repository/users.repository.fixture"; @@ -31,6 +32,8 @@ describe("Bookings Endpoints", () => { let bookingsRepositoryFixture: BookingsRepositoryFixture; let schedulesService: SchedulesService_2024_04_15; let eventTypesRepositoryFixture: EventTypesRepositoryFixture; + let apiKeysRepositoryFixture: ApiKeysRepositoryFixture; + let apiKeyString: string; const userEmail = "bookings-controller-e2e@api.com"; let user: User; @@ -56,11 +59,13 @@ describe("Bookings Endpoints", () => { bookingsRepositoryFixture = new BookingsRepositoryFixture(moduleRef); eventTypesRepositoryFixture = new EventTypesRepositoryFixture(moduleRef); schedulesService = moduleRef.get(SchedulesService_2024_04_15); - + apiKeysRepositoryFixture = new ApiKeysRepositoryFixture(moduleRef); user = await userRepositoryFixture.create({ email: userEmail, }); + const { keyString } = await apiKeysRepositoryFixture.createApiKey(user.id, null); + apiKeyString = keyString; const userSchedule: CreateScheduleInput_2024_04_15 = { name: "working time", timeZone: "Europe/Rome", @@ -139,6 +144,62 @@ describe("Bookings Endpoints", () => { }); }); + it("should create a booking with api key to get owner id", async () => { + const bookingStart = "2040-05-22T09:30:00.000Z"; + const bookingEnd = "2040-05-22T10:30:00.000Z"; + const bookingEventTypeId = eventTypeId; + const bookingTimeZone = "Europe/London"; + const bookingLanguage = "en"; + const bookingHashedLink = ""; + const bookingMetadata = { + timeFormat: "12", + meetingType: "organizer-phone", + }; + const bookingResponses = { + name: "tester", + email: "tester@example.com", + location: { + value: "link", + optionValue: "", + }, + notes: "test", + guests: [], + }; + + const body: CreateBookingInput = { + start: bookingStart, + end: bookingEnd, + eventTypeId: bookingEventTypeId, + timeZone: bookingTimeZone, + language: bookingLanguage, + metadata: bookingMetadata, + hashedLink: bookingHashedLink, + responses: bookingResponses, + }; + + return request(app.getHttpServer()) + .post("/v2/bookings") + .send(body) + .set({ Authorization: `Bearer cal_test_${apiKeyString}` }) + .expect(201) + .then(async (response) => { + const responseBody: ApiSuccessResponse>> = + response.body; + expect(responseBody.status).toEqual(SUCCESS_STATUS); + expect(responseBody.data).toBeDefined(); + expect(responseBody.data.userPrimaryEmail).toBeDefined(); + expect(responseBody.data.userPrimaryEmail).toEqual(userEmail); + expect(responseBody.data.id).toBeDefined(); + expect(responseBody.data.uid).toBeDefined(); + expect(responseBody.data.startTime).toEqual(bookingStart); + expect(responseBody.data.eventTypeId).toEqual(bookingEventTypeId); + expect(responseBody.data.user.timeZone).toEqual(bookingTimeZone); + expect(responseBody.data.metadata).toEqual(bookingMetadata); + + createdBooking = responseBody.data; + }); + }); + describe("should reschedule a booking", () => { it("should reschedule with updated start time, end time & metadata", async () => { const newBookingStart = "2040-05-21T12:30:00.000Z"; @@ -202,18 +263,22 @@ describe("Bookings Endpoints", () => { .get("/v2/bookings?filters[status]=upcoming") .then((response) => { const responseBody: GetBookingsOutput = response.body; - const fetchedBooking = responseBody.data.bookings[0]; - expect(responseBody.data.bookings.length).toEqual(1); + expect(responseBody.data.bookings.length).toEqual(2); + const fetchedBooking = responseBody.data.bookings.find( + (booking) => booking.id === createdBooking.id + ); expect(responseBody.status).toEqual(SUCCESS_STATUS); expect(responseBody.data).toBeDefined(); expect(fetchedBooking).toBeDefined(); - expect(fetchedBooking.id).toEqual(createdBooking.id); - expect(fetchedBooking.uid).toEqual(createdBooking.uid); - expect(fetchedBooking.startTime).toEqual(createdBooking.startTime); - expect(fetchedBooking.endTime).toEqual(createdBooking.endTime); - expect(fetchedBooking.user?.email).toEqual(userEmail); + if (fetchedBooking) { + expect(fetchedBooking.id).toEqual(createdBooking.id); + expect(fetchedBooking.uid).toEqual(createdBooking.uid); + expect(fetchedBooking.startTime).toEqual(createdBooking.startTime); + expect(fetchedBooking.endTime).toEqual(createdBooking.endTime); + expect(fetchedBooking.user?.email).toEqual(userEmail); + } }); }); diff --git a/apps/api/v2/src/ee/bookings/controllers/bookings.controller.ts b/apps/api/v2/src/ee/bookings/controllers/bookings.controller.ts index dfe7b26c70c479..0ce1889610d507 100644 --- a/apps/api/v2/src/ee/bookings/controllers/bookings.controller.ts +++ b/apps/api/v2/src/ee/bookings/controllers/bookings.controller.ts @@ -4,7 +4,9 @@ import { MarkNoShowInput } from "@/ee/bookings/inputs/mark-no-show.input"; import { GetBookingOutput } from "@/ee/bookings/outputs/get-booking.output"; import { GetBookingsOutput } from "@/ee/bookings/outputs/get-bookings.output"; import { MarkNoShowOutput } from "@/ee/bookings/outputs/mark-no-show.output"; +import { hashAPIKey, isApiKey, stripApiKey } from "@/lib/api-key"; import { API_VERSIONS_VALUES } from "@/lib/api-versions"; +import { ApiKeyRepository } from "@/modules/api-key/api-key-repository"; import { GetUser } from "@/modules/auth/decorators/get-user/get-user.decorator"; import { Permissions } from "@/modules/auth/decorators/permissions/permissions.decorator"; import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; @@ -28,6 +30,7 @@ import { NotFoundException, UseGuards, } from "@nestjs/common"; +import { ConfigService } from "@nestjs/config"; import { ApiQuery, ApiTags as DocsTags } from "@nestjs/swagger"; import { User } from "@prisma/client"; import { Request } from "express"; @@ -86,7 +89,9 @@ export class BookingsController { private readonly oAuthFlowService: OAuthFlowService, private readonly prismaReadService: PrismaReadService, private readonly oAuthClientRepository: OAuthClientRepository, - private readonly billingService: BillingService + private readonly billingService: BillingService, + private readonly config: ConfigService, + private readonly apiKeyRepository: ApiKeyRepository ) {} @Get("/") @@ -296,9 +301,17 @@ export class BookingsController { private async getOwnerId(req: Request): Promise { try { - const accessToken = req.get("Authorization")?.replace("Bearer ", ""); - if (accessToken) { - return this.oAuthFlowService.getOwnerId(accessToken); + const bearerToken = req.get("Authorization")?.replace("Bearer ", ""); + if (bearerToken) { + if (isApiKey(bearerToken, this.config.get("api.apiKeyPrefix") ?? "cal_")) { + const strippedApiKey = stripApiKey(bearerToken, this.config.get("api.keyPrefix")); + const apiKeyHash = hashAPIKey(strippedApiKey); + const keyData = await this.apiKeyRepository.getApiKeyFromHash(apiKeyHash); + return keyData?.userId; + } else { + // Access Token + return this.oAuthFlowService.getOwnerId(bearerToken); + } } } catch (err) { this.logger.error(err); diff --git a/apps/api/v2/src/lib/enums/auth-methods.ts b/apps/api/v2/src/lib/enums/auth-methods.ts new file mode 100644 index 00000000000000..282aa7462dabe2 --- /dev/null +++ b/apps/api/v2/src/lib/enums/auth-methods.ts @@ -0,0 +1,6 @@ +export enum AuthMethods { + "API_KEY" = "api-key", + "ACCESS_TOKEN" = "access-token", + "OAUTH_CLIENT" = "oauth-client", + "NEXT_AUTH" = "next-auth", +} diff --git a/apps/api/v2/src/modules/auth/decorators/methods/get-auth-methods.decorator.ts b/apps/api/v2/src/modules/auth/decorators/methods/get-auth-methods.decorator.ts new file mode 100644 index 00000000000000..0b12370f994e1c --- /dev/null +++ b/apps/api/v2/src/modules/auth/decorators/methods/get-auth-methods.decorator.ts @@ -0,0 +1,13 @@ +import { AuthMethods } from "@/lib/enums/auth-methods"; +import { createParamDecorator, ExecutionContext } from "@nestjs/common"; + +export const GetAuthMethod = createParamDecorator((_data, ctx) => { + const request = ctx.switchToHttp().getRequest(); + const authMethod = request.authMethod as AuthMethods; + + if (!authMethod) { + throw new Error("GetAuthMethod decorator : auth method not set"); + } + + return authMethod; +}); diff --git a/apps/api/v2/src/modules/auth/strategies/api-auth/api-auth.strategy.ts b/apps/api/v2/src/modules/auth/strategies/api-auth/api-auth.strategy.ts index 921e8cef83ecca..b159f0baeefc97 100644 --- a/apps/api/v2/src/modules/auth/strategies/api-auth/api-auth.strategy.ts +++ b/apps/api/v2/src/modules/auth/strategies/api-auth/api-auth.strategy.ts @@ -1,4 +1,5 @@ import { hashAPIKey, isApiKey, stripApiKey } from "@/lib/api-key"; +import { AuthMethods } from "@/lib/enums/auth-methods"; import { BaseStrategy } from "@/lib/passport/strategies/types"; import { ApiKeyRepository } from "@/modules/api-key/api-key-repository"; import { DeploymentsService } from "@/modules/deployments/deployments.service"; @@ -30,7 +31,7 @@ export class ApiAuthStrategy extends PassportStrategy(BaseStrategy, "api-auth") super(); } - async authenticate(request: Request) { + async authenticate(request: Request & { authMethod: AuthMethods }) { try { const { params } = request; const oAuthClientSecret = request.get(X_CAL_SECRET_KEY); @@ -38,11 +39,15 @@ export class ApiAuthStrategy extends PassportStrategy(BaseStrategy, "api-auth") const bearerToken = request.get("Authorization")?.replace("Bearer ", ""); if (oAuthClientId && oAuthClientSecret) { + request.authMethod = AuthMethods["OAUTH_CLIENT"]; return await this.authenticateOAuthClient(oAuthClientId, oAuthClientSecret); } if (bearerToken) { const requestOrigin = request.get("Origin"); + request.authMethod = isApiKey(bearerToken, this.config.get("api.apiKeyPrefix") ?? "cal_") + ? AuthMethods["API_KEY"] + : AuthMethods["ACCESS_TOKEN"]; return await this.authenticateBearerToken(bearerToken, requestOrigin); } @@ -50,6 +55,7 @@ export class ApiAuthStrategy extends PassportStrategy(BaseStrategy, "api-auth") const nextAuthToken = await getToken({ req: request, secret: nextAuthSecret }); if (nextAuthToken) { + request.authMethod = AuthMethods["NEXT_AUTH"]; return await this.authenticateNextAuth(nextAuthToken); } From 0190ca6711a9c6be721b4e20d98d7fb8329c16d8 Mon Sep 17 00:00:00 2001 From: Nicolaos Moscholios Date: Wed, 28 Aug 2024 15:37:02 +0200 Subject: [PATCH 14/64] fix: use `userPhone` instead of `phone` for switch case (#16384) * fix: use `userPhone` instead of `phone` for switch case Currently this switch case never gets to the last case ("phone") as the type expected is wrong. Here the type may have value `userPhone` and not `phone`. * fix another case --------- Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> --- .../atom-api-transformers/transformApiEventTypeForAtom.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts b/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts index fb8c91f74da47e..8bc47a94f67a86 100644 --- a/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts +++ b/packages/platform/atoms/event-types/atom-api-transformers/transformApiEventTypeForAtom.ts @@ -190,11 +190,11 @@ function getLocations(locations: EventTypeOutput_2024_06_14["locations"]) { const { displayLocationPublicly, type } = location; switch (type) { - case "address": + case "inPerson": return displayLocationPublicly ? location : { ...location, address: "" }; case "link": return displayLocationPublicly ? location : { ...location, link: "" }; - case "phone": + case "userPhone": return displayLocationPublicly ? location : { From 795a228a446093975c713074e80d755fab4fc600 Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Wed, 28 Aug 2024 20:54:13 +0530 Subject: [PATCH 15/64] fix: allow all sign in methods when being invited (#13436) * allow all sign in methods * changes * update * add checks --------- Co-authored-by: Keith Williams Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> --- apps/web/pages/auth/sso/[provider].tsx | 5 +- apps/web/pages/signup.tsx | 171 +++++++++++++------------ 2 files changed, 89 insertions(+), 87 deletions(-) diff --git a/apps/web/pages/auth/sso/[provider].tsx b/apps/web/pages/auth/sso/[provider].tsx index 8aa522667f9c8d..5ea01f8dc9b46f 100644 --- a/apps/web/pages/auth/sso/[provider].tsx +++ b/apps/web/pages/auth/sso/[provider].tsx @@ -19,9 +19,8 @@ export default function Provider(props: SSOProviderPageProps) { const router = useRouter(); useEffect(() => { + const email = searchParams?.get("email"); if (props.provider === "saml") { - const email = searchParams?.get("email"); - if (!email) { router.push(`/auth/error?error=Email not provided`); return; @@ -33,6 +32,8 @@ export default function Provider(props: SSOProviderPageProps) { } signIn("saml", {}, { tenant: props.tenant, product: props.product }); + } else if (props.provider === "google" && email) { + signIn("google", {}, { login_hint: email }); } else { signIn(props.provider); } diff --git a/apps/web/pages/signup.tsx b/apps/web/pages/signup.tsx index 49015ba22afc8f..2620efd1757c0e 100644 --- a/apps/web/pages/signup.tsx +++ b/apps/web/pages/signup.tsx @@ -428,8 +428,7 @@ export default function Signup({ : t("create_account")} - {/* Continue with Social Logins - Only for non-invite links */} - {token || (!isGoogleLoginEnabled && !isSAMLLoginEnabled) ? null : ( + {!isGoogleLoginEnabled && !isSAMLLoginEnabled ? null : (
@@ -440,91 +439,93 @@ export default function Signup({
)} - {/* Social Logins - Only for non-invite links*/} - {!token && ( -
- {isGoogleLoginEnabled ? ( - - ) : null} - {isSAMLLoginEnabled ? ( - - ) : null} -
- )} + const url = searchQueryParams.toString() + ? `${GOOGLE_AUTH_URL}?${searchQueryParams.toString()}` + : GOOGLE_AUTH_URL; + + router.push(url); + }}> + Google + + ) : null} + {isSAMLLoginEnabled ? ( + + ) : null} +
{/* Already have an account & T&C */}
From f7c1d62bb8dc278d20712444336ea6d6cec851e5 Mon Sep 17 00:00:00 2001 From: Max Prilutskiy <5614659+maxprilutskiy@users.noreply.github.com> Date: Thu, 29 Aug 2024 03:32:03 +0200 Subject: [PATCH 16/64] chore: [skip i18n] switch pr's i18n job to in-branch mode (#16390) --- .github/workflows/pr.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 77d7ceba5b67f6..c9b8494dd3e73f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -114,12 +114,11 @@ jobs: - run: find apps/web/public/static/locales/** -name "common.json" | xargs git checkout ${{ github.event.pull_request.head.sha }} -- if: ${{ github.event.pull_request.head.sha != '' }} shell: bash + - run: git checkout ${{ github.event.pull_request.head.sha }} -- i18n.json + if: ${{ github.event.pull_request.head.sha != '' }} - uses: replexica/replexica@main - env: - GH_TOKEN: ${{ github.token }} with: api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} - pull-request: true type-check: name: Type check From 4284e86e51c300dd4edf96a63f0a8a400c276f24 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Thu, 29 Aug 2024 14:13:48 +0900 Subject: [PATCH 17/64] perf: Removed unused attendees count (#16391) --- packages/core/getUserAvailability.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/core/getUserAvailability.ts b/packages/core/getUserAvailability.ts index dbaf26325b8638..61f466c2ee4186 100644 --- a/packages/core/getUserAvailability.ts +++ b/packages/core/getUserAvailability.ts @@ -171,11 +171,6 @@ const _getCurrentSeats = async ( email: true, }, }, - _count: { - select: { - attendees: true, - }, - }, }, }); From 19634073e9c964b1be4cb660817b33fa6eaea8ba Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Thu, 29 Aug 2024 13:32:54 +0530 Subject: [PATCH 18/64] refactor: improve team members page performance (#16155) * fix: simplify workflow page and improve load time * chore: use new endpoint * chore: save progress * refactor: code * refactor: remove not requried code * chore: remove schema * chore: fix typ * chore: improve * chore: change name * chore: remove unused * chore: remove page * refactor: teams page * feat: add auto scroll * chore: create validate unique invite * fix: auth check * fix: optimistic update * chore * fix: add loading * fix: improvements * chore: remove * chore * chore: fix teams page * fix: team profile page * fix: appearance page * fix: sso view * fix: type err * feat: defer loading connected Apps * fix: type err * fix: type error * fix: type err * fix: connectedApps type * chore: move * chore: missing export * feat: add search by name * fix: display role change * fix: use setInfiniteData * chore: save progress * test: add unit tests for loading members * fix: test * chore: update name * fix: bugs and improvements * chore: change variable name * test: add tests for checkCanAccessMembers * refactor: performance --------- Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> --- .../utils/bookingScenario/bookingScenario.ts | 1 + .../features/ee/sso/page/teams-sso-view.tsx | 11 +- .../components/DisableTeamImpersonation.tsx | 1 - .../components/InviteLinkSettingsModal.tsx | 2 + .../components/MakeTeamPrivateSwitch.tsx | 3 +- .../components/MemberChangeRoleModal.tsx | 56 ++++ .../components/MemberInvitationModal.tsx | 131 +++++++-- .../ee/teams/components/MemberListItem.tsx | 77 ++++- .../components/TeamAvailabilityModal.tsx | 6 +- .../ee/teams/components/TeamListItem.tsx | 64 +--- .../ee/teams/pages/team-appearance-view.tsx | 13 +- .../ee/teams/pages/team-members-view.tsx | 218 +++++++------- .../ee/teams/pages/team-profile-view.tsx | 6 +- packages/lib/server/queries/teams/index.ts | 98 +++++++ packages/lib/server/repository/membership.ts | 9 + .../server/routers/viewer/teams/_router.tsx | 32 ++ .../teams/checkIfMembershipExists.handler.ts | 35 +++ .../teams/checkIfMembershipExists.schema.ts | 8 + .../viewer/teams/getMinimal.handler.test.ts | 81 +++++ .../viewer/teams/getMinimal.handler.ts | 49 ++++ .../routers/viewer/teams/getMinimal.schema.ts | 8 + .../teams/getUserConnectedApps.handler.ts | 158 ++++++++++ .../teams/getUserConnectedApps.schema.ts | 8 + .../viewer/teams/lazyLoadMembers.handler.ts | 150 ++++++++++ .../viewer/teams/lazyLoadMembers.schema.ts | 10 + .../viewer/teams/lazyLoadMembers.test.ts | 277 ++++++++++++++++++ 26 files changed, 1315 insertions(+), 197 deletions(-) create mode 100644 packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.handler.ts create mode 100644 packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.schema.ts create mode 100644 packages/trpc/server/routers/viewer/teams/getMinimal.handler.test.ts create mode 100644 packages/trpc/server/routers/viewer/teams/getMinimal.handler.ts create mode 100644 packages/trpc/server/routers/viewer/teams/getMinimal.schema.ts create mode 100644 packages/trpc/server/routers/viewer/teams/getUserConnectedApps.handler.ts create mode 100644 packages/trpc/server/routers/viewer/teams/getUserConnectedApps.schema.ts create mode 100644 packages/trpc/server/routers/viewer/teams/lazyLoadMembers.handler.ts create mode 100644 packages/trpc/server/routers/viewer/teams/lazyLoadMembers.schema.ts create mode 100644 packages/trpc/server/routers/viewer/teams/lazyLoadMembers.test.ts diff --git a/apps/web/test/utils/bookingScenario/bookingScenario.ts b/apps/web/test/utils/bookingScenario/bookingScenario.ts index 48868bdafa5ec1..59ab19bb546765 100644 --- a/apps/web/test/utils/bookingScenario/bookingScenario.ts +++ b/apps/web/test/utils/bookingScenario/bookingScenario.ts @@ -116,6 +116,7 @@ type InputUser = Omit & { name: string; slug: string; parentId?: number; + isPrivate?: boolean; }; }[]; schedules: { diff --git a/packages/features/ee/sso/page/teams-sso-view.tsx b/packages/features/ee/sso/page/teams-sso-view.tsx index 9832f4f6dd529e..695197f0aeba37 100644 --- a/packages/features/ee/sso/page/teams-sso-view.tsx +++ b/packages/features/ee/sso/page/teams-sso-view.tsx @@ -19,7 +19,16 @@ const SAMLSSO = () => { const teamId = Number(params.id); - const { data: team, isPending, error } = trpc.viewer.teams.get.useQuery({ teamId }); + const { + data: team, + isPending, + error, + } = trpc.viewer.teams.getMinimal.useQuery( + { teamId }, + { + enabled: !!teamId, + } + ); useEffect(() => { if (!HOSTED_CAL_FEATURES) { diff --git a/packages/features/ee/teams/components/DisableTeamImpersonation.tsx b/packages/features/ee/teams/components/DisableTeamImpersonation.tsx index 0503f1710b5574..d87c84aebecd2b 100644 --- a/packages/features/ee/teams/components/DisableTeamImpersonation.tsx +++ b/packages/features/ee/teams/components/DisableTeamImpersonation.tsx @@ -40,7 +40,6 @@ const DisableTeamImpersonation = ({ setAllowImpersonation(_allowImpersonation); mutation.mutate({ teamId, memberId, disableImpersonation: !_allowImpersonation }); }} - switchContainerClassName="mt-6" /> ); diff --git a/packages/features/ee/teams/components/InviteLinkSettingsModal.tsx b/packages/features/ee/teams/components/InviteLinkSettingsModal.tsx index 13aa1752551ec4..2efab7f0afab94 100644 --- a/packages/features/ee/teams/components/InviteLinkSettingsModal.tsx +++ b/packages/features/ee/teams/components/InviteLinkSettingsModal.tsx @@ -26,6 +26,7 @@ export default function InviteLinkSettingsModal(props: InvitationLinkSettingsMod showToast(t("invite_link_deleted"), "success"); trpcContext.viewer.teams.get.invalidate(); trpcContext.viewer.teams.list.invalidate(); + trpcContext.viewer.teams.getMinimal.invalidate(); props.onExit(); }, onError: (e) => { @@ -38,6 +39,7 @@ export default function InviteLinkSettingsModal(props: InvitationLinkSettingsMod showToast(t("invite_link_updated"), "success"); trpcContext.viewer.teams.get.invalidate(); trpcContext.viewer.teams.list.invalidate(); + trpcContext.viewer.teams.getMinimal.invalidate(); }, onError: (e) => { showToast(e.message, "error"); diff --git a/packages/features/ee/teams/components/MakeTeamPrivateSwitch.tsx b/packages/features/ee/teams/components/MakeTeamPrivateSwitch.tsx index d8633902b76795..71e62f76ca26ef 100644 --- a/packages/features/ee/teams/components/MakeTeamPrivateSwitch.tsx +++ b/packages/features/ee/teams/components/MakeTeamPrivateSwitch.tsx @@ -25,6 +25,7 @@ const MakeTeamPrivateSwitch = ({ }, async onSuccess() { await utils.viewer.teams.get.invalidate(); + await utils.viewer.teams.getMinimal.invalidate(); showToast(t(isOrg ? "your_org_updated_successfully" : "your_team_updated_successfully"), "success"); }, }); @@ -43,7 +44,7 @@ const MakeTeamPrivateSwitch = ({ setTeamPrivate(checked); mutation.mutate({ id: teamId, isPrivate: checked }); }} - switchContainerClassName="mt-6" + switchContainerClassName="my-6" data-testid="make-team-private-check" /> diff --git a/packages/features/ee/teams/components/MemberChangeRoleModal.tsx b/packages/features/ee/teams/components/MemberChangeRoleModal.tsx index dbe062d510ffe7..3f6379f5d973eb 100644 --- a/packages/features/ee/teams/components/MemberChangeRoleModal.tsx +++ b/packages/features/ee/teams/components/MemberChangeRoleModal.tsx @@ -11,6 +11,47 @@ type MembershipRoleOption = { value: MembershipRole; }; +const updateRoleInCache = ({ + utils, + teamId, + searchTerm, + role, + memberId, +}: { + utils: ReturnType; + teamId: number; + searchTerm: string | undefined; + role: MembershipRole; + memberId: number; +}) => { + utils.viewer.teams.lazyLoadMembers.setInfiniteData( + { + limit: 10, + teamId, + searchTerm, + }, + (data) => { + if (!data) { + return { + pages: [], + pageParams: [], + }; + } + + return { + ...data, + pages: data.pages.map((page) => ({ + ...page, + members: page.members.map((member) => ({ + ...member, + role: member.id === memberId ? role : member.role, + })), + })), + }; + } + ); +}; + export default function MemberChangeRoleModal(props: { isOpen: boolean; currentMember: MembershipRole; @@ -18,6 +59,7 @@ export default function MemberChangeRoleModal(props: { teamId: number; initialRole: MembershipRole; onExit: () => void; + searchTerm?: string; }) { const { t } = useLocale(); @@ -48,6 +90,20 @@ export default function MemberChangeRoleModal(props: { const utils = trpc.useUtils(); const changeRoleMutation = trpc.viewer.teams.changeMemberRole.useMutation({ + onMutate: async ({ teamId, memberId, role }) => { + await utils.viewer.teams.lazyLoadMembers.cancel(); + const previousValue = utils.viewer.teams.lazyLoadMembers.getInfiniteData({ + limit: 10, + teamId: teamId, + searchTerm: props.searchTerm, + }); + + if (previousValue) { + updateRoleInCache({ utils, teamId, memberId, role, searchTerm: props.searchTerm }); + } + + return { previousValue }; + }, async onSuccess() { await utils.viewer.teams.get.invalidate(); await utils.viewer.organizations.listMembers.invalidate(); diff --git a/packages/features/ee/teams/components/MemberInvitationModal.tsx b/packages/features/ee/teams/components/MemberInvitationModal.tsx index c499fa6973a5e0..7660dbb2e894b7 100644 --- a/packages/features/ee/teams/components/MemberInvitationModal.tsx +++ b/packages/features/ee/teams/components/MemberInvitationModal.tsx @@ -7,6 +7,7 @@ import { Controller, useForm } from "react-hook-form"; import TeamInviteFromOrg from "@calcom/ee/organizations/components/TeamInviteFromOrg"; import { classNames } from "@calcom/lib"; import { IS_TEAM_BILLING_ENABLED, MAX_NB_INVITES } from "@calcom/lib/constants"; +import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { MembershipRole } from "@calcom/prisma/enums"; import type { RouterOutputs } from "@calcom/trpc"; @@ -42,6 +43,7 @@ type MemberInvitationModalProps = { isPending?: boolean; disableCopyLink?: boolean; isOrg?: boolean; + checkMembershipMutation?: boolean; }; type MembershipRoleOption = { @@ -74,17 +76,16 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) enabled: !!session.data?.user?.org, }); + const checkIfMembershipExistsMutation = trpc.viewer.teams.checkIfMembershipExists.useMutation(); + // Check current org role and not team role const isOrgAdminOrOwner = currentOrg && (currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN); - const canSeeOrganization = !!( - props?.orgMembers && - props.orgMembers?.length > 0 && - currentOrg?.isPrivate && - isOrgAdminOrOwner - ); + const canSeeOrganization = currentOrg?.isPrivate + ? isOrgAdminOrOwner + : !!(props?.orgMembers && props.orgMembers?.length > 0 && isOrgAdminOrOwner); const [modalImportMode, setModalInputMode] = useState( canSeeOrganization ? "ORGANIZATION" : "INDIVIDUAL" @@ -136,12 +137,19 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) const newMemberFormMethods = useForm(); - const validateUniqueInvite = (value: string) => { - if (!props?.members?.length) return true; - return !( - props?.members.some((member) => member?.username === value) || - props?.members.some((member) => member?.email === value) - ); + const checkIfMembershipExists = (value: string) => { + if (props.checkMembershipMutation) { + return checkIfMembershipExistsMutation.mutateAsync({ + teamId: props.teamId, + value, + }); + } else { + if (!props?.members?.length) return false; + return ( + props?.members.some((member) => member?.username === value) || + props?.members.some((member) => member?.email === value) + ); + } }; const handleFileUpload = (e: FileEvent) => { @@ -207,7 +215,7 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) ) : null }> -
+
@@ -231,11 +239,13 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) control={newMemberFormMethods.control} rules={{ required: t("enter_email"), - validate: (value) => { + validate: async (value) => { // orgs can only invite members by email if (typeof value === "string" && !isEmail(value)) return t("enter_email"); - if (typeof value === "string") - return validateUniqueInvite(value) || t("member_already_invited"); + if (typeof value === "string") { + const doesInviteExists = await checkIfMembershipExists(value); + return !doesInviteExists || t("member_already_invited"); + } }, }} render={({ field: { onChange }, fieldState: { error } }) => ( @@ -437,7 +447,9 @@ export default function MemberInvitationModal(props: MemberInvitationModalProps) {t("cancel")} +
); } const MembersView = () => { const searchParams = useCompatSearchParams(); - const { t, i18n } = useLocale(); + const { t } = useLocale(); const router = useRouter(); const session = useSession(); const org = session?.data?.user.org; - const utils = trpc.useUtils(); const params = useParamsWithFallback(); const teamId = Number(params.id); @@ -93,27 +147,17 @@ const MembersView = () => { const [showMemberInvitationModal, setShowMemberInvitationModal] = useState(showDialog); const [showInviteLinkSettingsModal, setInviteLinkSettingsModal] = useState(false); - const { data: orgMembersNotInThisTeam, isPending: isOrgListLoading } = - trpc.viewer.organizations.getMembers.useQuery( - { - teamIdToExclude: teamId, - distinctUser: true, - }, - { - enabled: searchParams !== null && !!teamId, - } - ); - const { data: team, isPending: isTeamsLoading, error: teamError, - } = trpc.viewer.teams.get.useQuery( + } = trpc.viewer.teams.getMinimal.useQuery( { teamId }, { enabled: !!teamId, } ); + useEffect( function refactorMeWithoutEffect() { if (teamError) { @@ -123,9 +167,7 @@ const MembersView = () => { [teamError] ); - const isPending = isOrgListLoading || isTeamsLoading; - - const inviteMemberMutation = trpc.viewer.teams.inviteMember.useMutation(); + const isPending = isTeamsLoading; const isInviteOpen = !team?.membership.accepted; @@ -134,6 +176,10 @@ const MembersView = () => { const isOrgAdminOrOwner = org?.role === MembershipRole.OWNER || org?.role === MembershipRole.ADMIN; + const hideInvitationModal = () => { + setShowMemberInvitationModal(false); + }; + return ( <> { )} - {((team?.isPrivate && isAdmin) || !team?.isPrivate || isOrgAdminOrOwner) && ( - <> - - - )} - - {team && session.data && ( + {team && team.id && session.data && ( { /> )} - {team && (isAdmin || isOrgAdminOrOwner) && ( + {team && team.id && (isAdmin || isOrgAdminOrOwner) && ( )} + + {((team?.isPrivate && isAdmin) || !team?.isPrivate || isOrgAdminOrOwner) && team && ( + <> + + + )}
- {showMemberInvitationModal && team && ( - setShowMemberInvitationModal(false)} - onSubmit={(values, resetFields) => { - inviteMemberMutation.mutate( - { - teamId, - language: i18n.language, - role: values.role, - usernameOrEmail: values.emailOrUsername, - }, - { - onSuccess: async (data) => { - await utils.viewer.teams.get.invalidate(); - await utils.viewer.organizations.getMembers.invalidate(); - setShowMemberInvitationModal(false); - - if (Array.isArray(data.usernameOrEmail)) { - showToast( - t("email_invite_team_bulk", { - userCount: data.numUsersInvited, - }), - "success" - ); - resetFields(); - } else { - showToast( - t("email_invite_team", { - email: data.usernameOrEmail, - }), - "success" - ); - } - }, - onError: (error) => { - showToast(error.message, "error"); - }, - } - ); - }} - onSettingsOpen={() => { - setShowMemberInvitationModal(false); - setInviteLinkSettingsModal(true); - }} + onSettingsOpen={() => setInviteLinkSettingsModal(true)} /> )} - {showInviteLinkSettingsModal && team?.inviteToken && ( + + {showInviteLinkSettingsModal && team?.inviteToken && team.id && ( { data: team, isPending, error, - } = trpc.viewer.teams.get.useQuery( + } = trpc.viewer.teams.getMinimal.useQuery( { teamId }, { enabled: !!teamId, @@ -179,7 +179,7 @@ const ProfileView = () => {
)} @@ -251,7 +251,7 @@ const ProfileView = () => { ); }; -export type TeamProfileFormProps = { team: RouterOutputs["viewer"]["teams"]["get"] }; +export type TeamProfileFormProps = { team: RouterOutputs["viewer"]["teams"]["getMinimal"] }; const TeamProfileForm = ({ team }: TeamProfileFormProps) => { const utils = trpc.useUtils(); diff --git a/packages/lib/server/queries/teams/index.ts b/packages/lib/server/queries/teams/index.ts index 647c4fa2308ae7..97663874f0330b 100644 --- a/packages/lib/server/queries/teams/index.ts +++ b/packages/lib/server/queries/teams/index.ts @@ -260,6 +260,104 @@ export async function getTeamWithMembers(args: { }; } +export async function getMinimalTeam(args: { + id?: number; + slug?: string; + userId?: number; + orgSlug?: string | null; + /** + * If true, means that you are fetching an organization and not a team + */ + isOrgView?: boolean; +}) { + const { id, slug, userId, orgSlug, isOrgView } = args; + + let lookupBy; + + if (id) { + lookupBy = { id, havingMemberWithId: userId }; + } else if (slug) { + lookupBy = { slug, havingMemberWithId: userId }; + } else { + throw new Error("Must provide either id or slug"); + } + + const arg = { + lookupBy, + forOrgWithSlug: orgSlug ?? null, + isOrg: !!isOrgView, + teamSelect: { + id: true, + name: true, + slug: true, + isOrganization: true, + logoUrl: true, + bio: true, + hideBranding: true, + hideBookATeamMember: true, + isPrivate: true, + metadata: true, + parent: { + select: { + id: true, + slug: true, + name: true, + isPrivate: true, + isOrganization: true, + logoUrl: true, + metadata: true, + }, + }, + parentId: true, + children: { + select: { + name: true, + slug: true, + }, + }, + theme: true, + brandColor: true, + darkBrandColor: true, + inviteTokens: { + select: { + token: true, + expires: true, + expiresInDays: true, + identifier: true, + }, + }, + }, + } as const; + + const teamOrOrg = isOrgView ? await getOrg(arg) : await getTeam(arg); + + if (!teamOrOrg) return null; + + // Don't leak invite tokens to the frontend + const { inviteTokens, ...teamWithoutInviteTokens } = teamOrOrg; + + // Don't leak stripe payment ids + const teamMetadata = teamOrOrg.metadata; + const { + paymentId: _, + subscriptionId: __, + subscriptionItemId: ___, + ...restTeamMetadata + } = teamMetadata || {}; + + return { + ...teamWithoutInviteTokens, + ...(teamWithoutInviteTokens.logoUrl ? { logo: teamWithoutInviteTokens.logoUrl } : {}), + /** To prevent breaking we only return non-email attached token here, if we have one */ + inviteToken: inviteTokens.find( + (token) => + token.identifier === `invite-link-for-teamId-${teamOrOrg.id}` && + token.expires > new Date(new Date().setHours(24)) + ), + metadata: restTeamMetadata, + }; +} + // also returns team export async function isTeamAdmin(userId: number, teamId: number) { const team = await prisma.membership.findFirst({ diff --git a/packages/lib/server/repository/membership.ts b/packages/lib/server/repository/membership.ts index 0b843d26cd6f4b..c0c7226edd97a9 100644 --- a/packages/lib/server/repository/membership.ts +++ b/packages/lib/server/repository/membership.ts @@ -222,4 +222,13 @@ export class MembershipRepository { }, }); } + + static async findFirstByUserIdAndTeamId({ userId, teamId }: { userId: number; teamId: number }) { + return await prisma.membership.findFirst({ + where: { + userId, + teamId, + }, + }); + } } diff --git a/packages/trpc/server/routers/viewer/teams/_router.tsx b/packages/trpc/server/routers/viewer/teams/_router.tsx index 115799d73320d9..2dc3bc7599b49e 100644 --- a/packages/trpc/server/routers/viewer/teams/_router.tsx +++ b/packages/trpc/server/routers/viewer/teams/_router.tsx @@ -2,6 +2,7 @@ import authedProcedure from "../../../procedures/authedProcedure"; import { importHandler, router } from "../../../trpc"; import { ZAcceptOrLeaveInputSchema } from "./acceptOrLeave.schema"; import { ZChangeMemberRoleInputSchema } from "./changeMemberRole.schema"; +import { ZCheckIfMembershipExistsInputSchema } from "./checkIfMembershipExists.schema"; import { ZCreateInputSchema } from "./create.schema"; import { ZCreateInviteInputSchema } from "./createInvite.schema"; import { ZDeleteInputSchema } from "./delete.schema"; @@ -9,9 +10,12 @@ import { ZDeleteInviteInputSchema } from "./deleteInvite.schema"; import { ZGetInputSchema } from "./get.schema"; import { ZGetMemberAvailabilityInputSchema } from "./getMemberAvailability.schema"; import { ZGetMembershipbyUserInputSchema } from "./getMembershipbyUser.schema"; +import { ZGetMinimalSchema } from "./getMinimal.schema"; +import { ZGetUserConnectedAppsInputSchema } from "./getUserConnectedApps.schema"; import { ZHasEditPermissionForUserSchema } from "./hasEditPermissionForUser.schema"; import { ZInviteMemberInputSchema } from "./inviteMember/inviteMember.schema"; import { ZInviteMemberByTokenSchemaInputSchema } from "./inviteMemberByToken.schema"; +import { ZLazyLoadMembersInputSchema } from "./lazyLoadMembers.schema"; import { ZGetListSchema } from "./list.schema"; import { ZListMembersInputSchema } from "./listMembers.schema"; import { hasTeamPlan } from "./procedures/hasTeamPlan"; @@ -32,6 +36,11 @@ export const viewerTeamsRouter = router({ const handler = await importHandler(namespaced("get"), () => import("./get.handler")); return handler(opts); }), + // Returns team + getMinimal: authedProcedure.input(ZGetMinimalSchema).query(async (opts) => { + const handler = await importHandler(namespaced("getMinimal"), () => import("./getMinimal.handler")); + return handler(opts); + }), // Returns teams I a member of list: authedProcedure.input(ZGetListSchema).query(async (opts) => { const handler = await importHandler(namespaced("list"), () => import("./list.handler")); @@ -114,6 +123,20 @@ export const viewerTeamsRouter = router({ const handler = await importHandler(namespaced("listMembers"), () => import("./listMembers.handler")); return handler(opts); }), + lazyLoadMembers: authedProcedure.input(ZLazyLoadMembersInputSchema).query(async (opts) => { + const handler = await importHandler( + namespaced("lazyLoadMembers"), + () => import("./lazyLoadMembers.handler") + ); + return handler(opts); + }), + getUserConnectedApps: authedProcedure.input(ZGetUserConnectedAppsInputSchema).query(async (opts) => { + const handler = await importHandler( + namespaced("getUserConnectedApps"), + () => import("./getUserConnectedApps.handler") + ); + return handler(opts); + }), hasTeamPlan, listInvites: authedProcedure.query(async (opts) => { const handler = await importHandler(namespaced("listInvites"), () => import("./listInvites.handler")); @@ -162,4 +185,13 @@ export const viewerTeamsRouter = router({ ); return handler(opts); }), + checkIfMembershipExists: authedProcedure + .input(ZCheckIfMembershipExistsInputSchema) + .mutation(async (opts) => { + const handler = await importHandler( + namespaced("checkIfMembershipExists"), + () => import("./checkIfMembershipExists.handler") + ); + return handler(opts); + }), }); diff --git a/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.handler.ts b/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.handler.ts new file mode 100644 index 00000000000000..efa7ffa7da99e1 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.handler.ts @@ -0,0 +1,35 @@ +import { prisma } from "@calcom/prisma"; + +import type { TrpcSessionUser } from "../../../trpc"; +import type { TCheckIfMembershipExistsInputSchema } from "./checkIfMembershipExists.schema"; + +type CheckIfMembershipExistsOptions = { + ctx: { + user: NonNullable; + }; + input: TCheckIfMembershipExistsInputSchema; +}; + +const checkIfMembershipExistsHandler = async ({ ctx, input }: CheckIfMembershipExistsOptions) => { + const { teamId, value } = input; + + const membership = await prisma.membership.findFirst({ + where: { + teamId, + user: { + OR: [ + { + email: value, + }, + { + username: value, + }, + ], + }, + }, + }); + + return !!membership; +}; + +export default checkIfMembershipExistsHandler; diff --git a/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.schema.ts b/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.schema.ts new file mode 100644 index 00000000000000..a7b7f7e19b3de0 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/checkIfMembershipExists.schema.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; + +export const ZCheckIfMembershipExistsInputSchema = z.object({ + teamId: z.number(), + value: z.string(), +}); + +export type TCheckIfMembershipExistsInputSchema = z.infer; diff --git a/packages/trpc/server/routers/viewer/teams/getMinimal.handler.test.ts b/packages/trpc/server/routers/viewer/teams/getMinimal.handler.test.ts new file mode 100644 index 00000000000000..a36066aab17b09 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/getMinimal.handler.test.ts @@ -0,0 +1,81 @@ +import { + createBookingScenario, + TestData, + getOrganizer, + getScenarioData, +} from "@calcom/web/test/utils/bookingScenario/bookingScenario"; + +import { describe, it, beforeEach, vi, expect } from "vitest"; + +import type { TrpcSessionUser } from "../../../trpc"; +import getTeamWithMinimalData from "./getMinimal.handler"; + +describe("getTeamWithMinimalData", () => { + beforeEach(() => { + // Reset all mocks before each test + vi.clearAllMocks(); + }); + + it("should return team", async () => { + const team = { + id: 1, + name: "Team 1", + slug: "team-1", + }; + + const organizer = getOrganizer({ + name: "Organizer", + email: "organizer@example.com", + id: 101, + schedules: [TestData.schedules.IstWorkHours], + teams: [ + { + membership: { + role: "ADMIN", + accepted: true, + }, + team, + }, + ], + }); + + await createBookingScenario( + getScenarioData({ + eventTypes: [ + { + id: 1, + slotInterval: 30, + length: 30, + users: [ + { + id: 101, + }, + ], + }, + ], + organizer, + }) + ); + + const ctx = { + user: { + id: organizer.id, + name: organizer.name, + } as NonNullable, + }; + + const result = await getTeamWithMinimalData({ + ctx, + input: { + teamId: team.id, + }, + }); + + expect(result).toContain({ + id: team.id, + name: team.name, + slug: team.slug, + isOrganization: false, + }); + }); +}); diff --git a/packages/trpc/server/routers/viewer/teams/getMinimal.handler.ts b/packages/trpc/server/routers/viewer/teams/getMinimal.handler.ts new file mode 100644 index 00000000000000..f3b44e322007d0 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/getMinimal.handler.ts @@ -0,0 +1,49 @@ +import { getMinimalTeam } from "@calcom/lib/server/queries/teams"; +import { MembershipRepository } from "@calcom/lib/server/repository/membership"; + +import { TRPCError } from "@trpc/server"; + +import type { TrpcSessionUser } from "../../../trpc"; +import type { TGetMinimalInputSchema } from "./getMinimal.schema"; + +type GetMinimalDataOptions = { + ctx: { + user: NonNullable; + }; + input: TGetMinimalInputSchema; +}; + +export const getMinimal = async ({ ctx, input }: GetMinimalDataOptions) => { + const teamMembership = await MembershipRepository.findFirstByUserIdAndTeamId({ + userId: ctx.user.id, + teamId: input.teamId, + }); + + if (!teamMembership) { + throw new TRPCError({ + code: "UNAUTHORIZED", + message: "You are not a member of this team.", + }); + } + + const team = await getMinimalTeam({ + id: input.teamId, + userId: ctx.user.organization?.isOrgAdmin ? undefined : ctx.user.id, + isOrgView: input?.isOrg, + }); + + if (!team) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "Team not found", + }); + } + + const membership = { + role: teamMembership.role, + accepted: teamMembership.accepted, + }; + return { ...team, membership }; +}; + +export default getMinimal; diff --git a/packages/trpc/server/routers/viewer/teams/getMinimal.schema.ts b/packages/trpc/server/routers/viewer/teams/getMinimal.schema.ts new file mode 100644 index 00000000000000..0237b1fef09a77 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/getMinimal.schema.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; + +export const ZGetMinimalSchema = z.object({ + teamId: z.number(), + isOrg: z.boolean().optional(), +}); + +export type TGetMinimalInputSchema = z.infer; diff --git a/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.handler.ts b/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.handler.ts new file mode 100644 index 00000000000000..2c89d9e36021c8 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.handler.ts @@ -0,0 +1,158 @@ +import { Prisma } from "@prisma/client"; + +import { getAppFromSlug } from "@calcom/app-store/utils"; +import { prisma } from "@calcom/prisma"; +import type { AppCategories } from "@calcom/prisma/enums"; +import type { TrpcSessionUser } from "@calcom/trpc/server/trpc"; + +import type { TGetUserConnectedAppsInputSchema } from "./getUserConnectedApps.schema"; + +type GetUserConnectedAppsOptions = { + ctx: { + user: NonNullable; + }; + input: TGetUserConnectedAppsInputSchema; +}; + +const credentialSelect = Prisma.validator()({ + userId: true, + app: { + select: { + slug: true, + categories: true, + }, + }, + destinationCalendars: { + select: { + externalId: true, + }, + }, +}); + +type Credential = Prisma.CredentialGetPayload<{ select: typeof credentialSelect }>; + +type Apps = { + name: string | null; + logo: string | null; + externalId: string | null; + app: { slug: string; categories: AppCategories[] } | null; +}; + +// This should improve performance saving already app data found. +const appDataMap = new Map(); + +const checkCanUserAccessConnectedApps = async ( + user: NonNullable, + teamId: number, + userIds: number[] +) => { + // Check if the user is a member of the team or an admin/owner of the org + const team = await prisma.team.findUnique({ + where: { id: teamId }, + select: { + id: true, + parent: { + select: { + id: true, + }, + }, + }, + }); + + if (!team) { + throw new Error("Team not found"); + } + + const isMember = await prisma.membership.findFirst({ + where: { + userId: user.id, + teamId: teamId, + }, + }); + + const isOrgAdminOrOwner = + team.parent && + (await prisma.membership.findFirst({ + where: { + userId: user.id, + teamId: team.parent.id, + OR: [{ role: "ADMIN" }, { role: "OWNER" }], + }, + })); + + if (!isMember && !isOrgAdminOrOwner) { + throw new Error("User is not authorized to access this team's connected apps"); + } + + // Check if all userIds belong to the team + const teamMembers = await prisma.membership.findMany({ + where: { + teamId, + userId: { + in: userIds, + }, + }, + select: { + userId: true, + }, + }); + + if (teamMembers.length !== userIds.length) { + const teamMemberIds = teamMembers.map((member) => member.userId); + const invalidUserIds = userIds.filter((id) => !teamMemberIds.includes(id)); + + if (invalidUserIds.length > 0) { + throw new Error(`Some user IDs do not belong to the team: ${invalidUserIds.join(", ")}`); + } + } +}; + +export const getUserConnectedAppsHandler = async ({ ctx, input }: GetUserConnectedAppsOptions) => { + const { userIds, teamId } = input; + + await checkCanUserAccessConnectedApps(ctx.user, teamId, userIds); + + const credentialsPromises: Promise[] = []; + const userConnectedAppsMap: Record = {}; + + for (const userId of userIds) { + const cred = prisma.credential.findMany({ + where: { + userId, + }, + select: credentialSelect, + }); + credentialsPromises.push(cred); + } + + const credentialsList = await Promise.all(credentialsPromises); + + for (const credentials of credentialsList) { + const userId = credentials[0]?.userId; + + if (userId) { + userConnectedAppsMap[userId] = credentials?.map((cred) => { + const appSlug = cred.app?.slug; + let appData = appDataMap.get(appSlug); + + if (!appData) { + appData = getAppFromSlug(appSlug); + appDataMap.set(appSlug, appData); + } + + const isCalendar = cred?.app?.categories?.includes("calendar") ?? false; + const externalId = isCalendar ? cred.destinationCalendars?.[0]?.externalId : null; + return { + name: appData?.name ?? null, + logo: appData?.logo ?? null, + app: cred.app, + externalId: externalId ?? null, + }; + }); + } + } + + return userConnectedAppsMap; +}; + +export default getUserConnectedAppsHandler; diff --git a/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.schema.ts b/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.schema.ts new file mode 100644 index 00000000000000..4f7a4d84d881f3 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/getUserConnectedApps.schema.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; + +export const ZGetUserConnectedAppsInputSchema = z.object({ + userIds: z.array(z.number()), + teamId: z.number(), +}); + +export type TGetUserConnectedAppsInputSchema = z.infer; diff --git a/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.handler.ts b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.handler.ts new file mode 100644 index 00000000000000..8ca563ab422b67 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.handler.ts @@ -0,0 +1,150 @@ +import { Prisma } from "@prisma/client"; + +// import { getAppFromSlug } from "@calcom/app-store/utils"; +import { getBookerBaseUrlSync } from "@calcom/lib/getBookerUrl/client"; +import { UserRepository } from "@calcom/lib/server/repository/user"; +import prisma from "@calcom/prisma"; +import { MembershipRole } from "@calcom/prisma/enums"; +import type { TrpcSessionUser } from "@calcom/trpc/server/trpc"; + +import { TRPCError } from "@trpc/server"; + +import type { TLazyLoadMembersInputSchema } from "./lazyLoadMembers.schema"; + +type LazyLoadMembersHandlerOptions = { + ctx: { + user: NonNullable; + }; + input: TLazyLoadMembersInputSchema; +}; + +const userSelect = Prisma.validator()({ + username: true, + email: true, + name: true, + avatarUrl: true, + id: true, + bio: true, + disableImpersonation: true, +}); + +export const lazyLoadMembersHandler = async ({ ctx, input }: LazyLoadMembersHandlerOptions) => { + const { cursor, limit, teamId, searchTerm } = input; + + const canAccessMembers = await checkCanAccessMembers(ctx, teamId); + + if (!canAccessMembers) { + throw new TRPCError({ + code: "UNAUTHORIZED", + message: "You are not authorized to see members of the team", + }); + } + + const teamMembers = await prisma.membership.findMany({ + where: { + teamId, + ...(searchTerm && { + user: { + OR: [ + { + email: { + contains: searchTerm, + mode: "insensitive", + }, + }, + { + username: { + contains: searchTerm, + mode: "insensitive", + }, + }, + { + name: { + contains: searchTerm, + mode: "insensitive", + }, + }, + ], + }, + }), + }, + select: { + id: true, + role: true, + accepted: true, + user: { + select: userSelect, + }, + }, + cursor: cursor ? { id: cursor } : undefined, + take: limit + 1, // We take +1 as itll be used for the next cursor + orderBy: { + id: "asc", + }, + }); + + let nextCursor: typeof cursor | undefined = undefined; + if (teamMembers && teamMembers.length > limit) { + const nextItem = teamMembers.pop(); + nextCursor = nextItem?.id; + } + + const membersWithApps = await Promise.all( + teamMembers.map(async (member) => { + const user = await UserRepository.enrichUserWithItsProfile({ + user: member.user, + }); + const { profile, ...restUser } = user; + return { + ...restUser, + username: profile?.username ?? restUser.username, + role: member.role, + profile: profile, + organizationId: profile?.organizationId ?? null, + organization: profile?.organization, + accepted: member.accepted, + disableImpersonation: user.disableImpersonation, + bookerUrl: getBookerBaseUrlSync(profile?.organization?.slug || ""), + }; + }) + ); + + return { members: membersWithApps, nextCursor }; +}; + +const checkCanAccessMembers = async (ctx: LazyLoadMembersHandlerOptions["ctx"], teamId: number) => { + const isOrgPrivate = ctx.user.profile?.organization?.isPrivate; + const isOrgAdminOrOwner = ctx.user.organization?.isOrgAdmin; + const orgId = ctx.user.organizationId; + const isTargetingOrg = teamId === ctx.user.organizationId; + + if (isTargetingOrg) { + return isOrgPrivate && !isOrgAdminOrOwner; + } + const team = await prisma.team.findUnique({ + where: { + id: teamId, + }, + }); + + if (isOrgAdminOrOwner && team?.parentId === orgId) { + return true; + } + + const membership = await prisma.membership.findFirst({ + where: { + teamId, + userId: ctx.user.id, + }, + }); + + const isTeamAdminOrOwner = + membership?.role === MembershipRole.OWNER || membership?.role === MembershipRole.ADMIN; + + if (team?.isPrivate && !isTeamAdminOrOwner) { + return false; + } + return true; +}; + +export default lazyLoadMembersHandler; diff --git a/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.schema.ts b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.schema.ts new file mode 100644 index 00000000000000..a19c8a28ecab1e --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.schema.ts @@ -0,0 +1,10 @@ +import { z } from "zod"; + +export const ZLazyLoadMembersInputSchema = z.object({ + teamId: z.number(), + limit: z.number().default(10), + searchTerm: z.string().optional(), + cursor: z.number().optional().nullable(), +}); + +export type TLazyLoadMembersInputSchema = z.infer; diff --git a/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.test.ts b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.test.ts new file mode 100644 index 00000000000000..7da07844faf1a5 --- /dev/null +++ b/packages/trpc/server/routers/viewer/teams/lazyLoadMembers.test.ts @@ -0,0 +1,277 @@ +import { + createBookingScenario, + TestData, + getOrganizer, + getScenarioData, + addUsers, +} from "@calcom/web/test/utils/bookingScenario/bookingScenario"; + +import { describe, it, beforeEach, vi, expect } from "vitest"; + +import type { TrpcSessionUser } from "../../../trpc"; +import lazyLoadMembers from "./lazyLoadMembers.handler"; + +const createTeamWithMembers = async ({ isPrivate = false }: { isPrivate?: boolean }) => { + const team = { + id: 1, + name: "Team 1", + slug: "team-1", + isPrivate, + }; + + const organizer = getOrganizer({ + name: "Organizer", + email: "organizer@example.com", + id: 101, + schedules: [TestData.schedules.IstWorkHours], + teams: [ + { + membership: { + role: "ADMIN", + accepted: true, + }, + team, + }, + ], + }); + + const user2 = getOrganizer({ + name: "User 2", + email: "user2@example.com", + id: 102, + schedules: [TestData.schedules.IstWorkHours], + teams: [ + { + membership: { + role: "MEMBER", + accepted: true, + }, + team, + }, + ], + }); + + const user3 = getOrganizer({ + name: "User 3", + email: "user3@example.com", + id: 103, + schedules: [TestData.schedules.IstWorkHours], + teams: [ + { + membership: { + role: "MEMBER", + accepted: true, + }, + team, + }, + ], + }); + + await createBookingScenario( + getScenarioData({ + eventTypes: [ + { + id: 1, + slotInterval: 30, + length: 30, + users: [ + { + id: 101, + }, + ], + }, + ], + organizer, + usersApartFromOrganizer: [user2, user3], + }) + ); + + return { + team, + organizer, + user2, + user3, + }; +}; + +describe("lazyLoadMembers", () => { + beforeEach(() => { + // Reset all mocks before each test + vi.clearAllMocks(); + }); + + it("should return team members for teams", async () => { + const { team, organizer, user2, user3 } = await createTeamWithMembers({ isPrivate: false }); + + const ctx = { + user: { + id: organizer.id, + name: organizer.name, + } as NonNullable, + }; + + const result = await lazyLoadMembers({ + ctx, + input: { + teamId: team.id, + limit: 10, + }, + }); + + expect(result.members).toEqual([ + expect.objectContaining({ + id: organizer.id, + name: organizer.name, + username: organizer.username, + }), + expect.objectContaining({ + id: user2.id, + name: user2.name, + username: user2.username, + }), + expect.objectContaining({ + id: user3.id, + name: user3.name, + username: user3.username, + }), + ]); + }); + + it("should return team members for private teams", async () => { + const { team, organizer, user2, user3 } = await createTeamWithMembers({ isPrivate: true }); + + //Logged in user is admin of the team + const ctx = { + user: { + id: organizer.id, + name: organizer.name, + } as NonNullable, + }; + + const result = await lazyLoadMembers({ + ctx, + input: { + teamId: team.id, + limit: 10, + }, + }); + + expect(result.members).toEqual([ + expect.objectContaining({ + id: organizer.id, + name: organizer.name, + username: organizer.username, + }), + expect.objectContaining({ + id: user2.id, + name: user2.name, + username: user2.username, + }), + expect.objectContaining({ + id: user3.id, + name: user3.name, + username: user3.username, + }), + ]); + }); + + it("should throw error if user is not admin/owner of the private team", async () => { + const { team, user2 } = await createTeamWithMembers({ isPrivate: true }); + + //Logged in user is not admin/owner of the team + const nonAdminUserCtx = { + user: { + id: user2.id, + name: user2.name, + } as NonNullable, + }; + + await expect( + lazyLoadMembers({ + ctx: nonAdminUserCtx, + input: { + teamId: team.id, + limit: 10, + }, + }) + ).rejects.toThrowError("You are not authorized to see members of the team"); + }); + + it("should throw error if user is not part of the private team", async () => { + const { team } = await createTeamWithMembers({ isPrivate: true }); + + const newUser = getOrganizer({ + name: "New User", + email: "newuser@example.com", + id: 104, + schedules: [TestData.schedules.IstWorkHours], + }); + + addUsers([newUser]); + + //Logged in user is not part of the team + const nonAdminUserCtx = { + user: { + id: newUser.id, + name: newUser.name, + } as NonNullable, + }; + + await expect( + lazyLoadMembers({ + ctx: nonAdminUserCtx, + input: { + teamId: team.id, + limit: 10, + }, + }) + ).rejects.toThrowError("You are not authorized to see members of the team"); + }); + + it("can search by name or email", async () => { + const { team, organizer } = await createTeamWithMembers({ isPrivate: false }); + + const ctx = { + user: { + id: organizer.id, + name: organizer.name, + } as NonNullable, + }; + + // Search by email + const searchByEmail = await lazyLoadMembers({ + ctx, + input: { + teamId: team.id, + limit: 10, + searchTerm: "organizer", + }, + }); + + expect(searchByEmail.members).toEqual([ + expect.objectContaining({ + id: organizer.id, + name: organizer.name, + username: organizer.username, + }), + ]); + + // Search by name + const searchByName = await lazyLoadMembers({ + ctx, + input: { + teamId: team.id, + limit: 10, + searchTerm: organizer.name, + }, + }); + + expect(searchByName.members).toEqual([ + expect.objectContaining({ + id: organizer.id, + name: organizer.name, + username: organizer.username, + }), + ]); + }); +}); From 4424aa5b38dbd26bd3e1d19b4f4957fe862f7b36 Mon Sep 17 00:00:00 2001 From: Sy Sagar <93787385+SySagar@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:46:13 +0530 Subject: [PATCH 19/64] chore: Bulk update desc (#16343) * chore(locale-en): update bulk modal description * chore: schedule bulk-modal description --------- Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> --- apps/web/components/apps/AppList.tsx | 1 + apps/web/pages/availability/index.tsx | 1 + apps/web/public/static/locales/en/common.json | 1 + .../eventtypes/components/BulkEditDefaultForEventsModal.tsx | 3 ++- packages/platform/atoms/availability/AvailabilitySettings.tsx | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/web/components/apps/AppList.tsx b/apps/web/components/apps/AppList.tsx index e7eda10f0a4653..2b73559cf3f7a7 100644 --- a/apps/web/components/apps/AppList.tsx +++ b/apps/web/components/apps/AppList.tsx @@ -183,6 +183,7 @@ export const AppList = ({ data, handleDisconnect, variant, listClassName }: AppL open={bulkUpdateModal} setOpen={setBulkUpdateModal} isPending={updateLocationsMutation.isPending} + description={t("default_conferencing_bulk_description")} /> )} diff --git a/apps/web/pages/availability/index.tsx b/apps/web/pages/availability/index.tsx index 6c0713c75ece41..25c8540b5b4bee 100644 --- a/apps/web/pages/availability/index.tsx +++ b/apps/web/pages/availability/index.tsx @@ -149,6 +149,7 @@ export function AvailabilityList({ schedules }: RouterOutputs["viewer"]["availab open={bulkUpdateModal} setOpen={setBulkUpdateModal} bulkUpdateFunction={bulkUpdateDefaultAvailabilityMutation.mutate} + description={t("default_schedules_bulk_description")} /> )} diff --git a/apps/web/public/static/locales/en/common.json b/apps/web/public/static/locales/en/common.json index 9e781641f9669b..05bf3725192f40 100644 --- a/apps/web/public/static/locales/en/common.json +++ b/apps/web/public/static/locales/en/common.json @@ -1960,6 +1960,7 @@ "members_default_schedule_description": "We will use each members default availability schedule. They will be able to edit or change it.", "requires_at_least_one_schedule": "You are required to have at least one schedule", "default_conferencing_bulk_description": "Update the locations for the selected event types", + "default_schedules_bulk_description": "Update the schedules for the selected event types", "locked_for_members": "Locked for members", "unlocked_for_members": "Unlocked for members", "apps_locked_for_members_description": "Members will be able to see the active apps but will not be able to edit any app settings", diff --git a/packages/features/eventtypes/components/BulkEditDefaultForEventsModal.tsx b/packages/features/eventtypes/components/BulkEditDefaultForEventsModal.tsx index 5f3482dfd9f47b..6786fe0808b26b 100644 --- a/packages/features/eventtypes/components/BulkEditDefaultForEventsModal.tsx +++ b/packages/features/eventtypes/components/BulkEditDefaultForEventsModal.tsx @@ -15,6 +15,7 @@ export function BulkEditDefaultForEventsModal(props: { setOpen: (open: boolean) => void; bulkUpdateFunction: ({ eventTypeIds }: { eventTypeIds: number[] }) => void; isPending: boolean; + description: string; }) { const { t } = useLocale(); const utils = trpc.useUtils(); @@ -36,7 +37,7 @@ export function BulkEditDefaultForEventsModal(props: {
)} From cf50566a1056ee031831282522b290ddd8a67840 Mon Sep 17 00:00:00 2001 From: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:52:42 +0400 Subject: [PATCH 20/64] feat: Org Webhooks API V2 (#16274) * --init * add is webhook in org guard * -- * doc * e2e * --feedback * -- * fix typo * delete unnecessary file * fix v2 e2e * fix v2 e2e * fix e2e * fix v2 e2e --------- Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> --- .../organizations/is-webhook-in-org.guard.ts | 67 ++++ .../organizations-membership.controller.ts | 8 +- .../organizations-webhooks.controller.ts | 147 ++++++++ .../organizations-webhooks.e2e-spec.ts | 211 +++++++++++ .../organizations/organizations.module.ts | 14 + .../organizations-webhooks.repository.ts | 71 ++++ .../organizations-webhooks.service.ts | 45 +++ .../webhooks/outputs/team-webhook.output.ts | 37 ++ apps/api/v2/swagger/documentation.json | 327 +++++++++++++++++- 9 files changed, 922 insertions(+), 5 deletions(-) create mode 100644 apps/api/v2/src/modules/auth/guards/organizations/is-webhook-in-org.guard.ts create mode 100644 apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts create mode 100644 apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.e2e-spec.ts create mode 100644 apps/api/v2/src/modules/organizations/repositories/organizations-webhooks.repository.ts create mode 100644 apps/api/v2/src/modules/organizations/services/organizations-webhooks.service.ts create mode 100644 apps/api/v2/src/modules/webhooks/outputs/team-webhook.output.ts diff --git a/apps/api/v2/src/modules/auth/guards/organizations/is-webhook-in-org.guard.ts b/apps/api/v2/src/modules/auth/guards/organizations/is-webhook-in-org.guard.ts new file mode 100644 index 00000000000000..0dbdc9fe651023 --- /dev/null +++ b/apps/api/v2/src/modules/auth/guards/organizations/is-webhook-in-org.guard.ts @@ -0,0 +1,67 @@ +import { OrganizationsRepository } from "@/modules/organizations/organizations.repository"; +import { OrganizationsWebhooksRepository } from "@/modules/organizations/repositories/organizations-webhooks.repository"; +import { RedisService } from "@/modules/redis/redis.service"; +import { Injectable, CanActivate, ExecutionContext, ForbiddenException } from "@nestjs/common"; +import { Request } from "express"; + +import { Team } from "@calcom/prisma/client"; + +type CachedData = { + org?: Team; + canAccess?: boolean; +}; + +@Injectable() +export class IsWebhookInOrg implements CanActivate { + constructor( + private organizationsRepository: OrganizationsRepository, + private organizationsWebhooksRepository: OrganizationsWebhooksRepository, + private readonly redisService: RedisService + ) {} + + async canActivate(context: ExecutionContext): Promise { + let canAccess = false; + const request = context.switchToHttp().getRequest(); + const webhookId: string = request.params.webhookId; + const organizationId: string = request.params.orgId; + + if (!organizationId) { + throw new ForbiddenException("No organization id found in request params."); + } + if (!webhookId) { + throw new ForbiddenException("No webhook id found in request params."); + } + + const REDIS_CACHE_KEY = `apiv2:org:${webhookId}:guard:isWebhookInOrg`; + const cachedData = await this.redisService.redis.get(REDIS_CACHE_KEY); + + if (cachedData) { + const { org: cachedOrg, canAccess: cachedCanAccess } = JSON.parse(cachedData) as CachedData; + if (cachedOrg?.id === Number(organizationId) && cachedCanAccess !== undefined) { + request.organization = cachedOrg; + return cachedCanAccess; + } + } + + const org = await this.organizationsRepository.findById(Number(organizationId)); + + if (org?.isOrganization) { + const isWebhookInOrg = await this.organizationsWebhooksRepository.findWebhook( + Number(organizationId), + webhookId + ); + if (isWebhookInOrg) canAccess = true; + } + + if (org) { + await this.redisService.redis.set( + REDIS_CACHE_KEY, + JSON.stringify({ org: org, canAccess } satisfies CachedData), + "EX", + 300 + ); + } + + return canAccess; + } +} diff --git a/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts b/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts index ec285632653e63..65868bc732447c 100644 --- a/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts +++ b/apps/api/v2/src/modules/organizations/controllers/memberships/organizations-membership.controller.ts @@ -1,6 +1,5 @@ import { API_VERSIONS_VALUES } from "@/lib/api-versions"; import { PlatformPlan } from "@/modules/auth/decorators/billing/platform-plan.decorator"; -import { GetMembership } from "@/modules/auth/decorators/get-membership/get-membership.decorator"; import { Roles } from "@/modules/auth/decorators/roles/roles.decorator"; import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; import { PlatformPlanGuard } from "@/modules/auth/guards/billing/platform-plan.guard"; @@ -36,7 +35,6 @@ import { plainToClass } from "class-transformer"; import { SUCCESS_STATUS } from "@calcom/platform-constants"; import { SkipTakePagination } from "@calcom/platform-types"; -import { Membership } from "@calcom/prisma/client"; @Controller({ path: "/v2/organizations/:orgId/memberships", @@ -89,7 +87,11 @@ export class OrganizationsMembershipsController { @UseGuards(IsMembershipInOrg) @Get("/:membershipId") @HttpCode(HttpStatus.OK) - async getUserSchedule(@GetMembership() membership: Membership): Promise { + async getOrgMembership( + @Param("orgId", ParseIntPipe) orgId: number, + @Param("membershipId", ParseIntPipe) membershipId: number + ): Promise { + const membership = await this.organizationsMembershipService.getOrgMembership(orgId, membershipId); return { status: SUCCESS_STATUS, data: plainToClass(OrgMembershipOutputDto, membership, { strategy: "excludeAll" }), diff --git a/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts new file mode 100644 index 00000000000000..7f26d7546e4aac --- /dev/null +++ b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.controller.ts @@ -0,0 +1,147 @@ +import { API_VERSIONS_VALUES } from "@/lib/api-versions"; +import { PlatformPlan } from "@/modules/auth/decorators/billing/platform-plan.decorator"; +import { Roles } from "@/modules/auth/decorators/roles/roles.decorator"; +import { ApiAuthGuard } from "@/modules/auth/guards/api-auth/api-auth.guard"; +import { PlatformPlanGuard } from "@/modules/auth/guards/billing/platform-plan.guard"; +import { IsAdminAPIEnabledGuard } from "@/modules/auth/guards/organizations/is-admin-api-enabled.guard"; +import { IsOrgGuard } from "@/modules/auth/guards/organizations/is-org.guard"; +import { IsWebhookInOrg } from "@/modules/auth/guards/organizations/is-webhook-in-org.guard"; +import { RolesGuard } from "@/modules/auth/guards/roles/roles.guard"; +import { OrganizationsWebhooksService } from "@/modules/organizations/services/organizations-webhooks.service"; +import { CreateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { + TeamWebhookOutputDto as OrgWebhookOutputDto, + TeamWebhookOutputResponseDto as OrgWebhookOutputResponseDto, + TeamWebhooksOutputResponseDto as OrgWebhooksOutputResponseDto, +} from "@/modules/webhooks/outputs/team-webhook.output"; +import { PartialWebhookInputPipe, WebhookInputPipe } from "@/modules/webhooks/pipes/WebhookInputPipe"; +import { WebhookOutputPipe } from "@/modules/webhooks/pipes/WebhookOutputPipe"; +import { WebhooksService } from "@/modules/webhooks/services/webhooks.service"; +import { + Controller, + UseGuards, + Get, + Param, + ParseIntPipe, + Query, + Delete, + Patch, + Post, + Body, + HttpCode, + HttpStatus, +} from "@nestjs/common"; +import { ApiTags as DocsTags } from "@nestjs/swagger"; +import { plainToClass } from "class-transformer"; + +import { SUCCESS_STATUS } from "@calcom/platform-constants"; +import { SkipTakePagination } from "@calcom/platform-types"; + +@Controller({ + path: "/v2/organizations/:orgId/webhooks", + version: API_VERSIONS_VALUES, +}) +@UseGuards(ApiAuthGuard, IsOrgGuard, RolesGuard, PlatformPlanGuard, IsAdminAPIEnabledGuard) +@DocsTags("Organizations Webhooks") +export class OrganizationsWebhooksController { + constructor( + private organizationsWebhooksService: OrganizationsWebhooksService, + private webhooksService: WebhooksService + ) {} + + @Roles("ORG_ADMIN") + @PlatformPlan("ESSENTIALS") + @Get("/") + @HttpCode(HttpStatus.OK) + async getAllOrganizationWebhooks( + @Param("orgId", ParseIntPipe) orgId: number, + @Query() queryParams: SkipTakePagination + ): Promise { + const { skip, take } = queryParams; + const webhooks = await this.organizationsWebhooksService.getWebhooksPaginated( + orgId, + skip ?? 0, + take ?? 250 + ); + return { + status: SUCCESS_STATUS, + data: webhooks.map((webhook) => + plainToClass(OrgWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }) + ), + }; + } + + @Roles("ORG_ADMIN") + @PlatformPlan("ESSENTIALS") + @Post("/") + @HttpCode(HttpStatus.CREATED) + async createOrganizationWebhook( + @Param("orgId", ParseIntPipe) orgId: number, + @Body() body: CreateWebhookInputDto + ): Promise { + const webhook = await this.organizationsWebhooksService.createWebhook( + orgId, + new WebhookInputPipe().transform(body) + ); + return { + status: SUCCESS_STATUS, + data: plainToClass(OrgWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Roles("ORG_ADMIN") + @PlatformPlan("ESSENTIALS") + @UseGuards(IsWebhookInOrg) + @Get("/:webhookId") + @HttpCode(HttpStatus.OK) + async getOrganizationWebhook(@Param("webhookId") webhookId: string): Promise { + const webhook = await this.organizationsWebhooksService.getWebhook(webhookId); + return { + status: SUCCESS_STATUS, + data: plainToClass(OrgWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Roles("ORG_ADMIN") + @PlatformPlan("ESSENTIALS") + @UseGuards(IsWebhookInOrg) + @Delete("/:webhookId") + @HttpCode(HttpStatus.OK) + async deleteWebhook(@Param("webhookId") webhookId: string): Promise { + const webhook = await this.webhooksService.deleteWebhook(webhookId); + return { + status: SUCCESS_STATUS, + data: plainToClass(OrgWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } + + @Roles("ORG_ADMIN") + @PlatformPlan("ESSENTIALS") + @UseGuards(IsWebhookInOrg) + @Patch("/:webhookId") + @HttpCode(HttpStatus.OK) + async updateOrgWebhook( + @Param("webhookId") webhookId: string, + @Body() body: UpdateWebhookInputDto + ): Promise { + const webhook = await this.organizationsWebhooksService.updateWebhook( + webhookId, + new PartialWebhookInputPipe().transform(body) + ); + return { + status: SUCCESS_STATUS, + data: plainToClass(OrgWebhookOutputDto, new WebhookOutputPipe().transform(webhook), { + strategy: "excludeAll", + }), + }; + } +} diff --git a/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.e2e-spec.ts b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.e2e-spec.ts new file mode 100644 index 00000000000000..8b23a250a6f406 --- /dev/null +++ b/apps/api/v2/src/modules/organizations/controllers/webhooks/organizations-webhooks.e2e-spec.ts @@ -0,0 +1,211 @@ +import { bootstrap } from "@/app"; +import { AppModule } from "@/app.module"; +import { PrismaModule } from "@/modules/prisma/prisma.module"; +import { TokensModule } from "@/modules/tokens/tokens.module"; +import { UsersModule } from "@/modules/users/users.module"; +import { UserWithProfile } from "@/modules/users/users.repository"; +import { CreateWebhookInputDto, UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { + TeamWebhookOutputResponseDto, + TeamWebhooksOutputResponseDto, +} from "@/modules/webhooks/outputs/team-webhook.output"; +import { INestApplication } from "@nestjs/common"; +import { NestExpressApplication } from "@nestjs/platform-express"; +import { Test } from "@nestjs/testing"; +import * as request from "supertest"; +import { MembershipRepositoryFixture } from "test/fixtures/repository/membership.repository.fixture"; +import { OrganizationRepositoryFixture } from "test/fixtures/repository/organization.repository.fixture"; +import { UserRepositoryFixture } from "test/fixtures/repository/users.repository.fixture"; +import { WebhookRepositoryFixture } from "test/fixtures/repository/webhooks.repository.fixture"; +import { withApiAuth } from "test/utils/withApiAuth"; + +import { Team, Webhook } from "@calcom/prisma/client"; + +describe("WebhooksController (e2e)", () => { + let app: INestApplication; + const userEmail = "webhook-controller-e2e@api.com"; + let org: Team; + + let organizationsRepositoryFixture: OrganizationRepositoryFixture; + let webhookRepositoryFixture: WebhookRepositoryFixture; + let userRepositoryFixture: UserRepositoryFixture; + let membershipsRepositoryFixture: MembershipRepositoryFixture; + let webhook: TeamWebhookOutputResponseDto["data"]; + let otherWebhook: Webhook; + let user: UserWithProfile; + + beforeAll(async () => { + const moduleRef = await withApiAuth( + userEmail, + Test.createTestingModule({ + imports: [AppModule, PrismaModule, UsersModule, TokensModule], + }) + ).compile(); + + userRepositoryFixture = new UserRepositoryFixture(moduleRef); + organizationsRepositoryFixture = new OrganizationRepositoryFixture(moduleRef); + webhookRepositoryFixture = new WebhookRepositoryFixture(moduleRef); + membershipsRepositoryFixture = new MembershipRepositoryFixture(moduleRef); + + user = await userRepositoryFixture.create({ + email: userEmail, + username: userEmail, + }); + + org = await organizationsRepositoryFixture.create({ + name: "Test Organization", + isOrganization: true, + }); + + await membershipsRepositoryFixture.create({ + role: "ADMIN", + user: { connect: { id: user.id } }, + team: { connect: { id: org.id } }, + }); + + otherWebhook = await webhookRepositoryFixture.create({ + id: "2mdfnn2", + subscriberUrl: "https://example.com", + eventTriggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + }); + app = moduleRef.createNestApplication(); + bootstrap(app as NestExpressApplication); + + await app.init(); + }); + + afterAll(async () => { + userRepositoryFixture.deleteByEmail(user.email); + webhookRepositoryFixture.delete(otherWebhook.id); + await app.close(); + }); + + it("should be defined", () => { + expect(userRepositoryFixture).toBeDefined(); + expect(user).toBeDefined(); + expect(org).toBeDefined(); + }); + + it("/organizations/:orgId/webhooks (POST)", () => { + return request(app.getHttpServer()) + .post(`/v2/organizations/${org.id}/webhooks`) + .send({ + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + } satisfies CreateWebhookInputDto) + .expect(201) + .then(async (res) => { + process.stdout.write(JSON.stringify(res.body)); + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + teamId: org.id, + }, + } satisfies TeamWebhookOutputResponseDto); + webhook = res.body.data; + }); + }); + + it("/organizations/:orgId/webhooks (POST) should fail to create a webhook that already has same orgId / subcriberUrl combo", () => { + return request(app.getHttpServer()) + .post(`/v2/organizations/${org.id}/webhooks`) + .send({ + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: true, + payloadTemplate: "string", + } satisfies CreateWebhookInputDto) + .expect(409); + }); + + it("/organizations/:orgId/webhooks/:webhookId (PATCH)", () => { + return request(app.getHttpServer()) + .patch(`/v2/organizations/${org.id}/webhooks/${webhook.id}`) + .send({ + active: false, + } satisfies UpdateWebhookInputDto) + .expect(200) + .then((res) => { + expect(res.body.data.active).toBe(false); + }); + }); + + it("/organizations/:orgId/webhooks/:webhookId (GET)", () => { + return request(app.getHttpServer()) + .get(`/v2/organizations/${org.id}/webhooks/${webhook.id}`) + .expect(200) + .then((res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: false, + payloadTemplate: "string", + teamId: org.id, + }, + } satisfies TeamWebhookOutputResponseDto); + }); + }); + + it("/organizations/:orgId/webhooks/:webhookId (GET) should say forbidden to get a webhook that does not exist", () => { + return request(app.getHttpServer()).get(`/v2/organizations/${org.id}/webhooks/90284`).expect(403); + }); + + it("/organizations/:orgId/webhooks/:webhookId (GET) should fail to get a webhook that does not belong to org", () => { + return request(app.getHttpServer()) + .get(`/v2/organizations/${org.id}/webhooks/${otherWebhook.id}`) + .expect(403); + }); + + it("/organizations/:orgId/webhooks (GET)", () => { + return request(app.getHttpServer()) + .get(`/v2/organizations/${org.id}/webhooks`) + .expect(200) + .then((res) => { + const responseBody = res.body as TeamWebhooksOutputResponseDto; + responseBody.data.forEach((webhook) => { + expect(webhook.teamId).toBe(org.id); + }); + }); + }); + + it("/organizations/:orgId/webhooks/:webhookId (DELETE)", () => { + return request(app.getHttpServer()) + .delete(`/v2/organizations/${org.id}/webhooks/${webhook.id}`) + .expect(200) + .then((res) => { + expect(res.body).toMatchObject({ + status: "success", + data: { + id: expect.any(String), + subscriberUrl: "https://example.com", + triggers: ["BOOKING_CREATED", "BOOKING_RESCHEDULED", "BOOKING_CANCELLED"], + active: false, + payloadTemplate: "string", + teamId: org.id, + }, + } satisfies TeamWebhookOutputResponseDto); + }); + }); + + it("/organizations/:orgId/webhooks/:webhookId (DELETE) shoud fail to delete a webhook that does not exist", () => { + return request(app.getHttpServer()).delete(`/v2/organizations/${org.id}/webhooks/12993`).expect(403); + }); + + it("/organizations/:orgId/webhooks/:webhookId (DELETE) shoud fail to delete a webhook that does not belong to org", () => { + return request(app.getHttpServer()) + .delete(`/v2/organizations/${org.id}/webhooks/${otherWebhook.id}`) + .expect(403); + }); +}); diff --git a/apps/api/v2/src/modules/organizations/organizations.module.ts b/apps/api/v2/src/modules/organizations/organizations.module.ts index a2eed9969a0d75..54155ba02e6df0 100644 --- a/apps/api/v2/src/modules/organizations/organizations.module.ts +++ b/apps/api/v2/src/modules/organizations/organizations.module.ts @@ -9,6 +9,7 @@ import { OrganizationsSchedulesController } from "@/modules/organizations/contro import { OrganizationsTeamsMembershipsController } from "@/modules/organizations/controllers/teams/memberships/organizations-teams-memberships.controller"; import { OrganizationsTeamsController } from "@/modules/organizations/controllers/teams/organizations-teams.controller"; import { OrganizationsUsersController } from "@/modules/organizations/controllers/users/organizations-users.controller"; +import { OrganizationsWebhooksController } from "@/modules/organizations/controllers/webhooks/organizations-webhooks.controller"; import { OrganizationsRepository } from "@/modules/organizations/organizations.repository"; import { OrganizationsEventTypesRepository } from "@/modules/organizations/repositories/organizations-event-types.repository"; import { OrganizationsMembershipRepository } from "@/modules/organizations/repositories/organizations-membership.repository"; @@ -16,6 +17,7 @@ import { OrganizationSchedulesRepository } from "@/modules/organizations/reposit import { OrganizationsTeamsMembershipsRepository } from "@/modules/organizations/repositories/organizations-teams-memberships.repository"; import { OrganizationsTeamsRepository } from "@/modules/organizations/repositories/organizations-teams.repository"; import { OrganizationsUsersRepository } from "@/modules/organizations/repositories/organizations-users.repository"; +import { OrganizationsWebhooksRepository } from "@/modules/organizations/repositories/organizations-webhooks.repository"; import { InputOrganizationsEventTypesService } from "@/modules/organizations/services/event-types/input.service"; import { OrganizationsEventTypesService } from "@/modules/organizations/services/event-types/organizations-event-types.service"; import { OutputOrganizationsEventTypesService } from "@/modules/organizations/services/event-types/output.service"; @@ -24,11 +26,14 @@ import { OrganizationsSchedulesService } from "@/modules/organizations/services/ import { OrganizationsTeamsMembershipsService } from "@/modules/organizations/services/organizations-teams-memberships.service"; import { OrganizationsTeamsService } from "@/modules/organizations/services/organizations-teams.service"; import { OrganizationsUsersService } from "@/modules/organizations/services/organizations-users-service"; +import { OrganizationsWebhooksService } from "@/modules/organizations/services/organizations-webhooks.service"; import { OrganizationsService } from "@/modules/organizations/services/organizations.service"; import { PrismaModule } from "@/modules/prisma/prisma.module"; import { RedisModule } from "@/modules/redis/redis.module"; import { StripeModule } from "@/modules/stripe/stripe.module"; import { UsersModule } from "@/modules/users/users.module"; +import { WebhooksService } from "@/modules/webhooks/services/webhooks.service"; +import { WebhooksRepository } from "@/modules/webhooks/webhooks.repository"; import { Module } from "@nestjs/common"; @Module({ @@ -60,6 +65,10 @@ import { Module } from "@nestjs/common"; OrganizationsEventTypesRepository, OrganizationsTeamsMembershipsRepository, OrganizationsTeamsMembershipsService, + OrganizationsWebhooksRepository, + OrganizationsWebhooksService, + WebhooksRepository, + WebhooksService, ], exports: [ OrganizationsService, @@ -71,6 +80,10 @@ import { Module } from "@nestjs/common"; OrganizationsMembershipService, OrganizationsTeamsMembershipsRepository, OrganizationsTeamsMembershipsService, + OrganizationsWebhooksRepository, + OrganizationsWebhooksService, + WebhooksRepository, + WebhooksService, ], controllers: [ OrganizationsTeamsController, @@ -79,6 +92,7 @@ import { Module } from "@nestjs/common"; OrganizationsMembershipsController, OrganizationsEventTypesController, OrganizationsTeamsMembershipsController, + OrganizationsWebhooksController, ], }) export class OrganizationsModule {} diff --git a/apps/api/v2/src/modules/organizations/repositories/organizations-webhooks.repository.ts b/apps/api/v2/src/modules/organizations/repositories/organizations-webhooks.repository.ts new file mode 100644 index 00000000000000..1caec8fd69c936 --- /dev/null +++ b/apps/api/v2/src/modules/organizations/repositories/organizations-webhooks.repository.ts @@ -0,0 +1,71 @@ +import { PrismaReadService } from "@/modules/prisma/prisma-read.service"; +import { PrismaWriteService } from "@/modules/prisma/prisma-write.service"; +import { Injectable } from "@nestjs/common"; +import { v4 as uuidv4 } from "uuid"; + +import { Webhook } from "@calcom/prisma/client"; + +type WebhookInputData = Pick< + Webhook, + "payloadTemplate" | "eventTriggers" | "subscriberUrl" | "secret" | "active" +>; +@Injectable() +export class OrganizationsWebhooksRepository { + constructor(private readonly dbRead: PrismaReadService, private readonly dbWrite: PrismaWriteService) {} + + async findWebhookByUrl(organizationId: number, subscriberUrl: string) { + return this.dbRead.prisma.webhook.findFirst({ + where: { teamId: organizationId, subscriberUrl }, + }); + } + + async findWebhook(organizationId: number, webhookId: string) { + return this.dbRead.prisma.webhook.findUnique({ + where: { + id: webhookId, + teamId: organizationId, + }, + }); + } + + async findWebhooks(organizationId: number) { + return this.dbRead.prisma.webhook.findMany({ + where: { + teamId: organizationId, + }, + }); + } + + async deleteWebhook(organizationId: number, webhookId: string) { + return this.dbRead.prisma.webhook.delete({ + where: { + id: webhookId, + teamId: organizationId, + }, + }); + } + + async createWebhook(organizationId: number, data: WebhookInputData) { + const id = uuidv4(); + return this.dbWrite.prisma.webhook.create({ + data: { ...data, id, teamId: organizationId }, + }); + } + + async updateWebhook(organizationId: number, webhookId: string, data: Partial) { + return this.dbRead.prisma.webhook.update({ + data: { ...data }, + where: { id: webhookId, teamId: organizationId }, + }); + } + + async findWebhooksPaginated(organizationId: number, skip: number, take: number) { + return this.dbRead.prisma.webhook.findMany({ + where: { + teamId: organizationId, + }, + skip, + take, + }); + } +} diff --git a/apps/api/v2/src/modules/organizations/services/organizations-webhooks.service.ts b/apps/api/v2/src/modules/organizations/services/organizations-webhooks.service.ts new file mode 100644 index 00000000000000..574ada6ae38372 --- /dev/null +++ b/apps/api/v2/src/modules/organizations/services/organizations-webhooks.service.ts @@ -0,0 +1,45 @@ +import { OrganizationsWebhooksRepository } from "@/modules/organizations/repositories/organizations-webhooks.repository"; +import { UpdateWebhookInputDto } from "@/modules/webhooks/inputs/webhook.input"; +import { PipedInputWebhookType } from "@/modules/webhooks/pipes/WebhookInputPipe"; +import { WebhooksRepository } from "@/modules/webhooks/webhooks.repository"; +import { ConflictException, Injectable, NotFoundException } from "@nestjs/common"; + +@Injectable() +export class OrganizationsWebhooksService { + constructor( + private readonly organizationsWebhooksRepository: OrganizationsWebhooksRepository, + private readonly webhooksRepository: WebhooksRepository + ) {} + + async createWebhook(orgId: number, body: PipedInputWebhookType) { + const existingWebhook = await this.organizationsWebhooksRepository.findWebhookByUrl( + orgId, + body.subscriberUrl + ); + if (existingWebhook) { + throw new ConflictException("Webhook with this subscriber url already exists for this user"); + } + + return this.organizationsWebhooksRepository.createWebhook(orgId, { + ...body, + payloadTemplate: body.payloadTemplate ?? null, + secret: body.secret ?? null, + }); + } + + async getWebhooksPaginated(orgId: number, skip: number, take: number) { + return this.organizationsWebhooksRepository.findWebhooksPaginated(orgId, skip, take); + } + + async getWebhook(webhookId: string) { + const webhook = await this.webhooksRepository.getWebhookById(webhookId); + if (!webhook) { + throw new NotFoundException(`Webhook (${webhookId}) not found`); + } + return webhook; + } + + async updateWebhook(webhookId: string, body: UpdateWebhookInputDto) { + return this.webhooksRepository.updateWebhook(webhookId, body); + } +} diff --git a/apps/api/v2/src/modules/webhooks/outputs/team-webhook.output.ts b/apps/api/v2/src/modules/webhooks/outputs/team-webhook.output.ts new file mode 100644 index 00000000000000..7e67d99ab6aae7 --- /dev/null +++ b/apps/api/v2/src/modules/webhooks/outputs/team-webhook.output.ts @@ -0,0 +1,37 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { Expose, Type } from "class-transformer"; +import { IsInt, IsEnum, ValidateNested } from "class-validator"; + +import { SUCCESS_STATUS, ERROR_STATUS } from "@calcom/platform-constants"; + +import { WebhookOutputDto } from "./webhook.output"; + +export class TeamWebhookOutputDto extends WebhookOutputDto { + @IsInt() + @Expose() + readonly teamId!: number; +} + +export class TeamWebhookOutputResponseDto { + @Expose() + @ApiProperty({ example: SUCCESS_STATUS, enum: [SUCCESS_STATUS, ERROR_STATUS] }) + @IsEnum([SUCCESS_STATUS, ERROR_STATUS]) + status!: typeof SUCCESS_STATUS | typeof ERROR_STATUS; + + @Expose() + @ValidateNested() + @Type(() => WebhookOutputDto) + data!: TeamWebhookOutputDto; +} + +export class TeamWebhooksOutputResponseDto { + @Expose() + @ApiProperty({ example: SUCCESS_STATUS, enum: [SUCCESS_STATUS, ERROR_STATUS] }) + @IsEnum([SUCCESS_STATUS, ERROR_STATUS]) + status!: typeof SUCCESS_STATUS | typeof ERROR_STATUS; + + @Expose() + @ValidateNested() + @Type(() => WebhookOutputDto) + data!: TeamWebhookOutputDto[]; +} diff --git a/apps/api/v2/swagger/documentation.json b/apps/api/v2/swagger/documentation.json index fb056d87936c3a..94e9df15dbf503 100644 --- a/apps/api/v2/swagger/documentation.json +++ b/apps/api/v2/swagger/documentation.json @@ -1668,8 +1668,25 @@ }, "/v2/organizations/{orgId}/memberships/{membershipId}": { "get": { - "operationId": "OrganizationsMembershipsController_getUserSchedule", - "parameters": [], + "operationId": "OrganizationsMembershipsController_getOrgMembership", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "membershipId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], "responses": { "200": { "description": "", @@ -2268,6 +2285,214 @@ ] } }, + "/v2/organizations/{orgId}/webhooks": { + "get": { + "operationId": "OrganizationsWebhooksController_getAllWebhooks", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "take", + "required": false, + "in": "query", + "description": "The number of items to return", + "example": 10, + "schema": { + "type": "number" + } + }, + { + "name": "skip", + "required": false, + "in": "query", + "description": "The number of items to skip", + "example": 0, + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgWebhooksResponseDto" + } + } + } + } + }, + "tags": [ + "Organizations Webhooks" + ] + }, + "post": { + "operationId": "OrganizationsWebhooksController_createWebhook", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateWebhookInputDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgWebhooksResponseDto" + } + } + } + } + }, + "tags": [ + "Organizations Webhooks" + ] + } + }, + "/v2/organizations/{orgId}/webhooks/{webhookId}": { + "get": { + "operationId": "OrganizationsWebhooksController_getOrgWebhook", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "webhookId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgWebhooksResponseDto" + } + } + } + } + }, + "tags": [ + "Organizations Webhooks" + ] + }, + "delete": { + "operationId": "OrganizationsWebhooksController_deleteWebhook", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "webhookId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgWebhooksResponseDto" + } + } + } + } + }, + "tags": [ + "Organizations Webhooks" + ] + }, + "patch": { + "operationId": "OrganizationsWebhooksController_updateWebhook", + "parameters": [ + { + "name": "orgId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "webhookId", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateWebhookInputDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgWebhooksResponseDto" + } + } + } + } + }, + "tags": [ + "Organizations Webhooks" + ] + } + }, "/v2/schedules": { "post": { "operationId": "SchedulesController_2024_04_15_createSchedule", @@ -9163,6 +9388,84 @@ "active" ] }, + "OrgWebhookOutputDto": { + "type": "object", + "properties": { + "payloadTemplate": { + "type": "string", + "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", + "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" + }, + "teamId": { + "type": "number" + }, + "id": { + "type": "number" + }, + "triggers": { + "type": "array", + "items": { + "type": "object" + } + }, + "subscriberUrl": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "secret": { + "type": "string" + } + }, + "required": [ + "payloadTemplate", + "userId", + "id", + "triggers", + "subscriberUrl", + "active" + ] + }, + "GetAllOrgWebhooksDto": { + "type": "object", + "properties": { + "payloadTemplate": { + "type": "string", + "description": "The template of the payload that will be sent to the subscriberUrl, check cal.com/docs/core-features/webhooks for more information", + "example": "{\"content\":\"A new event has been scheduled\",\"type\":\"{{type}}\",\"name\":\"{{title}}\",\"organizer\":\"{{organizer.name}}\",\"booker\":\"{{attendees.0.name}}\"}" + }, + "teamId": { + "type": "number" + }, + "id": { + "type": "number" + }, + "triggers": { + "type": "array", + "items": { + "type": "object" + } + }, + "subscriberUrl": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "secret": { + "type": "string" + } + }, + "required": [ + "payloadTemplate", + "userId", + "id", + "triggers", + "subscriberUrl", + "active" + ] + }, "UserWebhookOutputResponseDto": { "type": "object", "properties": { @@ -9183,6 +9486,26 @@ "data" ] }, + "OrgWebhooksResponseDto": { + "type": "object", + "properties": { + "status": { + "type": "string", + "example": "success", + "enum": [ + "success", + "error" + ] + }, + "data": { + "$ref": "#/components/schemas/GetAllOrgWebhooksDto" + } + }, + "required": [ + "status", + "data" + ] + }, "UpdateWebhookInputDto": { "type": "object", "properties": { From 933ffcbf6960b29d49b7adcabd27d33699a1e57e Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Thu, 29 Aug 2024 23:22:42 +0900 Subject: [PATCH 21/64] chore: Move Replexica to run on pushes to main (#16394) --- .github/workflows/i18n.yml | 25 +++++++++++++++++++++++++ .github/workflows/pr.yml | 23 ----------------------- 2 files changed, 25 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/i18n.yml diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml new file mode 100644 index 00000000000000..e469c75b498f3d --- /dev/null +++ b/.github/workflows/i18n.yml @@ -0,0 +1,25 @@ +name: Run i18n AI automation +on: + push: + branches: + - main +concurrency: + group: ${{ github.workflow }}-main + cancel-in-progress: false + +jobs: + i18n: + name: Run i18n + runs-on: buildjet-2vcpu-ubuntu-2204 + permissions: + actions: write + contents: write + pull-requests: write + steps: + - uses: actions/checkout@v4 + - uses: replexica/replexica@main + env: + GH_TOKEN: ${{ github.token }} + with: + api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} + pull-request: true diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index c9b8494dd3e73f..027d32363adcc3 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -97,29 +97,6 @@ jobs: if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} uses: ./.github/workflows/yarn-install.yml - i18n: - name: Run i18n - runs-on: buildjet-2vcpu-ubuntu-2204 - permissions: - actions: write - contents: write - pull-requests: write - steps: - - uses: actions/checkout@v4 - # Doing this custom checkout of the common.json files from the PR since we don't - # want to checkout the entire branch for security reasons as this job is granted - # write permissions. - - run: git fetch --depth=2 origin ${{ github.event.pull_request.head.sha }} - if: ${{ github.event.pull_request.head.sha != '' }} - - run: find apps/web/public/static/locales/** -name "common.json" | xargs git checkout ${{ github.event.pull_request.head.sha }} -- - if: ${{ github.event.pull_request.head.sha != '' }} - shell: bash - - run: git checkout ${{ github.event.pull_request.head.sha }} -- i18n.json - if: ${{ github.event.pull_request.head.sha != '' }} - - uses: replexica/replexica@main - with: - api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} - type-check: name: Type check needs: [changes, check-label, deps] From 7337b3de1e50ecd3f39aac63660f832faf5a34ac Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Fri, 30 Aug 2024 00:02:05 +0900 Subject: [PATCH 22/64] fix: GitHub access token for Replexica (#16395) --- .github/workflows/i18n.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index e469c75b498f3d..8b9ca57d14b16c 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: replexica/replexica@main env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} with: api-key: ${{ secrets.CI_REPLEXICA_API_KEY }} pull-request: true From f47b2066c44496d21b66a645c87ce292cdd73004 Mon Sep 17 00:00:00 2001 From: Calcom Bot <109866826+calcom-bot@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:58:25 +0200 Subject: [PATCH 23/64] feat: update translations (#16396) Co-authored-by: Replexica --- apps/web/public/static/locales/cs/common.json | 5 ++++- apps/web/public/static/locales/de/common.json | 5 ++++- apps/web/public/static/locales/es-419/common.json | 5 ++++- apps/web/public/static/locales/es/common.json | 5 ++++- apps/web/public/static/locales/fr/common.json | 5 ++++- apps/web/public/static/locales/he/common.json | 5 ++++- apps/web/public/static/locales/it/common.json | 3 +++ apps/web/public/static/locales/nl/common.json | 5 ++++- apps/web/public/static/locales/pl/common.json | 5 ++++- apps/web/public/static/locales/pt-BR/common.json | 5 ++++- apps/web/public/static/locales/pt/common.json | 5 ++++- apps/web/public/static/locales/ru/common.json | 5 ++++- apps/web/public/static/locales/zh-CN/common.json | 8 ++++---- i18n.lock | 5 ++++- 14 files changed, 55 insertions(+), 16 deletions(-) diff --git a/apps/web/public/static/locales/cs/common.json b/apps/web/public/static/locales/cs/common.json index 49e87e98b0df8b..69bf9cb0c44b4f 100644 --- a/apps/web/public/static/locales/cs/common.json +++ b/apps/web/public/static/locales/cs/common.json @@ -846,6 +846,7 @@ "disable_notes": "Skrýt poznámky v kalendáři", "disable_notes_description": "Z důvodu ochrany soukromí budou v záznamu kalendáře skryty další vstupy a poznámky. Stále budou odeslány na váš e-mail.", "requires_confirmation_description": "Rezervace musí být ručně potvrzena, než bude odeslána do integrovaných systémů a dojde k odeslání e-mailu s potvrzením.", + "requires_confirmation_will_block_slot_description": "Nepotvrzené rezervace stále blokují časové sloty v kalendáři.", "recurring_event": "Opakovaná událost", "recurring_event_description": "Lidé se mohou přihlásit k opakovaným událostem", "cannot_be_used_with_paid_event_types": "Nelze použít s placenými typy událostí", @@ -957,6 +958,7 @@ "signin_with_google": "Přihlásit se pomocí Googlu", "signin_with_saml": "Přihlásit se pomocí SAML", "signin_with_saml_oidc": "Přihlášení pomocí SAML/OIDC", + "last_used": "Naposledy použito", "you_will_need_to_generate": "Budete muset vygenerovat přístupový token ve vašem dřívějším plánovacím nástroji.", "import": "Importovat", "import_from": "Importovat z", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Použijeme výchozí rozvrh dostupnosti každého člena. Bude ho moci upravovat nebo měnit.", "requires_at_least_one_schedule": "Musíte mít alespoň jeden rozvrh", "default_conferencing_bulk_description": "Aktualizujte místa pro vybrané typy událostí", + "default_schedules_bulk_description": "Aktualizujte plány pro vybrané typy událostí", "locked_for_members": "Zamčeno pro členy", "unlocked_for_members": "Odemčeno pro členy", "apps_locked_for_members_description": "Členové uvidí aktivní aplikace, ale nastavení aplikací upravovat nemohou", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Nemáte heslo k účtu, vytvořte ho navigací na Zabezpečení -> Heslo. Nelze se odpojit, dokud není vytvořeno heslo k účtu.", "disconnect_account": "Odpojit připojený účet", "disconnect_account_hint": "Odpojení připojeného účtu změní způsob, jakým se přihlašujete. Budete se moci přihlásit pouze pomocí e-mailu a hesla.", - "cookie_consent_checkbox": "Souhlasím s našimi zásadami ochrany osobních údajů a používáním cookies", + "cookie_consent_checkbox": "Vytvořením účtu souhlasíte s našimi zásadami ochrany osobních údajů a používáním cookies", "make_a_call": "Zavolat", "skip_rr_assignment_label": "Přeskočit round robin přiřazení, pokud kontakt existuje v Salesforce", "skip_rr_description": "URL musí obsahovat e-mail kontaktu jako parametr, např. ?email=contactEmail", diff --git a/apps/web/public/static/locales/de/common.json b/apps/web/public/static/locales/de/common.json index 63afe666cad97d..79641aea18041e 100644 --- a/apps/web/public/static/locales/de/common.json +++ b/apps/web/public/static/locales/de/common.json @@ -846,6 +846,7 @@ "disable_notes": "Notizen im Kalender ausblenden", "disable_notes_description": "Aus Datenschutzgründen werden zusätzliche Eingaben und Notizen im Kalendereintrag ausgeblendet. Sie werden trotzdem an Ihre E-Mail gesendet.", "requires_confirmation_description": "Die Buchung muss manuell bestätigt werden, bevor die Buchungsinformationen an die Integrationen weitergeleitet werden und eine Bestätigungsmail gesendet wird.", + "requires_confirmation_will_block_slot_description": "Unbestätigte Buchungen blockieren trotzdem Kalenderslots.", "recurring_event": "Wiederkehrender Termin", "recurring_event_description": "Personen können sich für wiederkehrende Termine anmelden", "cannot_be_used_with_paid_event_types": "Es kann nicht mit bezahlten Ereignistypen verwendet werden", @@ -957,6 +958,7 @@ "signin_with_google": "Mit Google anmelden", "signin_with_saml": "Anmelden mit SAML", "signin_with_saml_oidc": "Anmelden mit SAML/OIDC", + "last_used": "Zuletzt verwendet", "you_will_need_to_generate": "Sie müssen ein Zugriffstoken in ihrem alten Kalender-Tool erzeugen.", "import": "Importieren", "import_from": "Importieren von", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Wir werden den Standardverfügbarkeitsplan jedes Mitglieds verwenden. Sie können ihn bearbeiten oder ändern.", "requires_at_least_one_schedule": "Sie müssen mindestens einen Verfügbarkeitsplan haben", "default_conferencing_bulk_description": "Orte für die ausgewählten Termintypen aktualisieren", + "default_schedules_bulk_description": "Aktualisieren Sie die Zeitpläne für die ausgewählten Ereignistypen", "locked_for_members": "Für Mitglieder gesperrt", "unlocked_for_members": "Für Mitglieder freigeschaltet", "apps_locked_for_members_description": "Mitglieder können die aktiven Apps sehen, können aber keine App-Einstellungen anpassen", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Sie haben kein Konto-Passwort. Erstellen Sie eines, indem Sie zu Sicherheit -> Passwort navigieren. Die Verbindung kann nicht getrennt werden, bis ein Konto-Passwort erstellt wurde.", "disconnect_account": "Verbundenes Konto trennen", "disconnect_account_hint": "Das Trennen Ihres verbundenen Kontos ändert die Art und Weise, wie Sie sich anmelden. Sie können sich nur mit E-Mail + Passwort bei Ihrem Konto anmelden", - "cookie_consent_checkbox": "Durch die Erstellung eines Kontos stimmen Sie unserer Datenschutzerklärung und der Verwendung von Cookies zu", + "cookie_consent_checkbox": "Mit der Erstellung eines Kontos stimmen Sie unserer Datenschutzrichtlinie und der Verwendung von Cookies zu", "make_a_call": "Anruf tätigen", "skip_rr_assignment_label": "Round-Robin-Zuweisung überspringen, wenn der Kontakt in Salesforce existiert", "skip_rr_description": "URL muss die E-Mail des Kontakts als Parameter enthalten, z. B. ?email=contactEmail", diff --git a/apps/web/public/static/locales/es-419/common.json b/apps/web/public/static/locales/es-419/common.json index 6dc8f5d9292121..dceb4f2309825e 100644 --- a/apps/web/public/static/locales/es-419/common.json +++ b/apps/web/public/static/locales/es-419/common.json @@ -846,6 +846,7 @@ "disable_notes": "Ocultar notas en el calendario", "disable_notes_description": "Por razones de privacidad, las entradas adicionales y las notas se ocultarán en la entrada del calendario. Aún se enviarán a su correo electrónico.", "requires_confirmation_description": "La reserva necesita ser confirmada manualmente antes de que se envíe a las integraciones y se envíe un correo de confirmación.", + "requires_confirmation_will_block_slot_description": "Las reservas no confirmadas aún bloquean los espacios en el calendario.", "recurring_event": "Evento recurrente", "recurring_event_description": "Las personas pueden suscribirse a eventos recurrentes", "cannot_be_used_with_paid_event_types": "No se puede usar con tipos de eventos pagados", @@ -957,6 +958,7 @@ "signin_with_google": "Iniciar sesión con Google", "signin_with_saml": "Iniciar sesión con SAML", "signin_with_saml_oidc": "Iniciar sesión con SAML/OIDC", + "last_used": "Último uso", "you_will_need_to_generate": "Necesitarás generar un token de acceso desde tu antigua herramienta de programación.", "import": "Importar", "import_from": "Importar desde", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Usaremos el horario de disponibilidad predeterminado de cada miembro. Ellos podrán editarlo o cambiarlo.", "requires_at_least_one_schedule": "Se requiere tener al menos un horario", "default_conferencing_bulk_description": "Actualizar las ubicaciones para los tipos de eventos seleccionados", + "default_schedules_bulk_description": "Actualiza los horarios para los tipos de eventos seleccionados", "locked_for_members": "Bloqueado para los miembros", "unlocked_for_members": "Desbloqueado para los miembros", "apps_locked_for_members_description": "Los miembros podrán ver las aplicaciones activas pero no podrán editar ninguna configuración de la aplicación", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "No tienes una contraseña de cuenta, crea una navegando a Seguridad -> Contraseña. No puedes desconectarte hasta que se cree una contraseña de cuenta.", "disconnect_account": "Desconectar cuenta conectada", "disconnect_account_hint": "Desconectar tu cuenta conectada cambiará la forma en que inicias sesión. Solo podrás iniciar sesión en tu cuenta usando correo electrónico + contraseña", - "cookie_consent_checkbox": "Consiento nuestra política de privacidad y el uso de cookies", + "cookie_consent_checkbox": "Al crear una cuenta, aceptas nuestra política de privacidad y el uso de cookies", "make_a_call": "Hacer una llamada", "skip_rr_assignment_label": "Omitir asignación round robin si el contacto existe en Salesforce", "skip_rr_description": "La URL debe contener el correo electrónico del contacto como parámetro, ej. ?email=contactEmail", diff --git a/apps/web/public/static/locales/es/common.json b/apps/web/public/static/locales/es/common.json index ddc7fff053be68..80bc6a8e8e6e19 100644 --- a/apps/web/public/static/locales/es/common.json +++ b/apps/web/public/static/locales/es/common.json @@ -846,6 +846,7 @@ "disable_notes": "Ocultar notas en el calendario", "disable_notes_description": "Por razones de privacidad, las entradas y notas adicionales se ocultarán en la entrada del calendario. Seguirán enviándose a su correo electrónico.", "requires_confirmation_description": "La reserva debe confirmarse manualmente antes de que se envíe a las integraciones y se genere un correo de confirmación.", + "requires_confirmation_will_block_slot_description": "Las reservas no confirmadas aún bloquean los espacios en el calendario.", "recurring_event": "Evento recurrente", "recurring_event_description": "Las personas pueden suscribirse a eventos recurrentes", "cannot_be_used_with_paid_event_types": "No se puede usar con tipos de eventos de pago.", @@ -957,6 +958,7 @@ "signin_with_google": "Iniciar sesión con Google", "signin_with_saml": "Iniciar sesión con SAML", "signin_with_saml_oidc": "Inicie sesión con SAML/OIDC", + "last_used": "Último uso", "you_will_need_to_generate": "Necesitarás generar un token de acceso desde tu antigua herramienta de programación.", "import": "Importar", "import_from": "Importar desde", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Usaremos el horario de disponibilidad predeterminado de cada miembro. Este se podrá editar o cambiar.", "requires_at_least_one_schedule": "Es necesario tener al menos un horario", "default_conferencing_bulk_description": "Actualizar las ubicaciones para los tipos de eventos seleccionados", + "default_schedules_bulk_description": "Actualiza los horarios para los tipos de eventos seleccionados", "locked_for_members": "Bloqueado para miembros", "unlocked_for_members": "Desbloqueado para miembros", "apps_locked_for_members_description": "Los miembros podrán ver las aplicaciones activas, pero no podrán editar ninguna configuración de la aplicación", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "No tienes una contraseña de cuenta, crea una navegando a Seguridad -> Contraseña. No puedes desconectar hasta que se cree una contraseña de cuenta.", "disconnect_account": "Desconectar cuenta conectada", "disconnect_account_hint": "Desconectar tu cuenta conectada cambiará la forma en que inicias sesión. Solo podrás iniciar sesión en tu cuenta usando correo electrónico + contraseña", - "cookie_consent_checkbox": "Consiento nuestra política de privacidad y el uso de cookies", + "cookie_consent_checkbox": "Al crear una cuenta, aceptas nuestra política de privacidad y el uso de cookies", "make_a_call": "Hacer una llamada", "skip_rr_assignment_label": "Omitir asignación de turnos si el contacto existe en Salesforce", "skip_rr_description": "La URL debe contener el correo electrónico del contacto como parámetro, por ejemplo, ?email=contactEmail", diff --git a/apps/web/public/static/locales/fr/common.json b/apps/web/public/static/locales/fr/common.json index 6883753b308438..05bc83d77fbc41 100644 --- a/apps/web/public/static/locales/fr/common.json +++ b/apps/web/public/static/locales/fr/common.json @@ -846,6 +846,7 @@ "disable_notes": "Masquer les notes dans le calendrier", "disable_notes_description": "Pour des raisons de confidentialité, les champs et notes supplémentaires seront masquées dans l'entrée du calendrier. Elles vous seront tout de même envoyées par e-mail.", "requires_confirmation_description": "La réservation doit être confirmée manuellement avant d'être poussée vers les intégrations et qu'un e-mail de confirmation soit envoyé.", + "requires_confirmation_will_block_slot_description": "Les réservations non confirmées bloquent quand même les créneaux du calendrier.", "recurring_event": "Événement récurrent", "recurring_event_description": "Les personnes peuvent s'inscrire à des événements récurrents.", "cannot_be_used_with_paid_event_types": "À ne pas utiliser avec les types d'événement payants", @@ -957,6 +958,7 @@ "signin_with_google": "Se connecter avec Google", "signin_with_saml": "Se connecter avec SAML", "signin_with_saml_oidc": "Se connecter avec SAML/OIDC", + "last_used": "Dernière utilisation", "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", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Nous utiliserons le calendrier de disponibilité par défaut de chaque membre. Ils pourront le modifier ou le changer.", "requires_at_least_one_schedule": "Vous devez avoir au moins un planning", "default_conferencing_bulk_description": "Mettez à jour les emplacements pour les types d'événements sélectionnés.", + "default_schedules_bulk_description": "Mettre à jour les horaires pour les types d'événements sélectionnés", "locked_for_members": "Verrouillé pour les membres", "unlocked_for_members": "Déverrouillé pour les membres", "apps_locked_for_members_description": "Les membres pourront voir les applications actives, mais ne pourront pas modifier leurs paramètres.", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Vous n'avez pas de mot de passe pour votre compte. Créez-en un depuis Sécurité -> Mot de passe. Vous ne pouvez pas vous déconnecter tant que le mot de passe du compte n'a pas été créé.", "disconnect_account": "Déconnecter le compte connecté", "disconnect_account_hint": "La déconnexion de votre compte connecté modifiera votre façon de vous connecter. Vous ne pourrez plus vous connecter à votre compte qu'en utilisant votre adresse e-mail et votre mot de passe", - "cookie_consent_checkbox": "En créant un compte, vous acceptez notre politique de confidentialité et l'utilisation des cookies", + "cookie_consent_checkbox": "En créant un compte, vous acceptez notre politique de confidentialité et l'utilisation de cookies", "make_a_call": "Passer un appel", "skip_rr_assignment_label": "Ignorer l'affectation par permutation circulaire si le contact existe dans Salesforce", "skip_rr_description": "L'URL doit contenir l'adresse e-mail du contact en tant que paramètre. Ex. : ?email=contactEmail", diff --git a/apps/web/public/static/locales/he/common.json b/apps/web/public/static/locales/he/common.json index 9191f7a5156db2..e93d91d4ea7bd4 100644 --- a/apps/web/public/static/locales/he/common.json +++ b/apps/web/public/static/locales/he/common.json @@ -846,6 +846,7 @@ "disable_notes": "הסתר הערות בלוח השנה", "disable_notes_description": "מסיבות פרטיות, אפשרויות קלט נוספות והערות יוסתרו מהרשומה בלוח השנה. הם עדיין יישלחו אליך בדוא\"ל.", "requires_confirmation_description": "יש לאשר את ההזמנה באופן ידני כדי שניתן יהיה להעביר אותה אל השילובים ולשלוח הודעת אישור בדוא״ל.", + "requires_confirmation_will_block_slot_description": "הזמנות לא מאושרות עדיין חוסמות את הזמן ביומן.", "recurring_event": "אירוע חוזר", "recurring_event_description": "אנשים יכולים להירשם לאירועים חוזרים", "cannot_be_used_with_paid_event_types": "אי אפשר להשתמש בזה עם סוגי פגישות בתשלום", @@ -957,6 +958,7 @@ "signin_with_google": "כניסה עם Google", "signin_with_saml": "כניסה עם SAML", "signin_with_saml_oidc": "כניסה עם SAML/OIDC", + "last_used": "שימוש אחרון", "you_will_need_to_generate": "תצטרך ליצור טוקן גישה מהכלי הישן שבו השתמשת לקביעת מועדים.", "import": "ייבוא", "import_from": "ייבוא מ", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "אנחנו נשתמש בלוח הזמנים והזמינות שמוגדר כברירת מחדל עבור כל חבר/ה. החברים יוכלו לערוך או לשנות את הנתונים.", "requires_at_least_one_schedule": "אתה חייב שיהיה לך לפחות לוח זמנים אחד", "default_conferencing_bulk_description": "עדכן את המיקומים עבור סוגי הארועים שנבחרו", + "default_schedules_bulk_description": "עדכן את לוחות הזמנים עבור סוגי האירועים שנבחרו", "locked_for_members": "נעול לחברים", "unlocked_for_members": "שוחרר לטובת החברים", "apps_locked_for_members_description": "החברים יוכלו לראות את האפליקציות הפעילות, אבל לא יוכלו לערוך את הגדרות האפליקציה", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "אין סיסמה לחשבון שלך, אפשר ליצור סיסמה על ידי ניווט לאבטחה -> סיסמה. אי אפשר לנתק עד שסיסמת החשבון נוצרת.", "disconnect_account": "ניתוק חשבון מקושר", "disconnect_account_hint": "ניתוק החשבון המחובר שלך ישנה את אופן ההתחברות שלך. תוכל להתחבר לחשבונך רק באמצעות דוא\"ל + סיסמה.", - "cookie_consent_checkbox": "מדיניות הפרטיות והשימוש בעוגיות מוסכמים עליי", + "cookie_consent_checkbox": "על ידי יצירת חשבון, אתה מסכים למדיניות הפרטיות שלנו ולשימוש בעוגיות", "make_a_call": "בצע שיחה", "skip_rr_assignment_label": "דלג על הקצאת round robin אם איש הקשר קיים ב-Salesforce", "skip_rr_description": "ה-URL חייב להכיל את הדוא\"ל של איש הקשר כפרמטר לדוגמה: ?email=contactEmail", diff --git a/apps/web/public/static/locales/it/common.json b/apps/web/public/static/locales/it/common.json index 80650a25f41747..b2d90343b23af2 100644 --- a/apps/web/public/static/locales/it/common.json +++ b/apps/web/public/static/locales/it/common.json @@ -846,6 +846,7 @@ "disable_notes": "Nascondi le note nel calendario", "disable_notes_description": "Per motivi di privacy, gli input e le note aggiuntivi saranno nascosti nella voce del calendario. Verranno comunque inviati alla tua email.", "requires_confirmation_description": "La prenotazione deve essere confermata manualmente prima di essere inviata alle integrazioni e che venga inviata una e-mail di conferma.", + "requires_confirmation_will_block_slot_description": "Le prenotazioni non confermate bloccano comunque gli slot del calendario.", "recurring_event": "Evento ricorrente", "recurring_event_description": "Le persone possono iscriversi a eventi ricorrenti", "cannot_be_used_with_paid_event_types": "Non può essere utilizzato con i tipi di evento a pagamento", @@ -957,6 +958,7 @@ "signin_with_google": "Accedi con Google", "signin_with_saml": "Accedi con SAML", "signin_with_saml_oidc": "Accedi con SAML/OIDC", + "last_used": "Ultimo utilizzo", "you_will_need_to_generate": "Dovrai generare un token di accesso con il tuo vecchio strumento di pianificazione.", "import": "Importa", "import_from": "Importa da", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Useremo il programma di disponibilità predefinito di ciascun membro. I membri potranno modificarlo.", "requires_at_least_one_schedule": "È necessario avere almeno un programma", "default_conferencing_bulk_description": "Aggiorna le posizioni per i tipi di eventi selezionati", + "default_schedules_bulk_description": "Aggiorna i programmi per i tipi di eventi selezionati", "locked_for_members": "Bloccato per i membri", "unlocked_for_members": "Sbloccato per i membri", "apps_locked_for_members_description": "I membri potranno vedere le app attive, ma non potranno modificare le impostazioni delle app", diff --git a/apps/web/public/static/locales/nl/common.json b/apps/web/public/static/locales/nl/common.json index 3184427d7edea0..ccee25e8df2505 100644 --- a/apps/web/public/static/locales/nl/common.json +++ b/apps/web/public/static/locales/nl/common.json @@ -846,6 +846,7 @@ "disable_notes": "Notities verbergen in kalender", "disable_notes_description": "Om privacyredenen worden extra invoer en notities verborgen in het kalenderitem. Ze worden nog wel naar uw e-mail verzonden.", "requires_confirmation_description": "De boeking moet handmatig bevestigd worden voordat deze naar de integraties wordt gepusht en een bevestigings-e-mail wordt verzonden.", + "requires_confirmation_will_block_slot_description": "Onbevestigde boekingen blokkeren nog steeds de kalender slots.", "recurring_event": "Terugkerende gebeurtenis", "recurring_event_description": "Mensen kunnen zich abonneren op terugkerende gebeurtenissen", "cannot_be_used_with_paid_event_types": "Het kan niet worden gebruikt met betaalde evenementtypes", @@ -957,6 +958,7 @@ "signin_with_google": "Aanmelden met Google", "signin_with_saml": "Aanmelden met SAML", "signin_with_saml_oidc": "Aanmelden met SAML/OIDC", + "last_used": "Laatst gebruikt", "you_will_need_to_generate": "U moet een toegangstoken genereren van uw oude planningstool.", "import": "Importeren", "import_from": "Importeren van", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Wij gebruiken de standaard beschikbaarheidsplanning van elk lid. Leden kunnen dit bewerken of wijzigen.", "requires_at_least_one_schedule": "U moet ten minste één planning hebben", "default_conferencing_bulk_description": "Werk de locaties voor de geselecteerde gebeurtenistypen bij", + "default_schedules_bulk_description": "Werk de schema's bij voor de geselecteerde evenementtypes", "locked_for_members": "Vergrendeld voor leden", "unlocked_for_members": "Ontgrendeld voor leden", "apps_locked_for_members_description": "Leden kunnen de actieve apps zien, maar kunnen geen appinstellingen bewerken", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "U heeft geen accountwachtwoord, maak er een aan door naar Beveiliging -> Wachtwoord te navigeren. U kunt niet loskoppelen totdat een accountwachtwoord is aangemaakt.", "disconnect_account": "Koppel verbonden account los", "disconnect_account_hint": "Het loskoppelen van uw verbonden account zal de manier waarop u inlogt veranderen. U kunt alleen inloggen met e-mail + wachtwoord.", - "cookie_consent_checkbox": "Ik stem in met ons privacybeleid en het gebruik van cookies", + "cookie_consent_checkbox": "Door een account aan te maken, ga je akkoord met ons privacybeleid en het gebruik van cookies", "make_a_call": "Bel", "skip_rr_assignment_label": "Sla round robin-toewijzing over als contact in Salesforce bestaat", "skip_rr_description": "URL moet het e-mailadres van de contactpersoon als parameter bevatten, bijv. ?email=contactEmail", diff --git a/apps/web/public/static/locales/pl/common.json b/apps/web/public/static/locales/pl/common.json index 4eca3a6c8ea01c..03d27c8751d059 100644 --- a/apps/web/public/static/locales/pl/common.json +++ b/apps/web/public/static/locales/pl/common.json @@ -846,6 +846,7 @@ "disable_notes": "Ukryj notatki w kalendarzu", "disable_notes_description": "Ze względu na prywatność, dodatkowe dane wejściowe i notatki zostaną ukryte we wpisie kalendarza. Będą one nadal wysyłane na Twój adres e-mail.", "requires_confirmation_description": "Rezerwację trzeba potwierdzić ręcznie, aby można było skierować ją do integracji i wysłać wiadomość z potwierdzeniem.", + "requires_confirmation_will_block_slot_description": "Niepotwierdzone rezerwacje nadal blokują terminy w kalendarzu.", "recurring_event": "Wydarzenie cykliczne", "recurring_event_description": "Osoby mogą subskrybować wydarzenia cykliczne", "cannot_be_used_with_paid_event_types": "Nie można używać z płatnymi typami wydarzeń", @@ -957,6 +958,7 @@ "signin_with_google": "Zaloguj się przez Google", "signin_with_saml": "Zaloguj się za pomocą SAML", "signin_with_saml_oidc": "Zaloguj się za pomocą SAML/OIDC", + "last_used": "Ostatnio używane", "you_will_need_to_generate": "Będziesz musiał wygenerować token dostępu ze strony integracji.", "import": "Importuj", "import_from": "Importuj z", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Będziemy używać domyślnego harmonogramu dostępności każdego członka. Każdy z nich będzie mógł go edytować lub zmienić.", "requires_at_least_one_schedule": "Musisz mieć co najmniej jeden harmonogram", "default_conferencing_bulk_description": "Aktualizuj lokalizacje wybranych typów wydarzeń", + "default_schedules_bulk_description": "Zaktualizuj harmonogramy dla wybranych typów wydarzeń", "locked_for_members": "Zablokowany dla członków", "unlocked_for_members": "Odblokowane dla członków", "apps_locked_for_members_description": "Członkowie będą mogli sprawdzić aktywne aplikacje, ale nie będą mogli edytować ich ustawień", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Nie masz hasła do konta, utwórz je, przechodząc do Bezpieczeństwo -> Hasło. Nie można się rozłączyć, dopóki nie zostanie utworzone hasło do konta.", "disconnect_account": "Odłącz połączone konto", "disconnect_account_hint": "Odłączenie połączonego konta zmieni sposób logowania. Będziesz mógł zalogować się na swoje konto tylko za pomocą e-maila i hasła.", - "cookie_consent_checkbox": "Wyrażam zgodę na naszą politykę prywatności i używanie plików cookie", + "cookie_consent_checkbox": "Tworząc konto, zgadzasz się na naszą politykę prywatności i używanie plików cookie", "make_a_call": "Wykonaj połączenie", "skip_rr_assignment_label": "Pomiń przydział round robin, jeśli kontakt istnieje w Salesforce", "skip_rr_description": "URL musi zawierać e-mail kontaktu jako parametr, np. ?email=contactEmail", diff --git a/apps/web/public/static/locales/pt-BR/common.json b/apps/web/public/static/locales/pt-BR/common.json index 281a212b06ba83..2cf485eaa2f8de 100644 --- a/apps/web/public/static/locales/pt-BR/common.json +++ b/apps/web/public/static/locales/pt-BR/common.json @@ -846,6 +846,7 @@ "disable_notes": "Ocultar notas no calendário", "disable_notes_description": "Por motivo de privacidade, notas e dados adicionais serão ocultos na entrada do calendário. Serão enviadas por e-mail.", "requires_confirmation_description": "A reserva precisa ser confirmada manualmente antes de ser enviada para as integrações e ser enviado um e-mail de confirmação.", + "requires_confirmation_will_block_slot_description": "Reservas não confirmadas ainda bloqueiam os horários no calendário.", "recurring_event": "Evento recorrente", "recurring_event_description": "As pessoas podem se inscrever em eventos recorrentes", "cannot_be_used_with_paid_event_types": "Não pode ser usado com eventos pagos", @@ -957,6 +958,7 @@ "signin_with_google": "Entrar com Google", "signin_with_saml": "Entrar com SAML", "signin_with_saml_oidc": "Entrar com SAML/OIDC", + "last_used": "Último uso", "you_will_need_to_generate": "Você precisa gerar um token de acesso na ferramenta de agendamento antiga.", "import": "Importar", "import_from": "Importar de", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Usaremos a agenda de disponibilidade padrão de cada membro. Não será possível editar ou alterar.", "requires_at_least_one_schedule": "Você precisa ter pelo menos uma agenda", "default_conferencing_bulk_description": "Atualize as localizações para os tipos de evento selecionados", + "default_schedules_bulk_description": "Atualize os horários para os tipos de eventos selecionados", "locked_for_members": "Bloqueado para membros", "unlocked_for_members": "Desbloqueado para membros", "apps_locked_for_members_description": "Os membros poderão ver os aplicativos ativos, mas não poderão editar as configurações", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Você não tem uma senha de conta, crie uma em Securança -> Senha. Não é possível disconectar até uma senha de conta ser criada.", "disconnect_account": "Disconecte contas conectadas", "disconnect_account_hint": "Disconectar sua conta conectada mudará a maneira como você faz login. Você só poderá fazer login usando e-mail + senha", - "cookie_consent_checkbox": "Ao criar uma conta, você concorda com nossa política de privacidade e o uso de cookies", + "cookie_consent_checkbox": "Ao criar uma conta, você concorda com nossa política de privacidade e uso de cookies", "make_a_call": "Fazer uma Ligação", "skip_rr_assignment_label": "Pular atribuição round robin se o contato existir no Salesforce", "skip_rr_description": "A URL deve conter o e-mail do contato como um parâmetro, ex. ?email=contactEmail", diff --git a/apps/web/public/static/locales/pt/common.json b/apps/web/public/static/locales/pt/common.json index b34e08526766b3..2a032bee3fe957 100644 --- a/apps/web/public/static/locales/pt/common.json +++ b/apps/web/public/static/locales/pt/common.json @@ -846,6 +846,7 @@ "disable_notes": "Esconder notas no calendário", "disable_notes_description": "Por razões de privacidade, informações adicionais e notas serão escondidas no registo do calendário. Serão enviadas para o seu email.", "requires_confirmation_description": "A reserva precisa ser confirmada manualmente antes de ser enviada para as integrações e ser enviada uma mensagem de confirmação.", + "requires_confirmation_will_block_slot_description": "As reservas não confirmadas ainda bloqueiam os horários no calendário.", "recurring_event": "Evento recorrente", "recurring_event_description": "As pessoas podem subscrever para eventos recorrentes", "cannot_be_used_with_paid_event_types": "Não pode ser utilizado com tipos de eventos pagos", @@ -957,6 +958,7 @@ "signin_with_google": "Iniciar sessão com o Google", "signin_with_saml": "Iniciar sessão com SAML", "signin_with_saml_oidc": "Iniciar sessão com SAML/OIDC", + "last_used": "Última utilização", "you_will_need_to_generate": "Precisará de gerar um token de acesso na página das integrações.", "import": "Importar", "import_from": "Importar de", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Vamos utilizar a agenda de disponibilidades predefinida de cada membro. Eles poderão editar ou alterar a mesma.", "requires_at_least_one_schedule": "É necessário que tenha pelo menos uma agenda", "default_conferencing_bulk_description": "Atualizar os locais para os tipos de evento selecionados", + "default_schedules_bulk_description": "Atualizar os horários para os tipos de eventos selecionados", "locked_for_members": "Bloqueado para os membros", "unlocked_for_members": "Desbloqueado para os membros", "apps_locked_for_members_description": "Os membros poderão ver as aplicações ativas, mas não poderão editar quaisquer configurações das aplicações", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "Você não tem uma palavra-passe de conta. Crie uma acedendo a Segurança -> Senha. Não pode desassociar até que seja criada uma palavra-passe de conta.", "disconnect_account": "Desligar conta associada", "disconnect_account_hint": "Desligar a sua conta associada irá alterar a forma como inicia sessão. Só poderá iniciar sessão na sua conta utilizando o e-mail + a palavra-passe", - "cookie_consent_checkbox": "Ao criar uma conta, você concorda com a nossa política de privacidade e o uso de cookies", + "cookie_consent_checkbox": "Ao criar uma conta, concorda com a nossa política de privacidade e uso de cookies", "make_a_call": "Fazer uma chamada", "skip_rr_assignment_label": "Saltar a atribuição em distribuição equilibrada se o contacto existir no Salesforce", "skip_rr_description": "A URL deve conter o e-mail do contacto como um parâmetro, ex. ?email=contactEmail", diff --git a/apps/web/public/static/locales/ru/common.json b/apps/web/public/static/locales/ru/common.json index 9bf2928d4fcb19..2c9e83cbd6c5fc 100644 --- a/apps/web/public/static/locales/ru/common.json +++ b/apps/web/public/static/locales/ru/common.json @@ -846,6 +846,7 @@ "disable_notes": "Скрыть заметки в календаре", "disable_notes_description": "В целях обеспечения конфиденциальности дополнительные поля и заметки будут скрыты в записи календаря. При этом они будут отправлены на ваш адрес электронной почты.", "requires_confirmation_description": "Необходимо подвердить бронирование вручную, прежде чем оно будет передано интеграциям и будет отправлено письмо с подтверждением.", + "requires_confirmation_will_block_slot_description": "Неподтвержденные бронирования все равно блокируют слоты в календаре.", "recurring_event": "Повторяющееся событие", "recurring_event_description": "Пользователи могут подписываться на повторяющиеся события", "cannot_be_used_with_paid_event_types": "Это не может быть использовано с платными типами событий", @@ -957,6 +958,7 @@ "signin_with_google": "Войти через Google", "signin_with_saml": "Войти с помощью SAML", "signin_with_saml_oidc": "Войти с помощью SAML/OIDC", + "last_used": "Последнее использование", "you_will_need_to_generate": "Вам нужно сгенерировать токен доступа на странице интеграции.", "import": "Импорт", "import_from": "Импортировать из", @@ -1958,6 +1960,7 @@ "members_default_schedule_description": "Для каждого участника будет использоваться его график доступности по умолчанию. Участники смогут редактировать или менять его.", "requires_at_least_one_schedule": "У вас должно быть по крайней мере одно расписание", "default_conferencing_bulk_description": "Обновить местоположение для выбранных типов событий", + "default_schedules_bulk_description": "Обновите расписания для выбранных типов событий", "locked_for_members": "Заблокировано для участников", "unlocked_for_members": "Разблокировано для участников", "apps_locked_for_members_description": "Участники смогут видеть активные приложения, но не смогут редактировать их настройки", @@ -2453,7 +2456,7 @@ "create_account_password_hint": "У вас нет пароля для аккаунта, создайте его, перейдя в Безопасность -> Пароль. Невозможно отключиться, пока не создан пароль для аккаунта.", "disconnect_account": "Отключить подключенный аккаунт", "disconnect_account_hint": "Отключение подключенного аккаунта изменит способ входа. Вы сможете войти в свой аккаунт только с помощью электронной почты и пароля", - "cookie_consent_checkbox": "Я согласен с нашей политикой конфиденциальности и использованием файлов cookie", + "cookie_consent_checkbox": "Создавая учетную запись, вы соглашаетесь с нашей политикой конфиденциальности и использованием файлов cookie", "make_a_call": "Совершить звонок", "skip_rr_assignment_label": "Пропустить round robin назначение, если контакт существует в Salesforce", "skip_rr_description": "URL должен содержать электронную почту контакта в качестве параметра, например, ?email=contactEmail", diff --git a/apps/web/public/static/locales/zh-CN/common.json b/apps/web/public/static/locales/zh-CN/common.json index 919553f3861d32..3f21b50ac56074 100644 --- a/apps/web/public/static/locales/zh-CN/common.json +++ b/apps/web/public/static/locales/zh-CN/common.json @@ -713,7 +713,6 @@ "default_duration_no_options": "请先选择可用时长", "multiple_duration_mins": "{{count}} $t(minute_timeUnit)", "multiple_duration_timeUnit": "{{count}} $t({{unit}}_timeUnit)", - "multiple_duration_timeUnit_short": "{{count}} $t({{unit}}_short)", "multiple_duration_timeUnit_short": "{{count}}$t({{unit}}_short)", "minutes": "分钟", "use_cal_ai_to_make_call_description": "使用 Cal.ai 获得人工智能驱动的电话号码或拨打电话给访客。", @@ -847,6 +846,7 @@ "disable_notes": "在日历中隐藏备注", "disable_notes_description": "出于隐私原因,额外的输入和备注将在日历条目中被隐藏,但它们仍将发送到您的电子邮件中。", "requires_confirmation_description": "将预约推送至集成和发送确认邮件之前,需要先手动确认预约。", + "requires_confirmation_will_block_slot_description": "未确认的预订仍会占用日历时间段。", "recurring_event": "定期活动", "recurring_event_description": "人们可以订阅定期活动", "cannot_be_used_with_paid_event_types": "不能用于付费的活动类型", @@ -958,6 +958,7 @@ "signin_with_google": "使用Google登录", "signin_with_saml": "使用 SAML 登录", "signin_with_saml_oidc": "使用 SAML/OIDC 登录", + "last_used": "上次使用", "you_will_need_to_generate": "您需要从从您的旧工具上生成访问令牌", "import": "导入", "import_from": "导入自", @@ -1286,11 +1287,9 @@ "reminder_email": "提醒: 和 {{name}} 在 {{date}} 的 {{eventType}}", "not_triggering_existing_bookings": "不会针对已经存在的预约而触发,因为用户在预约活动时会被要求提供电话号码。", "minute_one": "{{count}} 分钟", - "minute_one_short": "{{count}} 分钟", "minute_one_short": "{{count}}分钟", "minute_other": "{{count}} 分钟", "hour_one": "{{count}} 小时", - "hour_one_short": "{{count}} 小时", "hour_one_short": "{{count}}小时", "hour_other": "{{count}} 小时", "invalid_input": "输入无效", @@ -1961,6 +1960,7 @@ "members_default_schedule_description": "我们将使用每位成员的默认可用日程安排。他们可对其进行编辑或更改。", "requires_at_least_one_schedule": "您需要至少有一个日程安排", "default_conferencing_bulk_description": "更新选定活动类型的位置", + "default_schedules_bulk_description": "更新所选事件类型的日程安排", "locked_for_members": "已为成员锁定", "unlocked_for_members": "对成员解锁", "apps_locked_for_members_description": "成员将能够查看活动的应用,但不能编辑任何应用设置", @@ -2456,7 +2456,7 @@ "create_account_password_hint": "您还没有账户密码,请通过导航到“安全 -> 密码”来创建一个。在创建账户密码之前,无法断开连接。", "disconnect_account": "断开已连接的账户", "disconnect_account_hint": "断开已连接的账户将改变您的登录方式。您只能使用邮箱和密码登录您的账户。", - "cookie_consent_checkbox": "我同意 Cal.com 的隐私政策以及 cookie 使用政策", + "cookie_consent_checkbox": "创建账户即表示您同意我们的隐私政策和Cookie使用", "make_a_call": "打电话", "skip_rr_assignment_label": "如果联系人存在于Salesforce中,则跳过round robin分配", "skip_rr_description": "URL必须包含联系人的电子邮件作为参数,例如 ?email=contactEmail", diff --git a/i18n.lock b/i18n.lock index e5fabd12324c1f..bd6c5157879c7e 100644 --- a/i18n.lock +++ b/i18n.lock @@ -848,6 +848,7 @@ checksums: disable_notes: 26e3eaffcd889bf9d62be546080b3eaa disable_notes_description: d778488f6709a75addc93c0eee488764 requires_confirmation_description: 8e79eadfbbbafbf2963da3fbcb9122f1 + requires_confirmation_will_block_slot_description: 07d2ec2d2ad1123b833f63f6d675cd3d recurring_event: 64081e2a29e23cfc8eb421a44565da0c recurring_event_description: 6652c7b8ad3562c04d4ace180a96bf09 cannot_be_used_with_paid_event_types: c655cde68dd549884259b0b0fc93a888 @@ -959,6 +960,7 @@ checksums: signin_with_google: f84b1b8574fb23734c002b401cad49e2 signin_with_saml: 932c77d607b1fa394c53aedf4259ecf8 signin_with_saml_oidc: 3d9ec37d3e09a530398f25a77dc27070 + last_used: 79c1790ff1f8cf956c06f93699704b4d you_will_need_to_generate: deaaf4d09d215932679faf27827222c1 import: 348b8ab981de5b7f1fca6d7302263bbd import_from: 1b70c493a1f9dfe82be2702af4977905 @@ -1960,6 +1962,7 @@ checksums: members_default_schedule_description: 2ff0f5923e26cc4ef9c341c76ea0417d requires_at_least_one_schedule: ab0e8e70b8d0d05928dad8afff053072 default_conferencing_bulk_description: a1d730bdcd6d8cb7f6b3a0fd215292c2 + default_schedules_bulk_description: a1453e7bd7ec7c0f51b1cff27f88851d locked_for_members: 1229138bdb1667cd909f7a8bc5a428f8 unlocked_for_members: 0aba99def77ceebd74b0238b872a1d16 apps_locked_for_members_description: 16448dfa18f8067211889352e8d51f52 @@ -2455,7 +2458,7 @@ checksums: create_account_password_hint: 19792dcd3a8958a1374a9837f7383b39 disconnect_account: c2d44bcc79bee8dc002bd937329eb5ac disconnect_account_hint: edf4b2a1c881878660a7bd814e17c795 - cookie_consent_checkbox: b38fab80d85cbee397b6eeaa328014ff + cookie_consent_checkbox: ee39ccd2aa5cb939444a74e525893b23 make_a_call: 809ec7bb27e3b20c082999b9f7ab0c00 skip_rr_assignment_label: 26980bd2315d3d2cfb7ba6e6364d88dc skip_rr_description: d402731f4a64fecb15438b2c80cba7b3 From edaa6b1de8c6e04bb83fe41e1dbaaf27baed719e Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Fri, 30 Aug 2024 01:18:48 +0900 Subject: [PATCH 24/64] feat: Add more AI translation languages (#16381) * feat: Add more AI translation languages * Removed pull-request: true * checking out the PRs i18n.json as well * Update i18n.json * Update i18n.json --- i18n.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/i18n.json b/i18n.json index e273f25802d61a..91e7bed5721bb8 100644 --- a/i18n.json +++ b/i18n.json @@ -3,8 +3,9 @@ "locale": { "source": "en", "targets": [ - "de", + "az", "cs", + "de", "es", "es-419", "fr", @@ -20,9 +21,7 @@ }, "buckets": { "json": { - "include": [ - "apps/web/public/static/locales/[locale]/common.json" - ] + "include": ["apps/web/public/static/locales/[locale]/common.json"] } } -} \ No newline at end of file +} From 36a1715ece3ba3f3534a4a91ee41561f0e62d173 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Fri, 30 Aug 2024 01:37:18 +0900 Subject: [PATCH 25/64] perf: run parallel bookings queries (#16398) --- .../trpc/server/routers/viewer/slots/util.ts | 125 ++++++++++-------- 1 file changed, 71 insertions(+), 54 deletions(-) diff --git a/packages/trpc/server/routers/viewer/slots/util.ts b/packages/trpc/server/routers/viewer/slots/util.ts index 6be834b693b125..c90db2e86d6914 100644 --- a/packages/trpc/server/routers/viewer/slots/util.ts +++ b/packages/trpc/server/routers/viewer/slots/util.ts @@ -505,71 +505,88 @@ export async function getAvailableSlots({ input, ctx }: GetScheduleOptions): Pro }; const allUserIds = usersWithCredentials.map((user) => user.id); + const bookingsSelect = { + id: true, + uid: true, + userId: true, + startTime: true, + endTime: true, + title: true, + attendees: true, + eventType: { + select: { + id: true, + onlyShowFirstAvailableSlot: true, + afterEventBuffer: true, + beforeEventBuffer: true, + seatsPerTimeSlot: true, + requiresConfirmationWillBlockSlot: true, + requiresConfirmation: true, + }, + }, + ...(!!eventType?.seatsPerTimeSlot && { + _count: { + select: { + seatsReferences: true, + }, + }, + }), + }; - const currentBookingsAllUsers = await prisma.booking.findMany({ + const currentBookingsAllUsersQueryOne = prisma.booking.findMany({ where: { - OR: [ - // User is primary host (individual events, or primary organizer) - { - ...sharedQuery, - userId: { - in: allUserIds, - }, - }, - // The current user has a different booking at this time he/she attends - { - ...sharedQuery, - attendees: { - some: { - email: { - in: usersWithCredentials.map((user) => user.email), - }, - }, - }, - }, - { - startTime: { lte: endTimeDate }, - endTime: { gte: startTimeDate }, - eventType: { - id: eventType.id, - requiresConfirmation: true, - requiresConfirmationWillBlockSlot: true, - }, - status: { - in: [BookingStatus.PENDING], + ...sharedQuery, + userId: { + in: allUserIds, + }, + }, + select: { + ...bookingsSelect, + }, + }); + + const currentBookingsAllUsersQueryTwo = prisma.booking.findMany({ + where: { + ...sharedQuery, + attendees: { + some: { + email: { + in: usersWithCredentials.map((user) => user.email), }, }, - ], + }, }, select: { - id: true, - uid: true, - userId: true, - startTime: true, - endTime: true, - title: true, - attendees: true, + ...bookingsSelect, + }, + }); + + const currentBookingsAllUsersQueryThree = prisma.booking.findMany({ + where: { + startTime: { lte: endTimeDate }, + endTime: { gte: startTimeDate }, eventType: { - select: { - id: true, - onlyShowFirstAvailableSlot: true, - afterEventBuffer: true, - beforeEventBuffer: true, - seatsPerTimeSlot: true, - requiresConfirmationWillBlockSlot: true, - requiresConfirmation: true, - }, + id: eventType.id, + requiresConfirmation: true, + requiresConfirmationWillBlockSlot: true, + }, + status: { + in: [BookingStatus.PENDING], }, - ...(!!eventType?.seatsPerTimeSlot && { - _count: { - select: { - seatsReferences: true, - }, - }, - }), + }, + select: { + ...bookingsSelect, }, }); + const [resultOne, resultTwo, resultThree] = await Promise.all([ + currentBookingsAllUsersQueryOne, + currentBookingsAllUsersQueryTwo, + currentBookingsAllUsersQueryThree, + ]); + + const currentBookingsAllUsers = [...resultOne, ...resultTwo, ...resultThree]; + const bookingLimits = parseBookingLimit(eventType?.bookingLimits); const durationLimits = parseDurationLimit(eventType?.durationLimits); let busyTimesFromLimitsBookingsAllUsers: Awaited> = []; From 54f7c8328d1ce77fd89ceab2b12f8b311b4e9d64 Mon Sep 17 00:00:00 2001 From: Calcom Bot <109866826+calcom-bot@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:13:06 +0200 Subject: [PATCH 26/64] feat: update translations (#16400) Co-authored-by: Replexica --- apps/web/public/static/locales/az/common.json | 2577 ++++++++++++++++- i18n.json | 6 +- 2 files changed, 2580 insertions(+), 3 deletions(-) diff --git a/apps/web/public/static/locales/az/common.json b/apps/web/public/static/locales/az/common.json index 0967ef424bce67..cbca63a7dc0d08 100644 --- a/apps/web/public/static/locales/az/common.json +++ b/apps/web/public/static/locales/az/common.json @@ -1 +1,2576 @@ -{} +{ + "identity_provider": "Şəxsiyyət təminatçısı", + "trial_days_left": "PRO sınaq müddətinizdə $t(day, {\"count\": {{days}} }) qalıb", + "day_one": "{{count}} gün", + "day_other": "{{count}} gün", + "second_one": "{{count}} saniyə", + "second_other": "{{count}} saniyə", + "upgrade_now": "İndi yüksəldin", + "accept_invitation": "Dəvəti qəbul edin", + "max_characters": "Maks. Simvollar", + "min_characters": "Min. Simvollar", + "calcom_explained": "{{appName}} hər kəs üçün planlaşdırma infrastrukturu təmin edir.", + "calcom_explained_new_user": "{{appName}} hesabınızı qurmağı tamamlayın! Bütün planlaşdırma problemlərinizi həll etməyə bir neçə addım qalıb.", + "have_any_questions": "Suallarınız var? Biz kömək etmək üçün buradayıq.", + "reset_password_subject": "{{appName}}: Şifrəni sıfırlama təlimatları", + "verify_email_subject": "{{appName}}: Hesabınızı təsdiqləyin", + "verify_email_subject_verifying_email": "{{appName}}: E-poçtunuzu təsdiqləyin", + "check_your_email": "E-poçtunuzu yoxlayın", + "old_email_address": "Köhnə E-poçt", + "new_email_address": "Yeni E-poçt", + "verify_email_page_body": "{{email}} ünvanına bir e-poçt göndərdik. {{appName}}-dən ən yaxşı e-poçt və təqvim çatdırılmasını təmin etmək üçün e-poçt ünvanınızı təsdiqləmək vacibdir.", + "verify_email_banner_body": "Ən yaxşı e-poçt və təqvim çatdırılmasını təmin etmək üçün e-poçt ünvanınızı təsdiqləyin", + "verify_email_email_header": "E-poçt ünvanınızı təsdiqləyin", + "verify_email_email_button": "E-poçtu təsdiqləyin", + "cal_ai_assistant": "Cal AI Köməkçisi", + "verify_email_change_description": "Son zamanlarda {{appName}} hesabınıza daxil olmaq üçün istifadə etdiyiniz e-poçt ünvanını dəyişdirmək istədiyinizi bildirdiniz. Yeni e-poçt ünvanınızı təsdiqləmək üçün aşağıdakı düyməni basın.", + "verify_email_change_success_toast": "E-poçt ünvanınız {{email}} olaraq yeniləndi", + "verify_email_change_failure_toast": "E-poçt ünvanını yeniləmək mümkün olmadı.", + "change_of_email": "Yeni {{appName}} e-poçt ünvanınızı təsdiqləyin", + "change_of_email_toast": "Təsdiq linkini {{email}} ünvanına göndərdik. Bu linkə kliklədikdən sonra e-poçt ünvanınız yenilənəcək.", + "copy_somewhere_safe": "Bu API açarını təhlükəsiz bir yerdə saxlayın. Onu yenidən görə bilməyəcəksiniz.", + "verify_email_email_body": "Aşağıdakı düyməyə klikləyərək e-poçt ünvanınızı təsdiqləyin.", + "verify_email_by_code_email_body": "Aşağıdakı kodu istifadə edərək e-poçt ünvanınızı təsdiqləyin.", + "verify_email_email_link_text": "Düymələrə klikləməyi sevmirsinizsə, burada link var:", + "email_verification_code": "Təsdiq kodunu daxil edin", + "email_verification_code_placeholder": "E-poçtunuza göndərilən təsdiq kodunu daxil edin", + "incorrect_email_verification_code": "Təsdiq kodu səhvdir.", + "email_sent": "E-poçt uğurla göndərildi", + "email_not_sent": "E-poçt göndərilərkən xəta baş verdi", + "event_declined_subject": "Rədd edildi: {{title}} {{date}} tarixində", + "event_cancelled_subject": "Ləğv edildi: {{title}} {{date}} tarixində", + "event_request_declined": "Tədbir sorğunuz rədd edildi", + "event_request_declined_recurring": "Təkrarlanan tədbir sorğunuz rədd edildi", + "event_request_cancelled": "Planlaşdırılmış tədbiriniz ləğv edildi", + "organizer": "Təşkilatçı", + "need_to_reschedule_or_cancel": "Yenidən planlaşdırmaq və ya ləğv etmək lazımdır?", + "no_options_available": "Mövcud seçimlər yoxdur", + "cancellation_reason": "Ləğv səbəbi (isteğe bağlı)", + "cancellation_reason_placeholder": "Niyə ləğv edirsiniz?", + "rejection_reason_placeholder": "Niyə rədd edirsiniz?", + "rejection_reason": "Rədd etmə səbəbi", + "rejection_reason_title": "Rezervasiya sorğusunu rədd edirsiniz?", + "rejection_reason_description": "Rezervasiyanı rədd etmək istədiyinizə əminsiniz? Rezervasiya etməyə çalışan şəxsə məlumat verəcəyik. Aşağıda səbəb göstərə bilərsiniz.", + "rejection_confirmation": "Rezervasiyanı rədd et", + "manage_this_event": "Bu tədbiri idarə et", + "invite_team_member": "Komanda üzvünü dəvət et", + "invite_team_individual_segment": "Fərdi dəvət et", + "invite_team_bulk_segment": "Toplu idxal", + "invite_team_notifcation_badge": "Dəv.", + "your_event_has_been_scheduled": "Tədbiriniz planlaşdırılıb", + "your_event_has_been_scheduled_recurring": "Təkrarlanan tədbiriniz planlaşdırılıb", + "accept_our_license": ".env faylında <1>NEXT_PUBLIC_LICENSE_CONSENT dəyişənini '{{agree}}' olaraq dəyişdirərək lisenziyamızı qəbul edin.", + "remove_banner_instructions": "Bu banneri silmək üçün .env faylınızı açın və <1>NEXT_PUBLIC_LICENSE_CONSENT dəyişənini '{{agree}}' olaraq dəyişdirin.", + "error_message": "Xəta mesajı: '{{errorMessage}}'", + "refund_failed_subject": "Geri ödəniş uğursuz oldu: {{name}} - {{date}} - {{eventType}}", + "refund_failed": "{{date}} tarixində {{userName}} ilə {{eventType}} tədbiri üçün geri ödəniş uğursuz oldu.", + "check_with_provider_and_user": "Ödəniş provayderiniz və {{user}} ilə bu məsələnin necə həll olunacağını yoxlayın.", + "a_refund_failed": "Geri ödəniş uğursuz oldu", + "awaiting_payment_subject": "Ödəniş gözlənilir: {{title}} {{date}} tarixində", + "meeting_awaiting_payment": "Görüşünüz ödəniş gözləyir", + "dark_theme_contrast_error": "Qaranlıq Tema rəngi kontrast yoxlamasından keçmir. Düymələrinizin daha görünən olması üçün bu rəngi dəyişdirməyi tövsiyə edirik.", + "light_theme_contrast_error": "Açıq Tema rəngi kontrast yoxlamasından keçmir. Düymələrinizin daha görünən olması üçün bu rəngi dəyişdirməyi tövsiyə edirik.", + "event_type_color_light_theme_contrast_error": "Açıq Tema rəngi kontrast yoxlamasından keçmir. Tədbir növlərinizin rənginin daha görünən olması üçün bu rəngi dəyişdirməyi tövsiyə edirik.", + "event_type_color_dark_theme_contrast_error": "Qaranlıq Tema rəngi kontrast yoxlamasından keçmir. Tədbir növlərinizin rənginin daha görünən olması üçün bu rəngi dəyişdirməyi tövsiyə edirik.", + "payment_not_created_error": "Ödəniş yaradıla bilmədi", + "couldnt_charge_card_error": "Ödəniş üçün kartdan pul çıxıla bilmədi", + "no_available_users_found_error": "Mövcud istifadəçilər tapılmadı. Başqa bir vaxt aralığını yoxlaya bilərsinizmi?", + "request_body_end_time_internal_error": "Daxili səhv. Sorğu bədənində bitmə vaxtı yoxdur", + "create_calendar_event_error": "Təşkilatçının təqvimində Təqvim hadisəsi yaradıla bilmir", + "update_calendar_event_error": "Təqvim hadisəsini yeniləmək mümkün deyil.", + "delete_calendar_event_error": "Təqvim hadisəsini silmək mümkün deyil.", + "already_signed_up_for_this_booking_error": "Siz artıq bu rezervasiya üçün qeydiyyatdan keçmisiniz.", + "hosts_unavailable_for_booking": "Bəzi ev sahibləri rezervasiya üçün mövcud deyil.", + "help": "Kömək", + "price": "Qiymət", + "paid": "Ödənilib", + "refunded": "Geri qaytarılıb", + "payment": "Ödəniş", + "missing_card_fields": "Kart məlumatları çatışmır", + "pay_now": "İndi ödə", + "general_prompt": "Ümumi sorğu", + "begin_message": "Mesaja başla", + "codebase_has_to_stay_opensource": "Kod bazası dəyişdirilsə də, açıq mənbə olaraq qalmalıdır", + "cannot_repackage_codebase": "Kod bazasını yenidən paketləyə və ya sata bilməzsiniz", + "acquire_license": "Bu şərtləri aradan qaldırmaq üçün kommersiya lisenziyası əldə etmək üçün e-poçt vasitəsilə əlaqə saxlayın", + "terms_summary": "Şərtlərin xülasəsi", + "open_env": ".env faylını açın və lisenziyamızı qəbul edin", + "env_changed": ".env faylını dəyişdirdim", + "accept_license": "Lisenziyanı qəbul edin", + "still_waiting_for_approval": "Tədbir hələ də təsdiq gözləyir", + "event_is_still_waiting": "Tədbir sorğusu hələ də gözləyir: {{attendeeName}} - {{date}} - {{eventType}}", + "no_more_results": "Daha çox nəticə yoxdur", + "no_results": "Nəticə yoxdur", + "load_more_results": "Daha çox nəticə yüklə", + "integration_meeting_id": "{{integrationName}} görüş ID: {{meetingId}}", + "confirmed_event_type_subject": "Təsdiqləndi: {{eventType}} {{name}} ilə {{date}} tarixində", + "new_event_request": "Yeni tədbir sorğusu: {{attendeeName}} - {{date}} - {{eventType}}", + "confirm_or_reject_request": "Sorğunu təsdiqləyin və ya rədd edin", + "check_bookings_page_to_confirm_or_reject": "Təsdiqləmək və ya rədd etmək üçün rezervasiya səhifənizi yoxlayın.", + "check_in_assistant": "Yoxlama köməkçisi", + "check_in_assistant_description": "Planlaşdırılmış görüşün uyğun olub-olmadığını yoxlamaq və ya yenidən planlaşdırmaq üçün çıxış zəngi edir.", + "create_your_own_prompt": "Öz təklifinizi yaradın və çıxış zəngi etmək üçün istifadə edin.", + "event_awaiting_approval": "Tədbir təsdiqiniz üçün gözləyir", + "event_awaiting_approval_recurring": "Təkrarlanan tədbir təsdiqiniz üçün gözləyir", + "someone_requested_an_event": "Kimsə təqviminizdə tədbir planlaşdırmağı xahiş etdi.", + "someone_requested_password_reset": "Kimsə parolunuzu dəyişdirmək üçün link xahiş etdi.", + "password_reset_email_sent": "Əgər bu e-poçt sistemimizdə mövcuddursa, sizə sıfırlama e-poçtu gəlməlidir.", + "password_reset_instructions": "Əgər bunu siz xahiş etməmisinizsə, bu e-poçtu təhlükəsiz şəkildə görməməzlikdən gələ bilərsiniz və parolunuz dəyişdirilməyəcək.", + "event_awaiting_approval_subject": "Təsdiq gözləyir: {{title}} {{date}} tarixində", + "event_still_awaiting_approval": "Tədbir hələ də təsdiqiniz üçün gözləyir", + "booking_submitted_subject": "Rezervasiya təqdim edildi: {{title}} {{date}} tarixində", + "download_recording_subject": "Yazını yüklə: {{title}} {{date}} tarixində", + "download_transcript_email_subject": "Transkripti yüklə: {{title}} {{date}} tarixində", + "download_your_recording": "Yazınızı yükləyin", + "download_your_transcripts": "Transkriptlərinizi yükləyin", + "your_meeting_has_been_booked": "Görüşünüz təyin edilib", + "event_type_has_been_rescheduled_on_time_date": "{{title}} {{date}} tarixinə təxirə salınıb.", + "event_has_been_rescheduled": "Yeniləndi - Tədbiriniz təxirə salınıb", + "request_reschedule_subtitle": "{{organizer}} rezervasiyanı ləğv edib və sizdən başqa bir vaxt seçməyinizi xahiş edir.", + "request_reschedule_title_organizer": "{{attendee}}-dən təxirə salmağı xahiş etdiniz", + "request_reschedule_subtitle_organizer": "Siz rezervasiyanı ləğv etdiniz və {{attendee}} sizinlə yeni bir vaxt seçməlidir.", + "rescheduled_event_type_subject": "Təxirə salma tələbi göndərildi: {{eventType}} {{name}} ilə {{date}} tarixində", + "requested_to_reschedule_subject_attendee": "Təxirə salma tələb olunur: {{eventType}} {{name}} ilə yeni vaxt təyin edin", + "hi_user_name": "Salam {{name}}", + "ics_event_title": "{{eventType}} {{name}} ilə", + "please_book_a_time_sometime_later": "Bağışlayın, bu dəfə əlaqə qura bilmədik. Zəhmət olmasa, gələcək bir zəng üçün vaxt təyin edin", + "new_event_subject": "Yeni tədbir: {{attendeeName}} - {{date}} - {{eventType}}", + "join_by_entrypoint": "{{entryPoint}} ilə qoşulun", + "notes": "Qeydlər", + "manage_my_bookings": "Rezervasiyalarımı idarə et", + "need_to_make_a_change": "Dəyişiklik etmək lazımdır?", + "new_event_scheduled": "Yeni tədbir təyin edilib.", + "new_event_scheduled_recurring": "Yeni təkrarlanan tədbir təyin edilib.", + "invitee_email": "Dəvət olunanın e-poçtu", + "invitee_timezone": "Dəvət olunanın vaxt zonası", + "time_left": "Qalan vaxt", + "event_type": "Tədbir növü", + "duplicate_event_type": "Təkrarlanan tədbir növü", + "enter_meeting": "Görüşə daxil ol", + "video_call_provider": "Video zəng təminatçısı", + "meeting_id": "Görüş ID", + "meeting_password": "Görüş şifrəsi", + "meeting_url": "Görüş URL", + "meeting_url_not_found": "Görüş URL tapılmadı", + "token_not_found": "Token tapılmadı", + "some_other_host_already_accepted_the_meeting": "Başqa bir ev sahibi artıq görüşü qəbul edib. Yenə də qoşulmaq istəyirsiniz? <1>Görüşə davam et", + "meeting_request_rejected": "Görüş tələbiniz rədd edildi", + "rejected_event_type_with_organizer": "Rədd edildi: {{eventType}} {{organizer}} ilə {{date}} tarixində", + "hi": "Salam", + "join_team": "Komandaya qoşul", + "manage_this_team": "Bu komandaya nəzarət et", + "team_info": "Komanda məlumatı", + "join_meeting": "Görüşə qoşul", + "request_another_invitation_email": "Əgər {{toEmail}} ünvanını {{appName}} e-poçtunuz kimi istifadə etmək istəmirsinizsə və ya artıq {{appName}} hesabınız varsa, həmin e-poçta başqa bir dəvət tələb edin.", + "you_have_been_invited": "{{teamName}} komandasına qoşulmağa dəvət edildiniz", + "user_invited_you": "{{user}} sizi {{appName}} üzərində {{entity}} {{team}} komandasına qoşulmağa dəvət etdi", + "user_invited_you_to_subteam": "{{user}} sizi {{appName}} üzərində {{parentTeamName}} təşkilatının {{team}} komandasına qoşulmağa dəvət etdi", + "hidden_team_member_title": "Bu komandada gizlisiniz", + "hidden_team_member_message": "Oturacağınız ödənilməyib, ya PRO-ya yüksəldin, ya da komanda sahibinə oturacağınız üçün ödəniş edə biləcəyini bildirin.", + "hidden_team_owner_message": "Komandalardan istifadə etmək üçün pro hesabına ehtiyacınız var, yüksəldənə qədər gizlisiniz.", + "link_expires": "p.s. Bu link {{expiresIn}} saat ərzində bitir.", + "upgrade_to_per_seat": "Oturacaq başına yüksəldin", + "seat_options_doesnt_support_confirmation": "Oturacaq seçimi təsdiq tələbini dəstəkləmir", + "multilocation_doesnt_support_seats": "Çoxsaylı yerlər oturacaq seçimini dəstəkləmir", + "no_show_fee_doesnt_support_seats": "Gəlməmə haqqı oturacaq seçimini dəstəkləmir", + "seats_option_doesnt_support_multi_location": "Oturacaq seçimi Çoxlu Məkanları dəstəkləmir", + "team_upgrade_seats_details": "Komandanızda {{memberCount}} üzvdən {{unpaidCount}} oturacaq ödənilməyib. Hər oturacaq üçün aylıq ${{seatPrice}} qiymətində, üzvlüyünüzün təxmini ümumi dəyəri ${{totalCost}}/aydır.", + "team_upgrade_banner_description": "Komanda quruluşunuzu tamamlamağınız qalıb. Komandanız \"{{teamName}}\" təkmilləşdirilməlidir.", + "upgrade_banner_action": "Buradan təkmilləşdirin", + "team_upgraded_successfully": "Komandanız uğurla təkmilləşdirildi!", + "org_upgrade_banner_description": "Təşkilat planımızı sınaqdan keçirdiyiniz üçün təşəkkür edirik. Təşkilatınız \"{{teamName}}\" təkmilləşdirilməlidir.", + "org_upgraded_successfully": "Təşkilatınız uğurla təkmilləşdirildi!", + "use_link_to_reset_password": "Şifrənizi sıfırlamaq üçün aşağıdakı linkdən istifadə edin", + "hey_there": "Salam,", + "forgot_your_password_calcom": "Şifrənizi unutmusunuz? - {{appName}}", + "delete_webhook_confirmation_message": "Bu webhook-u silmək istədiyinizə əminsinizmi? Tədbir planlaşdırıldıqda və ya ləğv edildikdə, real vaxtda müəyyən edilmiş URL-də {{appName}} görüş məlumatlarını artıq almayacaqsınız.", + "confirm_delete_webhook": "Bəli, webhook-u silin", + "edit_webhook": "Webhook-u redaktə edin", + "delete_webhook": "Webhook-u silin", + "webhook_status": "Webhook Statusu", + "webhook_enabled": "Webhook Aktivdir", + "webhook_disabled": "Webhook Deaktivdir", + "webhook_response": "Webhook cavabı", + "webhook_test": "Webhook testi", + "manage_your_webhook": "Webhook-u idarə edin", + "webhook_created_successfully": "Webhook uğurla yaradıldı!", + "webhook_updated_successfully": "Webhook uğurla yeniləndi!", + "webhook_removed_successfully": "Webhook uğurla silindi!", + "payload_template": "Yük Şablonu", + "dismiss": "Bağla", + "no_data_yet": "Hələ məlumat yoxdur", + "ping_test": "Ping testi", + "add_to_homescreen": "Daha sürətli giriş və təkmilləşdirilmiş təcrübə üçün bu tətbiqi ana ekrana əlavə edin.", + "upcoming": "Gələcək", + "recurring": "Təkrarlanan", + "past": "Keçmiş", + "choose_a_file": "Fayl seçin...", + "upload_image": "Şəkil yüklə", + "upload_target": "{{target}} yüklə", + "no_target": "Heç bir {{target}}", + "slide_zoom_drag_instructions": "Böyütmək üçün sürüşdürün, yerini dəyişmək üçün sürükləyin", + "view_notifications": "Bildirişləri bax", + "view_public_page": "İctimai səhifəyə bax", + "copy_public_page_link": "İctimai səhifə linkini kopyala", + "sign_out": "Çıxış", + "add_another": "Başqa birini əlavə et", + "install_another": "Başqa birini quraşdır", + "until": "qədər", + "powered_by": "ilə təmin edilir", + "unavailable": "Mövcud deyil", + "set_work_schedule": "İş cədvəlinizi təyin edin", + "change_bookings_availability": "Rezervasiya üçün mövcudluğunuzu dəyişin", + "select": "Seçin...", + "2fa_confirm_current_password": "Başlamaq üçün cari şifrənizi təsdiqləyin.", + "2fa_scan_image_or_use_code": "Telefonunuzdakı autentifikator tətbiqi ilə aşağıdakı şəkli skan edin və ya əvəzinə mətn kodunu əl ilə daxil edin.", + "text": "Mətn", + "your_phone_number": "Telefon Nömrəniz", + "multiline_text": "Çoxsətirli Mətn", + "number": "Nömrə", + "checkbox": "Qutu", + "is_required": "Tələb olunur", + "required": "Tələb olunur", + "optional": "İxtiyari", + "input_type": "Giriş növü", + "rejected": "Rədd edildi", + "unconfirmed": "Təsdiqlənməmiş", + "guests": "Qonaqlar", + "guest": "Qonaq", + "web_conferencing_details_to_follow": "Veb konfransın təfərrüatları təsdiq e-poçtunda göndəriləcək.", + "404_the_user": "İstifadəçi adı", + "username": "İstifadəçi adı", + "is_still_available": "hələ də mövcuddur.", + "documentation": "Sənədlər", + "documentation_description": "Alətlərimizi tətbiqinizə necə inteqrasiya edəcəyinizi öyrənin", + "api_reference": "API İstinad", + "api_reference_description": "Kitabxanalarımız üçün tam API istinadı", + "blog": "Bloq", + "blog_description": "Ən son xəbərlərimizi və məqalələrimizi oxuyun", + "join_our_community": "İcmaımıza qoşulun", + "404_claim_entity_user": "İstifadəçi adınızı tələb edin və tədbirləri planlaşdırın", + "popular_pages": "Populyar səhifələr", + "register_now": "İndi qeydiyyatdan keçin", + "register": "Qeydiyyat", + "page_doesnt_exist": "Bu səhifə mövcud deyil.", + "check_spelling_mistakes_or_go_back": "Yazı səhvlərini yoxlayın və ya əvvəlki səhifəyə qayıdın.", + "404_page_not_found": "404: Bu səhifə tapılmadı.", + "booker_event_not_found": "Rezerv etmək istədiyiniz tədbiri tapa bilmədik.", + "getting_started": "Başlanğıc", + "15min_meeting": "15 Dəqiqəlik Görüş", + "30min_meeting": "30 Dəqiqəlik Görüş", + "secret": "Gizli", + "leave_blank_to_remove_secret": "Gizliliyi aradan qaldırmaq üçün boş buraxın", + "webhook_secret_key_description": "Təhlükəsizlik səbəbindən serverinizin yalnız gözlənilən {{appName}} sorğularını aldığından əmin olun", + "secret_meeting": "Gizli Görüş", + "login_instead": "Əvəzinə daxil olun", + "already_have_an_account": "Artıq hesabınız var?", + "create_account": "Hesab yaradın", + "confirm_password": "Şifrəni təsdiqləyin", + "reset_your_password": "E-poçt ünvanınıza göndərilən təlimatlarla yeni şifrənizi təyin edin.", + "org_banner_instructions": "Zəhmət olmasa {{width}} enində və {{height}} hündürlüyündə şəkil yükləyin.", + "email_change": "Yeni e-poçt ünvanınız və şifrənizlə yenidən daxil olun.", + "create_your_account": "Hesabınızı yaradın", + "create_your_calcom_account": "Cal.com hesabınızı yaradın", + "sign_up": "Qeydiyyatdan keçin", + "youve_been_logged_out": "Sistemdən çıxmısınız", + "hope_to_see_you_soon": "Ümid edirik ki, tezliklə yenidən görüşərik!", + "logged_out": "Çıxış edildi", + "please_try_again_and_contact_us": "Zəhmət olmasa yenidən cəhd edin və problem davam edərsə bizimlə əlaqə saxlayın.", + "incorrect_2fa_code": "İki faktorlu kod yanlışdır.", + "no_account_exists": "Bu e-poçt ünvanına uyğun hesab mövcud deyil.", + "2fa_enabled_instructions": "İki faktorlu autentifikasiya aktivdir. Zəhmət olmasa autentifikator tətbiqinizdən altı rəqəmli kodu daxil edin.", + "2fa_enter_six_digit_code": "Aşağıda autentifikator tətbiqinizdən altı rəqəmli kodu daxil edin.", + "create_an_account": "Hesab yaradın", + "dont_have_an_account": "Hesabınız yoxdur?", + "2fa_code": "İki Faktorlu Kod", + "sign_in_account": "Hesabınıza daxil olun", + "sign_in": "Daxil ol", + "go_back_login": "Giriş səhifəsinə qayıdın", + "error_during_login": "Giriş zamanı səhv baş verdi. Giriş ekranına qayıdın və yenidən cəhd edin.", + "request_password_reset": "Şifrəni sıfırlama e-poçtu göndərin", + "send_invite": "Dəvət göndərin", + "forgot_password": "Şifrəni unutmusunuz?", + "forgot": "Unutdunuz?", + "done": "Tamam", + "all_done": "Hamısı tamam!", + "all": "Hamısı", + "yours": "Sizin hesabınız", + "available_apps": "Mövcud Tətbiqlər", + "available_apps_lower_case": "mövcud tətbiqlər", + "available_apps_desc": "Aşağıda məşhur tətbiqlərə baxın və daha çoxunu <1>Tətbiq Mağazamızda kəşf edin", + "fixed_host_helper": "Tədbirdə iştirak etməli olan hər kəsi əlavə edin. <1>Daha çox öyrənin", + "round_robin_helper": "Qrupdakı insanlar növbə ilə iştirak edir və tədbirdə yalnız bir nəfər iştirak edəcək.", + "check_email_reset_password": "E-poçtunuzu yoxlayın. Şifrənizi sıfırlamaq üçün sizə bir link göndərdik.", + "finish": "Bitir", + "organization_general_description": "Komandanızın dil və saat qurşağı parametrlərini idarə edin", + "few_sentences_about_yourself": "Özünüz haqqında bir neçə cümlə. Bu, şəxsi URL səhifənizdə görünəcək.", + "nearly_there": "Demək olar ki, hazır!", + "nearly_there_instructions": "Son addım, qısa bir təsvir və fotoşəkil sizin rezervasiyalarınızı artırmağa və kimlə görüşəcəklərini bilməyə kömək edir.", + "set_availability_instructions": "Təkrarlanan əsasda mövcud olduğunuz vaxt aralıqlarını təyin edin. Daha sonra bunlardan daha çoxunu yarada və müxtəlif təqvimlərə təyin edə bilərsiniz.", + "set_availability": "Mövcudluğunuzu təyin edin", + "set_availbility_description": "Rezervasiya olunmaq istədiyiniz vaxtlar üçün cədvəllər təyin edin.", + "share_a_link_or_embed": "Bir link paylaşın və ya yerləşdirin", + "share_a_link_or_embed_description": "{{appName}} linkinizi paylaşın və ya saytınıza yerləşdirin.", + "availability_settings": "Mövcudluq Parametrləri", + "continue_without_calendar": "Təqvimsiz davam edin", + "continue_with": "{{appName}} ilə davam edin", + "connect_your_calendar": "Təqviminizi bağlayın", + "connect_your_video_app": "Video tətbiqlərinizi bağlayın", + "connect_your_video_app_instructions": "Tədbir növlərinizdə istifadə etmək üçün video tətbiqlərinizi bağlayın.", + "connect_your_calendar_instructions": "Məşğul vaxtları və yeni tədbirləri avtomatik yoxlamaq üçün təqviminizi bağlayın.", + "set_up_later": "Daha sonra qur", + "current_time": "Cari vaxt", + "details": "Detallar", + "welcome": "Xoş gəlmisiniz", + "welcome_back": "Yenidən xoş gəldiniz", + "welcome_to_calcom": "{{appName}}-a xoş gəldiniz", + "welcome_instructions": "Sizi necə çağıracağımızı və hansı zaman zonasındasınızsa, bizə bildirin. Bunu sonradan redaktə edə biləcəksiniz.", + "connect_caldav": "CalDav-a qoşulun (Beta)", + "connect_ics_feed": "ICS Feed-ə qoşulun", + "connect": "Qoşulun", + "try_for_free": "Pulsuz sınayın", + "create_booking_link_with_calcom": "{{appName}} ilə öz rezervasiya linkinizi yaradın", + "who": "Kim", + "what": "Nə", + "when": "Nə vaxt", + "where": "Harada", + "add_to_calendar": "Təqvimə əlavə edin", + "add_to_calendar_description": "Rezervasiya edildikdə hadisələri hara əlavə edəcəyinizi seçin.", + "add_events_to": "Hadisələri əlavə edin", + "add_another_calendar": "Başqa bir təqvim əlavə edin", + "other": "Digər", + "email_sign_in_subject": "{{appName}} üçün giriş linkiniz", + "round_robin_emailed_you_and_attendees": "{{user}} ilə görüşürsünüz. Təfərrüatları olan təqvim dəvəti ilə hər kəsə e-poçt göndərdik.", + "emailed_you_and_attendees": "Təfərrüatları olan təqvim dəvəti ilə hər kəsə e-poçt göndərdik.", + "emailed_you_and_attendees_recurring": "Bu təkrarlanan hadisələrin birincisi üçün təfərrüatları olan təqvim dəvəti ilə hər kəsə e-poçt göndərdik.", + "round_robin_emailed_you_and_attendees_recurring": "{{user}} ilə görüşürsünüz. Bu təkrarlanan hadisələrin birincisi üçün təfərrüatları olan təqvim dəvəti ilə hər kəsə e-poçt göndərdik.", + "emailed_you_and_any_other_attendees": "Bu məlumatla hər kəsə e-poçt göndərdik.", + "needs_to_be_confirmed_or_rejected": "Rezervasiyanız hələ də təsdiqlənməli və ya rədd edilməlidir.", + "needs_to_be_confirmed_or_rejected_recurring": "Təkrarlanan görüşünüz hələ də təsdiqlənməli və ya rədd edilməlidir.", + "user_needs_to_confirm_or_reject_booking": "{{user}} hələ də rezervasiyanı təsdiqləməli və ya rədd etməlidir.", + "user_needs_to_confirm_or_reject_booking_recurring": "{{user}} hələ də təkrarlanan görüşün hər bir rezervasiyasını təsdiqləməli və ya rədd etməlidir.", + "meeting_is_scheduled": "Bu görüş planlaşdırılıb", + "meeting_is_scheduled_recurring": "Təkrarlanan tədbirlər planlaşdırılıb", + "booking_submitted": "Rezervasiyanız təqdim edilib", + "booking_submitted_recurring": "Təkrarlanan görüşünüz təqdim edilib", + "booking_confirmed": "Rezervasiyanız təsdiqlənib", + "booking_confirmed_recurring": "Təkrarlanan görüşünüz təsdiqlənib", + "warning_recurring_event_payment": "Təkrarlanan tədbirlər üçün ödənişlər hələ dəstəklənmir", + "warning_payment_recurring_event": "Ödənişlər üçün təkrarlanan tədbirlər hələ dəstəklənmir", + "enter_new_password": "Hesabınız üçün yeni parolu daxil edin.", + "reset_password": "Parolu sıfırlayın", + "change_your_password": "Parolunuzu dəyişin", + "show_password": "Parolu göstər", + "hide_password": "Parolu gizlət", + "try_again": "Yenidən cəhd edin", + "request_is_expired": "Bu sorğu müddəti bitib.", + "reset_instructions": "Hesabınızla əlaqəli e-poçt ünvanını daxil edin və biz sizə parolu sıfırlamaq üçün bir keçid göndərəcəyik.", + "request_is_expired_instructions": "Bu sorğunun müddəti bitib. Geri qayıdın və hesabınızla əlaqəli e-poçt ünvanını daxil edin və biz sizə başqa bir keçid göndərəcəyik.", + "whoops": "Oops", + "login": "Giriş", + "success": "Uğur", + "failed": "Uğursuz", + "password_has_been_reset_login": "Parolunuz sıfırlandı. İndi yeni yaradılmış parolunuzla daxil ola bilərsiniz.", + "layout": "Tərtibat", + "bookerlayout_default_title": "Standart görünüş", + "bookerlayout_description": "Bir neçə seçim edə bilərsiniz və istifadəçilər görünüşləri dəyişə bilərlər.", + "bookerlayout_user_settings_title": "Rezervasiya görünüşü", + "bookerlayout_user_settings_description": "Bir neçə seçim edə bilərsiniz və istifadəçilər görünüşləri dəyişə bilərlər. Bu, hər bir tədbir üçün ayrıca dəyişdirilə bilər.", + "bookerlayout_month_view": "Ay", + "bookerlayout_week_view": "Həftəlik", + "bookerlayout_column_view": "Sütun", + "bookerlayout_error_min_one_enabled": "Ən azı bir görünüş aktiv olmalıdır.", + "bookerlayout_error_default_not_enabled": "Standart görünüş kimi seçdiyiniz görünüş aktiv görünüşlər arasında deyil.", + "bookerlayout_error_unknown_layout": "Seçdiyiniz görünüş etibarlı deyil.", + "bookerlayout_override_global_settings": "Bunu bütün tədbir növləri üçün Parametrlər -> <2>Görünüş və ya yalnız bu tədbir üçün <6>Dəyişdir bölməsində idarə edə bilərsiniz.", + "unexpected_error_try_again": "Gözlənilməz bir səhv baş verdi. Yenidən cəhd edin.", + "sunday_time_error": "Bazar günü üçün etibarsız vaxt", + "monday_time_error": "Bazar ertəsi üçün etibarsız vaxt", + "tuesday_time_error": "Çərşənbə axşamı üçün etibarsız vaxt", + "wednesday_time_error": "Çərşənbə günü üçün etibarsız vaxt", + "thursday_time_error": "Cümə axşamı üçün etibarsız vaxt", + "friday_time_error": "Cümə günü üçün etibarsız vaxt", + "saturday_time_error": "Şənbə günü üçün etibarsız vaxt", + "error_end_time_before_start_time": "Bitmə vaxtı başlama vaxtından əvvəl ola bilməz", + "error_end_time_next_day": "Bitmə vaxtı 24 saatdan çox ola bilməz", + "back_to_bookings": "Rezervasiyalara geri dön", + "free_to_pick_another_event_type": "Başqa bir tədbir növünü seçməkdə sərbəstsiniz.", + "cancelled": "Ləğv edildi", + "cancellation_successful": "Ləğv uğurla tamamlandı", + "really_cancel_booking": "Rezervasiyanı həqiqətən ləğv etmək istəyirsiniz?", + "cannot_cancel_booking": "Bu rezervasiyanı ləğv edə bilməzsiniz", + "reschedule_instead": "Bunun əvəzinə, onu yenidən planlaşdıra bilərsiniz.", + "event_is_in_the_past": "Tədbir keçmişdədir", + "cancelling_event_recurring": "Tədbir təkrarlanan tədbirin bir hissəsidir.", + "cancelling_all_recurring": "Bunlar təkrarlanan tədbirin qalan bütün hissələridir.", + "error_with_status_code_occured": "{{status}} status kodu ilə səhv baş verdi.", + "error_event_type_url_duplicate": "Bu URL ilə tədbir növü artıq mövcuddur.", + "error_event_type_unauthorized_create": "Bu tədbiri yaratmaq səlahiyyətiniz yoxdur", + "error_event_type_unauthorized_update": "Bu tədbiri redaktə etmək səlahiyyətiniz yoxdur", + "error_workflow_unauthorized_create": "Bu iş axınını yaratmaq səlahiyyətiniz yoxdur", + "error_schedule_unauthorized_create": "Bu cədvəli yaratmaq səlahiyyətiniz yoxdur", + "booking_already_cancelled": "Bu rezervasiya artıq ləğv edilib", + "booking_already_accepted_rejected": "Bu rezervasiya artıq qəbul edilib və ya rədd edilib", + "go_back_home": "Evə qayıt", + "or_go_back_home": "Yaxud evə qayıt", + "no_meeting_found": "Görüş tapılmadı", + "no_meeting_found_description": "Bu görüş mövcud deyil. Yenilənmiş link üçün görüş sahibinə müraciət edin.", + "no_status_bookings_yet": "Hələ {{status}} rezervasiya yoxdur", + "no_status_bookings_yet_description": "Hələ {{status}} rezervasiyanız yoxdur. {{description}}", + "event_between_users": "{{eventName}} {{host}} və {{attendeeName}} arasında", + "bookings": "Rezervasiyalar", + "booking_not_found": "Rezervasiya tapılmadı", + "bookings_description": "Tədbir növü linkləriniz vasitəsilə rezervasiya edilmiş gələcək və keçmiş tədbirləri görün.", + "upcoming_bookings": "Kimsə sizinlə vaxt rezervasiya edən kimi, burada görünəcək.", + "recurring_bookings": "Kimsə sizinlə təkrarlanan görüş təyin edəndə, bu burada görünəcək.", + "past_bookings": "Keçmiş rezervasiyalarınız burada görünəcək.", + "cancelled_bookings": "Ləğv edilmiş rezervasiyalarınız burada görünəcək.", + "unconfirmed_bookings": "Təsdiqlənməmiş rezervasiyalarınız burada görünəcək.", + "unconfirmed_bookings_tooltip": "Təsdiqlənməmiş rezervasiyalar", + "on": "tarixində", + "and": "və", + "calendar_shows_busy_between": "Təqviminiz sizi bu vaxtlar arasında məşğul göstərir", + "troubleshoot": "Problemi həll et", + "troubleshoot_description": "Niyə bəzi vaxtların mövcud olduğunu və digərlərinin bloklandığını başa düş.", + "overview_of_day": "Gününüzün ümumi görünüşü burada", + "hover_over_bold_times_tip": "Məsləhət: Tam zaman damğası üçün qalın vaxtların üzərinə gəlin", + "start_time": "Başlama vaxtı", + "end_time": "Bitmə vaxtı", + "buffer_time": "Bufer vaxtı", + "before_event": "Tədbirdən əvvəl", + "after_event": "Tədbirdən sonra", + "event_buffer_default": "Bufer vaxtı yoxdur", + "buffer": "Bufer", + "your_day_starts_at": "Gününüz başlayır", + "your_day_ends_at": "Gününüz bitir", + "launch_troubleshooter": "Problemi həll edəni işə sal", + "troubleshoot_availability": "Mövcudluğunuzu həll edin və vaxtlarınızın niyə belə göründüyünü araşdırın.", + "change_available_times": "Mövcud vaxtları dəyişdirin", + "change_your_available_times": "Mövcud vaxtlarınızı dəyişdirin", + "change_start_end": "Gününüzün başlama və bitmə vaxtlarını dəyişin", + "change_start_end_buffer": "Gününüzün başlama və bitmə vaxtını və görüşləriniz arasında minimum tamponu təyin edin.", + "current_start_date": "Hal-hazırda, gününüzün başlama vaxtı", + "start_end_changed_successfully": "Gününüzün başlama və bitmə vaxtları uğurla dəyişdirildi.", + "and_end_at": "və bitmə vaxtı", + "light": "İşıq", + "dark": "Qaranlıq", + "automatically_adjust_theme": "Dəvət olunanların üstünlüklərinə əsasən mövzunu avtomatik tənzimləyin", + "user_dynamic_booking_disabled": "Qrupdakı bəzi istifadəçilər hazırda dinamik qrup rezervasiyalarını deaktiv ediblər", + "allow_dynamic_booking_tooltip": "Çoxsaylı istifadəçi adlarını '+' ilə əlavə edərək dinamik olaraq yaradıla bilən qrup rezervasiya bağlantıları. misal: '{{appName}}/bailey+peer'", + "allow_dynamic_booking": "İştirakçılara dinamik qrup rezervasiyaları vasitəsilə sizi rezervasiya etməyə icazə verin", + "dynamic_booking": "Dinamik qrup bağlantıları", + "allow_seo_indexing": "Axtarış motorlarının ictimai məzmununuza daxil olmasına icazə verin", + "seo_indexing": "SEO İndeksləməsinə İcazə Verin", + "email": "Email", + "email_placeholder": "jdoe@example.com", + "full_name": "Tam ad", + "browse_api_documentation": "API sənədlərimizi nəzərdən keçirin", + "leverage_our_api": "Tam nəzarət və fərdiləşdirmə üçün API-mizdən istifadə edin.", + "create_webhook": "Webhook Yaradın", + "instant_meeting": "Ani Görüş Yaradıldı", + "booking_cancelled": "Rezervasiya Ləğv Edildi", + "booking_rescheduled": "Rezervasiya Yenidən Planlaşdırıldı", + "recording_ready": "Yükləmə Linki Hazırdır", + "recording_transcription_generated": "Transkript Yaradıldı", + "booking_created": "Rezervasiya yaradıldı", + "booking_rejected": "Rezervasiya rədd edildi", + "booking_requested": "Rezervasiya istənildi", + "booking_payment_initiated": "Rezervasiya ödənişi başlandı", + "meeting_ended": "Görüş bitdi", + "form_submitted": "Form göndərildi", + "booking_paid": "Rezervasiya ödənildi", + "booking_no_show_updated": "Rezervasiya gəlməmə yeniləndi", + "event_triggers": "Hadisə tetikleyiciləri", + "subscriber_url": "Abunəçi URL", + "create_new_webhook": "Yeni webhook yarat", + "webhooks": "Webhooks", + "team_webhooks": "Komanda webhooks", + "create_new_webhook_to_account": "Hesabınıza yeni webhook yarat", + "new_webhook": "Yeni Webhook", + "receive_cal_meeting_data": "{{appName}} görüş məlumatlarını təyin olunmuş URL-də, real vaxtda, hadisə planlaşdırıldıqda və ya ləğv edildikdə alın.", + "receive_cal_event_meeting_data": "{{appName}} görüş məlumatlarını təyin olunmuş URL-də, real vaxtda, bu hadisə planlaşdırıldıqda və ya ləğv edildikdə alın.", + "responsive_fullscreen_iframe": "Cavab verən tam ekran iframe", + "loading": "Yüklənir...", + "deleting": "Silinir...", + "standard_iframe": "Standart iframe", + "developer": "İnkişaf etdirici", + "manage_developer_settings": "İnkişaf etdirici parametrlərinizi idarə edin.", + "iframe_embed": "iframe Əlavə", + "embed_calcom": "{{appName}}-i veb saytınıza əlavə etməyin ən asan yolu.", + "integrate_using_embed_or_webhooks": "Veb saytınıza yerləşdirmə seçimlərimizdən istifadə edərək inteqrasiya edin və ya xüsusi vebhoklar vasitəsilə real vaxtda rezervasiya məlumatlarını əldə edin.", + "schedule_a_meeting": "Görüş təyin edin", + "view_and_manage_billing_details": "Ödəniş məlumatlarınıza baxın və idarə edin", + "view_and_edit_billing_details": "Ödəniş məlumatlarınıza baxın və redaktə edin, həmçinin abunəliyinizi ləğv edin.", + "go_to_billing_portal": "Ödəniş portalına keçin", + "need_anything_else": "Başqa bir şeyə ehtiyacınız var?", + "further_billing_help": "Ödənişlə bağlı əlavə köməyə ehtiyacınız varsa, dəstək komandamız buradadır.", + "contact": "Əlaqə", + "our_support_team": "dəstək komandamız", + "contact_our_support_team": "Dəstək komandamızla əlaqə saxlayın", + "uh_oh": "Vay!", + "no_event_types_have_been_setup": "Bu istifadəçi hələ heç bir tədbir növü qurmayıb.", + "edit_logo": "Loqonu redaktə edin", + "upload_a_logo": "Loqo yükləyin", + "upload_logo": "Loqo yükləyin", + "remove_logo": "Loqonu silin", + "enable": "Aktiv edin", + "code": "Kod", + "code_is_incorrect": "Kod səhvdir.", + "add_time_availability": "Yeni vaxt aralığı əlavə edin", + "add_an_extra_layer_of_security": "Şifrəniz oğurlandığı halda hesabınıza əlavə təhlükəsizlik qatını əlavə edin.", + "2fa": "İki Faktorlu Doğrulama", + "2fa_disabled": "İki faktorlu doğrulama yalnız e-poçt və şifrə doğrulaması üçün aktiv edilə bilər", + "enable_2fa": "İki faktorlu doğrulamayı aktiv edin", + "disable_2fa": "İki faktorlu doğrulamayı deaktiv edin", + "disable_2fa_recommendation": "İki faktorlu autentifikasiyanı (2FA) deaktiv etməlisinizsə, onu mümkün qədər tez yenidən aktiv etməyi tövsiyə edirik.", + "error_disabling_2fa": "İki faktorlu autentifikasiyanı deaktiv edərkən səhv baş verdi", + "error_enabling_2fa": "İki faktorlu autentifikasiyanı qurarkən səhv baş verdi", + "security": "Təhlükəsizlik", + "manage_account_security": "Hesabınızın təhlükəsizliyini idarə edin.", + "password": "Şifrə", + "password_updated_successfully": "Şifrə uğurla yeniləndi", + "password_has_been_changed": "Şifrəniz uğurla dəyişdirildi.", + "error_changing_password": "Şifrəni dəyişdirərkən səhv baş verdi", + "session_timeout_changed": "Sessiya konfiqurasiyanız uğurla yeniləndi.", + "session_timeout_change_error": "Sessiya konfiqurasiyasını yeniləyərkən səhv baş verdi", + "something_went_wrong": "Nəsə səhv getdi.", + "something_doesnt_look_right": "Nəsə düzgün görünmür?", + "please_try_again": "Zəhmət olmasa, yenidən cəhd edin.", + "super_secure_new_password": "Çox təhlükəsiz yeni şifrəniz", + "new_password": "Yeni Şifrə", + "your_old_password": "Köhnə şifrəniz", + "current_password": "Cari Şifrə", + "change_password": "Şifrəni Dəyiş", + "change_secret": "Gizli Məlumatı Dəyiş", + "new_password_matches_old_password": "Yeni şifrə köhnə şifrənizlə eynidir. Zəhmət olmasa, fərqli bir şifrə seçin.", + "forgotten_secret_description": "Bu gizli məlumatı itirmisinizsə və ya unutmusunuzsa, onu dəyişə bilərsiniz, lakin unutmayın ki, bu gizli məlumatı istifadə edən bütün inteqrasiyalar yenilənməlidir", + "current_incorrect_password": "Cari şifrə yanlışdır", + "password_hint_caplow": "Böyük və kiçik hərflərin qarışığı", + "password_hint_min": "Minimum 7 simvol uzunluğunda", + "password_hint_admin_min": "Minimum 15 simvol uzunluğunda", + "password_hint_num": "Ən azı 1 rəqəm olmalıdır", + "max_limit_allowed_hint": "{{limit}} və ya daha az simvol uzunluğunda olmalıdır", + "invalid_password_hint": "Şifrə ən azı {{passwordLength}} simvol uzunluğunda olmalı, ən azı bir rəqəm və böyük və kiçik hərflərin qarışığını ehtiva etməlidir", + "incorrect_password": "Şifrə yanlışdır.", + "incorrect_email_password": "Email və ya şifrə yanlışdır.", + "use_setting": "Ayarı istifadə et", + "am_pm": "am/pm", + "time_options": "Vaxt seçimləri", + "january": "Yanvar", + "february": "Fevral", + "march": "Mart", + "april": "Aprel", + "may": "May", + "june": "İyun", + "july": "İyul", + "august": "Avqust", + "september": "Sentyabr", + "october": "Oktyabr", + "november": "Noyabr", + "december": "Dekabr", + "monday": "Bazar ertəsi", + "tuesday": "Çərşənbə axşamı", + "wednesday": "Çərşənbə", + "thursday": "Cümə axşamı", + "friday": "Cümə", + "saturday": "Şənbə", + "sunday": "Bazar", + "all_booked_today": "Bütün yerlər doludur.", + "slots_load_fail": "Mövcud vaxt intervallarını yükləmək mümkün olmadı.", + "additional_guests": "Qonaqlar əlavə edin", + "your_name": "Adınız", + "your_full_name": "Tam adınız", + "no_name": "Ad yoxdur", + "enter_number_between_range": "Zəhmət olmasa 1 ilə {{maxOccurences}} arasında bir rəqəm daxil edin", + "email_address": "E-poçt ünvanı", + "enter_valid_email": "Zəhmət olmasa etibarlı bir e-poçt ünvanı daxil edin", + "please_schedule_future_call": "Zəhmət olmasa {{seconds}} saniyə ərzində mövcud deyilsə, gələcək bir zəng planlaşdırın", + "location": "Məkan", + "address": "Ünvan", + "enter_address": "Ünvanı daxil edin", + "in_person_attendee_address": "Şəxsi (İştirakçının ünvanı)", + "yes": "Bəli", + "no": "Xeyr", + "additional_notes": "Əlavə qeydlər", + "booking_fail": "Görüşü sifariş etmək mümkün olmadı.", + "reschedule_fail": "Görüşü yenidən planlaşdırmaq mümkün olmadı.", + "share_additional_notes": "Görüşümüzə hazırlaşmaq üçün kömək edəcək hər hansı bir şeyi paylaşın.", + "booking_confirmation": "{{profileName}} ilə {{eventTypeTitle}} təsdiq edin", + "booking_reschedule_confirmation": "{{profileName}} ilə {{eventTypeTitle}} yenidən planlaşdırın", + "in_person_meeting": "Üz-üzə görüş", + "in_person": "Üz-üzə (Təşkilatçının ünvanı)", + "link_meeting": "Link görüşü", + "phone_number": "Telefon nömrəsi", + "attendee_phone_number": "İştirakçının telefon nömrəsi", + "organizer_phone_number": "Təşkilatçının telefon nömrəsi", + "enter_phone_number": "Telefon nömrəsini daxil edin", + "reschedule": "Yenidən planlaşdır", + "reschedule_this": "Bunun əvəzinə yenidən planlaşdır", + "book_a_team_member": "Komanda üzvünü sifariş et", + "or": "VƏ YA", + "go_back": "Geri qayıt", + "email_or_username": "Email və ya İstifadəçi adı", + "send_invite_email": "Dəvət emaili göndər", + "role": "Rol", + "edit_role": "Rolu redaktə et", + "edit_team": "Komandanı redaktə et", + "reject": "Rədd et", + "reject_all": "Hamısını rədd et", + "accept": "Qəbul et", + "leave": "Tərk et", + "profile": "Profil", + "my_team_url": "Mənim komanda URL-im", + "my_teams": "Mənim komandalarım", + "team_name": "Komanda adı", + "your_team_name": "Komandanızın adı", + "team_updated_successfully": "Komanda uğurla yeniləndi", + "your_team_updated_successfully": "Komandanız uğurla yeniləndi.", + "your_org_updated_successfully": "Təşkilatınız uğurla yeniləndi.", + "about": "Haqqında", + "team_description": "Komandanız haqqında bir neçə cümlə. Bu, komandanızın URL səhifəsində görünəcək.", + "org_description": "Təşkilatınız haqqında bir neçə cümlə. Bu, təşkilatınızın URL səhifəsində görünəcək.", + "members": "Üzvlər", + "organization_members": "Təşkilat üzvləri", + "member": "Üzv", + "number_member_one": "{{count}} üzv", + "number_member_other": "{{count}} üzv", + "number_selected": "{{count}} seçildi", + "owner": "Sahib", + "admin": "Admin", + "admin_api": "Admin API", + "administrator_user": "Administrator istifadəçi", + "lets_create_first_administrator_user": "Gəlin ilk administrator istifadəçini yaradaq.", + "admin_user_created": "Administrator istifadəçi yaradıldı", + "admin_user_created_description": "Artıq administrator istifadəçi yaratmısınız. İndi hesabınıza daxil ola bilərsiniz.", + "new_member": "Yeni Üzv", + "invite": "Dəvət et", + "add_team_members": "Komanda üzvlərini əlavə et", + "add_org_members": "Üzvləri əlavə et", + "add_team_members_description": "Başqalarını komandanıza qoşulmağa dəvət edin", + "add_team_member": "Komanda üzvü əlavə et", + "invite_new_member": "Yeni komanda üzvü dəvət et", + "invite_new_member_description": "Qeyd: Bu, abunəliyinizə əlavə yer (15$/ay) başa gələcək.", + "invite_new_team_member": "Komandanıza birini dəvət edin.", + "upload_csv_file": ".csv faylı yüklə", + "invite_via_email": "Email vasitəsilə dəvət et", + "change_member_role": "Komanda üzvünün rolunu dəyiş", + "disable_cal_branding": "{{appName}} brendinqini deaktiv et", + "disable_cal_branding_description": "İctimai səhifələrinizdən bütün {{appName}} brendinqini gizlədin.", + "hide_book_a_team_member": "Komanda üzvü sifariş et düyməsini gizlət", + "hide_book_a_team_member_description": "İctimai səhifələrinizdən Komanda üzvü sifariş et düyməsini gizlədin.", + "danger_zone": "Təhlükə zonası", + "account_deletion_cannot_be_undone": "Diqqətli olun. Hesabın silinməsi geri qaytarıla bilməz.", + "team_deletion_cannot_be_undone": "Diqqətli olun. Komandanın silinməsi geri qaytarıla bilməz.", + "back": "Geri", + "cancel": "Ləğv et", + "cancel_all_remaining": "Qalanların hamısını ləğv et", + "apply": "Tətbiq et", + "cancel_event": "Tədbiri ləğv et", + "continue": "Davam et", + "confirm": "Təsdiq et", + "confirm_all": "Hamısını təsdiq et", + "disband_team": "Komandanı dağıt", + "disband_team_confirmation_message": "Bu komandanı dağıtmaq istədiyinizə əminsinizmi? Bu komanda linkini paylaşdığınız hər kəs artıq onu istifadə edərək sifariş edə bilməyəcək.", + "disband_org": "Təşkilatı dağıt", + "disband_org_confirmation_message": "Bu təşkilatı ləğv etmək istədiyinizə əminsinizmi? Bütün komandalar və üzvlər silinəcək.", + "remove_member_confirmation_message": "Bu üzvü komandadan çıxarmaq istədiyinizə əminsinizmi?", + "confirm_disband_team": "Bəli, komandayı ləğv et", + "confirm_remove_member": "Bəli, üzvü çıxar", + "remove_member": "Üzvü çıxar", + "manage_your_team": "Komandanızı idarə edin", + "no_teams": "Hələ heç bir komandanız yoxdur.", + "no_teams_description": "Komandalar həmkarlarınız arasında paylaşılan tədbirləri sifariş etməyə imkan verir.", + "submit": "Təsdiqlə", + "delete": "Sil", + "update": "Yenilə", + "save": "Yadda saxla", + "pending": "Gözləyir", + "open_options": "Seçimləri aç", + "copy_link": "Tədbirin linkini kopyala", + "share": "Paylaş", + "share_event": "Təqvimimi sifariş edə bilərsinizmi və ya linkinizi göndərə bilərsinizmi?", + "copy_link_team": "Komandanın linkini kopyala", + "leave_team": "Komandadan çıx", + "confirm_leave_team": "Bəli, komandadan çıx", + "leave_team_confirmation_message": "Bu komandadan çıxmaq istədiyinizə əminsinizmi? Artıq onu istifadə edərək sifariş edə bilməyəcəksiniz.", + "user_from_team": "{{user}} {{team}} komandasında", + "preview": "Önizləmə", + "link_copied": "Link kopyalandı!", + "copied": "Kopyalandı!", + "private_link_copied": "Şəxsi link kopyalandı!", + "link_shared": "Link paylaşıldı!", + "title": "Başlıq", + "description": "Təsvir", + "apps_status": "Tətbiqlərin Statusu", + "quick_video_meeting": "Qısa video görüş.", + "scheduling_type": "Cədvəl Tipi", + "preview_team": "Komandanı önizlə", + "collective": "Kollektiv", + "collective_description": "Seçilmiş komanda üzvlərinin hamısı mövcud olduqda görüşləri planlaşdırın.", + "duration": "Müddət", + "available_durations": "Mövcud müddətlər", + "default_duration": "Standart müddət", + "default_duration_no_options": "Zəhmət olmasa əvvəlcə mövcud müddətləri seçin", + "multiple_duration_mins": "{{count}} dəqiqə", + "multiple_duration_timeUnit": "{{count}} {{unit}} vaxt vahidi", + "multiple_duration_timeUnit_short": "{{count}} {{unit}} qısa", + "minutes": "Dəqiqələr", + "use_cal_ai_to_make_call_description": "AI ilə təchiz olunmuş telefon nömrəsi əldə etmək və ya qonaqlara zəng etmək üçün Cal.ai istifadə edin.", + "round_robin": "Round Robin", + "round_robin_description": "Görüşləri bir neçə komanda üzvü arasında dövr edin.", + "managed_event": "İdarə olunan Tədbir", + "username_placeholder": "istifadəçi adı", + "managed_event_description": "Komanda üzvlərinə kütləvi şəkildə tədbir növləri yaradın və paylayın", + "managed": "İdarə olunan", + "managed_event_url_clarification": "\"istifadəçi adı\" təyin edilmiş üzvlərin istifadəçi adı ilə doldurulacaq", + "assign_to": "Təyin et", + "add_members": "Üzvlər əlavə et...", + "no_assigned_members": "Təyin edilmiş üzvlər yoxdur", + "assigned_to": "Təyin edilmiş", + "you_must_be_logged_in_to": "{{url}}-ə daxil olmalısınız", + "start_assigning_members_above": "Yuxarıda üzvləri təyin etməyə başlayın", + "locked_fields_admin_description": "Üzvlər redaktə edə bilməz", + "unlocked_fields_admin_description": "Üzvlər redaktə edə bilər", + "locked_fields_member_description": "Komanda admini tərəfindən kilidlənib", + "unlocked_fields_member_description": "Komanda admini tərəfindən açılıb", + "url": "URL", + "hidden": "Gizli", + "readonly": "Yalnız oxumaq üçün", + "one_time_link": "Bir dəfəlik keçid", + "plan_description": "Hazırda {{plan}} planındasınız.", + "plan_upgrade_invitation": "Bütün xüsusiyyətlərdən yararlanmaq üçün hesabınızı PRO planına yüksəldin.", + "plan_upgrade": "Bir dəfədən çox aktiv tədbir növünə sahib olmaq üçün planınızı yüksəltməlisiniz.", + "plan_upgrade_teams": "Komanda yaratmaq üçün planınızı yüksəltməlisiniz.", + "plan_upgrade_instructions": "<1>Buradan yüksəldə bilərsiniz.", + "event_types_page_title": "Tədbir Növləri", + "event_types_page_subtitle": "Təqviminizdə görüşlər üçün paylaşmaq üçün tədbirlər yaradın.", + "new": "Yeni", + "new_event_type_btn": "Yeni tədbir növü", + "new_event_type_heading": "İlk tədbir növünüzü yaradın", + "new_event_type_description": "Tədbir növləri, təqviminizdə mövcud vaxtları göstərən və insanların sizinlə görüş təyin etməsinə imkan verən linkləri paylaşmağa imkan verir.", + "event_type_created_successfully": "{{eventTypeTitle}} tədbir növü uğurla yaradıldı", + "event_type_updated_successfully": "{{eventTypeTitle}} tədbir növü uğurla yeniləndi", + "event_type_deleted_successfully": "Tədbir növü uğurla silindi", + "hours": "Saatlar", + "people": "İnsanlar", + "your_email": "E-poçtunuz", + "change_avatar": "Avatarı dəyiş", + "upload_avatar": "Avatar yüklə", + "language": "Dil", + "timezone": "Saat qurşağı", + "first_day_of_week": "Həftənin ilk günü", + "repeats_up_to_one": "{{count}} dəfə təkrarlanır", + "repeats_up_to_other": "{{count}} dəfə təkrarlanır", + "every_for_freq": "Hər {{freq}} üçün", + "event_remaining_one": "{{count}} tədbir qalıb", + "event_remaining_other": "{{count}} tədbir qalıb", + "repeats_every": "Hər dəfə təkrarlanır", + "occurrence_one": "təkrarlanma", + "occurrence_other": "təkrarlanmalar", + "weekly_one": "həftə", + "weekly_other": "həftələr", + "monthly_one": "ay", + "monthly_other": "aylar", + "yearly_one": "il", + "yearly_other": "illər", + "plus_more": "{{count}} daha", + "max": "Maks", + "single_theme": "Tək Mövzu", + "brand_color": "Brend Rəngi", + "light_brand_color": "Brend Rəngi (İşıq Mövzusu)", + "dark_brand_color": "Brend Rəngi (Qaranlıq Mövzu)", + "light_event_type_color": "Tədbir Tipi Rəngi (İşıq Mövzusu)", + "dark_event_type_color": "Tədbir Tipi Rəngi (Qaranlıq Mövzu)", + "file_not_named": "Fayl adlandırılmayıb [idOrSlug]/[user]", + "create_team": "Komanda Yarat", + "name": "Ad", + "create_new_team_description": "İstifadəçilərlə əməkdaşlıq etmək üçün yeni komanda yaradın.", + "create_new_team": "Yeni komanda yaradın", + "open_invitations": "Açıq Dəvətlər", + "new_team": "Yeni Komanda", + "create_first_team_and_invite_others": "İlk komandanızı yaradın və digər istifadəçiləri əməkdaşlığa dəvət edin.", + "create_team_to_get_started": "Başlamaq üçün komanda yaradın", + "teams": "Komandalar", + "team": "Komanda", + "organization": "Təşkilat", + "team_billing": "Komanda Ödənişi", + "team_billing_description": "Komandanız üçün ödənişi idarə edin", + "upgrade_to_flexible_pro_title": "Komandalar üçün ödənişi dəyişdirdik", + "upgrade_to_flexible_pro_message": "Komandanızda oturacaq olmayan üzvlər var. Əskik oturacaqları əhatə etmək üçün pro planınızı yüksəldin.", + "changed_team_billing_info": "Yanvar 2022-dən etibarən komanda üzvləri üçün hər oturacaq üçün ödəniş alırıq. Komandanızın PRO üzvü olan üzvləri indi 14 günlük sınaq müddətindədir. Sınaq müddəti bitdikdən sonra bu üzvlər komandanızdan gizlədiləcək, əgər indi yüksəltməsəniz.", + "create_manage_teams_collaborative": "Əməkdaşlıq xüsusiyyətlərindən istifadə etmək üçün komandalar yaradın və idarə edin.", + "only_available_on_pro_plan": "Bu xüsusiyyət yalnız Pro planında mövcuddur", + "remove_cal_branding_description": "Rezervasiya səhifələrinizdən {{appName}} markasını çıxarmaq üçün Pro hesabına yüksəltməlisiniz.", + "edit_profile_info_description": "Planlaşdırma linkinizdə göstərilən profil məlumatlarını redaktə edin.", + "change_email_tip": "Dəyişikliklərin qüvvəyə minməsi üçün çıxış edib yenidən daxil olmanız lazım ola bilər.", + "little_something_about": "Özünüz haqqında qısa məlumat.", + "profile_updated_successfully": "Profil uğurla yeniləndi", + "your_user_profile_updated_successfully": "İstifadəçi profiliniz uğurla yeniləndi.", + "user_cannot_found_db": "İstifadəçi daxil olub, amma verilənlər bazasında tapılmır", + "embed_and_webhooks": "Daxiletmə və Webhooks", + "enabled": "Aktiv", + "disabled": "Deaktiv", + "disable": "Deaktiv et", + "billing": "Ödəniş", + "manage_your_billing_info": "Ödəniş məlumatlarınızı idarə edin və abunəliyinizi ləğv edin.", + "availability": "Mövcudluq", + "edit_availability": "Mövcudluğu redaktə et", + "configure_availability": "Rezervasiyalar üçün mövcud olduğunuz vaxtları konfiqurasiya edin.", + "copy_times_to": "Vaxtları kopyala", + "copy_times_to_tooltip": "Vaxtları kopyala …", + "change_weekly_schedule": "Həftəlik cədvəli dəyişdirin", + "logo": "Logo", + "error": "Xəta", + "at_least_characters_one": "Zəhmət olmasa ən azı bir simvol daxil edin", + "at_least_characters_other": "Zəhmət olmasa ən azı {{count}} simvol daxil edin", + "team_logo": "Komanda Loqosu", + "add_location": "Məkan əlavə et", + "attendees": "İştirakçılar", + "add_attendees": "İştirakçı əlavə et", + "show_advanced_settings": "Ətraflı parametrləri göstər", + "event_name": "Tədbirin Adı", + "event_name_in_calendar": "Tədbirin adı ilə", + "event_name_tooltip": "Təqvimlərdə görünəcək ad", + "meeting_with_user": "{Event type title} {Organiser} və {Scheduler} arasında", + "additional_inputs": "Əlavə Girişlər", + "additional_input_description": "Bron təsdiqlənməzdən əvvəl planlaşdırıcıdan əlavə girişlər tələb edin", + "label": "Etiket", + "placeholder": "Yer tutucu", + "display_add_to_calendar_organizer": "Təşkilatçı kimi \"Təqvimə əlavə et\" e-poçtundan istifadə edin", + "display_email_as_organizer": "Bu e-poçt ünvanını təşkilatçı kimi göstərəcəyik və təsdiq e-poçtlarını buraya göndərəcəyik.", + "if_enabled_email_address_as_organizer": "Əgər aktivləşdirilsə, \"Təqvimə əlavə et\" e-poçt ünvanını təşkilatçı kimi göstərəcəyik və təsdiq e-poçtlarını buraya göndərəcəyik.", + "reconnect_calendar_to_use": "Bu funksiyanı istifadə etmək üçün 'Təqvimə əlavə et' hesabınızı ayırıb yenidən qoşmağınız lazım ola bilər.", + "type": "Növ", + "edit": "Redaktə et", + "add_input": "Giriş əlavə et", + "disable_notes": "Qeydləri təqvimdə gizlət", + "disable_notes_description": "Məxfilik səbəbindən əlavə girişlər və qeydlər təqvimdə gizlədiləcək. Onlar yenə də e-poçtunuza göndəriləcək.", + "requires_confirmation_description": "Bron təsdiq e-poçtu göndərilməzdən və inteqrasiyalara əlavə edilməzdən əvvəl əl ilə təsdiqlənməlidir.", + "requires_confirmation_will_block_slot_description": "Təsdiqlənməmiş bronlar təqvimdə vaxtı bloklayır.", + "recurring_event": "Təkrarlanan Tədbir", + "recurring_event_description": "İnsanlar təkrarlanan tədbirlərə abunə ola bilərlər", + "cannot_be_used_with_paid_event_types": "Ödənişli tədbir növləri ilə istifadə edilə bilməz", + "warning_payment_instant_meeting_event": "Təkrarlanan tədbirlər və ödəniş tətbiqləri ilə Dərhal Görüşlər hələ dəstəklənmir", + "warning_instant_meeting_experimental": "Eksperimental: Dərhal Görüş Tədbirləri hazırda eksperimental mərhələdədir.", + "starting": "Başlayır", + "disable_guests": "Qonaqları Deaktiv Et", + "disable_guests_description": "Rezervasiya zamanı əlavə qonaqların əlavə edilməsini deaktiv edin.", + "private_link": "Şəxsi link yarat", + "enable_private_url": "Şəxsi URL-i aktiv et", + "private_link_label": "Şəxsi link", + "private_link_hint": "Şəxsi linkiniz hər istifadədən sonra yenidən yaradılacaq", + "copy_private_link": "Şəxsi linki kopyala", + "copy_private_link_to_event": "Tədbirə şəxsi linki kopyala", + "private_link_description": "Öz {{appName}} istifadəçi adınızı açıqlamadan paylaşmaq üçün şəxsi URL yaradın", + "invitees_can_schedule": "Dəvətlilər cədvəl qura bilər", + "date_range": "Tarix Aralığı", + "calendar_days": "təqvim günləri", + "business_days": "iş günləri", + "set_address_place": "Ünvan və ya yer təyin edin", + "set_link_meeting": "Görüş üçün link təyin edin", + "cal_invitee_phone_number_scheduling": "{{appName}} dəvətlilərinizdən cədvəl qurmazdan əvvəl telefon nömrəsi daxil etmələrini istəyəcək.", + "cal_provide_google_meet_location": "{{appName}} Google Meet yeri təmin edəcək.", + "cal_provide_zoom_meeting_url": "{{appName}} Zoom görüş URL-i təmin edəcək.", + "cal_provide_tandem_meeting_url": "{{appName}} Tandem görüş URL-i təmin edəcək.", + "cal_provide_video_meeting_url": "{{appName}} video görüşmə URL-i təmin edəcək.", + "cal_provide_jitsi_meeting_url": "Sizin üçün Jitsi Meet URL-i yaradacağıq.", + "cal_provide_huddle01_meeting_url": "{{appName}} Huddle01 video görüşmə URL-i təmin edəcək.", + "cal_provide_teams_meeting_url": "{{appName}} MS Teams görüşmə URL-i təmin edəcək. QEYD: İŞ VƏ YA MƏKTƏB HESABI OLMALIDIR", + "require_payment": "Ödəniş tələb olunur", + "you_need_to_add_a_name": "Ad əlavə etməlisiniz", + "commission_per_transaction": "əməliyyat başına komissiya", + "event_type_updated_successfully_description": "Tədbir növü uğurla yeniləndi.", + "hide_event_type": "Tədbir növünü gizlət", + "edit_location": "Yeri redaktə et", + "into_the_future": "gələcəyə doğru", + "when_booked_with_less_than_notice": "Daha az xəbərdarlıqla bron edildikdə ", + "within_date_range": "Tarix aralığında", + "indefinitely_into_future": "Müddətsiz gələcəyə doğru", + "add_new_custom_input_field": "Yeni xüsusi giriş sahəsi əlavə et", + "quick_chat": "Sürətli Çat", + "add_new_team_event_type": "Yeni komanda tədbir növü əlavə et", + "add_new_event_type": "Yeni tədbir növü əlavə et", + "new_event_type_to_book_description": "İnsanların vaxt bron etməsi üçün yeni tədbir növü yaradın.", + "length": "Uzunluq", + "minimum_booking_notice": "Minimum xəbərdarlıq", + "offset_toggle": "Başlanğıc vaxtlarını dəyiş", + "offset_toggle_description": "Bron edənlərə göstərilən vaxtları müəyyən dəqiqə ilə dəyiş", + "offset_start": "Dəyişmə ilə başla", + "offset_start_description": "məsələn, bu, bron edənlərə vaxtları {{ adjustedTime }} əvəzinə {{ originalTime }} göstərəcək", + "slot_interval": "Vaxt aralıqları", + "slot_interval_default": "Tədbir müddətindən istifadə et (standart)", + "delete_event_type": "Tədbir növünü silmək?", + "delete_managed_event_type": "İdarə olunan tədbir növünü silmək?", + "delete_event_type_description": "Bu linki paylaşdığınız hər kəs artıq onu istifadə edərək rezervasiya edə bilməyəcək.", + "delete_managed_event_type_description": "
  • Bu tədbir növünə təyin edilmiş üzvlərin tədbir növləri də silinəcək.
  • Onların linkini paylaşdıqları hər kəs artıq onu istifadə edərək rezervasiya edə bilməyəcək.
", + "confirm_delete_event_type": "Bəli, sil", + "delete_account": "Hesabı sil", + "confirm_delete_account": "Bəli, hesabı sil", + "delete_account_confirmation_message": "Hesab linkinizi paylaşdığınız hər kəs artıq onu istifadə edərək rezervasiya edə bilməyəcək və saxladığınız hər hansı seçimlər itiriləcək.", + "integrations": "İnteqrasiyalar", + "apps": "Tətbiqlər", + "apps_description": "Burada tətbiqlərinizin siyahısını tapa bilərsiniz", + "apps_listing": "Tətbiq siyahısı", + "category_apps": "{{category}} tətbiqlər", + "app_store": "Tətbiq Mağazası", + "app_store_description": "İnsanları, texnologiyanı və iş yerini birləşdirir.", + "settings": "Ayarlar", + "event_type_moved_successfully": "Tədbir növü uğurla köçürüldü", + "next_step_text": "Növbəti Addım", + "next_step": "Addımı keç", + "prev_step": "Əvvəlki addım", + "install": "Quraşdır", + "start_paid_trial": "Pulsuz sınaq başla", + "installed": "Quraşdırılıb", + "active_install_one": "{{count}} aktiv quraşdırma", + "active_install_other": "{{count}} aktiv quraşdırmalar", + "globally_install": "Qlobal olaraq quraşdırılıb", + "app_successfully_installed": "Tətbiq uğurla quraşdırıldı", + "app_could_not_be_installed": "Tətbiqi quraşdırmaq mümkün olmadı", + "disconnect": "Bağlantını kəs", + "embed_your_calendar": "Təqviminizi veb səhifənizə yerləşdirin", + "connect_your_favourite_apps": "Sevdiyiniz tətbiqləri bağlayın.", + "automation": "Avtomatlaşdırma", + "configure_how_your_event_types_interact": "Tədbir növlərinizin təqvimlərinizlə necə qarşılıqlı əlaqədə olacağını konfiqurasiya edin.", + "toggle_calendars_conflict": "İkiqat rezervasiyaların qarşısını almaq üçün konfliktləri yoxlamaq istədiyiniz təqvimləri dəyişdirin.", + "connect_additional_calendar": "Əlavə təqvim bağlayın", + "calendar_updated_successfully": "Təqvim uğurla yeniləndi", + "check_here": "Burada yoxlayın", + "conferencing": "Konfrans", + "calendar": "Təqvim", + "payments": "Ödənişlər", + "not_installed": "Quraşdırılmayıb", + "error_password_mismatch": "Şifrələr uyğun gəlmir.", + "error_required_field": "Bu sahə tələb olunur.", + "status": "Status", + "team_view_user_availability": "İstifadəçinin mövcudluğunu görün", + "team_view_user_availability_disabled": "Mövcudluğu görmək üçün istifadəçi dəvəti qəbul etməlidir", + "set_as_away": "Özünüzü uzaqda olaraq təyin edin", + "set_as_free": "Uzaqda statusunu deaktiv edin", + "toggle_away_error": "Uzaq statusunu yeniləmək xətası", + "user_away": "Bu istifadəçi hazırda uzaqdadır.", + "user_away_description": "Görüş təyin etmək istədiyiniz şəxs özünü uzaq statusuna qoyub və buna görə də yeni görüşlər qəbul etmir.", + "meet_people_with_the_same_tokens": "Eyni tokenlərə sahib insanlarla görüş", + "only_book_people_and_allow": "Yalnız eyni tokenlərə, DAO-lara və ya NFT-lərə sahib insanlarla görüş təyin edin və onlardan görüş qəbul edin.", + "account_created_with_identity_provider": "Hesabınız bir Kimlik Sağlayıcı istifadə edilərək yaradılıb.", + "account_managed_by_identity_provider": "Hesabınız {{provider}} tərəfindən idarə olunur", + "account_managed_by_identity_provider_description": "E-poçtunuzu, şifrənizi dəyişmək, iki faktorlu autentifikasiyanı aktivləşdirmək və daha çox şey üçün, zəhmət olmasa {{provider}} hesab ayarlarınıza daxil olun.", + "signin_with_google": "Google ilə daxil olun", + "signin_with_saml": "SAML ilə daxil olun", + "signin_with_saml_oidc": "SAML/OIDC ilə daxil olun", + "last_used": "Son istifadə", + "you_will_need_to_generate": "Köhnə planlama alətinizdən bir giriş tokeni yaratmalısınız.", + "import": "İdxal et", + "import_from": "İdxal et", + "access_token": "Giriş tokeni", + "visit_roadmap": "Yol xəritəsi", + "featured_categories": "Seçilmiş Kateqoriyalar", + "popular_categories": "Populyar Kateqoriyalar", + "number_apps_one": "{{count}} Tətbiq", + "number_apps_other": "{{count}} Tətbiq", + "trending_apps": "Trend olan Tətbiqlər", + "most_popular": "Ən Populyar", + "installed_apps": "Quraşdırılmış Tətbiqlər", + "free_to_use_apps": "Pulsuz istifadə edilə bilən Tətbiqlər", + "no_category_apps": "Heç bir {{category}} tətbiqi yoxdur", + "all_apps": "Bütün tətbiqlər", + "no_category_apps_description_calendar": "İkiqat rezervasiyaların qarşısını almaq üçün təqvim tətbiqi əlavə edin", + "no_category_apps_description_conferencing": "Müştərilərinizlə video zənglər üçün konfrans tətbiqi əlavə etməyə çalışın", + "no_category_apps_description_payment": "Sizin və müştəriləriniz arasında əməliyyatları asanlaşdırmaq üçün ödəniş tətbiqi əlavə edin", + "no_category_apps_description_analytics": "Rezervasiya səhifələriniz üçün analitika tətbiqi əlavə edin", + "no_category_apps_description_automation": "İstifadə etmək üçün avtomatlaşdırma tətbiqi əlavə edin", + "no_category_apps_description_other": "Müxtəlif işlər üçün hər hansı digər növ tətbiqi əlavə edin", + "no_category_apps_description_messaging": "Xüsusi bildirişlər və xatırlatmalar qurmaq üçün mesajlaşma tətbiqi əlavə edin", + "no_category_apps_description_crm": "Görüşdüyünüz şəxsləri izləmək üçün CRM tətbiqi əlavə edin", + "installed_app_calendar_description": "İkiqat rezervasiyaların qarşısını almaq üçün təqvimləri yoxlayın.", + "installed_app_payment_description": "Müştərilərinizdən ödəniş alarkən hansı ödəniş emalı xidmətlərindən istifadə edəcəyinizi konfiqurasiya edin.", + "installed_app_analytics_description": "Rezervasiya səhifələriniz üçün hansı analitika tətbiqlərindən istifadə edəcəyinizi konfiqurasiya edin", + "installed_app_other_description": "Digər kateqoriyalardan quraşdırılmış bütün tətbiqləriniz.", + "installed_app_conferencing_description": "Hansı konfrans tətbiqlərindən istifadə edəcəyinizi konfiqurasiya edin", + "installed_app_automation_description": "Hansı avtomatlaşdırma tətbiqlərindən istifadə edəcəyinizi konfiqurasiya edin", + "installed_app_messaging_description": "Xüsusi bildirişlər və xatırlatmalar qurmaq üçün hansı mesajlaşma tətbiqlərindən istifadə edəcəyinizi konfiqurasiya edin", + "installed_app_crm_description": "Görüşdüyünüz şəxsləri izləmək üçün hansı CRM tətbiqlərindən istifadə edəcəyinizi konfiqurasiya edin", + "analytics": "Analitika", + "empty_installed_apps_headline": "Quraşdırılmış tətbiq yoxdur", + "empty_installed_apps_description": "Tətbiqlər iş axınınızı təkmilləşdirməyə və cədvəllərinizi əhəmiyyətli dərəcədə yaxşılaşdırmağa imkan verir.", + "empty_installed_apps_button": "Tətbiq Mağazasına Baxın", + "manage_your_connected_apps": "Quraşdırılmış tətbiqlərinizi idarə edin və ya parametrləri dəyişdirin", + "browse_apps": "Tətbiqlərə Baxın", + "features": "Xüsusiyyətlər", + "permissions": "İcazələr", + "terms_and_privacy": "Şərtlər və Məxfilik", + "published_by": "{{author}} tərəfindən nəşr olunub", + "subscribe": "Abunə ol", + "buy": "Al", + "install_app": "Tətbiqi Yüklə", + "categories": "Kateqoriyalar", + "pricing": "Qiymətlər", + "learn_more": "Daha çox öyrən", + "privacy_policy": "Məxfilik Siyasəti", + "terms_of_service": "Xidmət Şərtləri", + "remove": "Sil", + "add": "Əlavə et", + "installed_other": "{{count}} quraşdırılıb", + "verify_wallet": "Cüzdanı Təsdiqlə", + "create_events_on": "Tədbirləri yarat", + "enterprise_license": "Bu, müəssisə xüsusiyyətidir", + "enterprise_license_locally": "Bu xüsusiyyəti yerli olaraq sınaqdan keçirə bilərsiniz, lakin istehsalda deyil.", + "enterprise_license_sales": "Müəssisə versiyasına yüksəltmək üçün satış komandamızla əlaqə saxlayın. Əgər lisenziya açarı artıq mövcuddursa, kömək üçün support@cal.com ilə əlaqə saxlayın.", + "missing_license": "Lisenziya yoxdur", + "next_steps": "Növbəti Addımlar", + "acquire_commercial_license": "Kommersiya lisenziyası əldə edin", + "the_infrastructure_plan": "İnfrastruktur planı istifadəyə əsaslanır və startaplar üçün endirimlər təklif edir.", + "prisma_studio_tip": "Prisma Studio vasitəsilə hesab yaradın", + "prisma_studio_tip_description": "İlk istifadəçinizi necə quracağınızı öyrənin", + "contact_sales": "Satışla əlaqə", + "error_404": "404 Xətası", + "default": "Varsayılan", + "set_to_default": "Varsayılan olaraq təyin et", + "new_schedule_btn": "Yeni cədvəl", + "add_new_schedule": "Yeni cədvəl əlavə et", + "add_new_calendar": "Yeni təqvim əlavə et", + "set_calendar": "Yeni tədbirlər əlavə ediləcək təqvimi təyin edin.", + "delete_schedule": "Cədvəli sil", + "delete_schedule_description": "Cədvəli silmək onu bütün tədbir növlərindən çıxaracaq. Bu əməliyyat geri alına bilməz.", + "schedule_created_successfully": "{{scheduleName}} cədvəli uğurla yaradıldı", + "availability_updated_successfully": "{{scheduleName}} cədvəli uğurla yeniləndi", + "schedule_deleted_successfully": "Cədvəl uğurla silindi", + "default_schedule_name": "İş Saatları", + "new_schedule_heading": "Mövcudluq cədvəli yaradın", + "new_schedule_description": "Mövcudluq cədvəlləri yaratmaq, tədbir növləri üzrə mövcudluğu idarə etməyə imkan verir. Onlar bir və ya bir neçə tədbir növünə tətbiq edilə bilər.", + "requires_ownership_of_a_token": "Aşağıdakı ünvana aid tokenin mülkiyyətini tələb edir:", + "example_name": "John Doe", + "time_format": "Vaxt formatı", + "12_hour": "12 saat", + "24_hour": "24 saat", + "12_hour_short": "12s", + "24_hour_short": "24s", + "redirect_success_booking": "Rezervasiyadan sonra yönləndirin", + "you_are_being_redirected": "{{ url }} ünvanına $t(second, {\"count\": {{seconds}} }) saniyə ərzində yönləndirilirsiniz.", + "external_redirect_url": "https://example.com/redirect-to-my-success-page", + "redirect_url_description": "Uğurlu rezervasiyadan sonra xüsusi URL-ə yönləndirin", + "duplicate": "Dublikat", + "offer_seats": "Oturacaqlar təklif edin", + "offer_seats_description": "Rezervasiya üçün oturacaqlar təklif edin. Bu, avtomatik olaraq qonaq və opt-in rezervasiyalarını deaktiv edir.", + "seats_available_one": "mövcuddur", + "seats_available_other": "mövcuddur", + "seats_nearly_full": "Oturacaqlar demək olar ki, doludur", + "seats_half_full": "Oturacaqlar sürətlə dolur", + "number_of_seats": "Rezervasiya üçün oturacaqların sayı", + "set_instant_meeting_expiry_time_offset_description": "Görüşə qoşulma pəncərəsini təyin edin (saniyə): Ev sahibinin görüşə qoşulub başlaya biləcəyi zaman çərçivəsi (saniyə ilə). Bu müddətdən sonra görüşə qoşulma URL-i müddəti bitəcək.", + "enter_number_of_seats": "Oturacaqların sayını daxil edin", + "you_can_manage_your_schedules": "Cədvəllərinizi Mövcudluq səhifəsində idarə edə bilərsiniz.", + "booking_full": "Daha çox oturacaq mövcud deyil", + "api_keys": "API açarları", + "api_key": "API açarı", + "test_api_key": "Test API açarı", + "test_passed": "Test uğurlu oldu!", + "test_failed": "Test uğursuz oldu", + "provide_api_key": "API açarını təmin edin", + "api_key_modal_subtitle": "API açarları öz hesabınız üçün API zəngləri etməyə imkan verir.", + "api_keys_subtitle": "Öz hesabınıza daxil olmaq üçün istifadə etmək üçün API açarları yaradın.", + "create_api_key": "API açarı yaradın", + "personal_note": "Bu açarı adlandırın", + "personal_note_placeholder": "Məsələn, İnkişaf", + "api_key_no_note": "Adsız API açarı", + "api_key_never_expires": "Bu API açarının son istifadə tarixi yoxdur", + "edit_api_key": "API açarını redaktə et", + "success_api_key_created": "API açarı uğurla yaradıldı", + "success_api_key_edited": "API açarı uğurla yeniləndi", + "create": "Yarat", + "success_api_key_created_bold_tagline": "Bu API açarını təhlükəsiz bir yerdə saxlayın.", + "you_will_only_view_it_once": "Bu pəncərəni bağladıqdan sonra onu bir daha görə bilməyəcəksiniz.", + "copy_to_clipboard": "Panoya kopyala", + "enabled_after_update": "Yeniləndikdən sonra aktiv olacaq", + "enabled_after_update_description": "Şəxsi link yadda saxlandıqdan sonra işləyəcək", + "confirm_delete_api_key": "Bu API açarını ləğv edin", + "revoke_api_key": "API açarını ləğv et", + "api_key_copied": "API açarı kopyalandı!", + "api_key_expires_on": "API açarının son istifadə tarixi", + "delete_api_key_confirm_title": "Bu API açarını hesabınızdan daimi olaraq silmək istəyirsiniz?", + "copy": "Kopyala", + "expire_date": "Son istifadə tarixi", + "expired": "Müddəti bitmiş", + "never_expires": "Heç vaxt bitmir", + "expires": "Bitir", + "request_reschedule_booking": "Rezervasiyanızı yenidən planlaşdırmağı tələb edin", + "reason_for_reschedule": "Yenidən planlaşdırma səbəbi", + "book_a_new_time": "Yeni vaxt təyin edin", + "reschedule_request_sent": "Yenidən planlaşdırma tələbi göndərildi", + "reschedule_modal_description": "Bu, planlaşdırılmış görüşü ləğv edəcək, planlayıcıya xəbər verəcək və onlardan yeni vaxt seçmələrini xahiş edəcək.", + "reason_for_reschedule_request": "Yenidən planlaşdırma tələbinin səbəbi", + "send_reschedule_request": "Yenidən planlaşdırma tələbi göndər", + "edit_booking": "Rezervasiyanı redaktə et", + "reschedule_booking": "Rezervasiyanı yenidən planlaşdır", + "former_time": "Əvvəlki vaxt", + "confirmation_page_gif": "Təsdiq səhifənizə GIF əlavə edin", + "search": "Axtarış", + "impersonate": "Təqlid et", + "user_impersonation_heading": "İstifadəçi Təqlidi", + "user_impersonation_description": "Dəstək komandamızın müvəqqəti olaraq sizin adınıza daxil olmasına imkan verir ki, bildirdiyiniz hər hansı bir problemi tez bir zamanda həll edə bilək.", + "team_impersonation_description": "Komandanızın Sahibləri/Adminləri müvəqqəti olaraq sizin adınıza daxil ola bilər.", + "cal_signup_description": "Fərdi şəxslər üçün pulsuz. Əməkdaşlıq xüsusiyyətləri üçün komanda planları.", + "make_org_private": "Təşkilatı gizli et", + "make_org_private_description": "Bu aktiv olduqda təşkilat üzvləri digər təşkilat üzvlərini görə bilməyəcək.", + "make_team_private": "Komandanı gizli et", + "make_team_private_description": "Bu aktiv olduqda komanda üzvləri digər komanda üzvlərini görə bilməyəcək.", + "you_cannot_see_team_members": "Gizli komandanın bütün üzvlərini görə bilməzsiniz.", + "you_cannot_see_teams_of_org": "Gizli təşkilatın komandalarını görə bilməzsiniz.", + "allow_booker_to_select_duration": "Rezervasiya edənə müddəti seçməyə icazə ver", + "impersonate_user_tip": "Bu xüsusiyyətin bütün istifadələri auditi olunur.", + "impersonating_user_warning": "\"{{user}}\" istifadəçi adını təqlid edirsiniz.", + "impersonating_stop_instructions": "Dayandırmaq üçün bura klikləyin", + "event_location_changed": "Yeniləndi - Tədbirinizin yeri dəyişdirildi", + "new_guests_added": "Əlavə edildi - Tədbirinizə yeni qonaqlar əlavə edildi", + "location_changed_event_type_subject": "Yer Dəyişdirildi: {{eventType}} {{name}} ilə {{date}} tarixində", + "guests_added_event_type_subject": "Qonaqlar Əlavə Edildi: {{eventType}} {{name}} ilə {{date}} tarixində", + "current_location": "Cari Yer", + "new_location": "Yeni Yer", + "session": "Sessiya", + "session_description": "Hesab sessiyanızı idarə edin", + "session_timeout_after": "Sessiya vaxtı bitdikdən sonra", + "session_timeout": "Sessiya vaxtı bitdi", + "session_timeout_description": "Müəyyən bir müddətdən sonra sessiyanızı etibarsız edin.", + "no_location": "Yer təyin edilməyib", + "set_location": "Yeri Təyin Et", + "update_location": "Yeri Yenilə", + "location_updated": "Yer yeniləndi", + "guests_added": "Qonaqlar əlavə edildi", + "unable_to_add_guests": "Qonaqları əlavə etmək mümkün deyil", + "email_validation_error": "Bu, e-poçt ünvanına bənzəmir", + "emails_must_be_unique_valid": "E-poçtlar unikal və etibarlı olmalıdır", + "url_validation_error": "Bu, URL-ə bənzəmir", + "place_where_cal_widget_appear": "Bu kodu HTML-də {{appName}} vidcetinin görünməsini istədiyiniz yerə yerləşdirin.", + "create_update_react_component": "Aşağıda göstərildiyi kimi mövcud React komponentini yaradın və ya yeniləyin.", + "copy_code": "Kodu Kopyalayın", + "code_copied": "Kod kopyalandı!", + "how_you_want_add_cal_site": "{{appName}} saytınıza necə əlavə etmək istəyirsiniz?", + "choose_ways_put_cal_site": "{{appName}} saytınıza yerləşdirmək üçün aşağıdakı üsullardan birini seçin.", + "setting_up_zapier": "Zapier inteqrasiyanızı qurmaq", + "setting_up_make": "Make inteqrasiyasını qurmaq", + "generate_api_key": "API açarını yarat", + "generate_api_key_description": "{{appName}} ilə istifadə etmək üçün API açarını yarat", + "your_unique_api_key": "Sizin unikal API açarınız", + "copy_safe_api_key": "Bu API açarını kopyalayın və təhlükəsiz bir yerdə saxlayın. Bu açarı itirsəniz, yenisini yaratmalısınız.", + "zapier_setup_instructions": "<0>Zapier hesabınıza daxil olun və yeni bir Zap yaradın.<1>Cal.com-u Trigger tətbiqi olaraq seçin. Həmçinin bir Trigger hadisəsi seçin.<2>Hesabınızı seçin və sonra Unikal API Açarınızı daxil edin.<3>Trigger-i test edin.<4>Hazırsınız!", + "make_setup_instructions": "<0><1><0>Make Dəvət Linki səhifəsinə gedin və Cal.com tətbiqini quraşdırın.<1>Make hesabınıza daxil olun və yeni bir Ssenari yaradın.<2>Cal.com-u Trigger tətbiqi olaraq seçin. Həmçinin bir Trigger hadisəsi seçin.<3>Hesabınızı seçin və sonra Unikal API Açarınızı daxil edin.<4>Trigger-i test edin.<5>Hazırsınız!", + "install_zapier_app": "Zəhmət olmasa əvvəlcə Zapier Tətbiqini tətbiq mağazasında quraşdırın.", + "install_make_app": "Zəhmət olmasa əvvəlcə Make Tətbiqini tətbiq mağazasında quraşdırın.", + "app_not_installed": "Tətbiq quraşdırılmayıb", + "visit_our_app_store": "Bağışlayın, bu tətbiq hesabınızda quraşdırılmayıb. Zəhmət olmasa tətbiq mağazamızı ziyarət edin və bu və digər əla tətbiqləri kəşf edin.", + "connect_apple_server": "Apple Serverinə qoşulun", + "calendar_url": "Təqvim URL-i", + "apple_server_generate_password": "{{appName}} ilə istifadə etmək üçün tətbiqə xüsusi parol yaradın", + "unable_to_add_apple_calendar": "Bu Apple Təqvim hesabını əlavə etmək mümkün deyil. Zəhmət olmasa, hesab parolunuz əvəzinə tətbiqə xüsusi parol istifadə etdiyinizə əmin olun.", + "credentials_stored_encrypted": "Sizin məlumatlarınız saxlanılacaq və şifrələnəcək.", + "it_stored_encrypted": "Bu saxlanılacaq və şifrələnəcək.", + "go_to_app_store": "App Store-a keçin", + "calendar_error": "Təqviminizi bütün lazımi icazələrlə yenidən qoşmağa çalışın", + "set_your_phone_number": "Görüş üçün telefon nömrəsi təyin edin", + "calendar_no_busy_slots": "Məşğul vaxtlar yoxdur", + "display_location_label": "Bronlama səhifəsində göstər", + "display_location_info_badge": "Yer təsdiqlənmədən əvvəl görünəcək", + "add_gif": "GIF əlavə et", + "search_giphy": "Giphy-də axtar", + "add_link_from_giphy": "Giphy-dən link əlavə et", + "add_gif_to_confirmation": "Təsdiq səhifəsinə GIF əlavə etmək", + "find_gif_spice_confirmation": "Təsdiq səhifənizi canlandırmaq üçün GIF tapın", + "share_feedback": "Rəy paylaşın", + "resources": "Resurslar", + "support_documentation": "Dəstək sənədləri", + "developer_documentation": "İnkişaf etdirici sənədləri", + "get_in_touch": "Əlaqə saxlayın", + "contact_support": "Dəstək ilə əlaqə", + "premium_support": "Premium Dəstək", + "community_support": "İcma Dəstəyi", + "feedback": "Rəy", + "submitted_feedback": "Rəyiniz üçün təşəkkür edirik!", + "feedback_error": "Rəy göndərilərkən səhv baş verdi", + "comments": "Şərhlərinizi burada paylaşın:", + "booking_details": "Bronlama detalları", + "or_lowercase": "və ya", + "nevermind": "Boş ver", + "go_to": "Get: ", + "zapier_invite_link": "Zapier Dəvət Linki", + "meeting_url_provided_after_confirmed": "Tədbir təsdiqləndikdən sonra görüş URL-i yaradılacaq.", + "dynamically_display_attendee_or_organizer": "İştirakçının adını sizin üçün və ya iştirakçınızın baxdığı zaman sizin adınızı dinamik olaraq göstərin", + "event_location": "Tədbirin yeri", + "reschedule_optional": "Təxirə salma səbəbi (isteğe bağlı)", + "reschedule_placeholder": "Niyə təxirə salmaq lazım olduğunu başqalarına bildirin", + "event_cancelled": "Bu tədbir ləğv edilib", + "emailed_information_about_cancelled_event": "Hər kəsə məlumat vermək üçün e-poçt göndərdik.", + "this_input_will_shown_booking_this_event": "Bu giriş bu tədbiri sifariş edərkən göstəriləcək", + "meeting_url_in_confirmation_email": "Görüş URL-i təsdiq e-poçtunda var", + "url_start_with_https": "URL http:// və ya https:// ilə başlamalıdır", + "number_provided": "Telefon nömrəsi təmin ediləcək", + "before_event_trigger": "tədbir başlamazdan əvvəl", + "event_cancelled_trigger": "tədbir ləğv edildikdə", + "new_event_trigger": "yeni tədbir sifariş edildikdə", + "email_host_action": "ev sahibinə e-poçt göndərin", + "email_attendee_action": "iştirakçılara e-poçt göndərin", + "sms_attendee_action": "İştirakçıya SMS göndərin", + "sms_number_action": "müəyyən bir nömrəyə SMS göndərin", + "send_reminder_sms": "İştirakçılarınıza SMS vasitəsilə asanlıqla görüş xatırlatmaları göndərin", + "whatsapp_number_action": "müəyyən bir nömrəyə WhatsApp mesajı göndərin", + "whatsapp_attendee_action": "iştirakçıya WhatsApp mesajı göndərin", + "workflows": "İş axınları", + "new_workflow_btn": "Yeni İş Axını", + "add_new_workflow": "Yeni iş axını əlavə et", + "reschedule_event_trigger": "hadisə yenidən planlaşdırıldıqda", + "trigger": "Tətik", + "triggers": "Tətiklər", + "action": "Fəaliyyət", + "workflows_to_automate_notifications": "Bildirişləri və xatırlatmaları avtomatlaşdırmaq üçün iş axınları yaradın", + "workflow_name": "İş axınının adı", + "custom_workflow": "Xüsusi iş axını", + "workflow_created_successfully": "{{workflowName}} uğurla yaradıldı", + "delete_workflow_description": "Bu iş axınını silmək istədiyinizə əminsinizmi?", + "delete_workflow": "İş Axınını Sil", + "confirm_delete_workflow": "Bəli, iş axınını sil", + "workflow_deleted_successfully": "İş axını uğurla silindi", + "how_long_before": "Hadisə başlamazdan nə qədər əvvəl?", + "day_timeUnit": "günlər", + "hour_timeUnit": "saatlar", + "minute_timeUnit": "dəq", + "minute_short": "dəq", + "hour_short": "s", + "new_workflow_heading": "İlk iş axınınızı yaradın", + "new_workflow_description": "İş axınları xatırlatmaları və bildirişləri avtomatlaşdırmağa imkan verir.", + "active_on": "Aktivdir", + "workflow_updated_successfully": "{{workflowName}} iş axını uğurla yeniləndi", + "premium_to_standard_username_description": "Bu standart istifadəçi adıdır və yeniləmə sizi aşağı salmaq üçün ödəniş səhifəsinə yönləndirəcək.", + "premium_username": "Bu premium istifadəçi adıdır, özünüz üçün {{price}} qiymətinə əldə edin", + "current": "Cari", + "premium": "premium", + "standard": "standart", + "confirm_username_change_dialog_title": "İstifadəçi adının dəyişdirilməsini təsdiqləyin", + "change_username_standard_to_premium": "Standart istifadəçi adından premium istifadəçi adına keçdiyiniz üçün, yüksəltmək üçün ödəniş səhifəsinə yönləndiriləcəksiniz.", + "change_username_premium_to_standard": "Premium istifadəçi adından standart istifadəçi adına keçdiyiniz üçün, aşağı salmaq üçün ödəniş səhifəsinə yönləndiriləcəksiniz.", + "go_to_stripe_billing": "Ödəniş səhifəsinə keçin", + "stripe_description": "Rezervasiyalar üçün ödəniş tələb olunur (hər əməliyyat üçün 0.5% + €0.10 komissiya)", + "trial_expired": "Sınaq müddətiniz bitib", + "remove_app": "Tətbiqi sil", + "yes_remove_app": "Bəli, tətbiqi sil", + "are_you_sure_you_want_to_remove_this_app": "Bu tətbiqi silmək istədiyinizə əminsiniz?", + "app_removed_successfully": "Tətbiq uğurla silindi", + "error_removing_app": "Tətbiqi silərkən səhv baş verdi", + "web_conference": "Veb konfrans", + "requires_confirmation": "Təsdiq tələb edir", + "always_requires_confirmation": "Həmişə", + "requires_confirmation_threshold": "< {{time}} $t({{unit}}_timeUnit) xəbərdarlıqla rezervasiya edildikdə təsdiq tələb edir", + "may_require_confirmation": "Təsdiq tələb edə bilər", + "nr_event_type_one": "{{count}} tədbir növü", + "nr_event_type_other": "{{count}} tədbir növləri", + "count_team_one": "{{count}} komanda", + "count_team_other": "{{count}} komandalar", + "add_action": "Əməliyyat əlavə et", + "set_whereby_link": "Whereby linkini təyin et", + "invalid_whereby_link": "Zəhmət olmasa, etibarlı bir Whereby linki daxil edin", + "set_around_link": "Around.Co linkini təyin et", + "invalid_around_link": "Zəhmət olmasa, etibarlı bir Around linki daxil edin", + "set_riverside_link": "Riverside linkini təyin et", + "invalid_riverside_link": "Zəhmət olmasa, etibarlı bir Riverside linki daxil edin", + "invalid_ping_link": "Zəhmət olmasa, etibarlı bir Ping.gg linki daxil edin", + "add_exchange2013": "Exchange 2013 Serverini qoşun", + "add_exchange2016": "Exchange 2016 Serverini qoşun", + "custom_template": "Fərdi şablon", + "email_body": "Email məzmunu", + "text_message": "Mətn mesajı", + "specific_issue": "Xüsusi bir probleminiz var?", + "browse_our_docs": "sənədlərimizə baxın", + "choose_template": "Şablon seçin", + "custom": "Fərdi", + "reminder": "Xatırlatma", + "rescheduled": "Yenidən planlaşdırıldı", + "completed": "Tamamlandı", + "rating": "Reytinq", + "reminder_email": "Xatırlatma: {{eventType}} {{name}} ilə {{date}} tarixində", + "not_triggering_existing_bookings": "Mövcud rezervasiyalar üçün tetiklenmeyecek, çünki istifadəçidən tədbiri rezervasiya edərkən telefon nömrəsi tələb olunacaq.", + "minute_one": "{{count}} dəqiqə", + "minute_one_short": "{{count}}d", + "minute_other": "{{count}} dəqiqə", + "hour_one": "{{count}} saat", + "hour_one_short": "{{count}}s", + "hour_other": "{{count}} saat", + "invalid_input": "Yanlış giriş", + "broken_video_action": "<1>{{location}} görüş linkini planlaşdırılmış tədbirinizə əlavə edə bilmədik. Dəvət etdiyiniz şəxslərlə əlaqə saxlayın və ya təqvim tədbirinizi yeniləyərək detalları əlavə edin. <3>Tədbir növündə yerinizi dəyişə bilərsiniz və ya <5>tətbiqi silib yenidən əlavə etməyi sınayın.", + "broken_calendar_action": "<1>{{calendar}} yeniləyə bilmədik. <2> Təqvim ayarlarınızı yoxlayın və ya təqvimi silib yenidən əlavə edin ", + "attendee_name": "İştirakçının adı", + "scheduler_full_name": "Rezervasiya edən şəxsin tam adı", + "broken_integration": "İnteqrasiya pozulub", + "problem_adding_video_link": "Video link əlavə edərkən problem yarandı", + "problem_updating_calendar": "Təqviminizi yeniləyərkən problem yarandı", + "active_on_event_types_one": "{{count}} tədbir növündə aktivdir", + "active_on_event_types_other": "{{count}} tədbir növündə aktivdir", + "active_on_teams_one": "{{count}} komandada aktivdir", + "active_on_teams_other": "{{count}} komandada aktivdir", + "active_on_all_event_types": "Bütün tədbir növlərində aktivdir", + "active_on_all_teams": "Bütün komandalarda aktivdir", + "no_active_event_types": "Aktiv tədbir növü yoxdur", + "no_active_teams": "Aktiv komanda yoxdur", + "new_seat_subject": "Yeni İştirakçı {{name}} {{eventType}} tarixində {{date}}", + "new_seat_title": "Kimsə özünü tədbirə əlavə edib", + "variable": "Dəyişən", + "event_name_variable": "Tədbirin adı", + "attendee_name_variable": "İştirakçının adı", + "event_date_variable": "Tədbirin tarixi", + "event_time_variable": "Tədbirin vaxtı", + "organizer_name_variable": "Təşkilatçının adı", + "app_upgrade_description": "Bu funksiyanı istifadə etmək üçün Pro hesabına yüksəltməlisiniz.", + "invalid_number": "Yanlış telefon nömrəsi", + "invalid_url_error_message": "{{label}} üçün yanlış URL. Nümunə URL: {{sampleUrl}}", + "navigate": "Naviqasiya", + "open": "Aç", + "close": "Bağla", + "upgrade": "Yüksəlt", + "upgrade_to_access_recordings_title": "Qeydlərə giriş üçün yüksəlt", + "upgrade_to_access_recordings_description": "Qeydlər yalnız komandalar planının bir hissəsi olaraq mövcuddur. Zənglərinizi qeyd etməyə başlamaq üçün yüksəldin", + "upgrade_to_cal_ai_phone_number_description": "Zəngləri planlaşdırmaq üçün qonaqlara zəng edə bilən AI Agent telefon nömrəsi yaratmaq üçün Enterprise-a yüksəldin", + "recordings_are_part_of_the_teams_plan": "Qeydlər komandalar planının bir hissəsidir", + "team_feature_teams": "Bu, Komanda xüsusiyyətidir. Komandanızın mövcudluğunu görmək üçün Komandaya yüksəldin.", + "team_feature_workflows": "Bu, Komanda xüsusiyyətidir. Tədbir bildirişlərinizi və xatırlatmalarınızı Avtomatlaşdırma ilə avtomatlaşdırmaq üçün Komandaya yüksəldin.", + "show_eventtype_on_profile": "Profilə göstər", + "embed": "Daxil et", + "new_username": "Yeni istifadəçi adı", + "current_username": "Cari istifadəçi adı", + "example_1": "Nümunə 1", + "example_2": "Nümunə 2", + "booking_question_identifier": "Rezervasiya Sualı İdentifikatoru", + "company_size": "Şirkətin ölçüsü", + "what_help_needed": "Nə kömək lazımdır?", + "variable_format": "Dəyişən formatı", + "webhook_subscriber_url_reserved": "Webhook abunəçi URL-si artıq təyin edilib", + "custom_input_as_variable_info": "Əlavə giriş etiketinin bütün xüsusi simvollarını nəzərə almayın (yalnız hərflər və rəqəmlərdən istifadə edin), bütün hərfləri böyük hərflərlə yazın və boşluqları alt xətlərlə əvəz edin.", + "using_booking_questions_as_variables": "Rezervasiya suallarını dəyişən kimi necə istifadə etmək olar?", + "download_desktop_app": "Masaüstü tətbiqini yükləyin", + "set_ping_link": "Ping linkini təyin edin", + "rate_limit_exceeded": "Sürət limiti aşdı", + "when_something_happens": "Nəsə baş verəndə", + "action_is_performed": "Bir hərəkət yerinə yetirilir", + "test_action": "Test hərəkəti", + "notification_sent": "Bildiriş göndərildi", + "no_input": "Giriş yoxdur", + "test_workflow_action": "İş axını hərəkətini sınaqdan keçirin", + "send_sms": "SMS göndərin", + "send_sms_to_number": "{{number}} nömrəsinə SMS göndərmək istədiyinizə əminsinizmi?", + "missing_connected_calendar": "Əlaqəli təqvim yoxdur", + "connect_your_calendar_and_link": "Təqviminizi <1>buradan əlaqələndirə bilərsiniz.", + "default_calendar_selected": "Varsayılan təqvim seçildi", + "hide_from_profile": "Profildən gizlət", + "event_setup_tab_title": "Tədbir Quraşdırması", + "availability_not_found_in_schedule_error": "Cədvəldə mövcudluq tapılmadı", + "event_limit_tab_title": "Limitlər", + "event_limit_tab_description": "Nə qədər tez-tez rezervasiya edilə bilərsiniz", + "event_advanced_tab_description": "Təqvim parametrləri və daha çox...", + "event_advanced_tab_title": "İrəli", + "event_setup_multiple_duration_error": "Tədbir Quraşdırması: Bir neçə müddət üçün ən azı 1 seçim tələb olunur.", + "event_setup_multiple_duration_default_error": "Tədbir Quraşdırması: Zəhmət olmasa, etibarlı bir standart müddət seçin.", + "event_setup_booking_limits_error": "Rezervasiya limitləri artan qaydada olmalıdır. [gün, həftə, ay, il]", + "event_setup_duration_limits_error": "Müddət limitləri artan qaydada olmalıdır. [gün, həftə, ay, il]", + "select_which_cal": "Rezervasiyaların əlavə ediləcəyi təqvimi seçin", + "custom_event_name": "Xüsusi tədbir adı", + "custom_event_name_description": "Təqvim tədbirində göstərmək üçün xüsusi tədbir adları yaradın", + "2fa_required": "İki faktorlu autentifikasiya tələb olunur", + "incorrect_2fa": "Yanlış iki faktorlu autentifikasiya kodu", + "which_event_type_apply": "Bu hansı tədbir növünə tətbiq ediləcək?", + "apply_to_all_event_types": "Bütün tədbir növlərinə, o cümlədən gələcək tədbir növlərinə tətbiq edin", + "apply_to_all_teams": "Bütün komanda və istifadəçi tədbir növlərinə tətbiq edin", + "which_team_apply": "Bu hansı komandaya tətbiq ediləcək?", + "no_workflows_description": "İş axınları bildirişlər və xatırlatmalar göndərmək üçün sadə avtomatlaşdırmanı təmin edir və tədbirləriniz ətrafında proseslər qurmağa imkan verir.", + "timeformat_profile_hint": "Bu daxili bir ayardır və sizin və ya sizi rezervasiya edənlər üçün ictimai rezervasiya səhifələrində vaxtların necə göstəriləcəyinə təsir etməyəcək.", + "create_workflow": "İş axını yaradın", + "do_this": "Bunu edin", + "turn_off": "Söndürün", + "turn_on": "Yandırın", + "cancelled_bookings_cannot_be_rescheduled": "Ləğv edilmiş rezervasiyalar yenidən planlaşdırıla bilməz", + "settings_updated_successfully": "Ayarlar uğurla yeniləndi", + "error_updating_settings": "Ayarları yeniləyərkən səhv baş verdi", + "personal_cal_url": "Şəxsi {{appName}} URL-im", + "bio_hint": "Özünüz haqqında bir neçə cümlə. bu sizin şəxsi url səhifənizdə görünəcək.", + "user_has_no_bio": "Bu istifadəçi hələ bio əlavə etməyib.", + "bio": "Bioqrafiya", + "delete_account_modal_title": "Hesabı Sil", + "confirm_delete_account_modal": "{{appName}} hesabınızı silmək istədiyinizə əminsiniz?", + "delete_my_account": "Hesabımı sil", + "start_of_week": "Həftənin başlanğıcı", + "recordings_title": "Qeydlər", + "recording": "Qeyd", + "happy_scheduling": "Uğurlu planlaşdırma", + "select_calendars": "İkiqat rezervasiyaların qarşısını almaq üçün hansı təqvimləri yoxlamaq istədiyinizi seçin.", + "check_for_conflicts": "Münaqişələri yoxlayın", + "view_recordings": "Qeydlərə baxın", + "check_for_recordings": "Qeydləri yoxlayın", + "adding_events_to": "Tədbirləri əlavə edir", + "follow_system_preferences": "Sistem seçimlərinə əməl edin", + "custom_brand_colors": "Xüsusi marka rəngləri", + "customize_your_brand_colors": "Öz marka rənglərinizi rezervasiya səhifənizə uyğunlaşdırın.", + "pro": "Pro", + "removes_cal_branding": "{{appName}} ilə əlaqəli bütün markalamaları, yəni 'Powered by {{appName}}' silir.", + "instant_meeting_with_title": "{{name}} ilə ani görüş", + "profile_picture": "Profil Şəkli", + "upload": "Yüklə", + "add_profile_photo": "Profil şəklini əlavə et", + "token_address": "Token Ünvanı", + "blockchain": "Blokçeyn", + "old_password": "Köhnə şifrə", + "secure_password": "Yeni super təhlükəsiz şifrəniz", + "error_updating_password": "Şifrə yenilənərkən səhv baş verdi", + "two_factor_auth": "İki faktorlu autentifikasiya", + "recurring_event_tab_description": "Təkrarlanan cədvəli qurun", + "today": "bu gün", + "appearance": "Görünüş", + "my_account": "Hesabım", + "general": "Ümumi", + "calendars": "Təqvimlər", + "2fa_auth": "İki faktorlu autentifikasiya", + "invoices": "Fakturalar", + "embeds": "Daxiletmələr", + "impersonation": "İmitasiya", + "impersonation_description": "İstifadəçi imitasiya idarəetmə parametrləri", + "users": "İstifadəçilər", + "user": "İstifadəçi", + "profile_description": "{{appName}} profiliniz üçün parametrləri idarə edin", + "users_description": "Burada bütün istifadəçilərin siyahısını tapa bilərsiniz", + "users_listing": "İstifadəçi siyahısı", + "general_description": "Dil və saat qurşağı parametrlərini idarə edin", + "calendars_description": "Tədbir növlərinizin təqvimlərinizlə necə qarşılıqlı əlaqədə olduğunu konfiqurasiya edin", + "appearance_description": "Rezervasiya görünüşü parametrlərini idarə edin", + "conferencing_description": "Görüşləriniz üçün sevimli video konfrans tətbiqlərinizi əlavə edin", + "add_conferencing_app": "Video Konfrans Tətbiqi Əlavə Edin", + "password_description": "Hesab şifrələriniz üçün parametrləri idarə edin", + "set_up_two_factor_authentication": "İki faktorlu identifikasiyanı qurun", + "we_just_need_basic_info": "Profilinizi yaratmaq üçün sadəcə bəzi əsas məlumatlara ehtiyacımız var.", + "skip": "Keç", + "do_this_later": "Bunu sonra et", + "set_availability_getting_started_subtitle_1": "Mövcud olduğunuz vaxt aralıqlarını təyin edin", + "set_availability_getting_started_subtitle_2": "Bunları daha sonra mövcudluq səhifəsində fərdiləşdirə bilərsiniz.", + "connect_calendars_from_app_store": "Tətbiq mağazasından daha çox təqvim əlavə edə bilərsiniz", + "connect_conference_apps": "Konfrans tətbiqlərini qoşun", + "connect_calendar_apps": "Təqvim tətbiqlərini qoşun", + "connect_payment_apps": "Ödəniş tətbiqlərini qoşun", + "connect_automation_apps": "Avtomatlaşdırma tətbiqlərini qoşun", + "connect_analytics_apps": "Analitika tətbiqlərini qoşun", + "connect_other_apps": "Digər tətbiqləri qoşun", + "connect_messaging_apps": "Mesajlaşma tətbiqlərini qoşun", + "connect_crm_apps": "CRM tətbiqlərini qoşun", + "current_step_of_total": "Addım {{currentStep}} / {{maxSteps}}", + "add_variable": "Dəyişən əlavə edin", + "custom_phone_number": "Fərdi telefon nömrəsi", + "message_template": "Mesaj şablonu", + "email_subject": "E-poçt mövzusu", + "add_dynamic_variables": "Dinamik mətn dəyişənləri əlavə edin", + "event_name_info": "Tədbir növünün adı", + "event_date_info": "Tədbirin tarixi", + "event_duration_info": "Tədbirin müddəti", + "event_time_info": "Tədbirin başlama vaxtı", + "event_type_not_found": "EventType tapılmadı", + "location_variable": "Yer", + "location_info": "Tədbirin yeri", + "additional_notes_variable": "Əlavə qeydlər", + "additional_notes_info": "Rezervasiyanın əlavə qeydləri", + "attendee_name_info": "Rezervasiya edən şəxsin adı", + "organizer_name_info": "Təşkilatçının adı", + "to": "Üçün", + "workflow_turned_on_successfully": "{{workflowName}} iş axını uğurla {{offOn}} edildi", + "download_responses": "Cavabları yüklə", + "download_responses_description": "Formunuza verilən bütün cavabları CSV formatında yükləyin.", + "download": "Yüklə", + "download_recording": "Qeydi yüklə", + "transcription_enabled": "Transkripsiyalar indi aktivdir", + "transcription_stopped": "Transkripsiyalar dayandırıldı", + "download_transcript": "Transkripti yüklə", + "recording_from_your_recent_call": "{{appName}} üzərindən son zənginizin qeydi yükləməyə hazırdır", + "transcript_from_previous_call": "{{appName}} üzərindən son zənginizin transkripti yükləməyə hazırdır. Link yalnız 1 saat etibarlıdır", + "link_valid_for_12_hrs": "Qeyd: Yükləmə linki yalnız 12 saat etibarlıdır. Yeni yükləmə linki yaratmaq üçün təlimatları izləyərək <1>buradan əldə edə bilərsiniz.", + "create_your_first_form": "İlk formanızı yaradın", + "create_your_first_form_description": "Yönləndirmə formaları ilə uyğun suallar verə və doğru şəxsə və ya tədbir növünə yönləndirə bilərsiniz.", + "create_your_first_webhook": "İlk Webhook-unuzu yaradın", + "create_your_first_webhook_description": "Webhook-lar ilə {{appName}}-də bir şey baş verəndə görüş məlumatlarını real vaxtda ala bilərsiniz.", + "for_a_maximum_of": "Maksimum", + "event_one": "tədbir", + "event_other": "tədbirlər", + "profile_team_description": "Komanda profilinizin parametrlərini idarə edin", + "profile_org_description": "Təşkilat profilinizin parametrlərini idarə edin", + "members_team_description": "Qrupda olan istifadəçilər", + "organization_description": "Təşkilatınızdakı adminləri və üzvləri idarə edin", + "team_url": "Komanda URL", + "team_members": "Komanda üzvləri", + "more": "Daha çox", + "more_page_footer": "Mobil tətbiqi veb tətbiqinin bir uzantısı kimi görürük. Hər hansı mürəkkəb əməliyyatları yerinə yetirirsinizsə, lütfən, veb tətbiqinə qayıdın.", + "workflow_example_1": "Tədbir başlamazdan 24 saat əvvəl iştirakçıya SMS xatırlatma göndərin", + "workflow_example_2": "Tədbir təxirə salındıqda iştirakçıya xüsusi SMS göndərin", + "workflow_example_3": "Yeni tədbir sifariş edildikdə ev sahibinə xüsusi e-poçt göndərin", + "workflow_example_4": "Tədbir başlamazdan 1 saat əvvəl iştirakçıya e-poçt xatırlatma göndərin", + "workflow_example_5": "Tədbir təxirə salındıqda ev sahibinə xüsusi e-poçt göndərin", + "workflow_example_6": "Yeni tədbir sifariş edildikdə ev sahibinə xüsusi SMS göndərin", + "welcome_to_cal_header": "{{appName}}-a xoş gəlmisiniz!", + "edit_form_later_subtitle": "Bunu sonra redaktə edə biləcəksiniz.", + "connect_calendar_later": "Təqvimimi sonra qoşacağam", + "problem_saving_user_profile": "Məlumatlarınızı saxlamaqda problem yarandı. Zəhmət olmasa yenidən cəhd edin və ya müştəri dəstəyi ilə əlaqə saxlayın.", + "purchase_missing_seats": "Əskik yerləri satın alın", + "slot_length": "Slot uzunluğu", + "booking_appearance": "Sifariş Görünüşü", + "appearance_team_description": "Komandanızın sifariş görünüşü parametrlərini idarə edin", + "appearance_org_description": "Təşkilatınızın sifariş görünüşü parametrlərini idarə edin", + "only_owner_change": "Yalnız bu komandanın sahibi komandanın sifarişində dəyişiklik edə bilər", + "team_disable_cal_branding_description": "{{appName}} ilə əlaqəli bütün brendləri, yəni 'Powered by {{appName}}' ifadəsini silir", + "invited_by_team": "{{teamName}} sizi {{role}} kimi komandalarına qoşulmağa dəvət edib", + "token_invalid_expired": "Token ya etibarsızdır, ya da müddəti bitib.", + "view_booking": "Rezervasiyaya bax", + "exchange_add": "Microsoft Exchange-ə qoşul", + "exchange_authentication": "Təsdiqləmə metodu", + "exchange_authentication_standard": "Əsas təsdiqləmə", + "exchange_authentication_ntlm": "NTLM təsdiqləmə", + "exchange_compression": "GZip sıxılma", + "exchange_version": "Exchange Versiyası", + "exchange_version_2007_SP1": "2007 SP1", + "exchange_version_2010": "2010", + "exchange_version_2010_SP1": "2010 SP1", + "exchange_version_2010_SP2": "2010 SP2", + "exchange_version_2013": "2013", + "exchange_version_2013_SP1": "2013 SP1", + "exchange_version_2015": "2015", + "exchange_version_2016": "2016", + "routing_forms_description": "İştirakçıları düzgün istiqamətlərə yönləndirmək üçün formalar yaradın", + "routing_forms_send_email_owner": "Sahibə e-poçt göndər", + "routing_forms_send_email_owner_description": "Forma təqdim edildikdə sahibə e-poçt göndərir", + "routing_forms_send_email_to": "E-poçt göndər", + "add_new_form": "Yeni forma əlavə et", + "add_new_team_form": "Komandanıza yeni forma əlavə edin", + "create_your_first_route": "İlk marşrutunuzu yaradın", + "route_to_the_right_person": "Formunuza verdiyiniz cavablara əsasən düzgün şəxsə yönləndirin", + "form_description": "Rezervasiya edən şəxsi yönləndirmək üçün formanızı yaradın", + "copy_link_to_form": "Formanın linkini kopyalayın", + "theme": "Rezervasiya Səhifəsinin Mövzusu", + "theme_applies_note": "Bu yalnız sizin ictimai rezervasiya səhifələrinizə aiddir", + "app_theme": "İdarə Panelinin Mövzusu", + "app_theme_applies_note": "Bu yalnız sizin daxil olduğunuz idarə panelinə aiddir", + "theme_system": "Sistem defoltu", + "add_a_team": "Komanda əlavə edin", + "add_webhook_description": "{{appName}}-də nəsə baş verəndə görüş məlumatlarını real vaxtda alın", + "triggers_when": "Bu zaman tetiklenir", + "test_webhook": "Yaratmadan əvvəl zəhmət olmasa test edin.", + "enable_webhook": "Webhook-u aktiv edin", + "add_webhook": "Webhook əlavə edin", + "webhook_edited_successfully": "Webhook saxlanıldı", + "api_keys_description": "Öz hesabınıza giriş üçün API açarları yaradın", + "new_api_key": "Yeni API açarı", + "active": "aktiv", + "api_key_updated": "API açarının adı yeniləndi", + "api_key_update_failed": "API açarının adını yeniləməkdə səhv", + "embeds_title": "HTML iframe yerləşdirmə", + "embeds_description": "Bütün tədbir növlərinizi veb saytınıza yerləşdirin", + "create_first_api_key": "İlk API açarınızı yaradın", + "create_first_api_key_description": "API açarları digər tətbiqlərin {{appName}} ilə əlaqə qurmasına imkan verir", + "back_to_signin": "Girişə geri dön", + "reset_link_sent": "Sıfırlama linki göndərildi", + "password_reset_email": "{{email}} ünvanına parolunuzu sıfırlamaq üçün təlimatlarla bir e-poçt göndərildi.", + "password_reset_leading": "Tezliklə e-poçt almırsınızsa, daxil etdiyiniz e-poçt ünvanının düzgün olduğundan əmin olun, spam qovluğunu yoxlayın və ya problem davam edərsə dəstək ilə əlaqə saxlayın.", + "password_updated": "Parol yeniləndi!", + "pending_payment": "Gözləyən ödəniş", + "pending_invites": "Gözləyən dəvətlər", + "pending_organization_invites": "Gözləyən təşkilat dəvətləri", + "not_on_cal": "{{appName}} üzərində deyil", + "no_calendar_installed": "Quraşdırılmış təqvim yoxdur", + "no_calendar_installed_description": "Hələ heç bir təqviminizi qoşmamısınız", + "add_a_calendar": "Təqvim əlavə edin", + "change_email_hint": "Dəyişikliklərin qüvvəyə minməsi üçün çıxış edib yenidən daxil olmanız lazım ola bilər", + "confirm_password_change_email": "E-poçt ünvanınızı dəyişdirmədən əvvəl parolunuzu təsdiqləyin", + "seats": "oturacaqlar", + "every_app_published": "{{appName}} App Store-da yayımlanan hər bir tətbiq açıq mənbəlidir və həmkarların rəyləri vasitəsilə hərtərəfli sınaqdan keçirilir. Buna baxmayaraq, {{companyName}} bu tətbiqləri təsdiqləmir və ya sertifikatlaşdırmır, əgər onlar {{appName}} tərəfindən yayımlanmayıbsa. Uyğunsuz məzmun və ya davranışla qarşılaşsanız, xahiş edirik bildirin.", + "report_app": "Tətbiqi bildirin", + "limit_booking_frequency": "Rezervasiya tezliyini məhdudlaşdırın", + "limit_booking_frequency_description": "Bu hadisənin neçə dəfə rezervasiya edilə biləcəyini məhdudlaşdırın", + "only_show_first_available_slot": "Hər günün yalnız ilk mövcud vaxtını göstərin", + "only_show_first_available_slot_description": "Bu, bu hadisə növü üçün mövcudluğunuzu hər gün üçün bir vaxta məhdudlaşdıracaq, ən erkən mövcud vaxtda planlaşdırılacaq.", + "limit_total_booking_duration": "Ümumi rezervasiya müddətini məhdudlaşdırın", + "limit_total_booking_duration_description": "Bu hadisənin rezervasiya edilə biləcəyi ümumi vaxtı məhdudlaşdırın", + "add_limit": "Məhdudiyyət əlavə edin", + "team_name_required": "Komanda adı tələb olunur", + "show_attendees": "Qonaqlar arasında iştirakçı məlumatlarını paylaş", + "show_available_seats_count": "Mövcud yerlərin sayını göstər", + "how_booking_questions_as_variables": "Rezervasiya suallarını dəyişənlər kimi necə istifadə etmək olar?", + "format": "Format", + "uppercase_for_letters": "Bütün hərfləri böyük hərflərlə yaz", + "replace_whitespaces_underscores": "Boşluqları alt xətlərlə əvəz et", + "manage_billing": "Ödənişləri idarə et", + "manage_billing_description": "Bütün ödəniş işlərini idarə et", + "billing_freeplan_title": "Hazırda PULSUZ plandasınız", + "billing_freeplan_description": "Biz komandalarla daha yaxşı işləyirik. İş axınlarınızı round-robin və kollektiv tədbirlərlə genişləndirin və inkişaf etmiş yönləndirmə formaları yaradın", + "billing_freeplan_cta": "İndi cəhd edin", + "billing_portal": "Ödəniş portalı", + "billing_help_cta": "Dəstək ilə əlaqə saxlayın", + "ignore_special_characters_booking_questions": "Rezervasiya sual identifikatorunda xüsusi simvolları nəzərə almayın. Yalnız hərflər və rəqəmlər istifadə edin", + "retry": "Yenidən cəhd et", + "fetching_calendars_error": "Təqvimlərinizi yükləməkdə problem oldu. Zəhmət olmasa <1>yenidən cəhd edin və ya müştəri dəstəyi ilə əlaqə saxlayın.", + "calendar_connection_fail": "Təqvim bağlantısı uğursuz oldu", + "booking_confirmation_success": "Rezervasiya təsdiqi uğurlu oldu", + "booking_rejection_success": "Rezervasiya rədd edilməsi uğurlu oldu", + "booking_tentative": "Bu rezervasiya müvəqqətidir", + "booking_accept_intent": "Oops, qəbul etmək istəyirəm", + "we_wont_show_again": "Bunu bir daha göstərməyəcəyik", + "couldnt_update_timezone": "Saat qurşağını yeniləyə bilmədik", + "updated_timezone_to": "Saat qurşağı {{formattedCurrentTz}} olaraq yeniləndi", + "update_timezone": "Saat qurşağını yenilə", + "update_timezone_question": "Saat qurşağını yeniləyək?", + "update_timezone_description": "Görünür, yerli saat qurşağınız {{formattedCurrentTz}} olaraq dəyişib. Arzuolunmaz vaxtlarda rezervasiyaların qarşısını almaq üçün düzgün saat qurşağına sahib olmaq çox vacibdir. Yeniləmək istəyirsiniz?", + "dont_update": "Yeniləmə", + "require_additional_notes": "Əlavə qeydlər tələb olunur", + "require_additional_notes_description": "Rezervasiya zamanı əlavə qeydlərin doldurulmasını tələb edin", + "email_address_action": "müəyyən bir e-poçt ünvanına e-poçt göndərin", + "after_event_trigger": "hadisə bitdikdən sonra", + "how_long_after": "Hadisə bitdikdən nə qədər sonra?", + "no_available_slots": "Mövcud vaxtlar yoxdur", + "time_available": "Mövcud vaxt", + "cant_find_the_right_conferencing_app_visit_our_app_store": "Düzgün konfrans tətbiqini tapa bilmirsiniz? <1>Tətbiq Mağazamızı ziyarət edin.", + "install_new_calendar_app": "Yeni təqvim tətbiqini quraşdırın", + "make_phone_number_required": "Rezervasiya üçün telefon nömrəsini tələb edin", + "new_event_type_availability": "{{eventTypeTitle}} Mövcudluğu", + "error_editing_availability": "Mövcudluğu redaktə edərkən səhv baş verdi", + "dont_have_permission": "Bu resursa daxil olmaq üçün icazəniz yoxdur.", + "saml_config": "SAML", + "saml_configuration_placeholder": "Zəhmət olmasa, Kimlik Provayderinizdən SAML metadata məlumatlarını bura yapışdırın", + "saml_email_required": "SAML Kimlik Provayderinizi tapmaq üçün zəhmət olmasa bir e-poçt ünvanı daxil edin", + "saml_sp_title": "Xidmət Provayderi Məlumatları", + "saml_sp_description": "Kimlik Provayderiniz (IdP) SAML tətbiq konfiqurasiyasını tamamlamaq üçün sizdən aşağıdakı məlumatları istəyəcək.", + "saml_sp_acs_url": "ACS URL", + "saml_sp_entity_id": "SP Entity ID", + "saml_sp_acs_url_copied": "ACS URL kopyalandı!", + "saml_sp_entity_id_copied": "SP Entity ID kopyalandı!", + "add_calendar": "Təqvim əlavə et", + "limit_future_bookings": "Gələcək rezervasiyaları məhdudlaşdır", + "limit_future_bookings_description": "Bu tədbirin nə qədər gələcəkdə rezervasiya edilə biləcəyini məhdudlaşdır", + "no_event_types": "Tədbir növləri qurulmayıb", + "no_event_types_description": "{{name}} sizin üçün heç bir tədbir növü qurmayıb.", + "billing_frequency": "Ödəniş tezliyi", + "monthly": "Aylıq", + "yearly": "İllik", + "checkout": "Ödəniş", + "your_team_disbanded_successfully": "Komandanız uğurla dağıldı", + "your_org_disbanded_successfully": "Təşkilatınız uğurla dağıldı", + "error_creating_team": "Komanda yaradılarkən səhv baş verdi", + "you": "Siz", + "or_continue_with": "Və ya davam edin", + "resend_email": "E-poçtu yenidən göndərin", + "member_already_invited": "Üzv artıq dəvət olunub", + "already_in_use_error": "İstifadəçi adı artıq istifadə olunur", + "enter_email_or_username": "E-poçt və ya istifadəçi adı daxil edin", + "enter_email": "E-poçt daxil edin", + "enter_emails": "E-poçtları daxil edin", + "too_many_invites": "Bir anda maksimum {{nbUsers}} istifadəçini dəvət etməklə məhdudlaşırsınız.", + "team_name_taken": "Bu ad artıq istifadə olunur", + "must_enter_team_name": "Komanda adı daxil edilməlidir", + "team_url_required": "Komanda URL-si daxil edilməlidir", + "url_taken": "Bu URL artıq istifadə olunur", + "problem_registering_domain": "Subdomen qeydiyyatında problem yarandı, zəhmət olmasa yenidən cəhd edin və ya administratorla əlaqə saxlayın", + "team_publish": "Komandanı dərc et", + "number_text_notifications": "Telefon nömrəsi (Mətn bildirişləri)", + "number_sms_notifications": "Telefon nömrəsi (SMS bildirişləri)", + "attendee_email_variable": "İştirakçının emaili", + "attendee_email_info": "Rezervasiya edən şəxsin emaili", + "kbar_search_placeholder": "Əmr yazın və ya axtarın...", + "invalid_credential": "Görünür, {{appName}} üçün icazələr müddəti bitib və ya ləğv edilib.", + "invalid_credential_action": "Tətbiqi yenidən quraşdırın", + "reschedule_reason": "Yenidən planlaşdırma səbəbi", + "choose_common_schedule_team_event": "Ümumi cədvəli seçin", + "choose_common_schedule_team_event_description": "Əgər ev sahibləri arasında ümumi cədvəldən istifadə etmək istəyirsinizsə, bunu aktiv edin. Deaktiv edildikdə, hər bir ev sahibi öz standart cədvəlinə əsasən rezervasiya ediləcək.", + "reason": "Səbəb", + "sender_id": "Göndərən ID", + "sender_id_error_message": "Yalnız hərflər, rəqəmlər və boşluqlar icazəlidir (maks. 11 simvol)", + "test_routing_form": "Marşrutlaşdırma Formunu Test Et", + "test_preview": "Test Önizləmə", + "route_to": "Marşrutlaşdır", + "test_preview_description": "Heç bir məlumat göndərmədən marşrutlaşdırma formanızı test edin", + "test_routing": "Marşrutlaşdırmanı Test Et", + "payment_app_disabled": "Admin bir ödəniş tətbiqini deaktiv edib", + "edit_event_type": "Tədbir növünü redaktə et", + "only_admin_can_see_members_of_org": "Bu Təşkilat özəldir və yalnız təşkilatın admini və ya sahibi üzvlərini görə bilər.", + "only_admin_can_manage_sso_org": "Yalnız təşkilatın admini və ya sahibi SSO parametrlərini idarə edə bilər", + "collective_scheduling": "Kollektiv Planlaşdırma", + "make_it_easy_to_book": "Komandanızın hər kəsin mövcud olduğu vaxtı asanlıqla sifariş edin.", + "find_the_best_person": "Mövcud olan ən yaxşı şəxsi tapın və komandanız arasında dövr edin.", + "fixed_round_robin": "Sabit round robin", + "add_one_fixed_attendee": "Bir sabit iştirakçı əlavə edin və bir neçə iştirakçı arasında round robin edin.", + "calcom_is_better_with_team": "{{appName}} komandalarla daha yaxşıdır", + "the_calcom_team": "{{companyName}} komandası", + "add_your_team_members": "Komanda üzvlərinizi tədbir növlərinizə əlavə edin. Hər kəsi daxil etmək üçün kollektiv planlaşdırmadan istifadə edin və ya round robin planlaşdırma ilə ən uyğun şəxsi tapın.", + "booking_limit_reached": "Bu tədbir növü üçün sifariş limiti çatıb", + "duration_limit_reached": "Bu tədbir növü üçün müddət limiti çatıb", + "admin_has_disabled": "Admin {{appName}}-i deaktiv edib", + "disabled_app_affects_event_type": "Admin {{appName}}-i deaktiv edib, bu da sizin {{eventType}} tədbir növünüzə təsir edir", + "event_replaced_notice": "Admin tədbir növlərinizdən birini əvəz edib", + "email_subject_slug_replacement": "Komanda administratoru tədbirinizi /{{slug}} əvəz edib", + "email_body_slug_replacement_notice": "{{teamName}} komandasının administratoru tədbir növünüzü /{{slug}} idarə olunan tədbir növü ilə əvəz edib.", + "email_body_slug_replacement_info": "Linkiniz işləməyə davam edəcək, lakin bəzi parametrlər dəyişə bilər. Tədbir növlərində bunu nəzərdən keçirə bilərsiniz.", + "email_body_slug_replacement_suggestion": "Tədbir növü ilə bağlı hər hansı sualınız varsa, administratorunuzla əlaqə saxlayın.

Uğurlu planlaşdırma,
Cal.com komandası", + "disable_payment_app": "Admin {{appName}}-i deaktiv edib, bu da sizin {{title}} tədbir növünüzə təsir edir. İştirakçılar hələ də bu növ tədbiri sifariş edə bilərlər, lakin ödəniş etməyə yönləndirilməyəcəklər. Admin ödəniş metodunuzu yenidən aktivləşdirənə qədər bu tədbir növünü gizlədə bilərsiniz.", + "payment_disabled_still_able_to_book": "İştirakçılar bu növ tədbiri hələ də rezerv edə bilərlər, lakin ödəniş etmələri tələb olunmayacaq. Admin ödəniş metodunuzu yenidən aktivləşdirənə qədər bu tədbir növünü gizlədə bilərsiniz.", + "app_disabled_with_event_type": "Admin {{appName}}-i deaktiv edib, bu da tədbir növünüzə təsir edir {{title}}.", + "app_disabled_video": "Admin {{appName}}-i deaktiv edib, bu da tədbir növlərinizə təsir edə bilər. Əgər {{appName}}-i məkan olaraq istifadə edən tədbir növləriniz varsa, o zaman bu, Cal Video-ya keçəcək.", + "app_disabled_subject": "{{appName}} deaktiv edilib", + "navigate_installed_apps": "Quraşdırılmış tətbiqlərə keçin", + "disabled_calendar": "Əgər başqa bir təqvim quraşdırılıbsa, yeni rezervasiyalar ona əlavə olunacaq. Əks halda, yeni rezervasiyaları qaçırmamaq üçün yeni bir təqvim qoşun.", + "enable_apps": "Tətbiqləri Aktivləşdir", + "enable_apps_description": "İstifadəçilərin {{appName}} ilə inteqrasiya edə biləcəyi tətbiqləri aktivləşdirin", + "purchase_license": "Lisenziya Alın", + "already_have_account": "Artıq hesabınız var?", + "already_have_key": "Artıq açarım var:", + "already_have_key_suggestion": "Mövcud CALCOM_LICENSE_KEY mühit dəyişənini bura kopyalayın.", + "app_is_enabled": "{{appName}} aktivdir", + "app_is_disabled": "{{appName}} deaktivdir", + "keys_have_been_saved": "Açarlar saxlanıldı", + "disable_app": "Tətbiqi Deaktiv Et", + "disable_app_description": "Bu tətbiqin deaktiv edilməsi istifadəçilərinizin Cal ilə necə qarşılıqlı əlaqədə olmasına problem yarada bilər", + "edit_keys": "Açarları Redaktə Et", + "admin_apps_description": "Cal instansiyanız üçün tətbiqləri aktivləşdirin", + "no_available_apps": "Mövcud tətbiq yoxdur", + "no_available_apps_description": "Zəhmət olmasa, 'packages/app-store' altında yerləşdirilmənizdə tətbiqlərin olduğuna əmin olun", + "no_apps": "Bu Cal instansiyasında aktiv tətbiq yoxdur", + "no_apps_configured": "Hələ heç bir tətbiq konfiqurasiya edilməyib", + "enable_in_settings": "Tətbiqləri parametrlərdə aktivləşdirə bilərsiniz", + "please_contact_admin": "Zəhmət olmasa, adminlə əlaqə saxlayın", + "apps_settings": "Tətbiq parametrləri", + "fill_this_field": "Zəhmət olmasa, bu sahəni doldurun", + "options": "Seçimlər", + "enter_option": "Seçim {{index}} daxil edin", + "add_an_option": "Seçim əlavə edin", + "location_already_exists": "Bu yer artıq mövcuddur. Zəhmət olmasa, yeni yer seçin", + "radio": "Radio", + "google_meet_warning": "Google Meet istifadə etmək üçün təyinat təqviminizi Google Təqvim olaraq təyin etməlisiniz", + "individual": "Fərdi", + "all_bookings_filter_label": "Bütün Rezervasiyalar", + "all_users_filter_label": "Bütün İstifadəçilər", + "all_event_types_filter_label": "Bütün Tədbir Növləri", + "your_bookings_filter_label": "Sizin Rezervasiyalarınız", + "meeting_url_variable": "Görüş url", + "meeting_url_info": "Tədbir görüş konfrans url", + "date_overrides": "Tarix dəyişiklikləri", + "date_overrides_delete_on_date": "Tarix dəyişikliklərini {{date}} tarixində silin", + "date_overrides_subtitle": "Gündəlik saatlarınızdan fərqli olan tarixləri əlavə edin.", + "date_overrides_info": "Tarix dəyişiklikləri tarix keçdikdən sonra avtomatik olaraq arxivlənir", + "date_overrides_dialog_which_hours": "Hansı saatlarda azadsınız?", + "date_overrides_dialog_which_hours_unavailable": "Hansı saatlarda məşğulsunuz?", + "date_overrides_dialog_title": "Dəyişdiriləcək tarixləri seçin", + "date_overrides_unavailable": "Bütün gün mövcud deyil", + "date_overrides_mark_all_day_unavailable_one": "Bütün gün üçün əlçatan deyil olaraq işarələ", + "date_overrides_mark_all_day_unavailable_other": "Seçilmiş tarixlərdə əlçatan deyil olaraq işarələ", + "date_overrides_add_btn": "Dəyişiklik əlavə et", + "date_overrides_update_btn": "Dəyişikliyi yenilə", + "date_successfully_added": "Tarix dəyişikliyi uğurla əlavə edildi", + "event_type_duplicate_copy_text": "{{slug}}-nüsxə", + "set_as_default": "Varsayılan olaraq təyin et", + "hide_eventtype_details": "Tədbir növü detallarını gizlət", + "show_navigation": "Naviqasiyanı göstər", + "hide_navigation": "Naviqasiyanı gizlət", + "verification_code_sent": "Təsdiq kodu göndərildi", + "verified_successfully": "Uğurla təsdiqləndi", + "wrong_code": "Yanlış təsdiq kodu", + "not_verified": "Hələ təsdiqlənməyib", + "no_availability_in_month": "{{month}} ayında əlçatanlıq yoxdur", + "view_next_month": "Növbəti aya bax", + "send_code": "Kodu göndər", + "number_verified": "Nömrə təsdiqləndi", + "create_your_first_team_webhook_description": "Bu komanda tədbir növü üçün ilk webhook-u yaradın", + "create_webhook_team_event_type": "Bu komanda tədbir növü üçün webhook yaradın", + "disable_success_page": "Uğur səhifəsini deaktiv et (yalnız yönləndirmə URL-i varsa işləyir)", + "invalid_admin_password": "Siz adminsiniz, lakin ən azı 15 simvoldan ibarət parolunuz yoxdur və ya hələ 2FA yoxdur", + "change_password_admin": "Admin girişi əldə etmək üçün parolu dəyişdirin", + "username_already_taken": "İstifadəçi adı artıq götürülüb", + "assignment": "Tapşırıq", + "fixed_hosts": "Sabit Hostlar", + "add_fixed_hosts": "Sabit host əlavə et", + "round_robin_hosts": "Round-Robin Hostlar", + "minimum_round_robin_hosts_count": "Tələb olunan host sayı", + "hosts": "Hostlar", + "upgrade_to_enable_feature": "Bu funksiyanı aktivləşdirmək üçün komanda yaratmalısınız. Komanda yaratmaq üçün klikləyin.", + "orgs_upgrade_to_enable_feature": "Bu funksiyanı aktivləşdirmək üçün enterprise planımıza yüksəltməlisiniz.", + "new_attendee": "Yeni İştirakçı", + "awaiting_approval": "Təsdiq gözləyir", + "requires_google_calendar": "Bu tətbiq Google Calendar bağlantısı tələb edir", + "event_type_requires_google_calendar": "Bu tədbir növü üçün “Təqvimə əlavə et” funksiyası Meet-in işləməsi üçün Google Calendar tələb edir. Buradan <1>bağlayın.", + "connected_google_calendar": "Google Calendar hesabı bağlanıb.", + "using_meet_requires_calendar": "Google Meet istifadə etmək üçün bağlı Google Calendar tələb olunur", + "continue_to_install_google_calendar": "Google Calendar quraşdırmağa davam edin", + "install_google_meet": "Google Meet quraşdır", + "install_google_calendar": "Google Calendar quraşdır", + "sender_name": "Göndərənin adı", + "already_invited": "İştirakçı artıq dəvət olunub", + "no_recordings_found": "Heç bir qeyd tapılmadı", + "new_workflow_subtitle": "Yeni iş axını...", + "reporting": "Hesabat", + "reporting_feature": "Bütün gələn forma məlumatlarını görün və CSV kimi yükləyin", + "teams_plan_required": "Komandalar planı tələb olunur", + "routing_forms_are_a_great_way": "Gələn müraciətlərinizi doğru şəxsə yönləndirmək üçün routing formaları əla bir yoldur. Bu funksiyaya giriş üçün Komandalar planına yüksəldin.", + "choose_a_license": "Lisenziya seçin", + "choose_license_description": "Cal.com, məhdudiyyətləri olan əlçatan və pulsuz AGPLv3 lisenziyası ilə gəlir. Biz kommersiya lisenziyası üçün Enterprise müştərilərini qəbul edirik, bu barədə aşağıdakı satış şöbəsi ilə əlaqə saxlayaraq məlumat ala bilərsiniz.", + "license": "Lisenziya", + "agplv3_license": "AGPLv3 Lisenziyası", + "no_need_to_keep_your_code_open_source": "Kodunuzu açıq mənbə olaraq saxlamağa ehtiyac yoxdur", + "repackage_rebrand_resell": "Asanlıqla yenidən paketləyin, yenidən markalayın və satın", + "a_vast_suite_of_enterprise_features": "Geniş bir sıra enterprise xüsusiyyətləri", + "free_license_fee": "$0.00/ay", + "forever_open_and_free": "Həmişə Açıq və Pulsuz", + "required_to_keep_your_code_open_source": "Kodunuzu açıq mənbə olaraq saxlamaq tələb olunur", + "cannot_repackage_and_resell": "Asanlıqla yenidən paketləmək və satmaq mümkün deyil", + "no_enterprise_features": "Enterprise xüsusiyyətləri yoxdur", + "step_enterprise_license": "Enterprise Lisenziyası", + "step_enterprise_license_description": "Özəl hosting, yenidən paketləmə, yenidən markalama və satma və eksklüziv enterprise komponentlərinə giriş ilə kommersiya istifadəsi üçün hər şey.", + "setup": "Quraşdırma", + "setup_description": "Cal.com instansiyasını quraşdırın", + "configure": "Konfiqurasiya", + "sso_configuration": "Tək Giriş (SSO) Konfiqurasiyası", + "sso_configuration_description": "SAML/OIDC SSO-nu konfiqurasiya edin və komanda üzvlərinin Kimlik Provayderi istifadə edərək daxil olmasına icazə verin", + "sso_configuration_description_orgs": "SAML/OIDC SSO-nu konfiqurasiya edin və təşkilat üzvlərinin Kimlik Provayderi istifadə edərək daxil olmasına icazə verin", + "sso_oidc_heading": "OIDC ilə SSO", + "sso_oidc_description": "Seçdiyiniz Kimlik Provayderi ilə OIDC SSO-nu konfiqurasiya edin.", + "sso_oidc_configuration_title": "OIDC Konfiqurasiyası", + "sso_oidc_configuration_description": "Kimlik provayderinizə OIDC bağlantısını konfiqurasiya edin. Tələb olunan məlumatları kimlik provayderinizdə tapa bilərsiniz.", + "sso_oidc_callback_copied": "Geri çağırış URL-i kopyalandı", + "sso_saml_heading": "SAML ilə SSO", + "sso_saml_description": "Seçdiyiniz Kimlik Provayderi ilə SAML SSO-nu konfiqurasiya edin.", + "sso_saml_configuration_title": "SAML Konfiqurasiyası", + "sso_saml_configuration_description": "Kimlik provayderinizə SAML bağlantısını konfiqurasiya edin. Lazım olan məlumatları kimlik provayderinizdə tapa bilərsiniz.", + "sso_saml_acsurl_copied": "ACS URL kopyalandı", + "sso_saml_entityid_copied": "Entity ID kopyalandı", + "sso_connection_created_successfully": "{{connectionType}} konfiqurasiyası uğurla yaradıldı", + "sso_connection_deleted_successfully": "{{connectionType}} konfiqurasiyası uğurla silindi", + "delete_sso_configuration": "{{connectionType}} konfiqurasiyasını sil", + "delete_sso_configuration_confirmation": "Bəli, {{connectionType}} konfiqurasiyasını sil", + "delete_sso_configuration_confirmation_description": "{{connectionType}} konfiqurasiyasını silmək istədiyinizə əminsinizmi? {{connectionType}} girişi istifadə edən komanda üzvləriniz artıq Cal.com-a daxil ola bilməyəcəklər.", + "organizer_timezone": "Təşkilatçının saat qurşağı", + "email_user_cta": "Dəvəti Görüntülə", + "email_no_user_invite_heading_team": "Siz {{appName}} komandasına qoşulmağa dəvət olunmusunuz", + "email_no_user_invite_heading_subteam": "Siz {{parentTeamName}} təşkilatının komandasına qoşulmağa dəvət olunmusunuz", + "email_no_user_invite_heading_org": "Siz {{appName}} təşkilatına qoşulmağa dəvət olunmusunuz", + "email_no_user_invite_subheading": "{{invitedBy}} sizi {{appName}} üzərindəki komandasına qoşulmağa dəvət edib. {{appName}} sizə və komandanıza görüşləri e-poçt mübadiləsi olmadan planlaşdırmağa imkan verən tədbir idarəetmə planlayıcısıdır.", + "email_user_invite_subheading_team": "{{invitedBy}} sizi {{appName}} üzərindəki {{teamName}} komandasına qoşulmağa dəvət edib. {{appName}} sizə və komandanıza görüşləri e-poçt mübadiləsi olmadan planlaşdırmağa imkan verən tədbir idarəetmə planlayıcısıdır.", + "email_user_invite_subheading_subteam": "{{invitedBy}} sizi {{appName}} üzərindəki {{parentTeamName}} təşkilatının {{teamName}} komandasına qoşulmağa dəvət edib. {{appName}} sizə və komandanıza görüşləri e-poçt mübadiləsi olmadan planlaşdırmağa imkan verən tədbir idarəetmə planlayıcısıdır.", + "email_user_invite_subheading_org": "{{invitedBy}} sizi {{appName}} üzərindəki {{teamName}} təşkilatına qoşulmağa dəvət edib. {{appName}} sizə və təşkilatınıza görüşləri e-poçt mübadiləsi olmadan planlaşdırmağa imkan verən tədbir idarəetmə planlayıcısıdır.", + "email_no_user_invite_steps_intro": "Sizi bir neçə qısa addımla tanış edəcəyik və tezliklə {{entity}} ilə stresssiz planlaşdırmadan həzz alacaqsınız.", + "email_no_user_step_one": "İstifadəçi adınızı seçin", + "email_no_user_step_two": "Təqvim hesabınızı bağlayın", + "email_no_user_step_three": "Mövcudluğunuzu təyin edin", + "email_no_user_step_four": "{{teamName}}-ə qoşulun", + "email_no_user_signoff": "{{appName}} komandasından xoş planlaşdırma", + "impersonation_user_tip": "İstifadəçini təqlid etmək üzrəsiniz, yəni onların adından dəyişikliklər edə bilərsiniz. Zəhmət olmasa diqqətli olun.", + "available_variables": "Mövcud dəyişənlər", + "scheduler": "{Scheduler}", + "no_workflows": "Heç bir iş axını yoxdur", + "change_filter": "Şəxsi və komanda iş axınlarınızı görmək üçün filtri dəyişin.", + "change_filter_common": "Nəticələri görmək üçün filtri dəyişin.", + "no_results_for_filter": "Filtr üçün nəticə yoxdur", + "recommended_next_steps": "Tövsiyə olunan növbəti addımlar", + "create_a_managed_event": "İdarə olunan tədbir növü yaradın", + "meetings_are_better_with_the_right": "Görüşlər doğru komanda üzvləri ilə daha yaxşıdır. Onları indi dəvət edin.", + "create_a_one_one_template": "Tədbir növü üçün bir-bir şablon yaradın və onu bir neçə üzvə paylayın.", + "collective_or_roundrobin": "Kollektiv və ya round-robin", + "book_your_team_members": "Kollektiv tədbirlərlə komanda üzvlərinizi birlikdə sifariş edin və ya round-robin ilə doğru şəxsi seçin.", + "event_no_longer_attending_subject": "{{title}} tarixində {{date}} iştirak etməyəcək", + "no_longer_attending": "Bu tədbirdə artıq iştirak etmirsiniz", + "attendee_no_longer_attending_subject": "Bir iştirakçı {{title}} tarixində {{date}} iştirak etməyəcək", + "attendee_no_longer_attending": "Bir iştirakçı artıq tədbirinizdə iştirak etmir", + "attendee_no_longer_attending_subtitle": "{{name}} ləğv edib. Bu, bu vaxt aralığı üçün bir yerin açıldığı deməkdir", + "create_event_on": "Tədbir yaradın", + "create_routing_form_on": "Yönləndirmə formasını yarat", + "default_app_link_title": "Varsayılan tətbiq bağlantısını təyin et", + "default_app_link_description": "Varsayılan tətbiq bağlantısını təyin etmək, yeni yaradılan bütün tədbir növlərinin təyin etdiyiniz tətbiq bağlantısını istifadə etməsinə imkan verir.", + "organizer_default_conferencing_app": "Təşkilatçının varsayılan tətbiqi", + "under_maintenance": "Baxım üçün bağlıdır", + "under_maintenance_description": "{{appName}} komandası planlı baxım işləri aparır. Hər hansı bir sualınız varsa, dəstək ilə əlaqə saxlayın.", + "event_type_seats": "{{numberOfSeats}} oturacaq", + "booking_questions_title": "Rezervasiya sualları", + "booking_questions_description": "Rezervasiya səhifəsində soruşulan sualları fərdiləşdirin", + "add_a_booking_question": "Sual əlavə et", + "identifier": "İdentifikator", + "duplicate_email": "E-poçt təkrarlanır", + "booking_with_payment_cancelled": "Bu tədbir üçün ödəniş artıq mümkün deyil", + "booking_with_payment_cancelled_already_paid": "Bu rezervasiya ödənişi üçün geri ödəmə yoldadır.", + "booking_with_payment_cancelled_refunded": "Bu rezervasiya ödənişi geri ödənilib.", + "booking_confirmation_failed": "Rezervasiya təsdiqi uğursuz oldu", + "not_enough_seats": "Kifayət qədər oturacaq yoxdur", + "form_builder_field_already_exists": "Bu adla bir sahə artıq mövcuddur", + "show_on_booking_page": "Rezervasiya səhifəsində göstər", + "get_started_zapier_templates": "Zapier şablonları ilə başlayın", + "team_is_unpublished": "{{team}} yayımlanmayıb", + "org_is_unpublished_description": "Bu təşkilat bağlantısı hazırda mövcud deyil. Zəhmət olmasa təşkilat sahibinə müraciət edin və ya onu yayımlamasını xahiş edin.", + "team_is_unpublished_description": "Bu komanda bağlantısı hazırda mövcud deyil. Zəhmət olmasa komanda sahibinə müraciət edin və ya onu yayımlamasını xahiş edin.", + "team_member": "Komanda üzvü", + "a_routing_form": "Yönləndirmə Forması", + "form_description_placeholder": "Formanın təsviri", + "keep_me_connected_with_form": "Məni forma ilə əlaqədə saxla", + "fields_in_form_duplicated": "Formanın Router və Sahələrində edilən hər hansı dəyişikliklər dublikatda əks olunacaq.", + "form_deleted": "Forma silindi", + "delete_form": "Bu formu silmək istədiyinizə əminsinizmi?", + "delete_form_action": "Bəli, Formu sil", + "delete_form_confirmation": "Linki paylaşdığınız hər kəs artıq ona daxil ola bilməyəcək.", + "delete_form_confirmation_2": "Bütün əlaqəli cavablar silinəcək.", + "typeform_redirect_url_copied": "Typeform Yönləndirmə URL-i kopyalandı! URL-i Typeform formasında təyin edə bilərsiniz.", + "modifications_in_fields_warning": "Aşağıdakı formaların sahələrində və marşrutlarında edilən dəyişikliklər bu formada əks olunacaq.", + "connected_forms": "Əlaqəli Formalar", + "form_modifications_warning": "Burada sahələri və marşrutları dəyişdirdikdə aşağıdakı formalara təsir edəcək.", + "responses_collection_waiting_description": "Cavabların toplanması üçün bir az gözləyin. Siz də formu doldurub təqdim edə bilərsiniz.", + "this_is_what_your_users_would_see": "İstifadəçilərinizin görəcəyi budur", + "identifies_name_field": "Bu adla sahəni müəyyən edir.", + "add_1_option_per_line": "Hər sətirə 1 seçim əlavə edin", + "select_a_router": "Router seçin", + "add_a_new_route": "Yeni Marşrut əlavə edin", + "make_informed_decisions": "İnsaytlarla məlumatlı qərarlar verin", + "make_informed_decisions_description": "İnsaytlar panelimiz komandanızın bütün fəaliyyətini göstərir və daha yaxşı komanda planlaşdırması və qərar qəbul etməyə imkan verən meylləri göstərir.", + "view_bookings_across": "Bütün üzvlərin rezervasiyalarına baxın", + "view_bookings_across_description": "Kimlərin ən çox rezervasiya aldığını görün və komandanız arasında ən yaxşı paylanmanı təmin edin", + "identify_booking_trends": "Rezervasiya meyllərini müəyyən edin", + "identify_booking_trends_description": "Həftənin hansı günləri və günün hansı saatlarının rezervasiya edənlər üçün populyar olduğunu görün", + "spot_popular_event_types": "Populyar tədbir növlərini müəyyən edin", + "spot_popular_event_types_description": "Hansı tədbir növlərinin ən çox klik və rezervasiya aldığını görün", + "no_responses_yet": "Hələ cavab yoxdur", + "no_routes_defined": "Heç bir marşrut müəyyən edilməyib", + "this_will_be_the_placeholder": "Bu yer tutucu olacaq", + "error_booking_event": "Tədbiri rezervasiya edərkən səhv baş verdi, xahiş edirik səhifəni yeniləyin və yenidən cəhd edin", + "timeslot_missing_title": "Vaxt aralığı seçilməyib", + "timeslot_missing_description": "Tədbiri rezervasiya etmək üçün vaxt aralığını seçin.", + "timeslot_missing_cta": "Vaxt aralığını seçin", + "switch_monthly": "Aylıq görünüşə keçin", + "switch_weekly": "Həftəlik görünüşə keçin", + "switch_multiday": "Günlük görünüşə keçin", + "switch_columnview": "Sütun görünüşünə keçin", + "num_locations": "{{num}} yer seçimi", + "select_on_next_step": "Növbəti addımda seçin", + "this_meeting_has_not_started_yet": "Bu görüş hələ başlamayıb", + "this_app_requires_connected_account": "{{appName}} bağlı {{dependencyName}} hesabı tələb edir", + "connect_app": "{{dependencyName}}-i bağlayın", + "app_is_connected": "{{dependencyName}} bağlıdır", + "requires_app": "{{dependencyName}} tələb edir", + "verification_code": "Təsdiq kodu", + "can_you_try_again": "Başqa bir vaxtla yenidən cəhd edə bilərsinizmi?", + "verify": "Təsdiqləyin", + "timezone_variable": "Saat qurşağı", + "timezone_info": "Qəbul edən şəxsin saat qurşağı", + "event_end_time_variable": "Tədbirin bitmə vaxtı", + "event_end_time_info": "Tədbirin bitmə vaxtı", + "cancel_url_variable": "Ləğv URL", + "cancel_url_info": "Rezervasiyanı ləğv etmək üçün URL", + "reschedule_url_variable": "Yenidən planlaşdırma URL", + "reschedule_url_info": "Rezervasiyanı yenidən planlaşdırmaq üçün URL", + "invalid_event_name_variables": "{{item}} tədbir adında etibarsız dəyişəndir", + "select_all": "Hamısını seç", + "default_conferencing_bulk_title": "Mövcud tədbir növlərini toplu yeniləmə", + "members_default_schedule": "Üzvün standart cədvəli", + "set_by_admin": "Komanda admini tərəfindən təyin edilib", + "members_default_location": "Üzvün standart yeri", + "members_default_schedule_description": "Biz hər bir üzvün standart mövcudluq cədvəlindən istifadə edəcəyik. Onlar bunu redaktə edə və ya dəyişə biləcəklər.", + "requires_at_least_one_schedule": "Ən azı bir cədvəl tələb olunur", + "default_conferencing_bulk_description": "Seçilmiş tədbir növləri üçün yerləri yeniləyin", + "default_schedules_bulk_description": "Seçilmiş tədbir növləri üçün cədvəlləri yeniləyin", + "locked_for_members": "Üzvlər üçün kilidlənib", + "unlocked_for_members": "Üzvlər üçün açılıb", + "apps_locked_for_members_description": "Üzvlər aktiv tətbiqləri görə biləcəklər, lakin heç bir tətbiq parametrlərini redaktə edə bilməyəcəklər", + "apps_unlocked_for_members_description": "Üzvlər aktiv tətbiqləri görə biləcəklər və hər hansı tətbiq parametrlərini redaktə edə biləcəklər", + "apps_locked_by_team_admins_description": "Siz aktiv tətbiqləri görə biləcəksiniz, lakin heç bir tətbiq parametrlərini redaktə edə bilməyəcəksiniz", + "apps_unlocked_by_team_admins_description": "Siz aktiv tətbiqləri görə biləcəksiniz və hər hansı tətbiq parametrlərini redaktə edə biləcəksiniz", + "workflows_locked_for_members_description": "Üzvlər bu tədbir növünə şəxsi iş axınlarını əlavə edə bilməzlər. Üzvlər aktiv komanda iş axınlarını görə biləcəklər, lakin heç bir iş axını parametrlərini redaktə edə bilməyəcəklər.", + "workflows_unlocked_for_members_description": "Üzvlər bu tədbir növünə şəxsi iş axınlarını əlavə edə biləcəklər. Üzvlər aktiv komanda iş axınlarını görə biləcəklər, lakin heç bir iş axını parametrlərini redaktə edə bilməyəcəklər.", + "workflows_locked_by_team_admins_description": "Siz aktiv komanda iş axınlarını görə biləcəksiniz, lakin heç bir iş axını parametrlərini redaktə edə və ya bu tədbir növünə şəxsi iş axınlarınızı əlavə edə bilməyəcəksiniz.", + "workflows_unlocked_by_team_admins_description": "Siz bu tədbir növündə şəxsi iş axınlarını aktivləşdirə/deaktivləşdirə biləcəksiniz. Aktiv komanda iş axınlarını görə biləcəksiniz, lakin heç bir komanda iş axını parametrlərini redaktə edə bilməyəcəksiniz.", + "locked_by_team_admin": "Komanda admini tərəfindən kilidlənib", + "app_not_connected": "Siz {{appName}} hesabını bağlamamısınız.", + "connect_now": "İndi bağlayın", + "managed_event_dialog_confirm_button_one": "Əvəz et və {{count}} üzvü xəbərdar et", + "managed_event_dialog_confirm_button_other": "Əvəz et və {{count}} üzvləri xəbərdar et", + "managed_event_dialog_title_one": "/{{slug}} url-si artıq {{count}} üzv üçün mövcuddur. Onu əvəz etmək istəyirsiniz?", + "managed_event_dialog_title_other": "/{{slug}} url-si artıq {{count}} üzvlər üçün mövcuddur. Onu əvəz etmək istəyirsiniz?", + "managed_event_dialog_information_one": "{{names}} artıq /{{slug}} url-sindən istifadə edir.", + "managed_event_dialog_information_other": "{{names}} artıq /{{slug}} url-sindən istifadə edirlər.", + "managed_event_dialog_clarification": "Əgər onu əvəz etməyi seçsəniz, biz onları xəbərdar edəcəyik. Əgər onu üstələmək istəmirsinizsə, geri qayıdıb onları silin.", + "review_event_type": "Tədbir Növünü Gözden Keçirin", + "looking_for_more_analytics": "Daha çox analitika axtarırsınız?", + "looking_for_more_insights": "Daha çox məlumat axtarırsınız?", + "filters": "Filtrlər", + "add_filter": "Filtr əlavə et", + "remove_filters": "Bütün filtrləri təmizlə", + "email_verified": "Email Təsdiqləndi", + "select_user": "İstifadəçini seçin", + "select_event_type": "Tədbir növünü seçin", + "select_date_range": "Tarix aralığını seçin", + "popular_events": "Populyar tədbirlər", + "no_event_types_found": "Tədbir növləri tapılmadı", + "average_event_duration": "Orta tədbir müddəti", + "most_booked_members": "Ən çox sifariş edilən üzvlər", + "least_booked_members": "Ən az sifariş edilən üzvlər", + "events_created": "Yaradılan tədbirlər", + "events_completed": "Tamamlanan tədbirlər", + "events_cancelled": "Ləğv edilən tədbirlər", + "events_rescheduled": "Yenidən planlaşdırılan tədbirlər", + "from_last_period": "son dövrdən", + "from_to_date_period": "Başlanğıc: {{startDate}} Bitiş: {{endDate}}", + "redirect_url_warning": "Yönləndirmə əlavə etmək uğur səhifəsini deaktiv edəcək. Xüsusi uğur səhifənizdə \"Sifariş Təsdiqləndi\" qeyd etməyi unutmayın.", + "event_trends": "Tədbir trendləri", + "clear_filters": "Filtrləri təmizlə", + "clear": "Təmizlə", + "hold": "Saxla", + "on_booking_option": "Sifariş zamanı ödəniş topla", + "hold_option": "Gəlməmə haqqı tut", + "card_held": "Kart saxlanıldı", + "charge_card": "Kartdan ödəniş al", + "card_charged": "Kartdan ödəniş alındı", + "no_show_fee_amount": "{{amount, currency}} gəlməmə haqqı", + "no_show_fee": "Gəlməmə haqqı", + "submit_card": "Kartı təqdim edin", + "submit_payment_information": "Ödəniş məlumatlarını təqdim edin", + "meeting_awaiting_payment_method": "Görüş ödəniş üsulunu gözləyir", + "no_show_fee_charged_email_subject": "{{title}} üçün {{date}} tarixində {{amount, currency}} gəlməmə haqqı tutuldu", + "no_show_fee_charged_text_body": "Gəlməmə haqqı tutuldu", + "no_show_fee_charged_subtitle": "Aşağıdakı tədbir üçün {{amount, currency}} gəlməmə haqqı tutuldu", + "error_charging_card": "Gəlməmə haqqını tutarkən bir səhv baş verdi. Zəhmət olmasa, bir az sonra yenidən cəhd edin.", + "collect_no_show_fee": "Gəlməmə haqqını toplayın", + "no_show_fee_charged": "Gəlməmə haqqı tutuldu", + "insights": "Görüşlər", + "testing_workflow_info_message": "Bu iş axınını sınaqdan keçirərkən, e-poçtların və SMS-lərin ən azı 1 saat əvvəl planlaşdırıla biləcəyini unutmayın", + "insights_no_data_found_for_filter": "Seçilmiş filtr və ya tarixlər üçün məlumat tapılmadı.", + "acknowledge_booking_no_show_fee": "Bu tədbirə qatılmasam, kartıma {{amount, currency}} gəlməmə haqqı tətbiq olunacağını qəbul edirəm.", + "card_details": "Kart məlumatları", + "something_went_wrong_on_our_end": "Bizim tərəfimizdə bir şey səhv getdi. Dəstək komandamızla əlaqə saxlayın, və biz bunu dərhal düzəldəcəyik.", + "please_provide_following_text_to_suppport": "Dəstək ilə əlaqə saxlayarkən aşağıdakı mətni təqdim edin ki, sizə daha yaxşı kömək edə bilək", + "seats_and_no_show_fee_error": "Hazırda yerləri aktivləşdirmək və gəlməmə haqqını tutmaq mümkün deyil", + "complete_your_booking": "Rezervasiyanızı tamamlayın", + "complete_your_booking_subject": "Rezervasiyanızı tamamlayın: {{title}} {{date}} tarixində", + "confirm_your_details": "Məlumatlarınızı təsdiq edin", + "copy_invite_link": "Dəvət linkini kopyalayın", + "edit_invite_link": "Link parametrlərini redaktə edin", + "invite_link_copied": "Dəvət linki kopyalandı", + "invite_link_deleted": "Dəvət linki silindi", + "api_key_deleted": "API açarı silindi", + "invite_link_updated": "Dəvət linki parametrləri yadda saxlanıldı", + "link_expires_after": "Linklər bu müddətdən sonra bitir...", + "one_day": "1 gün", + "seven_days": "7 gün", + "thirty_days": "30 gün", + "three_months": "3 ay", + "one_year": "1 il", + "team_invite_received": "Siz {{teamName}} komandasına qoşulmağa dəvət olunmusunuz", + "currency_string": "{{amount, currency}}", + "charge_card_dialog_body": "Siz iştirakçının kartına {{amount, currency}} məbləğində ödəniş edəcəksiniz. Davam etmək istədiyinizə əminsiniz?", + "charge_attendee": "İştirakçıya ödəniş edin {{amount, currency}}", + "payment_app_commission": "Ödəniş tələb edin (hər əməliyyat üçün {{paymentFeePercentage}}% + {{fee, currency}} komissiya)", + "email_invite_team": "{{email}} dəvət olunub", + "email_invite_team_bulk": "{{userCount}} istifadəçi dəvət olunub", + "error_collecting_card": "Kart məlumatlarını toplamaqda səhv", + "image_size_limit_exceed": "Yüklənmiş şəkil 5mb ölçü limitini keçməməlidir", + "unauthorized_workflow_error_message": "{{errorCode}}: Bu iş axınını aktivləşdirmək və ya deaktivləşdirmək üçün icazəniz yoxdur", + "inline_embed": "Daxili Əlavə", + "load_inline_content": "Tədbir növünüzü birbaşa digər veb sayt məzmununuzla birlikdə yükləyir.", + "floating_pop_up_button": "Üzən pop-up düyməsi", + "floating_button_trigger_modal": "Saytınıza üzən bir düymə qoyur ki, bu da tədbir növünüzlə bir modalı işə salır.", + "pop_up_element_click": "Element klikləmə ilə pop-up", + "open_dialog_with_element_click": "Kimsə bir elementə kliklədikdə təqviminizi dialoq kimi açın.", + "need_help_embedding": "Kömək lazımdır? Cal-ı Wix, Squarespace və ya WordPress-də yerləşdirmək üçün təlimatlarımıza baxın, ümumi suallarımızı yoxlayın və ya inkişaf etmiş yerləşdirmə seçimlərini araşdırın.", + "book_my_cal": "Cal-ımı rezerv et", + "first_name": "Ad", + "last_name": "Soyad", + "first_last_name": "Ad, Soyad", + "invite_as": "Dəvət et", + "form_updated_successfully": "Form uğurla yeniləndi.", + "disable_attendees_confirmation_emails": "İştirakçılar üçün təsdiq e-poçtlarını deaktiv et", + "disable_attendees_confirmation_emails_description": "Bu tədbir növündə iştirakçılara rezervasiya təsdiqi göndərən ən azı bir iş axını aktivdir.", + "disable_host_confirmation_emails": "Ev sahibi üçün təsdiq e-poçtlarını deaktiv et", + "disable_host_confirmation_emails_description": "Bu tədbir növündə tədbir rezervasiya edildikdə ev sahibinə e-poçt göndərən ən azı bir iş axını aktivdir.", + "add_an_override": "Üstünlük əlavə et", + "import_from_google_workspace": "Google Workspace-dən istifadəçiləri idxal et", + "connect_google_workspace": "Google Workspace-ə qoşul", + "google_workspace_admin_tooltip": "Bu funksiyanı istifadə etmək üçün Workspace Admin olmalısınız", + "first_event_type_webhook_description": "Bu tədbir növü üçün ilk webhook-u yaradın", + "create_instant_meeting_webhook_description": "Bu tədbir növü üçün 'Dərhal Görüş Yaradıldı' tetikleyicisi ilə ilk webhook-u yaradın", + "install_app_on": "Tətbiqi quraşdır", + "create_for": "Üçün yarat", + "currency": "Valyuta", + "organization_banner_description": "Komandalarınızın round-robin və kollektiv planlaşdırma ilə paylaşılan tətbiqlər, iş axınları və tədbir növləri yarada biləcəyi mühitlər yaradın.", + "organization_banner_title": "Çoxlu komandalarla təşkilatları idarə edin", + "set_up_your_organization": "Təşkilatınızı qurun", + "set_up_your_platform_organization": "Platformanızı qurun", + "organizations_description": "Təşkilatlar komandaların paylaşılan tədbir növləri, tətbiqlər, iş axınları və daha çoxunu yarada biləcəyi paylaşılan mühitlərdir.", + "platform_organization_description": "Cal.com Platforması, platforma API-ləri və atomları istifadə edərək planlaşdırmanı tətbiqinizə asanlıqla inteqrasiya etməyə imkan verir.", + "must_enter_organization_name": "Təşkilat adını daxil etməlisiniz", + "must_enter_organization_admin_email": "Təşkilatınızın e-poçt ünvanını daxil etməlisiniz", + "admin_email": "Təşkilatınızın e-poçt ünvanı", + "platform_admin_email": "Admin e-poçt ünvanınız", + "admin_username": "Administratorun istifadəçi adı", + "organization_name": "Təşkilat adı", + "platform_name": "Platforma adı", + "organization_url": "Təşkilat URL", + "organization_verify_header": "Təşkilatınızın e-poçtunu təsdiqləyin", + "organization_verify_email_body": "Təşkilatınızı qurmağa davam etmək üçün aşağıdakı kodu istifadə edərək e-poçt ünvanınızı təsdiqləyin.", + "additional_url_parameters": "Əlavə URL parametrləri", + "about_your_organization": "Təşkilatınız haqqında", + "about_your_organization_description": "Təşkilatlar, bir neçə komanda yaratmaq üçün paylaşılan mühitlərdir. Burada üzvlər, tədbir növləri, tətbiqlər, iş axınları və daha çoxunu paylaşa bilərsiniz.", + "create_your_teams": "Komandalarınızı yaradın", + "create_your_teams_description": "Komanda üzvlərinizi təşkilatınıza əlavə edərək birlikdə planlamağa başlayın", + "invite_organization_admins": "Təşkilat üzvlərini dəvət edin", + "invite_organization_admins_description": "Başqalarını təşkilatınıza qoşulmağa dəvət edin. Üzvləri daha sonra əlavə edə bilərsiniz.", + "set_a_password": "Şifrə təyin edin", + "set_a_password_description": "Bu, təşkilatınızın e-poçt ünvanı və bu şifrə ilə yeni istifadəçi hesabı yaradacaq.", + "organization_logo": "Təşkilat Loqosu", + "organization_about_description": "Təşkilatınız haqqında bir neçə cümlə. Bu, təşkilatınızın ictimai profil səhifəsində görünəcək.", + "ill_do_this_later": "Bunu sonra edəcəyəm", + "verify_your_email": "E-poçtunuzu təsdiqləyin", + "enter_digit_code": "{{email}} ünvanına göndərdiyimiz 6 rəqəmli kodu daxil edin", + "verify_email_organization": "Təşkilat yaratmaq üçün e-poçtunuzu təsdiqləyin", + "code_provided_invalid": "Təqdim edilən kod etibarlı deyil, yenidən cəhd edin", + "email_already_used": "Email artıq istifadə olunur", + "organization_admin_invited_heading": "{{orgName}} təşkilatına qoşulmağa dəvət edildiniz", + "organization_admin_invited_body": "{{orgName}} komandasında iştirak edin və görüşlərin təşkilinə deyil, görüşlərə diqqət yetirin!", + "duplicated_slugs_warning": "Aşağıdakı komandalar təkrarlanan slugs səbəbindən yaradılmadı: {{slugs}}", + "team_names_empty": "Komanda adları boş ola bilməz", + "team_names_repeated": "Komanda adları təkrarlana bilməz", + "user_belongs_organization": "İstifadəçi bir təşkilata aiddir", + "org_no_teams_yet": "Bu təşkilatda hələ komanda yoxdur", + "org_no_teams_yet_description": "Əgər siz administratorsunuzsa, burada göstərmək üçün komandalar yaratdığınızdan əmin olun.", + "set_up": "Quraşdır", + "my_profile": "Profilim", + "my_settings": "Ayarlarım", + "crm": "CRM", + "messaging": "Mesajlaşma", + "sender_id_info": "SMS göndərən kimi göstərilən ad və ya nömrə (bəzi ölkələrdə alfasayısal göndərən ID-lərinə icazə verilmir)", + "org_admins_can_create_new_teams": "Yalnız təşkilatınızın administratoru yeni komandalar yarada bilər", + "google_new_spam_policy": "Google-un yeni spam siyasəti bu rezervasiya ilə bağlı hər hansı bir email və təqvim bildirişlərini almağınıza mane ola bilər.", + "resolve": "Həll et", + "no_organization_slug": "Bu təşkilat üçün komandalar yaradılarkən səhv baş verdi. URL slug çatışmır.", + "copy_link_org": "Təşkilatın linkini kopyalayın", + "404_the_org": "Təşkilat", + "404_the_team": "Komanda", + "404_claim_entity_org": "Təşkilatınız üçün subdomain iddia edin", + "404_claim_entity_team": "Bu komandaya iddia edin və cədvəlləri kollektiv şəkildə idarə etməyə başlayın", + "insights_team_filter": "Komanda: {{teamName}}", + "insights_user_filter": "İstifadəçi: {{userName}}", + "insights_subtitle": "Tədbirləriniz üzrə rezervasiya məlumatlarını görün", + "location_options": "{{locationCount}} məkan seçimi", + "custom_plan": "Xüsusi Plan", + "email_embed": "Email Əlavəsi", + "add_times_to_your_email": "Mövcud vaxtları seçin və Email-ə əlavə edin", + "select_time": "Vaxtı Seçin", + "select_date": "Tarixi Seçin", + "connecting_you_to_someone": "Sizi kiməsə qoşuruq.", + "please_do_not_close_this_tab": "Zəhmət olmasa, bu nişanı bağlamayın", + "see_all_available_times": "Bütün mövcud vaxtları görün", + "org_team_names_example_1": "məs. Marketinq Komandası", + "org_team_names_example_2": "məs. Satış Komandası", + "org_team_names_example_3": "məs. Dizayn Komandası", + "org_team_names_example_4": "məs. Mühəndislik Komandası", + "org_team_names_example_5": "məs. Data Analitikası Komandası", + "org_max_team_warnings": "Daha sonra daha çox komanda əlavə edə biləcəksiniz.", + "what_is_this_meeting_about": "Bu görüş nə haqqındadır?", + "add_to_team": "Komandaya əlavə et", + "remove_users_from_org": "İstifadəçiləri təşkilatdan çıxarın", + "remove_users_from_org_confirm": "{{userCount}} istifadəçini bu təşkilatdan çıxarmaq istədiyinizə əminsinizmi?", + "user_has_no_schedules": "Bu istifadəçi hələ heç bir cədvəl qurmayıb", + "user_isnt_in_any_teams": "Bu istifadəçi heç bir komandada deyil", + "requires_booker_email_verification": "Rezervasiya edən şəxsin email təsdiqi tələb olunur", + "description_requires_booker_email_verification": "Tədbirləri planlaşdırmadan əvvəl sifarişçinin e-poçtunun təsdiqlənməsini təmin etmək üçün", + "requires_confirmation_mandatory": "Mətn mesajları yalnız tədbir növü təsdiq tələb etdikdə iştirakçılara göndərilə bilər.", + "organizations": "Təşkilatlar", + "upload_cal_video_logo": "Cal Video Loqosunu Yüklə", + "update_cal_video_logo": "Cal Video Loqosunu Yenilə", + "upload_banner": "Banner Yüklə", + "cal_video_logo_upload_instruction": "Loqonuzun Cal video-nun qaranlıq fonunda görünməsini təmin etmək üçün şəffaflığı qorumaq üçün PNG və ya SVG formatında açıq rəngli bir şəkil yükləyin.", + "org_admin_other_teams": "Digər komandalar", + "org_admin_other_teams_description": "Burada təşkilatınız daxilində olduğunuz komandaları görə bilərsiniz. Lazım gələrsə, özünüzü onlara əlavə edə bilərsiniz.", + "not_part_of_org": "Heç bir təşkilatın üzvü deyilsiniz", + "no_other_teams_found": "Başqa komanda tapılmadı", + "no_other_teams_found_description": "Bu təşkilatda başqa komanda yoxdur.", + "attendee_first_name_variable": "İştirakçının adı", + "attendee_last_name_variable": "İştirakçının soyadı", + "attendee_first_name_info": "Sifariş verənin adı", + "attendee_last_name_info": "Sifariş verənin soyadı", + "your_monthly_digest": "Aylıq Xülasəniz", + "member_name": "Üzvün Adı", + "most_popular_events": "Ən Populyar Tədbirlər", + "summary_of_events_for_your_team_for_the_last_30_days": "Son 30 gün ərzində komandanız üçün populyar tədbirlərin xülasəsi {{teamName}}", + "me": "Mən", + "monthly_digest_email": "Aylıq Xülasə E-poçtu", + "monthly_digest_email_for_teams": "Komandalar üçün aylıq xülasə e-poçtu", + "verify_team_tooltip": "İştirakçılara mesaj göndərməyi aktivləşdirmək üçün komandanızı təsdiqləyin", + "member_removed": "Üzv silindi", + "my_availability": "Mənim Mövcudluğum", + "team_availability": "Komanda Mövcudluğu", + "backup_code": "Ehtiyat Kodu", + "backup_codes": "Ehtiyat Kodları", + "backup_code_instructions": "Hər ehtiyat kodu yalnız bir dəfə istifadə edilə bilər və autentifikatorsuz giriş imkanı verir.", + "backup_codes_copied": "Ehtiyat kodları kopyalandı!", + "incorrect_backup_code": "Ehtiyat kodu səhvdir.", + "lost_access": "Giriş itirildi", + "missing_backup_codes": "Ehtiyat kodları tapılmadı. Zəhmət olmasa, onları parametrlərinizdə yaradın.", + "admin_org_notification_email_subject": "Yeni təşkilat yaradıldı: gözləyən əməliyyat", + "hi_admin": "Salam Administrator", + "admin_org_notification_email_title": "Bir təşkilat üçün DNS qurulması tələb olunur", + "admin_org_notification_email_body_part1": "Slug \"{{orgSlug}}\" olan bir təşkilat yaradıldı.

Zəhmət olmasa, yeni təşkilata uyğun subdomeni əsas tətbiqin işlədiyi yerə yönləndirmək üçün DNS reyestrini konfiqurasiya etdiyinizə əmin olun. Əks halda təşkilat işləməyəcək.

Tətbiqin təşkilat profil səhifəsini yükləməsi üçün subdomeni konfiqurasiya etmək üçün yalnız əsas seçimlər bunlardır.

Bunu A Qeydiyyatı ilə edə bilərsiniz:", + "admin_org_notification_email_body_part2": "Və ya CNAME qeydiyyatı ilə:", + "admin_org_notification_email_body_part3": "Subdomeni konfiqurasiya etdikdən sonra, zəhmət olmasa, Təşkilatlar Admin Parametrlərində DNS konfiqurasiyasını tamamlandığını qeyd edin.", + "admin_org_notification_email_cta": "Təşkilatlar Admin Parametrlərinə keçin", + "org_has_been_processed": "Təşkilat işlənib", + "org_error_processing": "Bu təşkilatın işlənməsində səhv baş verdi", + "orgs_page_description": "Bütün təşkilatların siyahısı. Təşkilatı qəbul etmək, həmin e-poçt domeninə malik bütün istifadəçilərin e-poçt təsdiqi olmadan qeydiyyatdan keçməsinə imkan verəcək.", + "unverified": "Təsdiqlənməmiş", + "verified": "Təsdiqlənmiş", + "dns_missing": "DNS yoxdur", + "dns_configured": "DNS konfiqurasiya edilib", + "mark_dns_configured": "DNS konfiqurasiya edilib kimi işarələyin", + "value": "Dəyər", + "your_organization_updated_sucessfully": "Təşkilatınız uğurla yeniləndi", + "team_no_event_types": "Bu komandada tədbir növləri yoxdur", + "seat_options_doesnt_multiple_durations": "Oturacaq seçimi bir neçə müddəti dəstəkləmir", + "include_calendar_event": "Təqvim tədbirini daxil edin", + "oAuth": "OAuth", + "recently_added": "Son zamanlar əlavə olunmuş", + "connect_all_calendars": "Bütün təqvimlərinizi qoşun", + "connect_all_calendars_description": "{{appName}} mövcud təqvimlərinizdən mövcudluğu oxuyur.", + "workflow_automation": "İş axını avtomatlaşdırılması", + "workflow_automation_description": "İş axınları ilə planlaşdırma təcrübənizi fərdiləşdirin", + "scheduling_for_your_team": "Komandanız üçün planlaşdırma", + "scheduling_for_your_team_description": "Kollektiv və round-robin planlaşdırma ilə komandanız üçün cədvəl qurun", + "no_members_found": "Üzvlər tapılmadı", + "directory_sync": "Kataloq Sinxronizasiyası", + "directory_name": "Kataloq Adı", + "directory_provider": "Kataloq Təchizatçısı", + "directory_scim_url": "SCIM Əsas URL", + "directory_scim_token": "SCIM Daşıyıcı Token", + "directory_scim_url_copied": "SCIM Əsas URL kopyalandı", + "directory_scim_token_copied": "SCIM Daşıyıcı Token kopyalandı", + "directory_sync_info_description": "Şəxsiyyət Təchizatçınız SCIM-i konfiqurasiya etmək üçün aşağıdakı məlumatları tələb edəcək. Quraşdırmanı tamamlamaq üçün təlimatları izləyin.", + "directory_sync_configure": "Kataloq Sinxronizasiyasını Konfiqurasiya edin", + "directory_sync_configure_description": "Komandanız üçün kataloqu konfiqurasiya etmək üçün şəxsiyyət təchizatçısını seçin.", + "directory_sync_title": "SCIM ilə başlamaq üçün şəxsiyyət təchizatçısını konfiqurasiya edin.", + "directory_sync_created": "Kataloq sinxronizasiya bağlantısı yaradıldı.", + "directory_sync_description": "İstifadəçiləri kataloq təminatçınızla təmin edin və ləğv edin.", + "directory_sync_deleted": "Kataloq sinxronizasiya bağlantısı silindi.", + "directory_sync_delete_connection": "Bağlantını Sil", + "directory_sync_delete_title": "Kataloq Sinxronizasiya Bağlantısını Sil", + "directory_sync_delete_description": "Bu kataloq sinxronizasiya bağlantısını silmək istədiyinizə əminsinizmi?", + "directory_sync_delete_confirmation": "Bu əməliyyat geri qaytarıla bilməz. Bu, kataloq sinxronizasiya bağlantısını daimi olaraq siləcək.", + "event_setup_length_error": "Tədbir Quraşdırılması: Müddət ən azı 1 dəqiqə olmalıdır.", + "availability_schedules": "Mövcudluq Cədvəlləri", + "unauthorized": "İcazəsiz", + "access_cal_account": "{{clientName}} sizin {{appName}} hesabınıza daxil olmaq istəyir", + "select_account_team": "Hesabı və ya komandayı seçin", + "allow_client_to": "Bu, {{clientName}}-ə imkan verəcək", + "associate_with_cal_account": "Sizi {{clientName}}-dən şəxsi məlumatlarınızla əlaqələndirin", + "see_personal_info": "Şəxsi məlumatlarınızı, o cümlədən ictimaiyyətə açıq etdiyiniz hər hansı şəxsi məlumatları görün", + "see_primary_email_address": "Əsas e-poçt ünvanınızı görün", + "connect_installed_apps": "Quraşdırılmış tətbiqlərinizə qoşulun", + "access_event_type": "Tədbir növlərinizi oxuyun, redaktə edin, silin", + "access_availability": "Mövcudluğunuzu oxuyun, redaktə edin, silin", + "access_bookings": "Rezervasiyalarınızı oxuyun, redaktə edin, silin", + "allow_client_to_do": "{{clientName}}-ə bunu etməyə icazə verirsiniz?", + "oauth_access_information": "İcazə düyməsini klikləməklə, bu tətbiqə məlumatlarınızı onların xidmət şərtlərinə və məxfilik siyasətinə uyğun olaraq istifadə etməyə icazə verirsiniz. {{appName}} Tətbiq Mağazasında girişi silə bilərsiniz.", + "oauth_form_title": "OAuth müştəri yaradılması forması", + "oauth_form_description": "Bu, yeni OAuth müştərisi yaratmaq üçün formadır", + "allow": "İcazə ver", + "view_only_edit_availability_not_onboarded": "Bu istifadəçi onboarding prosesini tamamlamayıb. Onların mövcudluğunu təyin edə bilməyəcəksiniz.", + "view_only_edit_availability": "Bu istifadəçinin mövcudluğunu görürsünüz. Yalnız öz mövcudluğunuzu redaktə edə bilərsiniz.", + "you_can_override_calendar_in_advanced_tab": "Hər bir tədbir növündə Ətraflı parametrlərdə bunu tədbirə görə dəyişə bilərsiniz.", + "edit_users_availability": "İstifadəçinin mövcudluğunu redaktə edin: {{username}}", + "resend_invitation": "Dəvəti yenidən göndərin", + "invitation_resent": "Dəvət yenidən göndərildi.", + "saml_sso": "SAML", + "add_client": "Müştəri əlavə edin", + "copy_client_secret_info": "Gizli məlumatı kopyaladıqdan sonra onu daha görə bilməyəcəksiniz", + "add_new_client": "Yeni müştəri əlavə edin", + "this_app_is_not_setup_already": "Bu tətbiq hələ qurulmayıb", + "as_csv": "CSV kimi", + "overlay_my_calendar": "Təqvimimi üst-üstə qoy", + "overlay_my_calendar_toc": "Təqviminizi qoşaraq, məxfilik siyasətimizi və istifadə şərtlərimizi qəbul edirsiniz. İstənilən vaxt girişi ləğv edə bilərsiniz.", + "view_overlay_calendar_events": "Təqvim hadisələrinizi görərək toqquşmaların qarşısını alın.", + "join_event_location": "{{eventLocationType}}-ə qoşulun", + "troubleshooting": "Problemlərin həlli", + "calendars_were_checking_for_conflicts": "Toqquşmalar üçün yoxladığımız təqvimlər", + "availabilty_schedules": "Mövcudluq cədvəlləri", + "manage_calendars": "Təqvimləri idarə edin", + "manage_availability_schedules": "Mövcudluq cədvəllərini idarə edin", + "locked": "Kilidlənmiş", + "unlocked": "Kilidsiz", + "lock_timezone_toggle_on_booking_page": "Rezervasiya səhifəsində saat qurşağını kilidləyin", + "description_lock_timezone_toggle_on_booking_page": "Rezervasiya səhifəsində saat qurşağını kilidləmək üçün, şəxsən iştirak edilən tədbirlər üçün faydalıdır.", + "event_setup_multiple_payment_apps_error": "Hər bir tədbir növü üçün yalnız bir ödəniş tətbiqi aktiv ola bilər.", + "number_in_international_format": "Nömrəni beynəlxalq formatda daxil edin.", + "install_calendar": "Təqvimi Quraşdır", + "branded_subdomain": "Brendli Subdomen", + "branded_subdomain_description": "Öz brendli subdomeninizi əldə edin, məsələn, acme.cal.com", + "org_insights": "Təşkilat Üzrə Göstəricilər", + "org_insights_description": "Bütün təşkilatınızın vaxtını necə keçirdiyini anlayın", + "extensive_whitelabeling": "Geniş Ağ Etiketləmə", + "extensive_whitelabeling_description": "Öz loqonuz, rəngləriniz və daha çoxu ilə planlaşdırma təcrübənizi fərdiləşdirin", + "unlimited_teams": "Limitsiz Komandalar", + "unlimited_teams_description": "Təşkilatınıza lazım olduğu qədər alt komanda əlavə edin", + "unified_billing": "Birləşdirilmiş Ödəniş", + "unified_billing_description": "Bütün komandanızın abunəliklərini ödəmək üçün bir kredit kartı əlavə edin", + "advanced_managed_events": "İrəli Səviyyəli İdarə Edilən Tədbir Növləri", + "advanced_managed_events_description": "Bütün komandanızın abunəliklərini ödəmək üçün bir kredit kartı əlavə edin", + "enterprise_description": "Təşkilatınızı yaratmaq üçün Enterprise-ə yüksəldin", + "create_your_org": "Təşkilatınızı Yaradın", + "create_your_org_description": "Təşkilatlara yüksəlin və subdomen, birləşdirilmiş ödəniş, Göstəricilər, geniş ağ etiketləmə və daha çoxunu əldə edin", + "create_your_enterprise_description": "Enterprise-ə yüksəlin və Active Directory Sync, SCIM Avtomatik İstifadəçi təminatı, Cal.ai Səs Agentləri, Admin API-ləri və daha çoxuna giriş əldə edin!", + "other_payment_app_enabled": "Hər tədbir növü üçün yalnız bir ödəniş tətbiqini aktivləşdirə bilərsiniz", + "admin_delete_organization_description": "
  • Bu təşkilatın üzvü olan komandalar da tədbir növləri ilə birlikdə silinəcək
  • Təşkilatın bir hissəsi olan istifadəçilər silinməyəcək, lakin onların istifadəçi adları təşkilatdan kənarda mövcud olmalarına imkan vermək üçün dəyişdiriləcək
  • İstifadəçi təşkilatda olduqdan sonra yaradılan tədbir növləri silinəcək
  • Köçürülmüş istifadəçi tədbir növləri silinməyəcək
", + "admin_delete_organization_title": "{{organizationName}} silinsin?", + "published": "Dərc Edildi", + "unpublished": "Dərc Edilmədi", + "publish": "Dərc Et", + "org_publish_error": "Təşkilat dərc edilə bilmədi", + "troubleshooter_tooltip": "Problemləri həll edən vasitəni açın və cədvəlinizdə nə səhv olduğunu öyrənin", + "need_help": "Köməyə ehtiyacınız var?", + "troubleshooter": "Problemləri həll edən vasitə", + "number_to_call": "Zəng etmək üçün nömrə", + "guest_name": "Qonağın adı", + "guest_email": "Qonağın e-poçtu", + "guest_company": "Qonağın şirkəti", + "please_install_a_calendar": "Zəhmət olmasa, təqvim quraşdırın", + "instant_tab_title": "Ani Rezervasiya", + "instant_event_tab_description": "İnsanların dərhal rezervasiya etməsinə icazə verin", + "uprade_to_create_instant_bookings": "Enterprise-a yüksəldin və qonaqların dərhal qoşula biləcəyi ani zənglərə qoşulmasına icazə verin. Bu yalnız komanda tədbir növləri üçündür", + "dont_want_to_wait": "Gözləmək istəmirsiniz?", + "meeting_started": "Görüş başladı", + "pay_and_book": "Ödə və rezervasiya et", + "cal_ai_event_tab_description": "AI Agentlərinin sizin üçün rezervasiya etməsinə icazə verin", + "booking_not_found_error": "Rezervasiya tapılmadı", + "booking_seats_full_error": "Rezervasiya yerləri doludur", + "missing_payment_credential_error": "Ödəniş məlumatları çatışmır", + "missing_payment_app_id_error": "Ödəniş tətbiqi ID-si çatışmır", + "not_enough_available_seats_error": "Rezervasiyada kifayət qədər boş yer yoxdur", + "user_redirect_title": "{{username}} qısa müddətə uzaqdadır.", + "user_redirect_description": "Bu arada, {{profile.username}} {{username}} adından bütün yeni planlaşdırılmış görüşlərə cavabdeh olacaq.", + "out_of_office": "Ofisdən kənarda", + "out_of_office_description": "Rezervasiya edənlərə ofisdən kənarda olduğunuzu bildirin.", + "send_request": "Sorğu göndər", + "start_date_and_end_date_required": "Başlama tarixi və bitmə tarixi tələb olunur", + "start_date_must_be_before_end_date": "Başlama tarixi bitmə tarixindən əvvəl olmalıdır", + "start_date_must_be_in_the_future": "Başlama tarixi gələcəkdə olmalıdır", + "user_not_found": "İstifadəçi tapılmadı", + "out_of_office_entry_already_exists": "Ofisdən kənar giriş artıq mövcuddur", + "out_of_office_id_required": "Ofisdən kənar giriş id tələb olunur", + "booking_redirect_infinite_not_allowed": "Həmin istifadəçidən sizə artıq bir yönləndirmə mövcuddur.", + "success_entry_created": "Yeni giriş uğurla yaradıldı", + "booking_redirect_email_subject": "Yönləndirmə bildirişi", + "booking_redirect_email_title": "Yönləndirmə Bildirişi", + "booking_redirect_email_description": "{{toName}} tərəfindən sizə yönləndirmə göndərildi, buna görə onların profil linkləri sizin linklərinizə yönləndiriləcək: ", + "success_accept_booking_redirect": "Yönləndirmə sorğusunu qəbul etdiniz.", + "success_reject_booking_redirect": "Yönləndirmə sorğusunu rədd etdiniz.", + "copy_link_booking_redirect_request": "Sorğunu paylaşmaq üçün linki kopyalayın", + "booking_redirect_request_title": "Yönləndirmə Sorğusu", + "select_team_member": "Komanda üzvünü seçin", + "going_away_title": "Gedirsiniz? Sadəcə profil linkinizi müəyyən bir müddət üçün əlçatmaz edin.", + "redirect_team_enabled": "OOO zamanı komanda üzvünə link verin", + "redirect_team_disabled": "OOO zamanı komanda üzvünə link verin (Komanda planı tələb olunur)", + "out_of_office_unavailable_list": "Ofisdən kənar əlçatmazlıq siyahısı", + "success_deleted_entry_out_of_office": "Giriş uğurla silindi", + "temporarily_out_of_office": "Müvəqqəti olaraq ofisdən kənardasınız?", + "add_a_redirect": "Yönləndirmə əlavə edin", + "create_entry": "Giriş yaradın", + "time_range": "Zaman aralığı", + "automatically_add_all_team_members": "Bütün komanda üzvlərini, gələcək üzvlər də daxil olmaqla, əlavə edin", + "redirect_to": "Yönləndirin", + "having_trouble_finding_time": "Vaxt tapmaqda çətinlik çəkirsiniz?", + "show_more": "Daha çox göstər", + "forward_params_redirect": "Parametrləri yönləndirin, məsələn, ?email=...&name=... və daha çox", + "assignment_description": "Hər kəsin mövcud olduğu vaxtda görüşləri planlaşdırın və ya komandanızın üzvləri arasında növbə ilə keçirin", + "lowest": "ən aşağı", + "low": "aşağı", + "medium": "orta", + "high": "yüksək", + "Highest": "ən yüksək", + "send_booker_to": "Booker-i göndərin", + "set_priority": "Prioriteti təyin edin", + "set_weight": "Çəkini təyin edin", + "enable_weights": "Çəkiləri aktiv edin", + "priority_for_user": "{{userName}} üçün prioritet", + "weights_description": "Çəkilər görüşlərin ev sahibləri arasında necə paylanacağını müəyyən edir. <1>Daha çox öyrənin", + "weight_for_user": "{{userName}} üçün çəki", + "change_priority": "prioriteti dəyişdirin", + "field_identifiers_as_variables": "Xüsusi tədbir yönləndirməniz üçün sahə identifikatorlarını dəyişənlər kimi istifadə edin", + "field_identifiers_as_variables_with_example": "Xüsusi tədbir yönləndirməniz üçün sahə identifikatorlarını dəyişənlər kimi istifadə edin (məsələn, {{variable}})", + "account_already_linked": "Hesab artıq əlaqələndirilib", + "send_email": "E-poçt göndərin", + "mark_as_no_show": "Gəlməyən kimi işarələyin", + "unmark_as_no_show": "Gəlməyən işarəsini çıxarın", + "account_unlinked_success": "Hesab uğurla əlaqədən çıxarıldı", + "account_unlinked_error": "Hesabı əlaqədən çıxarmaqda səhv baş verdi", + "travel_schedule": "Səyahət Cədvəli", + "travel_schedule_description": "Mövcud cədvəlinizi fərqli saat qurşağında saxlamaq və gecə yarısı rezervasiyadan qaçmaq üçün səyahətinizi əvvəlcədən planlaşdırın.", + "schedule_timezone_change": "Saat qurşağının dəyişdirilməsi cədvəli", + "date": "Tarix", + "overlaps_with_existing_schedule": "Bu, mövcud cədvəllə üst-üstə düşür. Zəhmət olmasa fərqli bir tarix seçin.", + "org_admin_no_slots|subject": "{{name}} üçün mövcudluq tapılmadı", + "org_admin_no_slots|heading": "{{name}} üçün mövcudluq tapılmadı", + "org_admin_no_slots|content": "Salam Təşkilat Administratorları,

Xahiş edirik nəzərə alın: {{username}} istifadəçisinin {{username}}/{{slug}} ziyarət edildikdə heç bir mövcudluğu olmadığı diqqətimizə çatdırılıb.

Bu bir neçə səbəbdən baş verə bilər:
İstifadəçinin heç bir təqvimi qoşulmayıb
Bu tədbirə bağlı cədvəlləri aktiv deyil

Mövcudluqlarını yoxlamağı tövsiyə edirik.", + "org_admin_no_slots|cta": "İstifadəçilərin mövcudluğunu açın", + "organization_no_slots_notification_switch_title": "Komandanızın mövcudluğu olmadıqda bildirişlər alın", + "organization_no_slots_notification_switch_description": "İstifadəçi komanda üzvünü rezervasiya etməyə çalışdıqda və 'Mövcudluq yoxdur' ilə qarşılaşdıqda administratorlar e-poçt bildirişləri alacaqlar. Bu e-poçtu iki hadisədən sonra tetikleyirik və hər istifadəçi üçün hər 7 gündə bir xatırladırıq.", + "email_team_invite|subject|added_to_org": "{{user}} sizi {{appName}} üzərində {{team}} təşkilatına əlavə etdi", + "email_team_invite|subject|invited_to_org": "{{user}} sizi {{appName}} üzərində {{team}} təşkilatına qoşulmağa dəvət etdi", + "email_team_invite|subject|added_to_subteam": "{{user}} sizi {{appName}} üzərində {{parentTeamName}} təşkilatının {{team}} komandasına əlavə etdi", + "email_team_invite|subject|invited_to_subteam": "{{user}} sizi {{appName}} üzərində {{parentTeamName}} təşkilatının {{team}} komandasına qoşulmağa dəvət etdi", + "email_team_invite|subject|invited_to_regular_team": "{{user}} sizi {{appName}} platformasında {{team}} komandasına dəvət etdi", + "email_team_invite|heading|added_to_org": "{{appName}} təşkilatına əlavə edildiniz", + "email_team_invite|heading|invited_to_org": "{{appName}} təşkilatına dəvət edildiniz", + "email_team_invite|heading|added_to_subteam": "{{parentTeamName}} təşkilatının komandasına əlavə edildiniz", + "email_team_invite|heading|invited_to_subteam": "{{parentTeamName}} təşkilatının komandasına dəvət edildiniz", + "email_team_invite|heading|invited_to_regular_team": "{{appName}} komandasına dəvət edildiniz", + "email_team_invite|content|added_to_org": "{{invitedBy}} sizi {{teamName}} təşkilatına əlavə etdi.", + "email_team_invite|content|invited_to_org": "{{invitedBy}} sizi {{teamName}} təşkilatına qoşulmağa dəvət etdi.", + "email_team_invite|content|added_to_subteam": "{{invitedBy}} sizi {{parentTeamName}} təşkilatının {{teamName}} komandasına əlavə etdi. {{appName}} sizə və komandanıza görüşləri e-poçt yazışmaları olmadan planlaşdırmağa imkan verən tədbir idarəetmə platformasıdır.", + "email_team_invite|content|invited_to_subteam": "{{invitedBy}} sizi {{parentTeamName}} təşkilatının {{teamName}} komandasına qoşulmağa dəvət etdi. {{appName}} sizə və komandanıza görüşləri e-poçt yazışmaları olmadan planlaşdırmağa imkan verən tədbir idarəetmə platformasıdır.", + "email_team_invite|content|invited_to_regular_team": "{{invitedBy}} sizi {{appName}} platformasında {{teamName}} komandasına qoşulmağa dəvət etdi. {{appName}} sizə və komandanıza görüşləri e-poçt yazışmaları olmadan planlaşdırmağa imkan verən tədbir idarəetmə platformasıdır.", + "email|existing_user_added_link_will_change": "Dəvəti qəbul etdikdən sonra, linkiniz təşkilat domeninizə dəyişəcək, lakin narahat olmayın, əvvəlki linklər hələ də işləyəcək və müvafiq olaraq yönləndiriləcək.

Qeyd: Bütün şəxsi tədbir növləriniz {{teamName}} təşkilatına köçürüləcək, bu da potensial şəxsi linki əhatə edə bilər.

Şəxsi tədbirlər üçün şəxsi e-poçt ünvanı ilə yeni hesab yaratmağı tövsiyə edirik.", + "email|existing_user_added_link_changed": "Linkiniz {prevLinkWithoutProtocol} ünvanından {newLinkWithoutProtocol} ünvanına dəyişdirilib, lakin narahat olmayın, bütün əvvəlki linklər hələ də işləyir və müvafiq olaraq yönləndirilir.

Zəhmət olmasa qeyd edin: Bütün şəxsi tədbir növləriniz {teamName} təşkilatına köçürülüb, bu da potensial şəxsi linki əhatə edə bilər.

Zəhmət olmasa daxil olun və yeni təşkilati hesabınızda heç bir şəxsi tədbirinizin olmadığından əmin olun.

Şəxsi tədbirlər üçün şəxsi e-poçt ünvanı ilə yeni hesab yaratmağı tövsiyə edirik.

Yeni təmiz linkinizdən zövq alın: {newLinkWithoutProtocol}", + "email_organization_created|subject": "Təşkilatınız yaradıldı", + "your_current_plan": "Cari planınız", + "organization_price_per_user_month": "Hər istifadəçi üçün ayda 37 dollar (minimum 30 yer)", + "privacy_organization_description": "Təşkilatınız üçün məxfilik parametrlərini idarə edin", + "privacy": "Məxfilik", + "team_will_be_under_org": "Yeni komandalar təşkilatınızın tərkibində olacaq", + "add_group_name": "Qrup adını əlavə edin", + "group_name": "Qrup adı", + "routers": "Routerlər", + "primary": "Əsas", + "make_primary": "Əsas et", + "add_email": "E-poçt əlavə edin", + "add_emails": "E-poçtlar əlavə edin", + "add_email_description": "Əsas e-poçtunuzu əvəz etmək və ya tədbir növlərinizdə alternativ e-poçt kimi istifadə etmək üçün e-poçt ünvanı əlavə edin.", + "confirm_email": "E-poçtunuzu təsdiqləyin", + "scheduler_first_name": "Rezervasiya edən şəxsin adı", + "scheduler_last_name": "Rezervasiya edən şəxsin soyadı", + "scheduler_name": "Rezervasiya edən şəxsin adı", + "organizer_first_name": "Sizin adınız", + "confirm_email_description": "Biz {{email}} ünvanına e-poçt göndərdik. Bu ünvanı təsdiqləmək üçün e-poçtdakı linkə klikləyin.", + "send_event_details_to": "Tədbir təfərrüatlarını göndərin", + "schedule_tz_without_end_date": "Son tarixsiz vaxt zonasını planlaşdırın", + "select_members": "Üzvləri seçin", + "lock_event_types_modal_header": "Üzvlərinizin mövcud tədbir növləri ilə nə etməliyik?", + "org_delete_event_types_org_admin": "Bütün üzvlərinizin fərdi tədbir növləri (idarə olunanlar istisna olmaqla) daimi olaraq silinəcək. Onlar yenilərini yarada bilməyəcəklər.", + "org_hide_event_types_org_admin": "Üzvlərinizin fərdi tədbir növləri (idarə olunanlar istisna olmaqla) profillərdən gizlədiləcək, lakin keçidlər aktiv qalacaq. Onlar yenilərini yarada bilməyəcəklər.", + "hide_org_eventtypes": "Fərdi tədbir növlərini gizlət", + "delete_org_eventtypes": "Fərdi tədbir növlərini sil", + "lock_org_users_eventtypes": "Fərdi tədbir növü yaratmağı kilidlə", + "lock_org_users_eventtypes_description": "Üzvlərin öz tədbir növlərini yaratmasının qarşısını al.", + "add_to_event_type": "Tədbir növünə əlavə et", + "create_account_password": "Hesab parolu yarat", + "error_creating_account_password": "Hesab parolu yaratmaq alınmadı", + "cannot_create_account_password_cal_provider": "cal hesabları üçün hesab parolu yaradıla bilmir", + "cannot_create_account_password_already_existing": "Artıq yaradılmışlar üçün hesab parolu yaradıla bilmir", + "create_account_password_hint": "Hesab parolunuz yoxdur, Təhlükəsizlik -> Parol bölməsinə keçərək birini yaradın. Hesab parolu yaradılana qədər bağlantını kəsə bilməzsiniz.", + "disconnect_account": "Bağlı hesabı ayır", + "disconnect_account_hint": "Bağlı hesabınızı ayırmaq giriş üsulunuzu dəyişəcək. Hesabınıza yalnız email + parol ilə daxil ola biləcəksiniz.", + "cookie_consent_checkbox": "Hesab yaradaraq, məxfilik siyasətimizə və kuki istifadəmizə razı olursunuz", + "make_a_call": "Zəng et", + "skip_rr_assignment_label": "Əlaqə Salesforce-da mövcuddursa, round robin təyinatını keç", + "skip_rr_description": "URL parametri olaraq əlaqənin emailini ehtiva etməlidir, məsələn, ?email=contactEmail", + "select_account_header": "Hesabı seçin", + "select_account_description": "{{appName}} şəxsi hesabınıza və ya komanda hesabınıza quraşdırın.", + "select_event_types_header": "Tədbir növlərini seçin", + "select_event_types_description": "Hansı tədbir növünə {{appName}} quraşdırmaq istəyirsiniz?", + "configure_app_header": "{{appName}}-i konfiqurasiya edin", + "configure_app_description": "Tətbiq quraşdırılmasını tamamlayın. Bu parametrləri sonra dəyişə bilərsiniz.", + "already_installed": "artıq quraşdırılıb", + "ooo_reasons_unspecified": "Müəyyən edilməyib", + "ooo_reasons_vacation": "Tətil", + "ooo_reasons_travel": "Səyahət", + "ooo_reasons_sick_leave": "Xəstəlik məzuniyyəti", + "ooo_reasons_public_holiday": "İctimai bayram", + "ooo_forwarding_to": "{{username}} istifadəçisinə yönləndirilir", + "ooo_not_forwarding": "Yönləndirmə yoxdur", + "ooo_empty_title": "OOO yaradın", + "ooo_empty_description": "Rezervasiya edənlərə rezervasiya üçün mövcud olmadığınız zamanları bildirin. Onlar sizin qayıdışınızdan sonra sizi rezervasiya edə bilərlər və ya onları komanda üzvünə yönləndirə bilərsiniz.", + "ooo_user_is_ooo": "{{displayName}} OOO-dadır", + "ooo_slots_returning": "<0>{{displayName}} uzaqda olarkən görüşlərini keçirə bilər.", + "ooo_slots_book_with": "{{displayName}} ilə rezervasiya edin", + "ooo_create_entry_modal": "Ofisdən kənar olun", + "ooo_select_reason": "Səbəbi seçin", + "create_an_out_of_office": "Ofisdən kənar olun", + "submit_feedback": "Rəy bildirin", + "host_no_show": "Sizin ev sahibiniz gəlmədi", + "no_show_description": "Onlarla başqa bir görüş təyin edə bilərsiniz", + "how_can_we_improve": "Xidmətimizi necə yaxşılaşdıra bilərik?", + "most_liked": "Ən çox nəyi bəyəndiniz?", + "review": "Rəy", + "reviewed": "Baxılıb", + "unreviewed": "Baxılmayıb", + "rating_url_info": "Reytinq Əlaqə Forması üçün URL", + "no_show_url_info": "Gəlməyənlər üçün Əlaqə URL-i", + "no_support_needed": "Dəstək Tələb Olunmur?", + "hide_support": "Dəstəyi Gizlət", + "event_ratings": "Orta Reytinqlər", + "event_no_show": "Ev Sahibi Gəlməyib", + "recent_ratings": "Son Reytinqlər", + "no_ratings": "Reytinq Yoxdur", + "no_ratings_description": "Görüşlərdən sonra reytinqləri toplamaq üçün 'Reytinq' iş axını əlavə edin", + "most_no_show_host": "Ən Çox Gəlməyən Üzvlər", + "highest_rated_members": "Ən Yüksək Reytinqli Üzvlər", + "lowest_rated_members": "Ən Aşağı Reytinqli Üzvlər", + "csat_score": "CSAT Balı", + "lockedSMS": "Bloklanmış SMS", + "leave_without_assigning_anyone": "Heç kəsi təyin etmədən çıxmaq?", + "leave_without_adding_attendees": "Bu tədbirdən iştirakçı əlavə etmədən çıxmaq istədiyinizə əminsiniz?", + "no_availability_shown_to_bookers": "Bu tədbir üçün heç kəsi təyin etməsəniz, sifarişçilərə heç bir mövcudluq göstərilməyəcək.", + "go_back_and_assign": "Geri qayıdın və Təyin edin", + "leave_without_assigning": "Təyin etmədən çıxın", + "signing_up_terms": "Davam etməklə, <0>Şərtlərimizə və <1>Məxfilik Siyasətimizə razı olduğunuzu qəbul edirsiniz.", + "always_show_x_days": "Həmişə {{x}} gün mövcuddur", + "unable_to_subscribe_to_the_platform": "Platforma planına abunə olmağa çalışarkən bir səhv baş verdi, zəhmət olmasa bir az sonra yenidən cəhd edin", + "updating_oauth_client_error": "OAuth müştərisini yeniləyərkən bir səhv baş verdi, zəhmət olmasa bir az sonra yenidən cəhd edin", + "creating_oauth_client_error": "OAuth müştərisi yaradılarkən bir səhv baş verdi, zəhmət olmasa bir az sonra yenidən cəhd edin", + "event_type_color": "Tədbir növünün rəngi", + "event_type_color_description": "Bu yalnız tətbiq daxilində tədbir növü və rezervasiya fərqləndirilməsi üçün istifadə olunur. Rezervasiya edənlərə göstərilmir.", + "mark_as_no_show_title": "Gəlməyən kimi işarələ", + "x_marked_as_no_show": "{{x}} gəlməyən kimi işarələndi", + "x_unmarked_as_no_show": "{{x}} gəlməyən kimi işarələnmədi", + "team_select_info": "bütün komanda tədbir növləri və bütün komanda üzvlərinin şəxsi tədbir növləri üçün tetikleyicilər", + "no_show_updated": "İştirakçılar üçün gəlməmə statusu yeniləndi", + "email_copied": "E-poçt kopyalandı", + "USER_PENDING_MEMBER_OF_THE_ORG": "İstifadəçi təşkilatın gözləyən üzvüdür", + "USER_ALREADY_INVITED_OR_MEMBER": "İstifadəçi artıq dəvət olunub və ya üzvdür", + "USER_MEMBER_OF_OTHER_ORGANIZATION": "İstifadəçi bu komandanın bir hissəsi olmayan bir təşkilatın üzvüdür.", + "booking_reassigned": "Rezervasiya yenidən təyin edildi", + "reassign": "Yenidən təyin et", + "reassign_to_another_rr_host": "Rezervasiyanı başqa mövcud round robin hostuna yenidən təyin et", + "assign_team_member": "Komanda üzvünü təyin et", + "override_team_member_to_assign": "Təyin etmək istədiyiniz komanda üzvünü dəyişdirin.", + "no_available_hosts": "Mövcud host yoxdur", + "reassign_round_robin_host": "Round robin hostunu yenidən təyin et", + "skip_writing_to_calendar": "ICS feed-ə yazma", + "rescheduling_not_possible": "Tədbir müddəti bitdiyi üçün yenidən planlaşdırma mümkün deyil", + "event_expired": "Bu tədbirin müddəti bitib", + "skip_contact_creation": "{{appName}}-də mövcud deyilsə, əlaqə yaratmağı atla", + "skip_writing_to_calendar_note": "Əgər ICS linkiniz yalnız oxumaq üçünsə (məsələn, Proton Calendar), səhvlərdən qaçmaq üçün yuxarıdakı qutunu işarələyin. Dəyişikliklər üçün təqviminizi əl ilə yeniləməlisiniz.", + "attributes": "Xüsusiyyətlər", + "new_attribute": "Yeni atribut", + "add_attributes": "Atributları əlavə et", + "add_attributes_description": "Komanda üzvlərinizə atributlar əlavə edin", + "new_option": "Yeni seçim", + "update_profile": "Üzvü yenilə", + "attribute_updated_successfully": "Atribut uğurla yeniləndi", + "attributes_edited_successfully": "Atributlar uğurla redaktə edildi", + "attribute_meta_description": "Komanda üzvləriniz üçün atributları idarə edin", + "attributes_edit_description": "Komanda üzvləriniz üçün atributları redaktə edin", + "back_to_attributes": "Atributlara geri dön", + "delete_attribute": "Bu seçimi silmək istədiyinizə əminsinizmi?", + "delete_attribute_description": "Bu seçim {{numberOfUsers}} üzvə təyin edilib. Onu silmək onların profilindən çıxaracaq.", + "disable_all_emails_to_attendees": "Bu tədbir növü ilə bağlı iştirakçılara göndərilən standart e-poçtları deaktiv edin", + "disable_all_emails_description": "Bu tədbir növü ilə bağlı standart e-poçt ünsiyyətini, o cümlədən rezervasiya təsdiqlərini, xatırlatmaları və ləğvləri deaktiv edir.", + "disable_all_emails_to_hosts": "Bu tədbir növü ilə bağlı ev sahiblərinə göndərilən standart e-poçtları deaktiv edin", + "type_confirm_to_continue": "Davam etmək üçün təsdiq yazın", + "disable_email": "E-poçtu deaktiv et", + "grant_admin_api": "Admin API Girişini Ver", + "revoke_admin_api": "Admin API Girişini Ləğv et", + "apple_connect_atom_label": "Apple Təqvimi Bağla", + "apple_connect_atom_already_connected_label": "Apple Təqvimi Bağlıdır", + "apple_connect_atom_loading_label": "Apple Təqvimi Yoxlanılır", + "google_connect_atom_label": "Google Təqvimi Bağla", + "google_connect_atom_already_connected_label": "Google Təqvimi Bağlıdır", + "google_connect_atom_loading_label": "Google Təqvimi Yoxlanılır", + "outlook_connect_atom_label": "Outlook Təqvimini Bağla", + "outlook_connect_atom_already_connected_label": "Bağlı Outlook Təqvimi", + "outlook_connect_atom_loading_label": "Outlook Təqvimi Yoxlanılır", + "booking_question_response_variables": "Rezervasiya sual cavab dəyişənləri", + "managed_by_teamAdmins": "{{teamAdmins}} tərəfindən idarə olunur", + "number_of_options": "{{count}} seçim", + "reschedule_with_same_round_robin_host_title": "Eyni Round-Robin ev sahibi ilə yenidən planlaşdır", + "reschedule_with_same_round_robin_host_description": "Yenidən planlaşdırılan tədbirlər əvvəlcə təyin olunan ev sahibinə təyin ediləcək", + "disable_input_if_prefilled": "URL identifikatoru əvvəlcədən doldurulubsa girişi deaktiv et", + "ADD_NEW_STRINGS_ABOVE_THIS_LINE_TO_PREVENT_MERGE_CONFLICTS": "↑↑↑↑↑↑↑↑↑↑↑↑↑ Yeni sətirləri bura əlavə edin ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑" +} diff --git a/i18n.json b/i18n.json index 91e7bed5721bb8..071d8c0a409b10 100644 --- a/i18n.json +++ b/i18n.json @@ -21,7 +21,9 @@ }, "buckets": { "json": { - "include": ["apps/web/public/static/locales/[locale]/common.json"] + "include": [ + "apps/web/public/static/locales/[locale]/common.json" + ] } } -} +} \ No newline at end of file From ad5d645347cb93f637b13d1defa323a335c1d939 Mon Sep 17 00:00:00 2001 From: Souptik Datta Date: Thu, 29 Aug 2024 22:58:35 +0530 Subject: [PATCH 27/64] feat: Implement editable OOO events feature (#15932) * feat: Implement edit ooo feature Signed-off-by: Souptik Datta * refactor: Refactor button text and gap between buttons Signed-off-by: Souptik Datta * fix: Fix entry create and edit edge cases Signed-off-by: Souptik Datta * chore: Change "edit ooo event" modal title Signed-off-by: Souptik Datta * chore: Add tooltips to entry eidt and delete buttons Signed-off-by: Souptik Datta * feat: Reset form on form close event Signed-off-by: Souptik Datta * refactor: Refactor reset-form function Signed-off-by: Souptik Datta * chore: Rename create or edit OOO as suggested Signed-off-by: Souptik Datta * refactor: Refactor component and function names Signed-off-by: Souptik Datta * feat: Improve ooo events email notifications Signed-off-by: Souptik Datta * fix: Fix email templates Signed-off-by: Souptik Datta * feat: Add e2e test for ooo event edit functionality Signed-off-by: Souptik Datta * refactor: Create separate test for edit ooo event Signed-off-by: Souptik Datta * fix: Remove extra user from redirect user configuration test Signed-off-by: Souptik Datta * chore: code refactor * remove log * chore: Update ooo-input-schema uuid data type Signed-off-by: Souptik Datta * fix: Address feedbacks Signed-off-by: Souptik Datta * chore: code splitting and refactor --------- Signed-off-by: Souptik Datta Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> --- .../my-account/out-of-office/index.tsx | 372 ++---------------- apps/web/playwright/out-of-office.e2e.ts | 95 ++++- apps/web/public/static/locales/en/common.json | 10 +- .../BookingRedirectEmailNotification.tsx | 32 +- .../booking-redirect-notification.ts | 11 +- .../settings/CreateOrEditOutOfOfficeModal.tsx | 243 ++++++++++++ .../settings/OutOfOfficeEntriesList.tsx | 173 ++++++++ .../server/routers/loggedInViewer/_router.tsx | 26 +- .../loggedInViewer/outOfOffice.handler.ts | 131 +++++- .../loggedInViewer/outOfOffice.schema.ts | 1 + 10 files changed, 714 insertions(+), 380 deletions(-) create mode 100644 packages/features/settings/CreateOrEditOutOfOfficeModal.tsx create mode 100644 packages/features/settings/OutOfOfficeEntriesList.tsx diff --git a/apps/web/pages/settings/my-account/out-of-office/index.tsx b/apps/web/pages/settings/my-account/out-of-office/index.tsx index dc8537fc5041ed..b69c3daff8a3c5 100644 --- a/apps/web/pages/settings/my-account/out-of-office/index.tsx +++ b/apps/web/pages/settings/my-account/out-of-office/index.tsx @@ -1,35 +1,12 @@ -import { Trans } from "next-i18next"; import { useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; -import { Controller, useForm, useFormState } from "react-hook-form"; -import dayjs from "@calcom/dayjs"; +import { CreateOrEditOutOfOfficeEntryModal } from "@calcom/features/settings/CreateOrEditOutOfOfficeModal"; +import { OutOfOfficeEntriesList } from "@calcom/features/settings/OutOfOfficeEntriesList"; import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout"; -import { useHasTeamPlan } from "@calcom/lib/hooks/useHasPaidPlan"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; -import { - Button, - DateRangePicker, - Dialog, - DialogContent, - DialogFooter, - DialogHeader, - EmptyScreen, - Icon, - Meta, - Select, - showToast, - SkeletonText, - Switch, - TableBody, - TableCell, - TableNew, - TableRow, - TextArea, - UpgradeTeamsBadge, -} from "@calcom/ui"; +import { Button, Icon, Meta, SkeletonText } from "@calcom/ui"; import PageWrapper from "@components/PageWrapper"; @@ -39,328 +16,7 @@ export type BookingRedirectForm = { toTeamUserId: number | null; reasonId: number; notes?: string; -}; - -const CreateOutOfOfficeEntryModal = ({ - openModal, - closeModal, -}: { - openModal: boolean; - closeModal: () => void; -}) => { - const { t } = useLocale(); - const utils = trpc.useUtils(); - - const [selectedReason, setSelectedReason] = useState<{ label: string; value: number } | null>(null); - const [profileRedirect, setProfileRedirect] = useState(false); - const [selectedMember, setSelectedMember] = useState<{ label: string; value: number | null } | null>(null); - - const [dateRange] = useState<{ startDate: Date; endDate: Date }>({ - startDate: dayjs().utc().startOf("d").toDate(), - endDate: dayjs().utc().add(1, "d").endOf("d").toDate(), - }); - - const { hasTeamPlan } = useHasTeamPlan(); - const { data: listMembers } = trpc.viewer.teams.listMembers.useQuery({}); - const me = useMeQuery(); - const memberListOptions: { - value: number | null; - label: string; - }[] = - listMembers - ?.filter((member) => me?.data?.id !== member.id) - .map((member) => ({ - value: member.id || null, - label: member.name || "", - })) || []; - - const { handleSubmit, setValue, control, register } = useForm({ - defaultValues: { - dateRange: { - startDate: dateRange.startDate, - endDate: dateRange.endDate, - }, - offset: dayjs().utcOffset(), - toTeamUserId: null, - reasonId: 1, - }, - }); - - const createOutOfOfficeEntry = trpc.viewer.outOfOfficeCreate.useMutation({ - onSuccess: () => { - showToast(t("success_entry_created"), "success"); - utils.viewer.outOfOfficeEntriesList.invalidate(); - setProfileRedirect(false); - closeModal(); - }, - onError: (error) => { - showToast(t(error.message), "error"); - }, - }); - - const { data: outOfOfficeReasonList } = trpc.viewer.outOfOfficeReasonList.useQuery(); - - const reasonList = [ - ...(outOfOfficeReasonList || []).map((reason) => ({ - label: `${reason.emoji} ${reason.userId === null ? t(reason.reason) : reason.reason}`, - value: reason.id, - })), - ]; - - return ( - - { - event.preventDefault(); - }}> - { - createOutOfOfficeEntry.mutate(data); - setValue("toTeamUserId", null); - setValue("notes", ""); - setSelectedReason(null); - setSelectedMember(null); - })}> -
- -
-

{t("dates")}

-
- ( - { - onChange(values); - }} - /> - )} - /> -
-
- - {/* Reason Select */} -
-
-

{t("reason")}

-