Merge branch 'main' into feat/organizations

This commit is contained in:
Leo Giovanetti 2023-06-06 13:10:52 -03:00
commit 27b643ac67
204 changed files with 1920 additions and 3899 deletions

View File

@ -106,12 +106,6 @@ LARK_OPEN_APP_ID=""
LARK_OPEN_APP_SECRET=""
LARK_OPEN_VERIFICATION_TOKEN=""
# - WEB3
# Used for the Web3 plugin
# @see https://github.com/calcom/cal.com/blob/main/packages/app-store/rainbow/README.md
ALCHEMY_API_KEY=""
INFURA_API_KEY=""
# - SALESFORCE
# Used for the Salesforce (Sales Cloud) app
SALESFORCE_CONSUMER_KEY=""

View File

@ -30,7 +30,7 @@ export const SnippedGenerator = {
// extend some internals to gain information about current path, method and spec in the generator function metioned later
spec: {
wrapSelectors: {
requestFor: (ori, system) => (state, path, method) => {
requestFor: (ori) => (state, path, method) => {
return ori(path, method)
?.set("spec", state.get("json", {}))
?.setIn(["oasPathMethod", "path"], path)

View File

@ -60,6 +60,7 @@ export default function AppListCard(props: AppListCardProps) {
timeoutRef.current = null;
}
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (

View File

@ -1,51 +0,0 @@
import dynamic from "next/dynamic";
import type { Dispatch } from "react";
import { useState, useEffect } from "react";
import type { JSONObject } from "superjson/dist/types";
export type Gate = undefined | "rainbow"; // Add more like ` | "geolocation" | "payment"`
export type GateState = {
rainbowToken?: string;
};
type GateProps = {
children: React.ReactNode;
gates: Gate[];
appData: JSONObject;
dispatch: Dispatch<Partial<GateState>>;
};
const RainbowGate = dynamic(() => import("@calcom/app-store/rainbow/components/RainbowKit"));
// To add a new Gate just add the gate logic to the switch statement
const Gates: React.FC<GateProps> = ({ children, gates, appData, dispatch }) => {
const [rainbowToken, setRainbowToken] = useState<string>();
useEffect(() => {
dispatch({ rainbowToken });
}, [rainbowToken, dispatch]);
let gateWrappers = <>{children}</>;
// Recursively wraps the `gateWrappers` with new gates allowing for multiple gates
for (const gate of gates) {
switch (gate) {
case "rainbow":
if (appData.blockchainId && appData.smartContractAddress && !rainbowToken) {
gateWrappers = (
<RainbowGate
setToken={setRainbowToken}
chainId={appData.blockchainId as number}
tokenAddress={appData.smartContractAddress as string}>
{gateWrappers}
</RainbowGate>
);
}
}
}
return gateWrappers;
};
export default Gates;

View File

@ -15,7 +15,7 @@ import { seoConfig } from "@lib/config/next-seo.config";
import I18nLanguageHandler from "@components/I18nLanguageHandler";
export interface CalPageWrapper {
(props?: any): JSX.Element;
(props?: AppProps): JSX.Element;
PageWrapper?: AppProps["Component"]["PageWrapper"];
}

View File

@ -1,3 +1,5 @@
import type { FunctionComponent, SVGProps } from "react";
import { InstallAppButton } from "@calcom/app-store/components";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
@ -55,7 +57,7 @@ const AdditionalCalendarSelector = ({ isLoading }: AdditionalCalendarSelectorPro
<InstallAppButton
type={data.type}
render={(installProps) => {
const props = { ...installProps } as any;
const props = { ...installProps } as FunctionComponent<SVGProps<SVGSVGElement>>;
return (
<DropdownItem {...props} color="minimal" type="button">
<span className="flex items-center gap-x-2">

View File

@ -2,60 +2,12 @@ import type { ComponentProps } from "react";
import React from "react";
import AppCategoryNavigation from "@calcom/app-store/_components/AppCategoryNavigation";
import type { InstalledAppVariants } from "@calcom/app-store/utils";
import Shell from "@calcom/features/shell/Shell";
import { trpc } from "@calcom/trpc/react";
import type { HorizontalTabItemProps, VerticalTabItemProps } from "@calcom/ui";
import { BarChart, Calendar, CreditCard, Grid, Share2, Video } from "@calcom/ui/components/icon";
const tabs: (VerticalTabItemProps | HorizontalTabItemProps)[] = [
{
name: "calendar",
href: "/apps/installed/calendar",
icon: Calendar,
},
{
name: "conferencing",
href: "/apps/installed/conferencing",
icon: Video,
},
{
name: "payment",
href: "/apps/installed/payment",
icon: CreditCard,
},
{
name: "automation",
href: "/apps/installed/automation",
icon: Share2,
},
{
name: "analytics",
href: "/apps/installed/analytics",
icon: BarChart,
},
{
name: "other",
href: "/apps/installed/other",
icon: Grid,
},
];
export default function InstalledAppsLayout({
children,
...rest
}: { children: React.ReactNode } & ComponentProps<typeof Shell>) {
const variant: (typeof InstalledAppVariants)[number] = "payment";
const query = trpc.viewer.integrations.useQuery({
variant,
onlyInstalled: true,
});
let actualTabs = tabs;
if (query.data?.items.length === 0) {
actualTabs = tabs.filter((tab) => tab.name !== variant);
}
return (
<Shell {...rest} hideHeadingOnMobile>
<AppCategoryNavigation baseURL="/apps/installed" containerClassname="min-w-0 w-full">

View File

@ -28,7 +28,6 @@ type AvailableTimesProps = {
bookingAttendees?: number | null;
slots?: Slot[];
isLoading: boolean;
ethSignature?: string;
duration: number;
};
@ -43,7 +42,6 @@ const AvailableTimes: FC<AvailableTimesProps> = ({
onTimeFormatChange,
seatsPerTimeSlot,
bookingAttendees,
ethSignature,
duration,
}) => {
const reserveSlotMutation = trpc.viewer.public.slots.reserveSlot.useMutation();
@ -119,7 +117,6 @@ const AvailableTimes: FC<AvailableTimesProps> = ({
timeFormat,
/** Treat as recurring only when a count exist and it's not a rescheduling workflow */
count: recurringCount && !rescheduleUid ? recurringCount : undefined,
...(ethSignature ? { ethSignature } : {}),
},
};

View File

@ -80,7 +80,6 @@ export const SlotPicker = ({
seatsPerTimeSlot,
bookingAttendees,
weekStart = 0,
ethSignature,
}: {
eventType: Pick<
EventType & { metadata: z.infer<typeof EventTypeMetaDataSchema> },
@ -94,7 +93,6 @@ export const SlotPicker = ({
recurringEventCount?: number;
users: string[];
weekStart?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
ethSignature?: string;
}) => {
const [selectedDate, setSelectedDate] = useState<Dayjs>();
const [browsingDate, setBrowsingDate] = useState<Dayjs>();
@ -193,7 +191,6 @@ export const SlotPicker = ({
seatsPerTimeSlot={seatsPerTimeSlot}
bookingAttendees={bookingAttendees}
recurringCount={recurringEventCount}
ethSignature={ethSignature}
duration={parseInt(duration)}
/>
</>

View File

@ -1,10 +1,9 @@
import dynamic from "next/dynamic";
import { useRouter } from "next/router";
import { useEffect, useMemo, useReducer, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { z } from "zod";
import BookingPageTagManager from "@calcom/app-store/BookingPageTagManager";
import { getEventTypeAppData } from "@calcom/app-store/utils";
import dayjs from "@calcom/dayjs";
import {
useEmbedNonStylesConfig,
@ -27,8 +26,6 @@ import { CreditCard, User, RefreshCcw } from "@calcom/ui/components/icon";
import { timeZone as localStorageTimeZone } from "@lib/clock";
import type { Gate, GateState } from "@components/Gates";
import Gates from "@components/Gates";
import BookingDescription from "@components/booking/BookingDescription";
import { SlotPicker } from "@components/booking/SlotPicker";
@ -89,14 +86,6 @@ const AvailabilityPage = ({ profile, eventType, ...restProps }: Props) => {
setIs24hClockInLocalStorage(is24Hours);
};
const [gateState, gateDispatcher] = useReducer(
(state: GateState, newState: Partial<GateState>) => ({
...state,
...newState,
}),
{}
);
useEffect(() => {
setTimeZone(localStorageTimeZone() || dayjs.tz.guess());
}, []);
@ -124,20 +113,11 @@ const AvailabilityPage = ({ profile, eventType, ...restProps }: Props) => {
);
const paymentAppData = getPaymentAppData(eventType);
const rainbowAppData = getEventTypeAppData(eventType, "rainbow") || {};
const rawSlug = profile.slug ? profile.slug.split("/") : [];
if (rawSlug.length > 1) rawSlug.pop(); //team events have team name as slug, but user events have [user]/[type] as slug.
const showEventTypeDetails = (isEmbed && !embedUiConfig.hideEventTypeDetails) || !isEmbed;
// Define conditional gates here
const gates = [
// Rainbow gate is only added if the event has both a `blockchainId` and a `smartContractAddress`
rainbowAppData && rainbowAppData.blockchainId && rainbowAppData.smartContractAddress
? ("rainbow" as Gate)
: undefined,
];
const { data: bookingAttendees } = trpc.viewer.bookings.getBookingAttendees.useQuery(
{
seatReferenceUid: rescheduleUid,
@ -148,7 +128,7 @@ const AvailabilityPage = ({ profile, eventType, ...restProps }: Props) => {
);
return (
<Gates gates={gates} appData={rainbowAppData} dispatch={gateDispatcher}>
<>
<HeadSeo
title={`${rescheduleUid ? t("reschedule") : ""} ${eventType.title} | ${profile.name}`}
description={`${rescheduleUid ? t("reschedule") : ""} ${eventType.title}`}
@ -296,7 +276,6 @@ const AvailabilityPage = ({ profile, eventType, ...restProps }: Props) => {
seatsPerTimeSlot={eventType.seatsPerTimeSlot || undefined}
bookingAttendees={bookingAttendees || undefined}
recurringEventCount={recurringEventCount}
ethSignature={gateState.rainbowToken}
/>
</div>
</div>
@ -306,7 +285,7 @@ const AvailabilityPage = ({ profile, eventType, ...restProps }: Props) => {
</main>
</div>
<Toaster position="bottom-right" />
</Gates>
</>
);
};

View File

@ -4,7 +4,7 @@ import { useSession } from "next-auth/react";
import dynamic from "next/dynamic";
import Head from "next/head";
import { useRouter } from "next/router";
import { useEffect, useMemo, useReducer, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { useForm, useFormContext } from "react-hook-form";
import { v4 as uuidv4 } from "uuid";
import { z } from "zod";
@ -12,7 +12,6 @@ import { z } from "zod";
import BookingPageTagManager from "@calcom/app-store/BookingPageTagManager";
import type { EventLocationType } from "@calcom/app-store/locations";
import { createPaymentLink } from "@calcom/app-store/stripepayment/lib/client";
import { getEventTypeAppData } from "@calcom/app-store/utils";
import type { LocationObject } from "@calcom/core/location";
import dayjs from "@calcom/dayjs";
import {
@ -51,8 +50,6 @@ import { AlertTriangle, Calendar, RefreshCw, User } from "@calcom/ui/components/
import { timeZone } from "@lib/clock";
import useRouterQuery from "@lib/hooks/useRouterQuery";
import type { Gate, GateState } from "@components/Gates";
import Gates from "@components/Gates";
import BookingDescription from "@components/booking/BookingDescription";
import type { BookPageProps } from "../../../pages/[user]/book";
@ -224,13 +221,6 @@ const BookingPage = ({
const { data: session } = useSession();
const isBackgroundTransparent = useIsBackgroundTransparent();
const telemetry = useTelemetry();
const [gateState, gateDispatcher] = useReducer(
(state: GateState, newState: Partial<GateState>) => ({
...state,
...newState,
}),
{}
);
const { timezone } = useTimePreferences();
@ -488,7 +478,6 @@ const BookingPage = ({
metadata,
hasHashedBookingLink,
hashedLink,
ethSignature: gateState.rainbowToken,
}));
recurringMutation.mutate(recurringBookings);
} else {
@ -506,25 +495,15 @@ const BookingPage = ({
metadata,
hasHashedBookingLink,
hashedLink,
ethSignature: gateState.rainbowToken,
seatReferenceUid: router.query.seatReferenceUid as string,
});
}
};
const showEventTypeDetails = (isEmbed && !embedUiConfig.hideEventTypeDetails) || !isEmbed;
const rainbowAppData = getEventTypeAppData(eventType, "rainbow") || {};
// Define conditional gates here
const gates = [
// Rainbow gate is only added if the event has both a `blockchainId` and a `smartContractAddress`
rainbowAppData && rainbowAppData.blockchainId && rainbowAppData.smartContractAddress
? ("rainbow" as Gate)
: undefined,
];
return (
<Gates gates={gates} appData={rainbowAppData} dispatch={gateDispatcher}>
<>
<Head>
<title>
{rescheduleUid
@ -686,7 +665,7 @@ const BookingPage = ({
</div>
</main>
<Toaster position="bottom-right" />
</Gates>
</>
);
};

View File

@ -16,6 +16,7 @@ import {
allowDisablingHostConfirmationEmails,
} from "@calcom/features/ee/workflows/lib/allowDisablingStandardEmails";
import { FormBuilder } from "@calcom/features/form-builder/FormBuilder";
import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector";
import { classNames } from "@calcom/lib";
import { APP_NAME, CAL_URL } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
@ -65,7 +66,7 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
const [requiresConfirmation, setRequiresConfirmation] = useState(eventType.requiresConfirmation);
const placeholderHashedLink = `${CAL_URL}/d/${hashedUrl}/${eventType.slug}`;
const seatsEnabled = formMethods.watch("seatsPerTimeSlotEnabled");
const noShowFeeEnabled = eventType.metadata.apps?.stripe?.paymentOption === "HOLD";
const noShowFeeEnabled = eventType.metadata?.apps?.stripe?.paymentOption === "HOLD";
useEffect(() => {
!hashedUrl && setHashedUrl(generateHashedLink(eventType.users[0]?.id ?? team?.id));
@ -159,6 +160,10 @@ export const EventAdvancedTab = ({ eventType, team }: Pick<EventTypeSetupProps,
}
/>
</div>
<hr className="border-subtle [&:has(+div:empty)]:hidden" />
<div>
<BookerLayoutSelector fallbackToUserSettings />
</div>
<hr className="border-subtle" />
<FormBuilder
title={t("booking_questions_title")}

View File

@ -104,9 +104,9 @@ export const EventAppsTab = ({ eventType }: { eventType: EventType }) => {
</div>
</div>
{!shouldLockDisableProps("apps").disabled && (
<div>
<div className="bg-muted rounded-md p-8">
{!isLoading && notInstalledApps?.length ? (
<h2 className="text-emphasis my-2 text-lg font-semibold">{t("available_apps")}</h2>
<h2 className="text-emphasis text-lg font-semibold">{t("available_apps")}</h2>
) : null}
<div className="before:border-0">
{notInstalledApps?.map((app) => (

View File

@ -115,7 +115,7 @@ export const EventSetupTab = (
const [showLocationModal, setShowLocationModal] = useState(false);
const [editingLocationType, setEditingLocationType] = useState<string>("");
const [selectedLocation, setSelectedLocation] = useState<LocationOption | undefined>(undefined);
const [multipleDuration, setMultipleDuration] = useState(eventType.metadata.multipleDuration);
const [multipleDuration, setMultipleDuration] = useState(eventType.metadata?.multipleDuration);
const locationOptions = props.locationOptions.filter((option) => {
return !team ? option.label !== "Conferencing" : true;

View File

@ -75,8 +75,7 @@ function getNavigation(props: {
installedAppsNumber: number;
availability: AvailabilityOption | undefined;
}) {
const { eventType, t, enabledAppsNumber, installedAppsNumber, enabledWorkflowsNumber, availability } =
props;
const { eventType, t, enabledAppsNumber, installedAppsNumber, enabledWorkflowsNumber } = props;
const duration =
eventType.metadata?.multipleDuration?.map((duration) => ` ${duration}`) || eventType.length;
@ -178,6 +177,7 @@ function EventTypeSingleLayout({
enabledWorkflowsNumber,
availability,
});
navigation.splice(1, 0, {
name: "availability",
href: `/event-types/${eventType.id}?tabName=availability`,
@ -185,7 +185,7 @@ function EventTypeSingleLayout({
info:
isManagedEventType || isChildrenManagedEventType
? eventType.schedule === null
? "Member's default schedule"
? "member_default_schedule"
: isChildrenManagedEventType
? `${
eventType.scheduleName
@ -193,7 +193,7 @@ function EventTypeSingleLayout({
: `default_schedule_name`
}`
: eventType.scheduleName ?? `default_schedule_name`
: `default_schedule_name`,
: eventType.scheduleName ?? `default_schedule_name`,
});
// If there is a team put this navigation item within the tabs
if (team) {
@ -220,7 +220,18 @@ function EventTypeSingleLayout({
});
}
return navigation;
}, [t, eventType, installedAppsNumber, enabledAppsNumber, enabledWorkflowsNumber, team, availability]);
}, [
t,
eventType,
enabledAppsNumber,
installedAppsNumber,
enabledWorkflowsNumber,
availability,
isManagedEventType,
isChildrenManagedEventType,
team,
formMethods,
]);
const permalink = `${CAL_URL}/${team ? `team/${team.slug}` : eventType.users[0].username}/${
eventType.slug
@ -236,7 +247,7 @@ function EventTypeSingleLayout({
heading={eventType.title}
CTA={
<div className="flex items-center justify-end">
{!eventType.metadata.managedEventConfig && (
{!eventType.metadata?.managedEventConfig && (
<>
<div
className={classNames(
@ -379,7 +390,7 @@ function EventTypeSingleLayout({
<Button
className="ml-4 lg:ml-0"
type="submit"
loading={formMethods.formState.isSubmitting || isUpdateMutationLoading}
loading={isUpdateMutationLoading}
data-testid="update-eventtype"
form="event-type-form">
{t("save")}

View File

@ -39,6 +39,7 @@ export default function RequiresConfirmationController({
if (!requiresConfirmation) {
formMethods.setValue("metadata.requiresConfirmationThreshold", undefined);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [requiresConfirmation]);
const { shouldLockDisableProps } = useLockedFieldsManager(

View File

@ -24,7 +24,7 @@ interface IUserProfileProps {
const UserProfile = (props: IUserProfileProps) => {
const { user } = props;
const { t } = useLocale();
const avatarRef = useRef<HTMLInputElement>(null!);
const avatarRef = useRef<HTMLInputElement>(null);
const { setValue, handleSubmit, getValues } = useForm<FormData>({
defaultValues: { bio: user?.bio || "" },
});
@ -76,7 +76,7 @@ const UserProfile = (props: IUserProfileProps) => {
async function updateProfileHandler(event: FormEvent<HTMLFormElement>) {
event.preventDefault();
const enteredAvatar = avatarRef.current.value;
const enteredAvatar = avatarRef.current?.value;
mutation.mutate({
avatar: enteredAvatar,
});
@ -127,14 +127,16 @@ const UserProfile = (props: IUserProfileProps) => {
id="avatar-upload"
buttonMsg={t("add_profile_photo")}
handleAvatarChange={(newAvatar) => {
avatarRef.current.value = newAvatar;
if (avatarRef.current) {
avatarRef.current.value = newAvatar;
}
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(
window.HTMLInputElement.prototype,
"value"
)?.set;
nativeInputValueSetter?.call(avatarRef.current, newAvatar);
const ev2 = new Event("input", { bubbles: true });
avatarRef.current.dispatchEvent(ev2);
avatarRef.current?.dispatchEvent(ev2);
updateProfileHandler(ev2 as unknown as FormEvent<HTMLFormElement>);
setImageSrc(newAvatar);
}}

View File

@ -66,6 +66,7 @@ export function QueryCell<TData, TError extends ErrorLike>(
if ("empty" in opts && (query.data == null || (Array.isArray(query.data) && query.data.length === 0))) {
return opts.empty(query);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return opts.success(query as any);
}
@ -88,9 +89,10 @@ const withQuery = <
TInput = inferProcedureInput<TQuery>,
TOutput = inferProcedureOutput<TQuery>
>(
queryProcedure: DecorateProcedure<TQuery, any, any>,
queryProcedure: DecorateProcedure<TQuery, inferProcedureInput<TQuery>, inferProcedureOutput<TQuery>>,
input?: TInput,
params?: UseTRPCQueryOptions<any, TInput, TOutput, TOutput, TError>
params?: UseTRPCQueryOptions<TQuery, TInput, TOutput, TOutput, TError>
) => {
return function WithQuery(
opts: Omit<

View File

@ -1,6 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
type GetSSRResult<TProps> =
//
{ props: TProps } | { redirect: any } | { notFound: boolean };
{ props: TProps } | { redirect: { destination: string; permanent: boolean } } | { notFound: boolean };
type GetSSRFn<TProps> = (...args: any[]) => Promise<GetSSRResult<TProps>>;

View File

@ -1,4 +0,0 @@
import ethRouter from "@calcom/app-store/rainbow/trpc/router";
import { createNextApiHandler } from "@calcom/trpc/server/createNextApiHandler";
export default createNextApiHandler(ethRouter);

View File

@ -19,6 +19,7 @@ export default function Page() {
callbackUrl: "/",
code,
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return null;

View File

@ -5,6 +5,7 @@ import { useState } from "react";
import AdminAppsList from "@calcom/features/apps/AdminAppsList";
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { getDeploymentKey } from "@calcom/features/ee/deployment/lib/getDeploymentKey";
import { APP_NAME } from "@calcom/lib/constants";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import prisma from "@calcom/prisma";
import { UserPermissionRole } from "@calcom/prisma/enums";
@ -95,7 +96,7 @@ export function Setup(props: inferSSRProps<typeof getServerSideProps>) {
steps.push({
title: t("enable_apps"),
description: t("enable_apps_description"),
description: t("enable_apps_description", { appName: APP_NAME }),
contentClassname: "!pb-0 mb-[-1px]",
content: (setIsLoading) => {
const currentStep = isFreeLicense ? 3 : 4;

View File

@ -111,8 +111,10 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
const ret = await samlTenantProduct(prisma, emailParam);
tenant = ret.tenant;
product = ret.product;
} catch (e: any) {
error = e.message;
} catch (e) {
if (e instanceof Error) {
error = e.message;
}
}
}
}

View File

@ -18,6 +18,7 @@ export default function Page({ samlTenantID, samlProductID }: inferSSRProps<type
if (HOSTED_CAL_FEATURES) {
router.push("/auth/login");
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
useEffect(() => {
@ -29,6 +30,7 @@ export default function Page({ samlTenantID, samlProductID }: inferSSRProps<type
},
{ tenant: samlTenantID, product: samlProductID }
);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return null;

View File

@ -105,7 +105,8 @@ export function AvailabilityList({ schedules }: RouterOutputs["viewer"]["availab
);
}
const WithQuery = withQuery(trpc.viewer.availability.list);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const WithQuery = withQuery(trpc.viewer.availability.list as any);
export default function AvailabilityPage() {
const { t } = useLocale();

View File

@ -26,7 +26,7 @@ const AvailabilityView = ({ user }: { user: User }) => {
const { data, isLoading } = trpc.viewer.availability.user.useQuery(
{
username: user.username!,
username: user.username || "",
dateFrom: selectedDate.startOf("day").utc().format(),
dateTo: selectedDate.endOf("day").utc().format(),
withSource: true,

View File

@ -102,7 +102,6 @@ export default function Success(props: SuccessProps) {
allRemainingBookings,
isSuccessBookingPage,
cancel: isCancellationMode,
changes,
formerTime,
email,
seatReferenceUid,
@ -222,6 +221,7 @@ export default function Success(props: SuccessProps) {
setCalculatedDuration(
dayjs(props.bookingInfo.endTime).diff(dayjs(props.bookingInfo.startTime), "minutes")
);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
function eventLink(): string {
@ -400,7 +400,7 @@ export default function Success(props: SuccessProps) {
</>
)}
<div className="font-medium">{t("what")}</div>
<div className="col-span-2 mb-6 last:mb-0">{props.bookingInfo.title}</div>
<div className="col-span-2 mb-6 last:mb-0">{eventName}</div>
<div className="font-medium">{t("when")}</div>
<div className="col-span-2 mb-6 last:mb-0">
{reschedule && !!formerTime && (

View File

@ -3,7 +3,7 @@ import { useAutoAnimate } from "@formkit/auto-animate/react";
import { zodResolver } from "@hookform/resolvers/zod";
import type { GetServerSidePropsContext } from "next";
import { Trans } from "next-i18next";
import { useEffect, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { useForm } from "react-hook-form";
import { z } from "zod";
@ -17,9 +17,14 @@ import { useLocale } from "@calcom/lib/hooks/useLocale";
import { useTypedQuery } from "@calcom/lib/hooks/useTypedQuery";
import { HttpError } from "@calcom/lib/http-error";
import { telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
import type { Prisma } from "@calcom/prisma/client";
import type { PeriodType, SchedulingType } from "@calcom/prisma/enums";
import type { customInputSchema, EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils";
import type {
BookerLayoutSettings,
customInputSchema,
EventTypeMetaDataSchema,
} from "@calcom/prisma/zod-utils";
import { eventTypeBookingFields } from "@calcom/prisma/zod-utils";
import type { RouterOutputs } from "@calcom/trpc/react";
import { trpc } from "@calcom/trpc/react";
@ -96,6 +101,7 @@ export type FormValues = {
hosts: { userId: number; isFixed: boolean }[];
bookingFields: z.infer<typeof eventTypeBookingFields>;
availability?: AvailabilityOption;
bookerLayouts: BookerLayoutSettings;
};
export type CustomInputParsed = typeof customInputSchema._output;
@ -184,17 +190,17 @@ const EventTypePage = (props: EventTypeSetupProps) => {
const metadata = eventType.metadata;
// fallback to !!eventType.schedule when 'useHostSchedulesForTeamEvent' is undefined
if (!!team) {
if (!!team && metadata !== null) {
metadata.config = {
...metadata.config,
useHostSchedulesForTeamEvent:
typeof eventType.metadata.config?.useHostSchedulesForTeamEvent !== "undefined"
? eventType.metadata.config?.useHostSchedulesForTeamEvent === true
typeof eventType.metadata?.config?.useHostSchedulesForTeamEvent !== "undefined"
? eventType.metadata?.config?.useHostSchedulesForTeamEvent === true
: !!eventType.schedule,
};
} else {
// Make sure non-team events NEVER have this config key;
delete metadata.config?.useHostSchedulesForTeamEvent;
delete metadata?.config?.useHostSchedulesForTeamEvent;
}
const bookingFields: Prisma.JsonObject = {};
@ -203,41 +209,43 @@ const EventTypePage = (props: EventTypeSetupProps) => {
bookingFields[name] = name;
});
const defaultValues = {
title: eventType.title,
locations: eventType.locations || [],
recurringEvent: eventType.recurringEvent || null,
description: eventType.description ?? undefined,
schedule: eventType.schedule || undefined,
bookingLimits: eventType.bookingLimits || undefined,
durationLimits: eventType.durationLimits || undefined,
length: eventType.length,
offsetStart: eventType.offsetStart,
hidden: eventType.hidden,
periodDates: {
startDate: periodDates.startDate,
endDate: periodDates.endDate,
},
bookingFields: eventType.bookingFields,
periodType: eventType.periodType,
periodCountCalendarDays: eventType.periodCountCalendarDays ? "1" : "0",
schedulingType: eventType.schedulingType,
minimumBookingNotice: eventType.minimumBookingNotice,
metadata,
hosts: eventType.hosts,
children: eventType.children.map((ch) => ({
...ch,
created: true,
owner: {
...ch.owner,
eventTypeSlugs:
eventType.team?.members
.find((mem) => mem.user.id === ch.owner.id)
?.user.eventTypes.map((evTy) => evTy.slug)
.filter((slug) => slug !== eventType.slug) ?? [],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const defaultValues: any = useMemo(() => {
return {
title: eventType.title,
locations: eventType.locations || [],
recurringEvent: eventType.recurringEvent || null,
description: eventType.description ?? undefined,
schedule: eventType.schedule || undefined,
bookingLimits: eventType.bookingLimits || undefined,
durationLimits: eventType.durationLimits || undefined,
length: eventType.length,
hidden: eventType.hidden,
periodDates: {
startDate: periodDates.startDate,
endDate: periodDates.endDate,
},
})),
} as const;
bookingFields: eventType.bookingFields,
periodType: eventType.periodType,
periodCountCalendarDays: eventType.periodCountCalendarDays ? "1" : "0",
schedulingType: eventType.schedulingType,
minimumBookingNotice: eventType.minimumBookingNotice,
metadata,
hosts: eventType.hosts,
children: eventType.children.map((ch) => ({
...ch,
created: true,
owner: {
...ch.owner,
eventTypeSlugs:
eventType.team?.members
.find((mem) => mem.user.id === ch.owner.id)
?.user.eventTypes.map((evTy) => evTy.slug)
.filter((slug) => slug !== eventType.slug) ?? [],
},
})),
};
}, [eventType, periodDates, metadata]);
const formMethods = useForm<FormValues>({
defaultValues,
@ -270,6 +278,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
//TODO: What's the best way to sync the form with backend
formMethods.setValue("bookingFields", defaultValues.bookingFields);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [defaultValues]);
const appsMetadata = formMethods.getValues("metadata")?.apps;
@ -332,6 +341,7 @@ const EventTypePage = (props: EventTypeSetupProps) => {
seatsPerTimeSlotEnabled,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
minimumBookingNoticeInDurationType,
bookerLayouts,
...input
} = values;
@ -345,6 +355,9 @@ const EventTypePage = (props: EventTypeSetupProps) => {
if (!isValid) throw new Error(t("event_setup_duration_limits_error"));
}
const layoutError = validateBookerLayouts(metadata?.bookerLayouts || null);
if (layoutError) throw new Error(t(layoutError));
if (metadata?.multipleDuration !== undefined) {
if (metadata?.multipleDuration.length < 1) {
throw new Error(t("event_setup_multiple_duration_error"));
@ -415,9 +428,6 @@ const EventTypePage = (props: EventTypeSetupProps) => {
// We don't need to send send these values to the backend
// eslint-disable-next-line @typescript-eslint/no-unused-vars
seatsPerTimeSlotEnabled,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
minimumBookingNoticeInDurationType,
availability,
...input
} = values;
@ -431,6 +441,9 @@ const EventTypePage = (props: EventTypeSetupProps) => {
if (!isValid) throw new Error(t("event_setup_duration_limits_error"));
}
const layoutError = validateBookerLayouts(metadata?.bookerLayouts || null);
if (layoutError) throw new Error(t(layoutError));
if (metadata?.multipleDuration !== undefined) {
if (metadata?.multipleDuration.length < 1) {
throw new Error(t("event_setup_multiple_duration_error"));

View File

@ -395,11 +395,13 @@ export const EventTypeList = ({ group, groupIndex, readOnly, types }: EventTypeL
className="relative top-1 right-3"
size="sm"
truncateAfter={4}
items={type.users.map((organizer: { name: any; username: any }) => ({
alt: organizer.name || "",
image: `${WEBAPP_URL}/${organizer.username}/avatar.png`,
title: organizer.name || "",
}))}
items={type.users.map(
(organizer: { name: string | null; username: string | null }) => ({
alt: organizer.name || "",
image: `${WEBAPP_URL}/${organizer.username}/avatar.png`,
title: organizer.name || "",
})
)}
/>
)}
{isManagedEventType && (
@ -791,7 +793,8 @@ const Actions = () => {
);
};
const WithQuery = withQuery(trpc.viewer.eventTypes.getByViewer);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const WithQuery = withQuery(trpc.viewer.eventTypes.getByViewer as any);
const EventTypesPage = () => {
const { t } = useLocale();
@ -804,6 +807,7 @@ const EventTypesPage = () => {
if (query?.openIntercom && query?.openIntercom === "true") {
open();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
@ -828,7 +832,7 @@ const EventTypesPage = () => {
{isMobile ? (
<MobileTeamsTab eventTypeGroups={data.eventTypeGroups} />
) : (
data.eventTypeGroups.map((group, index) => (
data.eventTypeGroups.map((group: EventTypeGroup, index: number) => (
<div className="flex flex-col" key={group.profile.slug}>
<EventTypeListHeading
profile={group.profile}

View File

@ -1,12 +1,14 @@
import { useState } from "react";
import { Controller, useForm } from "react-hook-form";
import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector";
import ThemeLabel from "@calcom/features/settings/ThemeLabel";
import { getLayout } from "@calcom/features/settings/layouts/SettingsLayout";
import { APP_NAME } from "@calcom/lib/constants";
import { checkWCAGContrastColor } from "@calcom/lib/getBrandColours";
import { useHasPaidPlan } from "@calcom/lib/hooks/useHasPaidPlan";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
import { trpc } from "@calcom/trpc/react";
import {
Alert,
@ -62,6 +64,7 @@ const AppearanceView = () => {
brandColor: user?.brandColor || "#292929",
darkBrandColor: user?.darkBrandColor || "#fafafa",
hideBranding: user?.hideBranding,
defaultBookerLayouts: user?.defaultBookerLayouts,
},
});
@ -76,8 +79,12 @@ const AppearanceView = () => {
showToast(t("settings_updated_successfully"), "success");
reset(data);
},
onError: () => {
showToast(t("error_updating_settings"), "error");
onError: (error) => {
if (error.message) {
showToast(error.message, "error");
} else {
showToast(t("error_updating_settings"), "error");
}
},
});
@ -92,6 +99,9 @@ const AppearanceView = () => {
<Form
form={formMethods}
handleSubmit={(values) => {
const layoutError = validateBookerLayouts(values.defaultBookerLayouts || null);
if (layoutError) throw new Error(t(layoutError));
mutation.mutate({
...values,
// Radio values don't support null as values, therefore we convert an empty string
@ -130,6 +140,13 @@ const AppearanceView = () => {
/>
</div>
<hr className="border-subtle my-8 border [&:has(+hr)]:hidden" />
<BookerLayoutSelector
name="metadata.defaultBookerLayouts"
title={t("bookerlayout_user_settings_title")}
description={t("bookerlayout_user_settings_description")}
/>
<hr className="border-subtle my-8 border" />
<div className="mb-6 flex items-center text-sm">
<div>

View File

@ -46,7 +46,10 @@ interface GeneralViewProps {
user: RouterOutputs["viewer"]["me"];
}
const WithQuery = withQuery(trpc.viewer.public.i18n, undefined, { trpc: { context: { skipBatch: true } } });
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const WithQuery = withQuery(trpc.viewer.public.i18n as any, undefined, {
trpc: { context: { skipBatch: true } },
});
const GeneralQueryView = () => {
const { t } = useLocale();

View File

@ -34,7 +34,7 @@ const PasswordView = () => {
onSettled: () => {
utils.viewer.me.invalidate();
},
onMutate: async ({ metadata }) => {
onMutate: async () => {
await utils.viewer.me.cancel();
const previousValue = utils.viewer.me.getData();
const previousMetadata = userMetadata.parse(previousValue?.metadata);

View File

@ -64,6 +64,7 @@ export default function JoinCall(props: JoinCallPageProps) {
return () => {
callFrame.destroy();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const onRecordingStopped = () => {
@ -169,6 +170,7 @@ function ProgressBar(props: ProgressBarProps) {
intervalRef.current = null;
}
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const prev = startDuration - duration;

View File

@ -15,10 +15,11 @@ test("Can delete user account", async ({ page, users }) => {
await page.goto(`/settings/my-account/profile`);
await page.waitForLoadState("networkidle");
await page.click("[data-testid=delete-account]");
if (!user.username) throw Error(`Test user doesn't have a username`);
expect(user.username).toBeTruthy();
const $passwordField = page.locator("[data-testid=password]");
await $passwordField.fill(user.username);
await $passwordField.fill(String(user.username));
await Promise.all([
page.waitForURL((url) => url.pathname === "/auth/logout"),

View File

@ -5,9 +5,10 @@ import { test } from "../lib/fixtures";
test.afterEach(({ users }) => users.deleteAll());
test("Can reset forgotten password", async ({ page, users }) => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(process.env.NEXT_PUBLIC_IS_E2E !== "1", "It shouldn't if we can't skip email");
const user = await users.create();
const newPassword = `${user.username!}-123`;
const newPassword = `${user.username}-123`;
// Got to reset password flow
await page.goto("/auth/forgot-password");

View File

@ -10,12 +10,13 @@ test.describe("Change Password Test", () => {
await pro.login();
// Go to http://localhost:3000/settings/security
await page.goto("/settings/security/password");
if (!pro.username) throw Error("Test user doesn't have a username");
expect(pro.username).toBeTruthy();
await page.waitForLoadState("networkidle");
// Fill form
await page.locator('[name="oldPassword"]').fill(pro.username);
await page.locator('[name="oldPassword"]').fill(String(pro.username));
const $newPasswordField = page.locator('[name="newPassword"]');
$newPasswordField.fill(`${pro.username}Aa1111`);

View File

@ -50,6 +50,7 @@ test.describe("Change username on settings", () => {
test("User can update to PREMIUM username", async ({ page, users }, testInfo) => {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(!IS_STRIPE_ENABLED, "It should only run if Stripe is installed");
// eslint-disable-next-line playwright/no-skipped-test
test.skip(IS_SELF_HOSTED, "It shouldn't run on self hosted");
const user = await users.create();

View File

@ -11,6 +11,7 @@ test.afterEach(({ users }) => users.deleteAll());
// Due to some reason for Dynamic booking cancellation, daily video api_key is not set which causes cancellation to fail.
// This test is skipped until the issue is resolved in GH actions.
// eslint-disable-next-line playwright/no-skipped-test
test.skip("dynamic booking", async ({ page, users }) => {
const pro = await users.create();
await pro.login();

View File

@ -69,7 +69,7 @@ test.describe("Event Types tests", () => {
'[data-testid="event-types"] a[href^="/event-types/"] >> nth=0'
);
const href = await firstElement.getAttribute("href");
if (!href) throw new Error("No href found for event type");
expect(href).toBeTruthy();
const [eventTypeId] = new URL(WEBAPP_URL + href).pathname.split("/").reverse();
const firstTitle = await page.locator(`[data-testid=event-type-title-${eventTypeId}]`).innerText();
const firstFullSlug = await page.locator(`[data-testid=event-type-slug-${eventTypeId}]`).innerText();

View File

@ -58,7 +58,7 @@ export const createBookingsFixture = (page: Page) => {
status,
},
});
const bookingFixture = createBookingFixture(booking, store.page!);
const bookingFixture = createBookingFixture(booking, store.page);
store.bookings.push(bookingFixture);
return bookingFixture;
},
@ -80,7 +80,7 @@ const createBookingFixture = (booking: Booking, page: Page) => {
return {
id: store.booking.id,
uid: store.booking.uid,
self: async () => (await prisma.booking.findUnique({ where: { id: store.booking.id } }))!,
delete: async () => (await prisma.booking.delete({ where: { id: store.booking.id } }))!,
self: async () => await prisma.booking.findUnique({ where: { id: store.booking.id } }),
delete: async () => await prisma.booking.delete({ where: { id: store.booking.id } }),
};
};

View File

@ -36,7 +36,7 @@ export const createPaymentsFixture = (page: Page) => {
},
},
});
const paymentFixture = createPaymentFixture(payment, store.page!);
const paymentFixture = createPaymentFixture(payment, store.page);
store.payments.push(paymentFixture);
return paymentFixture;
},
@ -57,7 +57,7 @@ const createPaymentFixture = (payment: Payment, page: Page) => {
// self is a reflective method that return the Prisma object that references this fixture.
return {
id: store.payment.id,
self: async () => (await prisma.payment.findUnique({ where: { id: store.payment.id } }))!,
delete: async () => (await prisma.payment.delete({ where: { id: store.payment.id } }))!,
self: async () => await prisma.payment.findUnique({ where: { id: store.payment.id } }),
delete: async () => await prisma.payment.delete({ where: { id: store.payment.id } }),
};
};

View File

@ -233,7 +233,7 @@ export const createUsersFixture = (page: Page, workerInfo: WorkerInfo) => {
},
});
}
const userFixture = createUserFixture(user, store.page!);
const userFixture = createUserFixture(user, store.page);
store.users.push(userFixture);
return userFixture;
},
@ -261,6 +261,7 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
// self is a reflective method that return the Prisma object that references this fixture.
const self = async () =>
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(await prisma.user.findUnique({ where: { id: store.user.id }, include: { eventTypes: true } }))!;
return {
id: user.id,
@ -277,7 +278,7 @@ const createUserFixture = (user: UserWithIncludes, page: Page) => {
debug: async (message: string | Record<string, JSONValue>) => {
await prisma.user.update({ where: { id: store.user.id }, data: { metadata: { debug: message } } });
},
delete: async () => (await prisma.user.delete({ where: { id: store.user.id } }))!,
delete: async () => await prisma.user.delete({ where: { id: store.user.id } }),
};
};

View File

@ -38,12 +38,12 @@ test.describe("Stripe integration", () => {
test("Can book a paid booking", async ({ page, users }) => {
const user = await users.create();
const eventType = user.eventTypes.find((e) => e.slug === "paid")!;
const eventType = user.eventTypes.find((e) => e.slug === "paid");
await user.login();
await page.goto("/apps/installed");
await user.getPaymentCredential();
await page.goto(`${user.username}/${eventType.slug}`);
await page.goto(`${user.username}/${eventType?.slug}`);
await selectFirstAvailableTimeSlotNextMonth(page);
// --- fill form
await page.fill('[name="name"]', "Stripe Stripeson");

View File

@ -1,5 +1,6 @@
import type { Page, Route } from "@playwright/test";
import { expect } from "@playwright/test";
import type { DefaultBodyType } from "msw";
import { rest } from "msw";
import { setupServer } from "msw/node";
import { v4 as uuidv4 } from "uuid";
@ -42,7 +43,7 @@ const addOauthBasedIntegration = async function ({
// eslint-disable-next-line @typescript-eslint/no-explicit-any
verify: (config: { requestHeaders: any; params: URLSearchParams; code: string }) => {
status: number;
body: any;
body: DefaultBodyType;
};
};
}) {

View File

@ -24,11 +24,11 @@ export const deleteAllBookingsByEmail = async (
});
export const deleteEventTypeByTitle = async (title: string) => {
const event = (await prisma.eventType.findFirst({
const event = await prisma.eventType.findFirst({
select: { id: true },
where: { title: title },
}))!;
await prisma.eventType.delete({ where: { id: event.id } });
});
await prisma.eventType.delete({ where: { id: event?.id } });
};
export const deleteAllWebhooksByEmail = async (email: string) => {

View File

@ -46,6 +46,7 @@ export function createHttpServer(opts: { requestHandler?: RequestHandler } = {})
// listen on random port
server.listen(0);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const port: number = (server.address() as any).port;
const url = `http://localhost:${port}`;
return {

View File

@ -65,7 +65,7 @@ test.describe("Manage Booking Questions", () => {
},
});
const teamId = team?.id ?? 0;
const teamId = team?.id;
const webhookReceiver = await addWebhook(undefined, teamId);
await test.step("Go to First Team Event", async () => {
@ -86,7 +86,8 @@ async function runTestStepsCommonForTeamAndUserEventType(
webhookReceiver: {
port: number;
close: () => import("http").Server;
requestList: (import("http").IncomingMessage & { body?: unknown })[];
// eslint-disable-next-line @typescript-eslint/no-explicit-any
requestList: (import("http").IncomingMessage & { body?: any })[];
url: string;
},
bookerVariant: BookerVariants
@ -175,7 +176,7 @@ async function runTestStepsCommonForTeamAndUserEventType(
const [request] = webhookReceiver.requestList;
const payload = (request.body as any).payload as any;
const payload = request.body.payload;
expect(payload.responses).toMatchObject({
email: {
@ -212,7 +213,9 @@ async function runTestStepsCommonForTeamAndUserEventType(
await test.step("Do a reschedule and notice that we can't book without giving a value for rescheduleReason", async () => {
const page = previewTabPage;
await rescheduleFromTheLinkOnPage({ page, bookerVariant });
await rescheduleFromTheLinkOnPage({ page });
// eslint-disable-next-line playwright/no-page-pause
await page.pause();
await expectErrorToBeThereFor({ page, name: "rescheduleReason" });
});
}
@ -368,7 +371,7 @@ async function rescheduleFromTheLinkOnPage({
bookerVariant,
}: {
page: Page;
bookerVariant: BookerVariants;
bookerVariant?: BookerVariants;
}) {
await page.locator('[data-testid="reschedule-link"]').click();
await page.waitForLoadState();

View File

@ -76,9 +76,7 @@ test.describe("Onboarding", () => {
const userComplete = await user.self();
const userCompleteBio = userComplete.bio ? userComplete.bio : "";
expect(userCompleteBio.replace("<p><br></p>", "").length).toBe(0);
expect(userComplete.bio?.replace("<p><br></p>", "").length).toBe(0);
});
});
});

View File

@ -39,9 +39,9 @@ testBothBookers.describe("Reschedule Tests", async () => {
const updatedBooking = await booking.self();
expect(updatedBooking.rescheduled).toBe(true);
expect(updatedBooking.cancellationReason).toBe("I can't longer have it");
expect(updatedBooking.status).toBe(BookingStatus.CANCELLED);
expect(updatedBooking?.rescheduled).toBe(true);
expect(updatedBooking?.cancellationReason).toBe("I can't longer have it");
expect(updatedBooking?.status).toBe(BookingStatus.CANCELLED);
await booking.delete();
});

View File

@ -14,7 +14,7 @@ test.describe("BOOKING_CREATED", async () => {
test("add webhook & test that creating an event triggers a webhook call", async ({
page,
users,
}, testInfo) => {
}, _testInfo) => {
const webhookReceiver = createHttpServer();
const user = await users.create();
const [eventType] = user.eventTypes;
@ -51,7 +51,8 @@ test.describe("BOOKING_CREATED", async () => {
});
const [request] = webhookReceiver.requestList;
const body = request.body as any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const body: any = request.body;
// remove dynamic properties that differs depending on where you run the tests
const dynamic = "[redacted/dynamic]";
@ -305,6 +306,7 @@ test.describe("BOOKING_REQUESTED", async () => {
expect(webhookReceiver.requestList.length).toBe(1);
});
const [request] = webhookReceiver.requestList;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const body = request.body as any;
// remove dynamic properties that differs depending on where you run the tests

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "تم إنشاء نوع الحدث {{eventTypeTitle}} بنجاح",
"event_type_updated_successfully": "تم تحديث نوع الحدث {{eventTypeTitle}} بنجاح",
"event_type_deleted_successfully": "تم حذف نوع الحدث بنجاح",
"web3_metamask_added": "تمت إضافة Metamask بنجاح",
"web3_metamask_disconnected": "تم فصل Metamask بنجاح",
"hours": "الساعات",
"your_email": "بريدك الإلكتروني",
"change_avatar": "تغيير الصورة الرمزية",
@ -872,7 +870,6 @@
"installed_one": "تم التثبيت",
"installed_other": "{{count}} مثبت",
"verify_wallet": "تأكيد المحفظة",
"connect_metamask": "توصيل Metamask",
"create_events_on": "إنشاء أحداث في",
"enterprise_license": "هذه هي ميزة للمؤسسات",
"enterprise_license_description": "لتمكين هذه الميزة، احصل على مفتاح نشر في وحدة التحكم {{consoleUrl}} وأضفه إلى وحدة التحكم الخاصة بك. nv باسم CALCOM_LICENSE_KEY. إذا كان لدى فريقك بالفعل ترخيص، يرجى الاتصال بـ {{supportMail}} للحصول على المساعدة.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "تم تحديث جدول {{scheduleName}} بنجاح",
"schedule_deleted_successfully": "تم حذف الجدول بنجاح",
"default_schedule_name": "ساعات العمل",
"member_default_schedule": "الجدول الزمني الافتراضي للعضو",
"new_schedule_heading": "إنشاء جدول الأوقات المتاحة",
"new_schedule_description": "إن إنشاء جداول الأوقات المتاحة يتيح لك إدارة الأوقات المتاحة عبر أنواع الأحداث. يمكن تطبيقها على نوع أو أكثر من أنواع الأحداث.",
"requires_ownership_of_a_token": "يتطلب امتلاك token يخص العنوان التالي:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "متى تم حجز الحدث الجديد",
"email_host_action": "إرسال رسالة إلكترونية إلى المضيف",
"email_attendee_action": "إرسال رسالة إلكترونية إلى الحضور",
"sms_attendee_action": "إرسال رسالة نصية قصيرة إلى واحد من الحضور",
"sms_number_action": "إرسال رسالة نصية قصيرة إلى رقم محدد",
"workflows": "سير العمل",
"new_workflow_btn": "سير عمل جديد",
@ -1227,11 +1224,6 @@
"upload": "تحميل",
"add_profile_photo": "إضافة صورة الملف الشخصي",
"web3": "Web3",
"rainbow_token_gated": "يتم فتح هذا النوع من الأحداث برمز مميز.",
"rainbow_connect_wallet_gate": "قم بربط محفظتك إذا كنت تملك <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "لا تحتوي محفظتك المربوطة على ما يكفي من <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "قم بتوقيع طلب الرسالة على محفظتك.",
"rainbow_signature_error": "خطأ في طلب التوقيع من محفظتك.",
"token_address": "عنوان الرمز المميز",
"blockchain": "سلسلة الكتل",
"old_password": "كلمة مرور قديمة",
@ -1294,7 +1286,6 @@
"download_responses_description": "تنزيل جميع الردود إلى النموذج بتنسيق CSV.",
"download": "التنزيل",
"download_recording": "تنزيل التسجيل",
"recording_from_your_recent_call": "تسجيل من مكالمتك الأخيرة على Cal.com جاهز للتنزيل",
"create_your_first_form": "إنشاء أول استمارة",
"create_your_first_form_description": "باستخدام نماذج المسارات، يمكنك طرح أسئلة التأهيل والتوجيه إلى الشخص/نوع الحدث المناسب.",
"create_your_first_webhook": "إنشاء أول Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "تم تحديث كلمة المرور!",
"pending_payment": "في انتظار الدفع",
"pending_invites": "دعوات معلقة",
"confirmation_page_rainbow": "قم بتعيين رمز مميز لفتح الحدث الخاص بك باستخدام الرموز أو NFTs على Ethereum وPolygon وغيرها.",
"not_on_cal": "غير موجود على {{appName}}",
"no_calendar_installed": "لا يوجد تقويم مثبت",
"no_calendar_installed_description": "لم تقم بربط أي من التقويمات الخاصة بك",
@ -1491,8 +1481,6 @@
"find_the_best_person": "ابحث عن أفضل شخص متاح وابحث بالترتيب بين أعضاء فريقك.",
"fixed_round_robin": "جدولة دوارة",
"add_one_fixed_attendee": "أضف حاضرًا ثابتًا وجدولة دوارة عبر عدد من الحاضرين.",
"calcom_is_better_with_team": "يعمل Cal.com أفضل مع الفرق",
"the_calcom_team": "فريق Cal.com",
"add_your_team_members": "أضف أعضاء فريقك إلى أنواع الأحداث الخاصة بك. استخدم الجدولة الجماعية لإدراج الجميع أو العثور على أنسب شخص باستخدام الجدولة الدوارة.",
"booking_limit_reached": "تم الوصول إلى الحد الأقصى للحجز لهذا النوع من الأحداث",
"duration_limit_reached": "تم الوصول إلى الحد الأقصى لمدة الحجز لهذا النوع من الأحداث",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "الذهاب إلى التطبيقات المثبتة",
"disabled_calendar": "إذا كان لديك تقويم آخر مثبت، ستُضاف الحجوزات الجديدة إليه. إذا لم يكن الأمر كذلك، قم بتوصيل تقويم جديد حتى لا تفوت أي حجوزات جديدة.",
"enable_apps": "تمكين التطبيقات",
"enable_apps_description": "تمكين التطبيقات التي يمكن للمستخدمين دمجها مع Cal.com",
"purchase_license": "شراء ترخيص",
"already_have_key": "لدي مفتاح بالفعل:",
"already_have_key_suggestion": "يرجى نسخ متغير البيئة الحالي CALCOM_LICENSE_KEY هنا.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "Typ události {{eventTypeTitle}} byl úspěšně vytvořen",
"event_type_updated_successfully": "Typ události {{eventTypeTitle}} byl úspěšně aktualizován",
"event_type_deleted_successfully": "Typ události byl úspěšně smazán",
"web3_metamask_added": "Metamask úspěšně přidán",
"web3_metamask_disconnected": "Metamask úspěšně odpojen",
"hours": "Hodiny",
"your_email": "Váš e-mail",
"change_avatar": "Změnit avatar",
@ -872,7 +870,6 @@
"installed_one": "Nainstalováno",
"installed_other": "Nainstalováno: {{count}}",
"verify_wallet": "Ověřit peněženku",
"connect_metamask": "Připojit Metamask",
"create_events_on": "Vytvořit události v:",
"enterprise_license": "Jedná se o firemní funkci",
"enterprise_license_description": "Pokud chcete povolit tuto funkci, získejte klíč pro nasazení v konzoli {{consoleUrl}} a přidejte ho do souboru .env jako CALCOM_LICENSE_KEY. Pokud váš tým již licenci má, kontaktujte prosím {{supportMail}} a požádejte o pomoc.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Plán {{scheduleName}} byl úspěšně aktualizován",
"schedule_deleted_successfully": "Plán byl úspěšně odstraněn",
"default_schedule_name": "Pracovní doba",
"member_default_schedule": "Výchozí rozvrh člena",
"new_schedule_heading": "Vytvořit plán dostupnosti",
"new_schedule_description": "Vytvoření plánů dostupnosti vám umožní spravovat dostupnost mezi typy událostí. Mohou být použity pro jeden nebo více typů událostí.",
"requires_ownership_of_a_token": "Vyžaduje vlastnictví tokenu, který patří následující adrese:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "při rezervaci nové události",
"email_host_action": "odeslání e-mailu hostiteli",
"email_attendee_action": "odeslat e-mail účastníkům",
"sms_attendee_action": "odeslání SMS účastníkovi",
"sms_number_action": "odeslání SMS na konkrétní číslo",
"workflows": "Pracovní postupy",
"new_workflow_btn": "Nový pracovní postup",
@ -1227,11 +1224,6 @@
"upload": "Nahrát",
"add_profile_photo": "Přidat profilovou fotku",
"web3": "Web3",
"rainbow_token_gated": "Tento typ události je uzamčený tokenem.",
"rainbow_connect_wallet_gate": "Propojte svoji peněženku, pokud vlastníte <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Vaše propojená peněženka neobsahuje dostatek <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Podepište zprávu s požadavkem ve své peněžence.",
"rainbow_signature_error": "Chyba při vyžádání podpisu z vaší peněženky.",
"token_address": "Adresa tokenu",
"blockchain": "Blockchain",
"old_password": "Staré heslo",
@ -1294,7 +1286,6 @@
"download_responses_description": "Stáhněte si všechny odpovědi do formuláře ve formátu CSV.",
"download": "Stáhnout",
"download_recording": "Stáhnout nahrávku",
"recording_from_your_recent_call": "Nahrávka z vašeho nedávného hovoru na Cal.com je připravena ke stažení.",
"create_your_first_form": "Vytvořte svůj první formulář",
"create_your_first_form_description": "Pomocí adresných formulářů můžete klást kvalifikační otázky a adresovat je správné osobě nebo typu události.",
"create_your_first_webhook": "Vytvořte svůj první webhook",
@ -1377,7 +1368,6 @@
"password_updated": "Heslo bylo úspěšně změněno!",
"pending_payment": "Čeká se na platbu",
"pending_invites": "Čekající pozvánky",
"confirmation_page_rainbow": "Zamkněte svoji událost pomocí tokenů nebo NFT na platformách Ethereum, Polygon a dalších.",
"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ářů",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Najděte nejlepší dostupnou osobu a procházejte tým.",
"fixed_round_robin": "Pevný „round robin“",
"add_one_fixed_attendee": "Přidejte jednoho pevně stanoveného účastníka a „round robin“ přes daný počet účastníků.",
"calcom_is_better_with_team": "Cal.com je s týmy lepší",
"the_calcom_team": "Tým Cal.com",
"add_your_team_members": "Přidejte členy týmu k typům událostí. Použijte kolektivní plánování, abyste zahrnuli všechny, případně vyhledejte tu nejvhodnější osobu s plánováním „round robin“.",
"booking_limit_reached": "Byl dosažen limit rezervací pro tento typ události",
"duration_limit_reached": "Byl dosažen limit doby trvání pro tento typ události",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Přejděte na nainstalované aplikace",
"disabled_calendar": "Pokud máte nainstalovaný jiný kalendář, budou do něj přidány nové rezervace. Pokud ne, připojte nový kalendář, abyste nepřišli o žádné nové rezervace.",
"enable_apps": "Povolit aplikace",
"enable_apps_description": "Povolte aplikace, které mohou uživatelé integrovat s Cal.com",
"purchase_license": "Kupte si licenci",
"already_have_key": "Klíč již mám:",
"already_have_key_suggestion": "Zkopírujte sem svou stávající proměnnou prostředí CALCOM_LICENSE_KEY.",

View File

@ -601,8 +601,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} begivenhedstype blev oprettet",
"event_type_updated_successfully": "{{eventTypeTitle}} begivenhedstype blev opdateret",
"event_type_deleted_successfully": "Begivenhedstypen blev slettet",
"web3_metamask_added": "Metamask tilføjet",
"web3_metamask_disconnected": "Metamask blev afbrudt",
"hours": "Timer",
"your_email": "Din E-Mail",
"change_avatar": "Skift Avatar",
@ -834,7 +832,6 @@
"installed_one": "Installeret",
"installed_other": "{{count}} installeret",
"verify_wallet": "Verificér Wallet",
"connect_metamask": "Forbind Metamask",
"create_events_on": "Opret begivenheder på",
"enterprise_license": "Dette er en virksomhedsfunktion",
"enterprise_license_description": "For at aktivere denne funktion, skal du gå til {{setupUrl}} for at indtaste en licensnøgle. Hvis en licensnøgle allerede er på plads, bedes du kontakte {{supportMail}} for hjælp.",
@ -1009,7 +1006,6 @@
"event_cancelled_trigger": "når begivenheden er aflyst",
"new_event_trigger": "når ny begivenhed er booket",
"email_host_action": "send e-mail til vært",
"sms_attendee_action": "Send SMS til deltager",
"sms_number_action": "send SMS til et specifikt nummer",
"workflows": "Workflows",
"new_workflow_btn": "Nyt Workflow",
@ -1181,11 +1177,6 @@
"upload": "Upload",
"add_profile_photo": "Tilføj profilbillede",
"web3": "Web3",
"rainbow_token_gated": "Denne begivenhedstype er token gated.",
"rainbow_connect_wallet_gate": "Forbind din wallet, hvis du ejer <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Din tilsluttede wallet indeholder ikke nok <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Signér beskedanmodningen på din wallet.",
"rainbow_signature_error": "Fejl ved anmodning om signatur fra din wallet.",
"token_address": "Token Adresse",
"blockchain": "Blockchain",
"old_password": "Gammel adgangskode",
@ -1317,7 +1308,6 @@
"password_updated": "Adgangskode opdateret!",
"pending_payment": "Afventer betaling",
"pending_invites": "Afventende Invitationer",
"confirmation_page_rainbow": "Token gate din begivenhed med tokens eller NFTs på Ethereum, Polygon og flere.",
"not_on_cal": "Ikke på {{appName}}",
"no_calendar_installed": "Ingen kalender installeret",
"no_calendar_installed_description": "Du har endnu ikke tilsluttet nogen af dine kalendere",
@ -1427,7 +1417,6 @@
"find_the_best_person": "Find den bedste person tilgængelig, og cykl gennem dit team.",
"fixed_round_robin": "Fast round robin",
"add_one_fixed_attendee": "Tilføj en fast deltager og round robin gennem en række deltagere.",
"calcom_is_better_with_team": "Cal.com er bedre med teams",
"add_your_team_members": "Føj dine teammedlemmer til dine begivenhedstyper. Brug kollektiv planlægning til at inkludere alle eller finde den bedst egnede person med round robin planlægning.",
"booking_limit_reached": "Booking Grænse for denne begivenhedstype er nået",
"admin_has_disabled": "En administrator har deaktiveret {{appName}}",
@ -1440,7 +1429,6 @@
"navigate_installed_apps": "Gå til installerede apps",
"disabled_calendar": "Hvis du har en anden kalender installeret vil nye bookinger blive tilføjet til den. Hvis ikke, så forbind en ny kalender, så du ikke går glip af nye bookinger.",
"enable_apps": "Aktivér Apps",
"enable_apps_description": "Aktivér apps, som brugere kan integrere med Cal.com",
"purchase_license": "Køb en licens",
"already_have_key": "Jeg har allerede en nøgle:",
"already_have_key_suggestion": "Kopiér venligst din eksisterende CALCOM_LICENSE_KEY environment variabel her.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} Ereignistyp erfolgreich erstellt",
"event_type_updated_successfully": "{{eventTypeTitle}} Ereignistyp erfolgreich aktualisiert",
"event_type_deleted_successfully": "Termintyp erfolgreich gelöscht",
"web3_metamask_added": "Metamask erfolgreich hinzugefügt",
"web3_metamask_disconnected": "Metamask erfolgreich getrennt",
"hours": "Stunden",
"your_email": "Ihre E-Mail-Adresse",
"change_avatar": "Profilbild ändern",
@ -872,7 +870,6 @@
"installed_one": "Installiert",
"installed_other": "{{count}} installiert",
"verify_wallet": "Wallet verifizieren",
"connect_metamask": "Metamask verbinden",
"create_events_on": "Erstelle Termine in:",
"enterprise_license": "Das ist eine Enterprise-Funktion",
"enterprise_license_description": "Um diese Funktion zu aktivieren, holen Sie sich einen Deployment-Schlüssel von der {{consoleUrl}}-Konsole und fügen Sie ihn als CALCOM_LICENSE_KEY zu Ihrer .env hinzu. Wenn Ihr Team bereits eine Lizenz hat, wenden Sie sich bitte an {{supportMail}} für Hilfe.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} Zeitplan erfolgreich aktualisiert",
"schedule_deleted_successfully": "Verfügbarkeitsplan erfolgreich gelöscht",
"default_schedule_name": "Arbeitszeiten",
"member_default_schedule": "Standardverfügbarkeitsplan des Mitglieds",
"new_schedule_heading": "Erstelle einen Verfügbarkeitsplan",
"new_schedule_description": "Das Erstellen eines Verfügbarkeitsplan sorgt dafür, dass Ihre Verfügbarkeit bei mehreren Termintypen genutzt werden kann.",
"requires_ownership_of_a_token": "Erfordert Besitz eines Tokens, das zu der folgenden Adresse gehört:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "wenn ein neer Termin gebucht wird",
"email_host_action": "E-Mail an den Veranstalter senden",
"email_attendee_action": "E-Mail an Teilnehmende senden",
"sms_attendee_action": "SMS an Teilnehmende senden",
"sms_number_action": "SMS an eine bestimmte Nummer senden",
"workflows": "Workflows",
"new_workflow_btn": "Neuer Workflow",
@ -1227,11 +1224,6 @@
"upload": "Upload",
"add_profile_photo": "Profilbild hinzufügen",
"web3": "Web3",
"rainbow_token_gated": "Dieser Ereignistyp ist durch einen Token geschützt.",
"rainbow_connect_wallet_gate": "Verbinden Sie Ihre Wallet, falls Sie <1>{{name}}</1> (<3>{{symbol}}</3>) besitzen.",
"rainbow_insufficient_balance": "Ihre verbundene Wallet enthält nicht genug <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Unterschreiben Sie die Nachrichtenanfrage in Ihrem Wallet.",
"rainbow_signature_error": "Fehler beim Anfordern der Signatur von Ihrer Wallet.",
"token_address": "Adresse des Token",
"blockchain": "Blockchain",
"old_password": "Altes Passwort",
@ -1294,7 +1286,6 @@
"download_responses_description": "Laden Sie alle Antworten zu Ihrem Formular im CSV-Format herunter.",
"download": "Herunterladen",
"download_recording": "Aufnahme herunterladen",
"recording_from_your_recent_call": "Eine Aufnahme von Ihrem letzten Anruf auf Cal.com steht zum Download bereit",
"create_your_first_form": "Erstellen Sie Ihr erstes Formular",
"create_your_first_form_description": "Mithilfe von Leitungsformularen können Sie qualifizierende Fragen stellen und zur richtigen Person oder zum richtigen Veranstaltungstyp weiterleiten.",
"create_your_first_webhook": "Erstellen Sie Ihren ersten Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "Passwort aktualisiert!",
"pending_payment": "Zahlung ausstehend",
"pending_invites": "Offene Einladungen",
"confirmation_page_rainbow": "Sperren Sie Ihr Ereignis hinter Tokens oder NFTs auf Ethereum, Polygon und mehr.",
"not_on_cal": "Nicht auf {{appName}}",
"no_calendar_installed": "Kein Kalender installiert",
"no_calendar_installed_description": "Sie haben noch keinen Ihrer Kalender verbunden",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Finden Sie die beste verfügbare Person und rotieren Sie durch Ihr Team.",
"fixed_round_robin": "Festgelegter Round Robin",
"add_one_fixed_attendee": "Fügen Sie einen festen Teilnehmer und einen Round Robin mit einer Reihe von Teilnehmern hinzu.",
"calcom_is_better_with_team": "Cal.com ist mit Teams besser",
"the_calcom_team": "Das Cal.com Team",
"add_your_team_members": "Fügen Sie Ihre Teammitglieder zu Ihren Termintypen hinzu. Nutzen Sie kollektive Planung, um alle einzubinden oder finden Sie die geeignetste Person mit der Round Robin Planung.",
"booking_limit_reached": "Das Buchungslimit für diesen Termintyp wurde erreicht",
"duration_limit_reached": "Das Zeitlimit für diesen Termintyp wurde erreicht",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Zu installierten Apps wechseln",
"disabled_calendar": "Wenn Sie einen anderen Kalender installiert haben, werden neue Buchungen zu dem Kalender hinzugefügt. Verbinden Sie andernfalls einen neuen Kalender, damit Sie keine neuen Buchungen verpassen.",
"enable_apps": "Apps aktivieren",
"enable_apps_description": "Apps aktivieren, die Benutzer mit Cal.com integrieren können",
"purchase_license": "Lizenz kaufen",
"already_have_key": "Ich habe bereits einen Schlüssel:",
"already_have_key_suggestion": "Bitte fügen Sie Ihre vorhandene CALCOM_LICENSE_KEY Umgebungsvariable hier ein.",

View File

@ -295,6 +295,18 @@
"success": "Success",
"failed": "Failed",
"password_has_been_reset_login": "Your password has been reset. You can now login with your newly created password.",
"bookerlayout_title": "Layout",
"bookerlayout_default_title": "Default view",
"bookerlayout_description": "You can select multiple and your bookers can switch views.",
"bookerlayout_user_settings_title": "Booking layout",
"bookerlayout_user_settings_description": "You can select multiple and bookers can switch views. This can be overridden on a per event basis.",
"bookerlayout_month_view": "Month",
"bookerlayout_week_view": "Weekly",
"bookerlayout_column_view": "Column",
"bookerlayout_error_min_one_enabled": "At least one layout has to be enabled.",
"bookerlayout_error_default_not_enabled": "The layout you selected as the default view is not part of the enabled layouts.",
"bookerlayout_error_unknown_layout": "The layout you selected is not a valid layout.",
"bookerlayout_override_global_settings": "You can manage this for all your event types in <2>settings / appearance</2> or <6>override for this event only</6>.",
"unexpected_error_try_again": "An unexpected error occurred. Try again.",
"sunday_time_error": "Invalid time on Sunday",
"monday_time_error": "Invalid time on Monday",
@ -635,8 +647,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} event type created successfully",
"event_type_updated_successfully": "{{eventTypeTitle}} event type updated successfully",
"event_type_deleted_successfully": "Event type deleted successfully",
"web3_metamask_added": "Metamask added successfully",
"web3_metamask_disconnected": "Metamask disconnected successfully",
"hours": "Hours",
"your_email": "Your Email",
"change_avatar": "Change Avatar",
@ -877,7 +887,6 @@
"installed_one": "Installed",
"installed_other": "{{count}} installed",
"verify_wallet": "Verify Wallet",
"connect_metamask": "Connect Metamask",
"create_events_on": "Create events on",
"enterprise_license": "This is an enterprise feature",
"enterprise_license_description": "To enable this feature, have an administrator go to {{setupUrl}} to enter a license key. If a license key is already in place, please contact {{supportMail}} for help.",
@ -903,6 +912,7 @@
"availability_updated_successfully": "{{scheduleName}} schedule updated successfully",
"schedule_deleted_successfully": "Schedule deleted successfully",
"default_schedule_name": "Working Hours",
"member_default_schedule":"Member's default schedule",
"new_schedule_heading": "Create an availability schedule",
"new_schedule_description": "Creating availability schedules allows you to manage availability across event types. They can be applied to one or more event types.",
"requires_ownership_of_a_token": "Requires ownership of a token belonging to the following address:",
@ -1055,7 +1065,7 @@
"new_event_trigger": "when new event is booked",
"email_host_action": "send email to host",
"email_attendee_action": "send email to attendees",
"sms_attendee_action": "send SMS to attendee",
"sms_attendee_action": "Send SMS to attendee",
"sms_number_action": "send SMS to a specific number",
"workflows": "Workflows",
"new_workflow_btn": "New Workflow",
@ -1232,11 +1242,6 @@
"upload": "Upload",
"add_profile_photo": "Add profile photo",
"web3": "Web3",
"rainbow_token_gated": "This event type is token gated.",
"rainbow_connect_wallet_gate": "Connect your wallet if you own <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Your connected wallet doesn't contain enough <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Sign the message request on your wallet.",
"rainbow_signature_error": "Error requesting signature from your wallet.",
"token_address": "Token Address",
"blockchain": "Blockchain",
"old_password": "Old password",
@ -1299,7 +1304,7 @@
"download_responses_description": "Download all responses to your form in CSV format.",
"download": "Download",
"download_recording": "Download Recording",
"recording_from_your_recent_call":"A recording from your recent call on Cal.com is ready for download",
"recording_from_your_recent_call":"A recording from your recent call on {{appName}} is ready for download",
"create_your_first_form": "Create your first form",
"create_your_first_form_description": "With Routing Forms you can ask qualifying questions and route to the correct person or event type.",
"create_your_first_webhook": "Create your first Webhook",
@ -1382,7 +1387,6 @@
"password_updated": "Password updated!",
"pending_payment": "Pending payment",
"pending_invites": "Pending Invites",
"confirmation_page_rainbow": "Token gate your event with tokens or NFTs on Ethereum, Polygon, and more.",
"not_on_cal": "Not on {{appName}}",
"no_calendar_installed": "No calendar installed",
"no_calendar_installed_description": "You have not yet connected any of your calendars",
@ -1496,8 +1500,8 @@
"find_the_best_person": "Find the best person available and cycle through your team.",
"fixed_round_robin": "Fixed round robin",
"add_one_fixed_attendee": "Add one fixed attendee and round robin through a number of attendees.",
"calcom_is_better_with_team": "Cal.com is better with teams",
"the_calcom_team":"The Cal.com team",
"calcom_is_better_with_team": "{{appName}} is better with teams",
"the_calcom_team":"The {{companyName}} team",
"add_your_team_members": "Add your team members to your event types. Use collective scheduling to include everyone or find the most suitable person with round robin scheduling.",
"booking_limit_reached": "Booking Limit for this event type has been reached",
"duration_limit_reached": "Duration Limit for this event type has been reached",
@ -1516,7 +1520,7 @@
"navigate_installed_apps": "Go to installed apps",
"disabled_calendar": "If you have another calendar installed new bookings will be added to it. If not then connect a new calendar so you do not miss any new bookings.",
"enable_apps": "Enable Apps",
"enable_apps_description": "Enable apps that users can integrate with Cal.com",
"enable_apps_description": "Enable apps that users can integrate with {{appName}}",
"purchase_license": "Purchase a License",
"already_have_key": "I already have a key:",
"already_have_key_suggestion": "Please copy your existing CALCOM_LICENSE_KEY environment variable here.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} tipo de evento creado con éxito",
"event_type_updated_successfully": "{{eventTypeTitle}} tipo de evento actualizado con éxito",
"event_type_deleted_successfully": "Tipo de evento eliminado con éxito",
"web3_metamask_added": "Metamask ha sido añadido exitosamente",
"web3_metamask_disconnected": "Metamask ha sido removido exitosamente",
"hours": "Horas",
"your_email": "Tu Email",
"change_avatar": "Cambiar Avatar",
@ -872,7 +870,6 @@
"installed_one": "Instalada",
"installed_other": "{{count}} instaladas",
"verify_wallet": "Verificar billetera",
"connect_metamask": "Conectar Metamask",
"create_events_on": "Crear eventos en",
"enterprise_license": "Esta es una función empresarial",
"enterprise_license_description": "Para habilitar esta función, obtenga una clave de despliegue en la consola {{consoleUrl}} y añádala a su .env como CALCOM_LICENSE_KEY. Si su equipo ya tiene una licencia, póngase en contacto con {{supportMail}} para obtener ayuda.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "El horario de {{scheduleName}} se actualizó correctamente",
"schedule_deleted_successfully": "Programación eliminada exitosamente",
"default_schedule_name": "Horas laborables",
"member_default_schedule": "Horario predeterminado del miembro",
"new_schedule_heading": "Crear un horario de disponibilidad",
"new_schedule_description": "Crear horarios de disponibilidad le permite gestionar la disponibilidad a través de 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:",
@ -1050,7 +1048,6 @@
"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",
"workflows": "Flujos de trabajo",
"new_workflow_btn": "Flujo de trabajo nuevo",
@ -1227,11 +1224,6 @@
"upload": "Cargar",
"add_profile_photo": "Agregar foto de perfil",
"web3": "Web3",
"rainbow_token_gated": "Este tipo de evento tiene acceso cerrado por token.",
"rainbow_connect_wallet_gate": "Conecta tu billetera si posees <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Tu billetera conectada no contiene suficiente <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Firma la solicitud de mensaje en tu billetera.",
"rainbow_signature_error": "Error al solicitar la firma desde tu billetera.",
"token_address": "Dirección del token",
"blockchain": "Blockchain",
"old_password": "Contraseña anterior",
@ -1294,7 +1286,6 @@
"download_responses_description": "Descargue todas las respuestas de su formulario en formato CSV.",
"download": "Descargar",
"download_recording": "Descargar grabación",
"recording_from_your_recent_call": "Una grabación de su llamada reciente en Cal.com está lista para su descarga",
"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",
@ -1377,7 +1368,6 @@
"password_updated": "¡Contraseña actualizada!",
"pending_payment": "Pago pendiente",
"pending_invites": "Invitaciones pendientes",
"confirmation_page_rainbow": "Cierra el acceso a tu evento con tokens o NFTs en Ethereum, Polygon, etc.",
"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",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Encuentre a la mejor persona disponible y haga una rotación en su equipo.",
"fixed_round_robin": "Rotación fija por turnos",
"add_one_fixed_attendee": "Agregue un asistente fijo y realice rotación por turnos a través de un número de asistentes.",
"calcom_is_better_with_team": "Cal.com funciona mejor con equipos",
"the_calcom_team": "El equipo de Cal.com",
"add_your_team_members": "Añada los miembros de su equipo a sus tipos de eventos. Utilice la programación colectiva para incluir a todos o encuentre a la persona más adecuada con programación de rotación por turnos.",
"booking_limit_reached": "Se ha alcanzado el límite de reserva para este tipo de evento",
"duration_limit_reached": "Se ha alcanzado el límite de duración para este tipo de evento",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Ir a las aplicaciones instaladas",
"disabled_calendar": "Si tiene otro calendario instalado, las nuevas reservas se añadirán a él. De lo contrario, conecte un nuevo calendario para que no se pierda ninguna reserva nueva.",
"enable_apps": "Activar aplicaciones",
"enable_apps_description": "Active aplicaciones que los usuarios puedan integrar con Cal.com",
"purchase_license": "Compre una licencia",
"already_have_key": "Ya tengo una clave:",
"already_have_key_suggestion": "Copie aquí su variable de entorno CALCOM_LICENSE_KEY existente.",

View File

@ -634,8 +634,6 @@
"event_type_created_successfully": "Type d'événement {{eventTypeTitle}} créé avec succès",
"event_type_updated_successfully": "Type d'événement {{eventTypeTitle}} mis à jour avec succès",
"event_type_deleted_successfully": "Type d'événement supprimé avec succès",
"web3_metamask_added": "MetaMask ajouté avec succès",
"web3_metamask_disconnected": "MetaMask déconnecté avec succès",
"hours": "heures",
"your_email": "Votre adresse e-mail",
"change_avatar": "Changer d'avatar",
@ -873,7 +871,6 @@
"installed_one": "Installée",
"installed_other": "{{count}} installation(s)",
"verify_wallet": "Vérifier le portefeuille",
"connect_metamask": "Connecter MetaMask",
"create_events_on": "Créer des événements dans :",
"enterprise_license": "Il s'agit d'une fonctionnalité d'entreprise",
"enterprise_license_description": "Pour activer cette fonctionnalité, demandez à un administrateur d'accéder à {{setupUrl}} pour saisir une clé de licence. Si une clé de licence est déjà en place, veuillez contacter {{supportMail}} pour obtenir de l'aide.",
@ -899,6 +896,7 @@
"availability_updated_successfully": "Planning {{scheduleName}} mis à jour avec succès",
"schedule_deleted_successfully": "Planning supprimé avec succès",
"default_schedule_name": "Heures de travail",
"member_default_schedule": "Planning par défaut du membre",
"new_schedule_heading": "Créer un planning de disponibilité",
"new_schedule_description": "La création de plannings de disponibilité vous permet de gérer la disponibilité pour tous les types d'événements. Ils peuvent être appliqués à un ou plusieurs types d'événements.",
"requires_ownership_of_a_token": "Nécessite la propriété d'un token appartenant à l'adresse suivante :",
@ -1051,7 +1049,7 @@
"new_event_trigger": "lorsqu'un nouvel événement est réservé",
"email_host_action": "envoyer un e-mail à l'hôte",
"email_attendee_action": "envoyer un e-mail aux participants",
"sms_attendee_action": "envoyer un SMS au participant",
"sms_attendee_action": "Envoyer un SMS au participant",
"sms_number_action": "envoyer un SMS à un numéro spécifique",
"workflows": "Workflows",
"new_workflow_btn": "Nouveau workflow",
@ -1228,11 +1226,6 @@
"upload": "Télécharger",
"add_profile_photo": "Ajouter une photo de profil",
"web3": "Web3",
"rainbow_token_gated": "Ce type d'événement est protégé par un token.",
"rainbow_connect_wallet_gate": "Connectez votre portefeuille si vous possédez <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Votre portefeuille connecté ne contient pas assez de <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Signez la demande de message sur votre portefeuille.",
"rainbow_signature_error": "Erreur lors de la demande de signature de votre portefeuille.",
"token_address": "Adresse du token",
"blockchain": "Blockchain",
"old_password": "Ancien mot de passe",
@ -1295,7 +1288,6 @@
"download_responses_description": "Téléchargez toutes les réponses à votre formulaire au format CSV.",
"download": "Télécharger",
"download_recording": "Télécharger l'enregistrement",
"recording_from_your_recent_call": "Un enregistrement de votre appel récent sur Cal.com est prêt à être téléchargé",
"create_your_first_form": "Créez votre premier formulaire",
"create_your_first_form_description": "Avec les formulaires de routage, vous pouvez poser des questions de qualification et rediriger vers la bonne personne ou le bon type d'événement.",
"create_your_first_webhook": "Créez votre premier webhook",
@ -1378,7 +1370,6 @@
"password_updated": "Mot de passe mis à jour !",
"pending_payment": "Paiement en attente",
"pending_invites": "Invitations en attente",
"confirmation_page_rainbow": "Le token protège votre événement avec des tokens ou des NFT sur Ethereum, Polygon et plus encore.",
"not_on_cal": "Pas sur {{appName}}",
"no_calendar_installed": "Aucun calendrier installé",
"no_calendar_installed_description": "Vous n'avez pas encore connecté vos calendriers.",
@ -1492,8 +1483,6 @@
"find_the_best_person": "Trouvez la meilleure personne disponible et alternez à travers votre équipe.",
"fixed_round_robin": "Round-Robin fixe",
"add_one_fixed_attendee": "Ajoutez un participant fixe et le Round-Robin via un certain nombre de participants.",
"calcom_is_better_with_team": "Cal.com est meilleur en équipe",
"the_calcom_team": "L'équipe Cal.com",
"add_your_team_members": "Ajoutez les membres de votre équipe à vos types d'événements. Utilisez la planification collective pour inclure tout le monde ou trouvez la personne la plus appropriée avec la planification Round-Robin.",
"booking_limit_reached": "La limite de réservation pour ce type d'événement a été atteinte",
"duration_limit_reached": "La limite de durée pour ce type d'événement a été atteinte",
@ -1512,7 +1501,6 @@
"navigate_installed_apps": "Accéder aux applications installées",
"disabled_calendar": "Si un autre calendrier est installé, les nouvelles réservations y seront ajoutées. Si ce n'est pas le cas, connectez un nouveau calendrier pour ne pas manquer de nouvelles réservations.",
"enable_apps": "Activer les applications",
"enable_apps_description": "Activer les applications que les utilisateurs peuvent intégrer à Cal.com",
"purchase_license": "Acheter une licence",
"already_have_key": "J'ai déjà une clé :",
"already_have_key_suggestion": "Veuillez copier votre variable d'environnement CALCOM_LICENSE_KEY existante ici.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "יצירת האירוע מסוג {{eventTypeTitle}} בוצעה בהצלחה",
"event_type_updated_successfully": "עדכון האירוע מסוג {{eventTypeTitle}} בוצע בהצלחה",
"event_type_deleted_successfully": "מחיקת סוג האירוע בוצעה בהצלחה",
"web3_metamask_added": "הוספת ה-Metamask בוצעה בהצלחה",
"web3_metamask_disconnected": "ניתוק ה-Metamask בוצע בהצלחה",
"hours": "שעות",
"your_email": "הדוא\"ל שלך",
"change_avatar": "שינוי אווטאר",
@ -872,7 +870,6 @@
"installed_one": "מותקן",
"installed_other": "{{count}} התקנות",
"verify_wallet": "אימות הארנק",
"connect_metamask": "קישור Metamask",
"create_events_on": "ליצור אירועים ב-",
"enterprise_license": "תכונה זו זמינה רק במינוי Enterprise",
"enterprise_license_description": "כדי להפעיל את יכולת זו, בקש ממנהל לגשת אל הקישור {{setupUrl}} והקלדת הרישיון. אם כבר יש רישיון מוגדר, צור קשר עם {{supportMail}} לעזרה.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "עדכון התזמון {{scheduleName}} בוצע בהצלחה",
"schedule_deleted_successfully": "מחיקת התזמון בוצעה בהצלחה",
"default_schedule_name": "שעות עבודה",
"member_default_schedule": "לוח הזמנים שמוגדר כברירת מחדל עבור החבר/ה",
"new_schedule_heading": "יצירת לוח זמנים של מועדים פנויים",
"new_schedule_description": "יצירת לוחות זמנים להצגת זמינות מאפשרת לנהל את הזמינות של סוגי אירועים שונים. ניתן להחיל אותם על סוג אירוע אחד או יותר.",
"requires_ownership_of_a_token": "מחייב בעלות על טוקן ששייך לכתובת הבאה:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "כאשר אירוע חדש מוזמן",
"email_host_action": "שלח מייל למארח",
"email_attendee_action": "שליחת דוא\"ל למשתתפים",
"sms_attendee_action": "שלח SMS למשתתף",
"sms_number_action": "שלח SMS למספר מסוים",
"workflows": "תהליכים",
"new_workflow_btn": "תהליך עבודה חדש",
@ -1227,11 +1224,6 @@
"upload": "העלאה",
"add_profile_photo": "הוספת תמונת פרופיל",
"web3": "Web3",
"rainbow_token_gated": "סוג אירוע זה מוגן באמצעות טוקן.",
"rainbow_connect_wallet_gate": "קשר/י את הארנק שלך אם בבעלותך <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "אין בארנק שלך מספיק <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "חתום/י על בקשת ההודעה בארנק.",
"rainbow_signature_error": "שגיאה בעת בקשת חתימה מהארנק.",
"token_address": "כתובת הטוקן",
"blockchain": "בלוקצ'יין",
"old_password": "סיסמה ישנה",
@ -1294,7 +1286,6 @@
"download_responses_description": "הורד את כל התגובות לטופס שלך בפורמט CSV.",
"download": "הורדה",
"download_recording": "הורדת ההקלטה",
"recording_from_your_recent_call": "הקלטה של שיחה שערכת לאחרונה ב-Cal.com מוכנה להורדה",
"create_your_first_form": "צור/צרי את הטופס הראשון שלך",
"create_your_first_form_description": "באמצעות טפסי ניתוב ניתן לשאול שאלות סיווג ולנתב אל האדם או אל סוג האירוע המתאימים.",
"create_your_first_webhook": "יצירת ה-Webhook הראשון שלך",
@ -1377,7 +1368,6 @@
"password_updated": "הסיסמה עודכנה!",
"pending_payment": "המתנה לתשלום",
"pending_invites": "הזמנות ממתינות",
"confirmation_page_rainbow": "הגן/י על האירוע שלך באמצעות טוקנים או אסימוני NFT במטבע Ethereum, Polygon ועוד.",
"not_on_cal": "לא ב-{{appName}}",
"no_calendar_installed": "לא מותקן לוח שנה",
"no_calendar_installed_description": "לא קישרת אף אחד מלוחות השנה שלך",
@ -1491,8 +1481,6 @@
"find_the_best_person": "למצוא את האדם הכי מתאים שגם זמין לפגישה, ולעבור בסבב דרך כל חברי הצוות.",
"fixed_round_robin": "סבב קבוע",
"add_one_fixed_attendee": "הוסף/י משתתף/ת קבוע/ה אחד/ת ועבור/י בסבב בין מספר משתתפים.",
"calcom_is_better_with_team": "Cal.com טוב יותר לשימוש עם צוותים",
"the_calcom_team": "הצוות של Cal.com",
"add_your_team_members": "הוסף/י את חברי הצוות לסוגי האירועים שלך. השתמש/י בתזמון שיתופי כדי לכלול את כולם או מצא/י את האדם הכי מתאים בעזרת תזמון בסבב.",
"booking_limit_reached": "הגעת להגבלת ההזמנות עבור סוג אירוע זה",
"duration_limit_reached": "מגבלת הזמן לארוע זה עבר",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "מעבר לאפליקציות המותקנות",
"disabled_calendar": "אם התקנת לוח שנה אחר, ההזמנות החדשות יתווספו אליו. אם לא, קשר/י לוח שנה חדש כדי לא להחמיץ הזמנות חדשות.",
"enable_apps": "הפעלת אפליקציות",
"enable_apps_description": "להפעיל אפליקציות שמשתמשים יכולים לשלב עם Cal.com",
"purchase_license": "רכוש רישיון",
"already_have_key": "כבר יש לי מפתח:",
"already_have_key_suggestion": "אנא העתק את משתנה הסביבה CALCOM_LICENSE_KEY הקיים שלך לכאן.",
@ -1676,6 +1663,7 @@
"not_enough_seats": "אין מספיק מושבים",
"form_builder_field_already_exists": "שדה עם שם זה כבר קיים",
"form_builder_field_add_subtitle": "התאמת השאלות שנשאלות בדף התזמון",
"show_on_booking_page": "להציג בדף ההזמנות",
"get_started_zapier_templates": "התחל עם תבניות Zapier",
"team_is_unpublished": "צוות {{team}} אינו מפורסם",
"team_is_unpublished_description": "קישור הצוות הזה אינו זמין כעת. אנא צור קשר עם הבעלים של הצוות או בקש מהם לפרסם אותו.",
@ -1709,6 +1697,7 @@
"spot_popular_event_types_description": "צפה איזה ארועים מקבלים הכי הרבה גישות ותזמונים",
"no_responses_yet": "אין עדיין תגובות",
"this_will_be_the_placeholder": "זה יהיה הממלא מקום",
"error_booking_event": "אירעה שגיאה בעת הזמנת האירוע, רענן/י את הדף ונסה/י שוב",
"timeslot_missing_title": "לא נבחר חלון זמן",
"timeslot_missing_description": "כדי להזמין את האירוע, יש לבחור חלון זמן.",
"timeslot_missing_cta": "חלון הזמן שנבחר",
@ -1716,6 +1705,7 @@
"switch_weekly": "מעבר לתצוגת שבוע",
"switch_multiday": "מעבר לתצוגת יום",
"num_locations": "{{num}} אפשרויות מיקום",
"select_on_next_step": "בחר/י בשלב הבא",
"this_meeting_has_not_started_yet": "פגישה זו עוד לא התחילה",
"this_app_requires_connected_account": "{{appName}} דורש חשבון {{dependencyName}} מחובר",
"connect_app": "חבר את {{dependencyName}}",
@ -1725,6 +1715,7 @@
"can_you_try_again": "אתה יכול לנסות שוב עם שעה אחרת?",
"verify": "אמת",
"timezone_variable": "אזור זמן",
"timezone_info": "אזור הזמן של האדם שיקבל את ההזמנה",
"event_end_time_variable": "שעת סיום האירוע",
"event_end_time_info": "שעת סיום האירוע",
"cancel_url_variable": "ה-URL לביטול",
@ -1737,13 +1728,24 @@
"members_default_schedule": "לוח הזמנים שמוגדר כברירת מחדל עבור החבר/ה",
"set_by_admin": "הגדרה לפי מנהל/ת הצוות",
"members_default_location": "מיקום ברירת המחדל של החבר/ה",
"members_default_schedule_description": "אנחנו נשתמש בלוח הזמנים לזמינות שמוגדר כברירת מחדל עבור כל חבר/ה. החברים יוכלו לערוך את הנתונים.",
"requires_at_least_one_schedule": "אתה חייב שיהיה לך לפחות לוח זמנים אחד",
"default_conferencing_bulk_description": "עדכן את המיקומים עבור סוגי הארועים שנבחרו",
"locked_for_members": "נעול לחברים",
"locked_apps_description": "החברים יוכלו לראות את האפליקציות הפעילות, אבל לא יוכלו לערוך הגדרות של האפליקציה",
"locked_webhooks_description": "החברים יוכלו לראות את רכיבי ה-Webhook הפעילים, אבל לא יוכלו לערוך הגדרות של רכיבי Webhook",
"locked_workflows_description": "החברים יוכלו לראות את תהליכי העבודה הפעילים, אבל לא יוכלו לערוך הגדרות של תהליכי עבודה",
"locked_by_admin": "נעול על ידי מנהל/ת הצוות",
"app_not_connected": "לא קישרת חשבון {{appName}}.",
"connect_now": "להתחבר עכשיו",
"managed_event_dialog_confirm_button_one": "החלפה ועדכון של חבר/ה {{count}}",
"managed_event_dialog_confirm_button_other": "החלפה ועדכון של {{count}} חברים",
"managed_event_dialog_title_one": "כתובת ה-URL /{{slug}} כבר קיימת עבור חבר/ה {{count}}. האם ברצונך להחליף אותה?",
"managed_event_dialog_title_other": "כתובת ה-URL /{{slug}} כבר קיימת עבור {{count}} חברים. האם ברצונך להחליף אותה?",
"managed_event_dialog_information_one": "<strong>{{names}}</strong> כבר משתמש/ת בכתובת ה-URL <strong>/{{slug}}</strong>.",
"managed_event_dialog_information_other": "<strong>{{names}}</strong> כבר משתמשים בכתובת ה-URL <string>/{{slug}}</strong>.",
"managed_event_dialog_clarification": "אם תבחר/י להחליף את כתובת ה-URL, נודיע לחברים. אם אינך רוצה להחליף אותה, חזור/י אחורה והסר/י את החברים.",
"review_event_type": "בדיקת סוג האירוע",
"looking_for_more_analytics": "מחפש עוד מידע אנליטי?",
"looking_for_more_insights": "רצית עוד Insights?",
"add_filter": "הוסף סנן",
@ -1763,12 +1765,62 @@
"from_to_date_period": "מ: {{startDate}} עד: {{endDate}}",
"analytics_for_organisation": "Insights",
"subtitle_analytics": "קבל/י מידע נוסף על הפעילות של הצוות שלך",
"redirect_url_warning": "הוספת כתובת URL להפניה אוטומטית תגרום להשבתת דף 'הפעולה הצליחה'. חשוב להוסיף את ההודעה 'ההזמנה אושרה בהצלחה' בדף המותאם אישית לציון שהפעולה הצליחה.",
"event_trends": "מגמות ארוע",
"clear_filters": "ניקוי המסננים",
"hold": "החזקה",
"on_booking_option": "גביית תשלום בעת ההזמנה",
"hold_option": "חיוב דמי אי-הגעה",
"card_held": "החזקת הסכום בכרטיס",
"charge_card": "חיוב הכרטיס",
"card_charged": "הכרטיס חויב",
"no_show_fee_amount": "דמי אי-הגעה בסך {{amount, currency}}",
"no_show_fee": "דמי אי-הגעה",
"submit_card": "מסירת כרטיס",
"submit_payment_information": "מסירת פרטי כרטיס",
"meeting_awaiting_payment_method": "עוד לא צוין אמצעי תשלום עבור הפגישה",
"no_show_fee_charged_email_subject": "דמי אי-הגעה בסך {{amount, currency}} חויבו עבור {{title}} ב-{{date}}",
"no_show_fee_charged_text_body": "דמי אי-הגעה חויבו",
"no_show_fee_charged_subtitle": "דמי אי-הגעה בסך {{amount, currency}} חויבו עבור האירוע הבא",
"error_charging_card": "משהו השתבש בעת גביית התשלום על אי-הגעה. אפשר לנסות שוב מאוחר יותר.",
"collect_no_show_fee": "גביית דמי אי-הגעה",
"no_show_fee_charged": "דמי אי-הגעה חויבו",
"insights": "Insights",
"testing_workflow_info_message": "במהלך בדיקת תהליך העבודה הזה, קח/י בחשבון שהודעות דוא\"ל ו-SMS ניתנות לתזמון לפחות שעה מראש",
"insights_no_data_found_for_filter": "לא נמצאו נתונים עבור המסנן שנבחר או התאריכים שנבחרו.",
"acknowledge_booking_no_show_fee": "מובן לי שאם לא אשתתף באירוע הזה, דמי אי-הגעה בסך {{amount, currency}} ינוכו מהכרטיס שלי.",
"card_details": "פרטי כרטיס",
"seats_and_no_show_fee_error": "נכון לעכשיו, אי אפשר להפעיל מקומות ולחייב דמי אי-הגעה",
"complete_your_booking": "יש להשלים את ההזמנה",
"complete_your_booking_subject": "יש להשלים את ההזמנה: {{title}} ב-{{date}}",
"payment_app_commission": "דרישת תשלום ({{paymentFeePercentage}}% + {{fee, currency}} עמלה על העסקה)"
"confirm_your_details": "אישור הפרטים שלך",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "את/ה עומד/ת לחייב את המשתתף/ת בסכום של {{amount, currency}}. בטוח שברצונך להמשיך?",
"charge_attendee": "לחייב את המשתתף/ת ב-{{amount, currency}}",
"payment_app_commission": "דרישת תשלום ({{paymentFeePercentage}}% + {{fee, currency}} עמלה על העסקה)",
"email_invite_team": "נשלחה הזמנה ל-{{email}}",
"email_invite_team_bulk": "{{userCount}} משתמשים הוזמנו",
"error_collecting_card": "שגיאה בחיוב הכרטיס",
"image_size_limit_exceed": "התמונה שתעלה/י יכולה להיות בנפח של מקסימום 5MB",
"inline_embed": "הטמעה מוטבעת",
"load_inline_content": "סוג האירוע נטען ישירות בתוך שאר תוכן האתר שלך.",
"floating_pop_up_button": "לחצן קופץ צף",
"floating_button_trigger_modal": "אפשרות זו מציבה באתר שלך לחצן צף שמפעיל חלון מודאלי עם סוג האירוע שלך.",
"pop_up_element_click": "קופץ בעקבות לחיצה על הרכיב",
"open_dialog_with_element_click": "פתיחת תיבת הדו-שיח ב-Cal כשמישהו לוחץ על רכיב.",
"need_help_embedding": "זקוק/ה לעזרה? ניתן לעיין במדריכים שלנו בנושא הטמעת Cal ב-Wix, ב-Squarespace או ב-WordPress, לקרוא את דף השאלות הנפוצות או לסקור אפשרויות הטמעה מתקדמות.",
"book_my_cal": "הזמנה ביומן שלי",
"invite_as": "הזמנה בְתור",
"form_updated_successfully": "עדכון הטופס בוצע בהצלחה.",
"email_not_cal_member_cta": "הצטרף/י לצוות שלך",
"disable_attendees_confirmation_emails": "השבתת הודעות דוא\"ל לאישור שנשלחות כברירת מחדל עבור המשתתפים",
"disable_attendees_confirmation_emails_description": "בסוג האירוע הזה פעיל לפחות תהליך עבודה אחד ששולח דוא\"ל למשתתפים כשהאירוע מוזמן.",
"disable_host_confirmation_emails": "השבתת הודעות דוא\"ל לאישור שנשלחות כברירת מחדל עבור המארח/ת",
"disable_host_confirmation_emails_description": "בסוג האירוע הזה פעיל לפחות תהליך עבודה אחד ששולח דוא\"ל למארח/ת כשהאירוע מוזמן.",
"add_an_override": "הוספת מעקף",
"import_from_google_workspace": "ייבוא משתמשים מ-Google Workspace",
"connect_google_workspace": "חיבור Google Workspace",
"google_workspace_admin_tooltip": "עליך להיות אדמין/ית ב-Workspace כדי להשתמש בתכונה הזו",
"first_event_type_webhook_description": "צור/צרי את ה-Webhook הראשון שלך עבור סוג זה של אירוע",
"create_for": "צור/צרי עבור"
}

View File

@ -189,7 +189,6 @@
"remove": "Ektávolítás",
"add": "Hozzáadás",
"installed_one": "Telepített",
"connect_metamask": "Metamask csatlakoztatása",
"error_404": "404-es hiba",
"default": "Alapértelmezett",
"24_hour_short": "0-24",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} tipo di evento creato con successo",
"event_type_updated_successfully": "{{eventTypeTitle}} tipo di evento aggiornato con successo",
"event_type_deleted_successfully": "Tipo di evento eliminato con successo",
"web3_metamask_added": "Metamask aggiunto",
"web3_metamask_disconnected": "Metamask disconnesso",
"hours": "Ore",
"your_email": "La Tua Email",
"change_avatar": "Cambia Avatar",
@ -872,7 +870,6 @@
"installed_one": "Installata",
"installed_other": "{{count}} installate",
"verify_wallet": "Verifica Wallet",
"connect_metamask": "Connetti Metamask",
"create_events_on": "Crea eventi su:",
"enterprise_license": "Questa è una funzione Enterprise",
"enterprise_license_description": "Per abilitare questa funzione, ottenere una chiave di distribuzione presso la console {{consoleUrl}} e aggiungerla al proprio .env come CALCOM_LICENSE_KEY. Nel caso il team possieda già una licenza, contattare {{supportMail}} per assistenza.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Disponibilità aggiornata con successo",
"schedule_deleted_successfully": "Programma eliminato",
"default_schedule_name": "Orario lavorativo",
"member_default_schedule": "Pianificazione predefinita membro",
"new_schedule_heading": "Crea un programma di disponibilità",
"new_schedule_description": "La creazione di programmi di disponibilità consente di gestire la disponibilità per i diversi tipi di eventi. I programmi possono essere applicati a uno o più tipi di evento.",
"requires_ownership_of_a_token": "Richiede il possesso di un token appartenente al seguente indirizzo:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "quando viene prenotato un nuovo evento",
"email_host_action": "invia e-mail all'organizzatore",
"email_attendee_action": "invia e-mail ai partecipanti",
"sms_attendee_action": "invia SMS al partecipante",
"sms_number_action": "invia SMS a un numero specifico",
"workflows": "Flussi di lavoro",
"new_workflow_btn": "Nuovo flusso di lavoro",
@ -1227,11 +1224,6 @@
"upload": "Carica",
"add_profile_photo": "Aggiungi foto del profilo",
"web3": "Web3",
"rainbow_token_gated": "Questo tipo di evento è protetto da token.",
"rainbow_connect_wallet_gate": "Collega il tuo portafoglio se possiedi <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Il portafoglio collegato non contiene abbastanza <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Firma la richiesta di messaggio sul tuo portafoglio.",
"rainbow_signature_error": "Errore durante la richiesta di firma al tuo portafoglio.",
"token_address": "Indirizzo token",
"blockchain": "Blockchain",
"old_password": "Vecchia password",
@ -1294,7 +1286,6 @@
"download_responses_description": "Scarica tutte le risposte al tuo modulo in formato CSV.",
"download": "Scarica",
"download_recording": "Scarica registrazione",
"recording_from_your_recent_call": "Una registrazione della tua recente chiamata su Cal.com è pronta per il download",
"create_your_first_form": "Crea il tuo primo modulo",
"create_your_first_form_description": "I Moduli di instradamento consentono di porre domande qualificanti agli utenti per indirizzarli a persone o eventi pertinenti.",
"create_your_first_webhook": "Crea il tuo primo Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "Password aggiornata!",
"pending_payment": "Pagamento in sospeso",
"pending_invites": "Inviti in sospeso",
"confirmation_page_rainbow": "Proteggi i tuoi eventi con token o NFT su Ethereum, Polygon e altri.",
"not_on_cal": "Non presente su {{appName}}",
"no_calendar_installed": "Nessun calendario installato",
"no_calendar_installed_description": "Non hai ancora collegato alcun calendario",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Trova la persona più adatta disponibile e fai ruotare i membri del team.",
"fixed_round_robin": "Round robin fisso",
"add_one_fixed_attendee": "Aggiungi un partecipante fisso e fai intervenire a turno altri partecipanti.",
"calcom_is_better_with_team": "Cal.com funziona meglio in team",
"the_calcom_team": "Il team Cal.com",
"add_your_team_members": "Aggiungi i membri del tuo team ai tuoi tipi di eventi. Usa la pianificazione collettiva per includere tutti o trova la persona più adatta con la pianificazione round robin.",
"booking_limit_reached": "È stato raggiunto il limite di prenotazione per questo tipo di evento",
"duration_limit_reached": "È stato raggiunto il limite di durata per questo tipo di evento",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Vai alle app installate",
"disabled_calendar": "Se hai un altro calendario installato, le nuove prenotazioni saranno aggiunte a quel calendario. Altrimenti, collega un nuovo calendario in modo da non perdere nessuna nuova prenotazione.",
"enable_apps": "Abilita app",
"enable_apps_description": "Abilita le app che gli utenti possono integrare con Cal.com",
"purchase_license": "Acquista una licenza",
"already_have_key": "Ho già una chiave:",
"already_have_key_suggestion": "Copia qui la variabile di ambiente CALCOM_LICENSE_KEY esistente.",

View File

@ -26,6 +26,8 @@
"rejection_confirmation": "予約を拒否する",
"manage_this_event": "このイベントを管理する",
"invite_team_member": "チームメンバーを招待",
"invite_team_individual_segment": "個人を招待",
"invite_team_bulk_segment": "一括インポート",
"invite_team_notifcation_badge": "招待",
"your_event_has_been_scheduled": "イベントがスケジュールされました",
"your_event_has_been_scheduled_recurring": "繰り返しイベントがスケジュールされています",
@ -222,6 +224,7 @@
"go_back_login": "ログインページに戻る",
"error_during_login": "ログイン時にエラーが発生しました。ログイン画面に戻って再度お試し下さい。",
"request_password_reset": "パスワードをリセットするためのメールを送信する",
"send_invite": "招待を送る",
"forgot_password": "パスワードを忘れた場合",
"forgot": "お忘れですか?",
"done": "完了",
@ -237,6 +240,8 @@
"set_availability": "利用可否の設定",
"continue_without_calendar": "カレンダーなしで続行",
"connect_your_calendar": "カレンダーに接続",
"connect_your_video_app": "ビデオアプリを接続",
"connect_your_video_app_instructions": "自分のイベントタイプでビデオアプリを使用するにはビデオアプリを接続します。",
"connect_your_calendar_instructions": "カレンダーに接続すると、予定済の忙しい時間と新しいイベントを自動的に確認できます。",
"set_up_later": "あとで設定",
"current_time": "現在の時刻",
@ -366,6 +371,7 @@
"create_webhook": "Webhook を作成",
"booking_cancelled": "予約がキャンセルされました",
"booking_rescheduled": "予約の再スケジュール済",
"recording_ready": "レコーディングのダウンロードリンクの準備ができています",
"booking_created": "予約を作成しました",
"meeting_ended": "ミーティングが終了しました",
"form_submitted": "フォームが送信されました",
@ -464,6 +470,7 @@
"friday": "金曜日",
"saturday": "土曜日",
"sunday": "日曜日",
"all_booked_today": "すべて予約済みです。",
"slots_load_fail": "利用可能な時間帯を読み込めませんでした。",
"additional_guests": "ゲストを追加",
"your_name": "あなたの名前",
@ -623,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} イベント種別が正常に作成されました",
"event_type_updated_successfully": "{{eventTypeTitle}} イベント種別が正常に更新されました",
"event_type_deleted_successfully": "イベント種別が正常に削除されました",
"web3_metamask_added": "メタマスクが正常に追加されました",
"web3_metamask_disconnected": "メタマスクの接続が正常に解除されました",
"hours": "時間",
"your_email": "あなたのメールアドレス",
"change_avatar": "アバターを変更",
@ -751,6 +756,10 @@
"new_event_type_to_book_description": "ユーザーが時間を予約する際に使う新しいイベントタイプを作成する。",
"length": "長さ",
"minimum_booking_notice": "最低頻度の通知",
"offset_toggle": "オフセット開始時間",
"offset_toggle_description": "オフセットの時間帯は指定された何分かまで予約者に表示されます",
"offset_start": "までオフセット",
"offset_start_description": "これにより例えば、{{ originalTime }}ではなく{{ adjustedTime }}に時間帯が予約者に表示されます",
"slot_interval": "時間帯の間隔",
"slot_interval_default": "イベントの長さを使用する (デフォルト)",
"delete_event_type": "イベントの種類を削除しますか?",
@ -861,7 +870,6 @@
"installed_one": "インストール済み",
"installed_other": "{{count}} 回インストールしました",
"verify_wallet": "ウォレットを確認する",
"connect_metamask": "メタマスクを接続する",
"create_events_on": "以下にイベントを作成する:",
"enterprise_license": "これは企業向けの機能です",
"enterprise_license_description": "この機能を有効にするには、{{consoleUrl}} コンソールでデプロイメントキーを入手して .env に CALCOM_LICENSE_KEY として追加してください。既にチームがライセンスを持っている場合は {{supportMail}} にお問い合わせください。",
@ -887,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} スケジュールが正常に更新されました",
"schedule_deleted_successfully": "スケジュールが正常に削除されました",
"default_schedule_name": "作業時間",
"member_default_schedule": "メンバーのデフォルトのスケジュール",
"new_schedule_heading": "空き状況のスケジュールを作成する",
"new_schedule_description": "空き状況のスケジュールを作成すると、各イベントタイプの空き状況を管理できます。空き状況のスケジュールは、イベントの複数のタイプに適用できます。",
"requires_ownership_of_a_token": "次のアドレスに属するトークンの所有権が必要となります:",
@ -903,6 +912,7 @@
"duplicate": "複製",
"offer_seats": "座席を提供",
"offer_seats_description": "予約可能な座席を設定します。これにより、ゲストおよびオプトイン予約は自動的に無効化されます。",
"seats_available_one": "空席",
"seats_available_other": "空席あり",
"number_of_seats": "1予約あたりの座席数",
"enter_number_of_seats": "座席数を入力",
@ -1037,7 +1047,7 @@
"event_cancelled_trigger": "イベントキャンセル時に",
"new_event_trigger": "新しいイベント予約時に",
"email_host_action": "ホストにメールを送信",
"sms_attendee_action": "出席者に SMS を送信",
"email_attendee_action": "メールを出席者に送信",
"sms_number_action": "特定の番号に SMS を送信",
"workflows": "ワークフロー",
"new_workflow_btn": "新しいワークフロー",
@ -1189,6 +1199,7 @@
"create_workflow": "ワークフローを作成",
"do_this": "これを実行する",
"turn_off": "オフにする",
"turn_on": "オンにする",
"settings_updated_successfully": "設定が正常に更新されました",
"error_updating_settings": "設定の更新中にエラーが発生しました",
"personal_cal_url": "私の個人 {{appName}} URL",
@ -1213,11 +1224,6 @@
"upload": "アップロード",
"add_profile_photo": "プロフィール写真を追加",
"web3": "Web3",
"rainbow_token_gated": "このイベントの種類は、トークンの所有者にのみに解放されています。",
"rainbow_connect_wallet_gate": "<1>{{name}}</1><3>{{symbol}}</3>)を所有している場合には、ウォレットを接続してください。",
"rainbow_insufficient_balance": "接続されているウォレットには十分な <1>{{symbol}}</1> がありません。",
"rainbow_sign_message_request": "ウォレットのメッセージリクエストに署名をしてください。",
"rainbow_signature_error": "ウォレットからの署名のリクエスト中にエラーが発生しました。",
"token_address": "トークンアドレス",
"blockchain": "ブロックチェーン",
"old_password": "古いパスワード",
@ -1245,6 +1251,7 @@
"calendars_description": "イベントの種類とカレンダーの連携方法を設定します",
"appearance_description": "予約画面の外観設定を管理します",
"conferencing_description": "お気に入りのビデオ会議アプリを追加し、会議で使用できます",
"add_conferencing_app": "会議アプリを追加",
"password_description": "アカウントのパスワードの設定を管理します",
"2fa_description": "アカウントのパスワードの設定を管理します",
"we_just_need_basic_info": "プロフィールを設定するための基本的な情報が必要です。",
@ -1279,7 +1286,6 @@
"download_responses_description": "CSV 形式ですべての回答をフォームにダウンロードします。",
"download": "ダウンロード",
"download_recording": "レコーディングをダウンロード",
"recording_from_your_recent_call": "Cal.com での最近の通話のレコーディングがダウンロード可能です",
"create_your_first_form": "最初のフォームを作成",
"create_your_first_form_description": "ルーティングフォームを使用すれば、絞り込みの質問を通して適切な人物やイベントの種類へとルーティングを行うことができます。",
"create_your_first_webhook": "最初のウェブフックを作成",
@ -1362,7 +1368,6 @@
"password_updated": "パスワードが更新されました!",
"pending_payment": "支払い待ち",
"pending_invites": "保留中の招待",
"confirmation_page_rainbow": "Ethereum や Polygon などのトークンや NFT を使用してイベントに参加しましょう。",
"not_on_cal": "{{appName}} にはいません",
"no_calendar_installed": "カレンダーがインストールされていません",
"no_calendar_installed_description": "まだどのカレンダーも接続していません",
@ -1476,8 +1481,6 @@
"find_the_best_person": "割り当てが可能な最適なユーザーを見つけて、チームで順番に分担します。",
"fixed_round_robin": "固定ラウンドロビン",
"add_one_fixed_attendee": "固定された出席者を 1 人追加し、複数の出席者についてラウンドロビン方式で出席スケジュールを決定します。",
"calcom_is_better_with_team": "Cal.com はチームでの使用に適しています",
"the_calcom_team": "Cal.com チーム",
"add_your_team_members": "イベントの種類にチームメンバーを追加します。一括スケジューリングで全員を参加させたり、ラウンドロビンスケジューリングで最適な人を設定したりすることができます。",
"booking_limit_reached": "このイベントタイプの予約上限に達しました",
"duration_limit_reached": "このイベントの種類の期間の上限に達しました",
@ -1496,7 +1499,6 @@
"navigate_installed_apps": "インストールされているアプリに移動",
"disabled_calendar": "他のカレンダーがインストールされている場合、新しい予約はそのカレンダーに追加されます。そうでない場合には、新しいカレンダーへと接続します。そのため、新しい予約を見逃すことはなくなります。",
"enable_apps": "アプリを有効にする",
"enable_apps_description": "ユーザーが Cal.com と統合可能なアプリを有効にします",
"purchase_license": "ライセンスを購入",
"already_have_key": "すでにキーを持っています:",
"already_have_key_suggestion": "ここに既存の CALCOM_LICENSE_KEY 環境変数をコピーしてください。",
@ -1619,6 +1621,7 @@
"email_user_cta": "招待を表示",
"email_no_user_invite_heading": "{{appName}} のチームに参加するよう招待されました",
"email_no_user_invite_subheading": "{{invitedBy}} は {{appName}} のチームに参加するようあなたを招待しました。{{appName}} は、イベント調整スケジューラーです。チームと延々とメールのやりとりをすることなくミーティングのスケジュール設定を行うことができます。",
"email_user_invite_subheading": "{{invitedBy}}があなたを{{appName}}の「{{teamName}}」に参加するよう招待しました。{{appName}}はイベント調整スケジューラーで、あなたとチームは延々とメールのやりとりをすることなく、ミーティングをスケジュール設定することができます。",
"email_no_user_invite_steps_intro": "いくつかの短い手順を踏むだけで、すぐにチームとの間のストレスフリーなスケジュール設定をお楽しみいただけます。",
"email_no_user_step_one": "ユーザー名を選択",
"email_no_user_step_two": "カレンダーアカウントを接続",
@ -1694,6 +1697,15 @@
"spot_popular_event_types_description": "どのイベントの種類が最もクリックされ、予約されているのかを確認します",
"no_responses_yet": "回答はまだありません",
"this_will_be_the_placeholder": "これがプレースホルダーになります",
"error_booking_event": "イベントを予約する際にエラーが発生しました。ページを再読み込みして、もう一度お試しください",
"timeslot_missing_title": "時間帯を選んでいません",
"timeslot_missing_description": "イベントを予約するには時間帯を選んでください。",
"timeslot_missing_cta": "時間帯を選ぶ",
"switch_monthly": "月ごとの表示に切り替える",
"switch_weekly": "週ごとの表示に切り替える",
"switch_multiday": "日ごとの表示に切り替える",
"num_locations": "{{num}}件の場所のオプション",
"select_on_next_step": "次のステップについて選ぶ",
"this_meeting_has_not_started_yet": "このミーティングはまだ開始されていません",
"this_app_requires_connected_account": "{{appName}} には接続された {{dependencyName}} アカウントが必要です",
"connect_app": "{{dependencyName}} に接続する",
@ -1723,6 +1735,7 @@
"locked_apps_description": "メンバーは有効なアプリを確認できますが、アプリの設定を編集することはできません",
"locked_webhooks_description": "メンバーは有効なウェブフックを確認できますが、ウェブフックの設定を編集することはできません",
"locked_workflows_description": "メンバーは有効なワークフローを確認できますが、ワークフローの設定を編集することはできません",
"locked_by_admin": "チームの管理者によりロックされています",
"app_not_connected": "{{appName}} のアカウントに接続していません。",
"connect_now": "今すぐ接続",
"managed_event_dialog_confirm_button_one": "{{count}} 人のメンバーを置き換えて通知する",
@ -1780,5 +1793,34 @@
"seats_and_no_show_fee_error": "現在、座席の有効化と不参加費用の請求はできません",
"complete_your_booking": "予約を完了する",
"complete_your_booking_subject": "次の予約を完了する: {{date}} の {{title}}",
"email_invite_team": "{{email}} が招待されました"
"confirm_your_details": "詳細情報を確認",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "出席者に{{amount, currency}}を請求しようとしています。続けますか?",
"charge_attendee": "出席者に{{amount, currency}}を請求",
"payment_app_commission": "支払い(取引ごとに {{paymentFeePercentage}}% + {{fee, currency}} の手数料)が必要です",
"email_invite_team": "{{email}} が招待されました",
"email_invite_team_bulk": "{{userCount}} 人のユーザーが招待されました",
"error_collecting_card": "カードの収集中にエラーが発生しました",
"image_size_limit_exceed": "アップロードする画像のサイズは 5 MB 以下である必要があります",
"inline_embed": "インラインに埋め込む",
"load_inline_content": "あなたのイベントタイプを他のウェブサイトコンテンツにインラインで直接読み込む",
"floating_pop_up_button": "フローティングポップアップボタン",
"floating_button_trigger_modal": "あなたのイベントタイプのモーダルをトリガーするフローティングボタンをサイトに設置",
"pop_up_element_click": "要素のクリックでポップアップ",
"open_dialog_with_element_click": "誰かが要素をクリックしたら Cal ダイアログをオープン",
"need_help_embedding": "ヘルプが必要ですか? Cal を Wix や Squarespace、WordPress に埋め込むためのガイドを見て、よくある質問を確認したり、高度な埋め込みオプションを検討してください。",
"book_my_cal": "Cal を予約",
"invite_as": "として招待",
"form_updated_successfully": "フォームは正常に更新されました。",
"email_not_cal_member_cta": "チームに参加",
"disable_attendees_confirmation_emails": "出席者にデフォルトの確認メールを送らない",
"disable_attendees_confirmation_emails_description": "このイベントタイプでは少なくとも1つのワークフローがアクティブで、イベントが予約されると出席者にメールが送られます。",
"disable_host_confirmation_emails": "ホストにデフォルトの確認メールを送らない",
"disable_host_confirmation_emails_description": "このイベントタイプでは少なくとも1つのワークフローがアクティブで、イベントが予約されるとホストにメールが送られます。",
"add_an_override": "上書きを追加",
"import_from_google_workspace": "Google Workspace からユーザーをインポート",
"connect_google_workspace": "Google Workspace を接続",
"google_workspace_admin_tooltip": "この機能を使うには Workspace の管理者になる必要があります",
"first_event_type_webhook_description": "このイベントタイプのための最初のウェブフックを作成",
"create_for": "のために作成"
}

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} 이벤트 타입이 성공적으로 생성되었습니다.",
"event_type_updated_successfully": "{{eventTypeTitle}} 이벤트 타입이 성공적으로 업데이트되었습니다.",
"event_type_deleted_successfully": "이벤트 타입이 성공적으로 삭제되었습니다.",
"web3_metamask_added": "메타마스크가 성공적으로 추가되었습니다",
"web3_metamask_disconnected": "메타마스크가 성공적으로 연결 해제되었습니다",
"hours": "시간",
"your_email": "이메일 주소",
"change_avatar": "아바타 변경하기",
@ -872,7 +870,6 @@
"installed_one": "설치됨",
"installed_other": "{{count}}개 설치됨",
"verify_wallet": "지갑 인증",
"connect_metamask": "메타마스크 연결",
"create_events_on": "이벤트 생성일:",
"enterprise_license": "엔터프라이즈 기능입니다",
"enterprise_license_description": "이 기능을 활성화하려면 {{consoleUrl}} 콘솔에서 배포 키를 가져와 .env에 CALCOM_LICENSE_KEY로 추가하세요. 팀에 이미 라이선스가 있는 경우 {{supportMail}}에 문의하여 도움을 받으세요.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} 일정이 성공적으로 업데이트되었습니다.",
"schedule_deleted_successfully": "일정이 성공적으로 삭제되었습니다",
"default_schedule_name": "작업 시간",
"member_default_schedule": "회원의 기본 일정",
"new_schedule_heading": "가용성 일정 생성",
"new_schedule_description": "가용성 일정을 생성하면 이벤트 유형 전반에 걸쳐 가용성을 관리할 수 있습니다. 하나 이상의 이벤트 유형에 적용할 수 있습니다.",
"requires_ownership_of_a_token": "다음 주소에 속한 토큰의 소유권이 필요합니다:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "새 이벤트 예약 시",
"email_host_action": "호스트에게 이메일 발송",
"email_attendee_action": "참석자들에게 이메일 전송",
"sms_attendee_action": "참석자에게 SMS 발송",
"sms_number_action": "특정 번호로 SMS 발송",
"workflows": "워크플로",
"new_workflow_btn": "새 워크플로",
@ -1227,11 +1224,6 @@
"upload": "업로드",
"add_profile_photo": "프로필 사진 추가",
"web3": "Web3",
"rainbow_token_gated": "이 이벤트 유형은 토큰 게이트식입니다.",
"rainbow_connect_wallet_gate": "<1>{{name}}</1> 소유 시 사용자 지갑을 연결합니다(<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "연결된 지갑에 <1>{{symbol}}</1>이(가) 부족합니다.",
"rainbow_sign_message_request": "지갑에서 메시지 요청에 서명합니다.",
"rainbow_signature_error": "지갑에서 서명을 요청하는 중 오류가 발생했습니다.",
"token_address": "토큰 주소",
"blockchain": "블록체인",
"old_password": "이전 비밀번호",
@ -1294,7 +1286,6 @@
"download_responses_description": "양식에 대한 모든 응답을 CSV 형식으로 다운로드합니다.",
"download": "다운로드",
"download_recording": "기록 다운로드",
"recording_from_your_recent_call": "Cal.com에서 이루어진 최근 통화 녹음을 지금 바로 다운로드할 수 있습니다",
"create_your_first_form": "첫 양식 작성",
"create_your_first_form_description": "라우팅 양식을 사용하면 적격성 질문을 올리고 올바른 사람 또는 이벤트 유형으로 라우팅할 수 있습니다.",
"create_your_first_webhook": "첫 웹훅 생성",
@ -1377,7 +1368,6 @@
"password_updated": "비밀번호가 업데이트되었습니다!",
"pending_payment": "진행 중인 결제",
"pending_invites": "보류 중인 초대",
"confirmation_page_rainbow": "이더리움, 폴리곤 등의 토큰 또는 NFT를 사용하여 이벤트를 토큰 게이트합니다.",
"not_on_cal": "{{appName}}에 없음",
"no_calendar_installed": "설치된 캘린더 없음",
"no_calendar_installed_description": "아직 연결된 캘린더가 없습니다",
@ -1491,8 +1481,6 @@
"find_the_best_person": "가능한 최상의 인원을 찾고 팀원을 차례대로 배정합니다.",
"fixed_round_robin": "고정 라운드 로빈",
"add_one_fixed_attendee": "한 명의 고정 참석자를 추가하고 여러 참석자를 라운드 로빈 방식으로 순환합니다.",
"calcom_is_better_with_team": "Cal.com이 팀 기능으로 더욱 좋아졌습니다",
"the_calcom_team": "Cal.com 팀 드림",
"add_your_team_members": "이벤트 타입에 팀원을 추가하세요. 집단 일정 관리를 사용해 모든 사람을 포함하거나 라운드 로빈 일정 관리로 가장 적합한 인원을 찾으세요.",
"booking_limit_reached": "이 이벤트 타입에 대한 예약 한도에 도달했습니다",
"duration_limit_reached": "이 이벤트 타입에 대한 기간 한도에 도달했습니다",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "설치된 앱으로 이동",
"disabled_calendar": "다른 캘린더를 설치한 경우 새 예약이 여기에 추가됩니다. 그렇지 않은 경우 새로운 예약을 놓치지 않도록 새 캘린더를 연결하세요.",
"enable_apps": "앱 활성화",
"enable_apps_description": "사용자가 Cal.com과 통합할 수 있는 앱 활성화",
"purchase_license": "라이선스 구매",
"already_have_key": "이미 키가 있습니다:",
"already_have_key_suggestion": "기존 CALCOM_LICENSE_KEY 환경 변수를 여기에 복사하십시오.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} evenement met succes aangemaakt",
"event_type_updated_successfully": "Evenement is bijgewerkt",
"event_type_deleted_successfully": "Evenement is verwijderd",
"web3_metamask_added": "Metamasker toegevoegd",
"web3_metamask_disconnected": "Verbindig met metamasker verbroken",
"hours": "Uren",
"your_email": "Uw E-mailadres",
"change_avatar": "Wijzig avatar",
@ -872,7 +870,6 @@
"installed_one": "Geïnstalleerd",
"installed_other": "{{count}} keer geïnstalleerd",
"verify_wallet": "Wallet verifiëren",
"connect_metamask": "Metamasker verbinden",
"create_events_on": "Maak gebeurtenissen aan in de",
"enterprise_license": "Dit is een bedrijfsfunctie",
"enterprise_license_description": "Om deze functie in te schakelen, krijgt u een implementatiesleutel op de {{consoleUrl}}-console en voegt u deze toe aan uw .env als CALCOM_LICENSE_KEY. Als uw team al een licentie heeft, neem dan contact op met {{supportMail}} voor hulp.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Beschikbaarheid bijgewerkt",
"schedule_deleted_successfully": "Planning verwijderd",
"default_schedule_name": "Werktijden",
"member_default_schedule": "Standaardschema lid",
"new_schedule_heading": "Beschikbaarheidsschema aanmaken",
"new_schedule_description": "Door beschikbaarheidsschema's te maken kunt u de beschikbaarheid beheren voor verschillende gebeurteenistypes. Ze kunnen worden toegepast op één of meer gebeurtenistypes.",
"requires_ownership_of_a_token": "Vereist eigendom van een token dat aan het volgende adres toebehoort:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "wanneer een nieuwe gebeurtenis is geboekt",
"email_host_action": "e-mail naar organisator versturen",
"email_attendee_action": "e-mail naar deelnemers versturen",
"sms_attendee_action": "sms naar deelnemer versturen",
"sms_number_action": "sms naar een specifiek nummer sturen",
"workflows": "Werkstromen",
"new_workflow_btn": "Nieuwe werkstroom",
@ -1227,11 +1224,6 @@
"upload": "Uploaden",
"add_profile_photo": "Profielfoto toevoegen",
"web3": "Web3",
"rainbow_token_gated": "Dit type gebeurtenis vereist een token.",
"rainbow_connect_wallet_gate": "Koppel uw wallet als u in het bezit bent van <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Uw gekoppelde wallet bevat niet genoeg <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Onderteken het berichtverzoek in uw wallet.",
"rainbow_signature_error": "Fout bij het aanvragen van ondertekening in uw wallet.",
"token_address": "Tokenadres",
"blockchain": "Blockchain",
"old_password": "Oude wachtwoord",
@ -1294,7 +1286,6 @@
"download_responses_description": "Download alle reacties op uw formulier in CSV-indeling.",
"download": "Downloaden",
"download_recording": "Opname downloaden",
"recording_from_your_recent_call": "Een opname van uw recente gesprek op Cal.com is klaar om te downloaden",
"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",
@ -1377,7 +1368,6 @@
"password_updated": "Wachtwoord bijgewerkt!",
"pending_payment": "In afwachting van betaling",
"pending_invites": "Openstaande uitnodigingen",
"confirmation_page_rainbow": "Scherm uw gebeurtenis af met tokens of NFT's op Ethereum, Polygon en meer.",
"not_on_cal": "Niet op {{appName}}",
"no_calendar_installed": "Geen agenda geïnstalleerd",
"no_calendar_installed_description": "U heeft nog geen agenda's gekoppeld",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Zoek de beste beschikbare persoon en blader door uw team.",
"fixed_round_robin": "Vaste round-robin",
"add_one_fixed_attendee": "Voeg één vaste deelnemer en round-robin toe via een aantal deelnemers.",
"calcom_is_better_with_team": "Cal.com is beter met teams",
"the_calcom_team": "Het Cal.com-team",
"add_your_team_members": "Voeg uw teamleden toe aan uw gebeurtenistypes. Gebruik collectieve planning om iedereen op te nemen of zoek de meest geschikte persoon met round robin-planning.",
"booking_limit_reached": "Boekingslimiet voor dit gebeurtenistype is bereikt",
"duration_limit_reached": "Duurlimiet voor dit gebeurtenistype is bereikt",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Naar geïnstalleerde apps",
"disabled_calendar": "Als u een andere agenda heeft geïnstalleerd, worden nieuwe boekingen daaraan toegevoegd. Zo niet, koppel dan een nieuwe agenda zodat u geen nieuwe boekingen mist.",
"enable_apps": "Apps inschakelen",
"enable_apps_description": "Schakel apps in die gebruikers kunnen integreren met Cal.com",
"purchase_license": "Koop een licentie",
"already_have_key": "Ik heb al een code:",
"already_have_key_suggestion": "Kopieer hier uw bestaande CALCOM_LICENSE_KEY-omgevingsvariabele.",

View File

@ -591,8 +591,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} hendelsestype opprettet",
"event_type_updated_successfully": "{{eventTypeTitle}} hendelsestype ble oppdatert",
"event_type_deleted_successfully": "Hendelsestypen ble slettet",
"web3_metamask_added": "Metamask ble lagt til",
"web3_metamask_disconnected": "Metamask'en ble koblet fra",
"hours": "Timer",
"your_email": "Din E-post",
"change_avatar": "Endre Avatar",
@ -819,7 +817,6 @@
"installed_one": "Installert",
"installed_other": "{{count}} er installert",
"verify_wallet": "Verifiser Lommebok",
"connect_metamask": "Koble til Metamask",
"create_events_on": "Opprett hendelser på",
"enterprise_license": "Dette er en bedriftsfunksjon",
"enterprise_license_description": "For å aktivere denne funksjonen, skaff deg en distribusjonsnøkkel på {{consoleUrl}}-konsollen og legg den til i .env som CALCOM_LICENSE_KEY. Hvis teamet ditt allerede har en lisens, vennligst kontakt {{supportMail}} for å få hjelp.",
@ -989,7 +986,6 @@
"event_cancelled_trigger": "når hendelsen er avlyst",
"new_event_trigger": "når en ny hendelse er booket",
"email_host_action": "send e-post til vert",
"sms_attendee_action": "send SMS til deltakeren",
"sms_number_action": "send SMS til et bestemt nummer",
"workflows": "Arbeidsflyter",
"new_workflow_btn": "Ny Arbeidsflyt",
@ -1160,11 +1156,6 @@
"upload": "Last opp",
"add_profile_photo": "Legg til profilbilde",
"web3": "Web3",
"rainbow_token_gated": "Denne hendelsestypen er token-gated.",
"rainbow_connect_wallet_gate": "Koble til lommeboken din hvis du eier <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Den tilkoblede lommeboken din inneholder ikke nok <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Signer meldingsforespørselen i lommeboken din.",
"rainbow_signature_error": "Feil ved forespørsel om signatur fra lommeboken.",
"token_address": "Token Adresse",
"blockchain": "Blockchain",
"old_password": "Gammelt passord",
@ -1291,7 +1282,6 @@
"password_reset_leading": "Hvis du ikke mottar en e-post snart, sjekk at e-postadressen du skrev inn er riktig, sjekk søppelpost-mappen eller ta kontakt med kundeservice hvis problemet vedvarer.",
"password_updated": "Passord oppdatert!",
"pending_payment": "Venter på betaling",
"confirmation_page_rainbow": "Token vokter hendelsen din med tokens eller NFT-er på Ethereum, Polygon og mer.",
"not_on_cal": "Ikke på {{appName}}",
"no_calendar_installed": "Ingen kalender installert",
"no_calendar_installed_description": "Du har ikke koblet til noen av kalenderne dine ennå",
@ -1401,14 +1391,12 @@
"find_the_best_person": "Finn den beste personen tilgjengelig og bla gjennom teamet ditt.",
"fixed_round_robin": "Fast round robin",
"add_one_fixed_attendee": "Legg til én fast deltaker og round robin gjennom et antall deltakere.",
"calcom_is_better_with_team": "Cal.com er bedre med team",
"add_your_team_members": "Legg til team-medlemmene dine i hendelsestypene dine. Bruk kollektiv planlegging av tidspunkt for å inkludere alle eller finn den mest passende personen med round robin-planlegging.",
"booking_limit_reached": "Booking-grensen for denne hendelsestypen er nådd",
"admin_has_disabled": "En administrator har deaktivert {{appName}}",
"app_disabled_subject": "{{appName}} har blitt deaktivert",
"navigate_installed_apps": "Gå til installerte apper",
"enable_apps": "Aktiver Apper",
"enable_apps_description": "Aktiver apper som brukere kan integrere med Cal.com",
"app_is_enabled": "{{appName}} er aktivert",
"app_is_disabled": "{{appName}} er deaktivert",
"disable_app": "Deaktiver App",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "Utworzono {{eventTypeTitle}} typ wydarzenia pomyślnie",
"event_type_updated_successfully": "{{eventTypeTitle}} typ wydarzenia został pomyślnie zaktualizowany",
"event_type_deleted_successfully": "Typ wydarzenia usunięty pomyślnie",
"web3_metamask_added": "Metamask został pomyślnie dodany",
"web3_metamask_disconnected": "Metamask został pomyślnie rozłączony",
"hours": "Godziny",
"your_email": "Twój e-mail",
"change_avatar": "Zmień Awatar",
@ -872,7 +870,6 @@
"installed_one": "Zainstalowane",
"installed_other": "Zainstalowano {{count}}",
"verify_wallet": "Zweryfikuj portfel",
"connect_metamask": "Podłącz Metamask",
"create_events_on": "Utwórz wydarzenia w",
"enterprise_license": "To funkcja dla przedsiębiorstw",
"enterprise_license_description": "Aby włączyć tę funkcję, uzyskaj klucz wdrożenia na konsoli {{consoleUrl}} i dodaj go do swojego pliku .env jako CALCOM_LICENSE_KEY. Jeśli Twój zespół ma już licencję, napisz na adres {{supportMail}}, aby uzyskać pomoc.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Pomyślnie zaktualizowano harmonogram {{scheduleName}}",
"schedule_deleted_successfully": "Typ wydarzenia usunięty pomyślnie",
"default_schedule_name": "Godziny pracy",
"member_default_schedule": "Domyślny harmonogram członka",
"new_schedule_heading": "Utwórz harmonogram dostępności",
"new_schedule_description": "Tworzenie harmonogramów dostępności pozwala zarządzać dostępnością w różnych typach zdarzeń. Można je zastosować do jednego lub kilku typów zdarzeń.",
"requires_ownership_of_a_token": "Wymaga posiadania tokena należącego do następującego adresu:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "gdy nowe wydarzenie zostanie zarezerwowane",
"email_host_action": "wyślij wiadomość e-mail do hosta",
"email_attendee_action": "wyślij wiadomość e-mail do uczestników",
"sms_attendee_action": "wyślij SMS do uczestnika",
"sms_number_action": "wyślij wiadomość SMS na określony numer",
"workflows": "Przepływy pracy",
"new_workflow_btn": "Nowy przepływ pracy",
@ -1227,11 +1224,6 @@
"upload": "Prześlij",
"add_profile_photo": "Dodaj zdjęcie profilowe",
"web3": "Web3",
"rainbow_token_gated": "Ten typ wydarzenia jest dostępny tylko dla posiadaczy tokenów.",
"rainbow_connect_wallet_gate": "Połącz swój portfel, jeśli posiadasz <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Połączony portfel nie zawiera wystarczającej ilości <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Podpisz prośbę o wiadomość w Twoim portfelu.",
"rainbow_signature_error": "Podczas żądania podpisu z Twojego portfela wystąpił błąd.",
"token_address": "Adres tokena",
"blockchain": "Blockchain",
"old_password": "Stare hasło",
@ -1294,7 +1286,6 @@
"download_responses_description": "Pobierz wszystkie odpowiedzi do formularza w formacie CSV.",
"download": "Pobierz",
"download_recording": "Pobierz nagranie",
"recording_from_your_recent_call": "Nagranie z ostatniego połączenia w witrynie Cal.com jest gotowe do pobrania",
"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",
@ -1377,7 +1368,6 @@
"password_updated": "Hasło zostało zaktualizowane!",
"pending_payment": "Płatność w toku",
"pending_invites": "Oczekujące zaproszenia",
"confirmation_page_rainbow": "Udostępnij Twoje wydarzenie tylko posiadaczom tokenów lub NFT w blockchainach Ethereum, Polygon i innych.",
"not_on_cal": "Niedostępne na {{appName}}",
"no_calendar_installed": "Brak zainstalowanego kalendarza",
"no_calendar_installed_description": "Nie połączono jeszcze żadnego kalendarza.",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Znajdź najlepszą dostępną osobę i przejrzyj listę członków swojego zespołu.",
"fixed_round_robin": "Stały algorytm karuzelowy",
"add_one_fixed_attendee": "Dodaj jednego stałego uczestnika i przeglądaj uczestników zgodnie z algorytmem karuzelowym",
"calcom_is_better_with_team": "Usługa Cal.com jest lepsza z zespołami",
"the_calcom_team": "Zespół Cal.com",
"add_your_team_members": "Dodaj członków zespołu do typów wydarzeń. Użyj zbiorowego ustalania harmonogramu, aby uwzględnić wszystkich lub znajdź najodpowiedniejszą osobę za pomocą algorytmu karuzelowego.",
"booking_limit_reached": "Osiągnięto limit rezerwacji tego typu wydarzenia",
"duration_limit_reached": "Osiągnięto limit czasu trwania tego typu wydarzenia",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Przejdź do zainstalowanych aplikacji",
"disabled_calendar": "Jeśli masz zainstalowany inny kalendarz, nowe rezerwacje zostaną dodane do niego. Jeśli nie, podłącz nowy kalendarz, aby nie przegapić żadnych nowych rezerwacji.",
"enable_apps": "Włącz aplikacje",
"enable_apps_description": "Włącz aplikacje, które użytkownicy mogą zintegrować z usługą Cal.com",
"purchase_license": "Kup licencję",
"already_have_key": "Mam już klucz:",
"already_have_key_suggestion": "Skopiuj istniejącą zmienną środowiskową CALCOM_LICENSE_KEY tutaj.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} evento criado com sucesso",
"event_type_updated_successfully": "Tipo de evento atualizado com sucesso",
"event_type_deleted_successfully": "Tipo de evento removido com sucesso",
"web3_metamask_added": "Metamask adicionado com êxito",
"web3_metamask_disconnected": "Metamask desconectado com êxito",
"hours": "Horas",
"your_email": "Seu Email",
"change_avatar": "Alterar Avatar",
@ -872,7 +870,6 @@
"installed_one": "Instalado",
"installed_other": "{{count}} instalado(s)",
"verify_wallet": "Verificar carteira",
"connect_metamask": "Conecte o Metamask",
"create_events_on": "Criar eventos em",
"enterprise_license": "Este não é um recurso corporativo",
"enterprise_license_description": "Para ativar este recurso, obtenha uma chave de desenvolvimento no console {{consoleUrl}} e adicione ao seu .env como CALCOM_LICENSE_KEY. Caso sua equipe já tenha uma licença, entre em contato com {{supportMail}} para obter ajuda.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Agenda {{scheduleName}} criada com êxito",
"schedule_deleted_successfully": "Agenda removida com êxito",
"default_schedule_name": "Horas de trabalho",
"member_default_schedule": "Agenda padrão do membro",
"new_schedule_heading": "Criar agenda de disponibilidade",
"new_schedule_description": "A criação de agendas de disponibilidade permite gerenciar a disponibilidade em tipos de evento. Podem ser aplicadas a um ou mais tipos de evento.",
"requires_ownership_of_a_token": "Requer que o usuário que agendar tenha um token que pertence ao endereço a seguir:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "quando um novo evento for reservado",
"email_host_action": "enviar e-mail para o host",
"email_attendee_action": "enviar e-mail aos participantes",
"sms_attendee_action": "enviar SMS para participante",
"sms_number_action": "enviar SMS para um número específico",
"workflows": "Fluxos de trabalho",
"new_workflow_btn": "Novo fluxo de trabalho",
@ -1227,11 +1224,6 @@
"upload": "Enviar",
"add_profile_photo": "Adicionar foto do perfil",
"web3": "Web3",
"rainbow_token_gated": "Este tipo de evento é o token escolhido.",
"rainbow_connect_wallet_gate": "Conectar sua carteira se você tiver <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Sua carteira conectada não contém <1>{{symbol}}</1> suficiente.",
"rainbow_sign_message_request": "Assine a solicitação de mensagem na sua carteira.",
"rainbow_signature_error": "Erro ao solicitar a assinatura da sua carteira.",
"token_address": "Endereço do Token",
"blockchain": "Blockchain",
"old_password": "Senha antiga",
@ -1294,7 +1286,6 @@
"download_responses_description": "Baixe todas as respostas para seu formulário em formato CSV.",
"download": "Baixar",
"download_recording": "Baixar gravação",
"recording_from_your_recent_call": "Uma gravação da sua chamada recente no Cal.com está pronta para ser baixada",
"create_your_first_form": "Criar seu primeiro formulário",
"create_your_first_form_description": "Com os Formulários de roteamento, você pode fazer perguntas e encaminhar para a pessoa correta ou o tipo de evento.",
"create_your_first_webhook": "Criar seu primeiro Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "Senha atualizada!",
"pending_payment": "Pagamento pendente",
"pending_invites": "Convites pendentes",
"confirmation_page_rainbow": "Proteja seu evento com tokens ou NFTs no Ethereum, Polygon e muito mais.",
"not_on_cal": "Não está na {{appName}}",
"no_calendar_installed": "Nenhum calendário instalado",
"no_calendar_installed_description": "Você ainda não conectou nenhum de seus calendários",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Encontre a pessoa mais indicada disponível e percorra sua equipe.",
"fixed_round_robin": "Round-robin fixo",
"add_one_fixed_attendee": "Adicione um participante fixo e utilize o round-robin em uma determinada quantidade de participantes.",
"calcom_is_better_with_team": "Cal.com é melhor com equipes",
"the_calcom_team": "Equipe do Cal.com",
"add_your_team_members": "Adicione membros da sua equipe aos seus tipos de evento. Use programação coletiva para incluir todos ou encontre a pessoa mais apropriada pela programação com round-robin.",
"booking_limit_reached": "O limite de reseva para este tipo de evento foi atingido",
"duration_limit_reached": "O limite de duração para este tipo de evento foi atingido",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Ir para aplicativos instalados",
"disabled_calendar": "Se você tiver outro calendário instalado, novas reservas serão adicionadas a ele. Caso contrário, conecte um novo calendário para não perder novas reservas.",
"enable_apps": "Ativar aplicativos",
"enable_apps_description": "Ative aplicativos que os usuários podem integrar com o Cal.com",
"purchase_license": "Comprar uma licença",
"already_have_key": "Já tenho uma chave:",
"already_have_key_suggestion": "Copie a variável de ambiente CALCOM_LICENSE_KEY existente aqui.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "Tipo de evento {{eventTypeTitle}} criado com sucesso",
"event_type_updated_successfully": "Tipo de evento atualizado com sucesso",
"event_type_deleted_successfully": "Tipo de evento eliminado com sucesso",
"web3_metamask_added": "Metamask adicionada com sucesso",
"web3_metamask_disconnected": "Metamask desligada com sucesso",
"hours": "Horas",
"your_email": "Seu Email",
"change_avatar": "Alterar Avatar",
@ -872,7 +870,6 @@
"installed_one": "Instalado",
"installed_other": "{{count}} instaladas",
"verify_wallet": "Verificar carteira",
"connect_metamask": "Ligar Metamask",
"create_events_on": "Criar eventos em:",
"enterprise_license": "Esta é uma funcionalidade empresarial",
"enterprise_license_description": "Para ativar esta funcionalidade, obtenha uma chave de instalação na consola {{consoleUrl}} e adicione-a ao seu .env como CALCOM_LICENSE_KEY. Se a sua equipa já tem uma licença, entre em contacto com {{supportMail}} para obter ajuda.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Horário {{scheduleName}} actualizado com sucesso",
"schedule_deleted_successfully": "Horário eliminado com sucesso",
"default_schedule_name": "Horário de trabalho",
"member_default_schedule": "Agenda predefinida do membro",
"new_schedule_heading": "Criar um horário de disponibilidade",
"new_schedule_description": "Criar horários de disponibilidade permite-lhe gerir a disponibilidade de todos os tipos de eventos. Podem ser aplicados a um ou mais tipos de eventos.",
"requires_ownership_of_a_token": "Requer a propriedade de um token pertencente ao seguinte endereço:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "quando um novo evento for reservado",
"email_host_action": "enviar email ao anfitrião",
"email_attendee_action": "enviar e-mail aos participantes",
"sms_attendee_action": "enviar SMS ao participante",
"sms_number_action": "enviar SMS para um número específico",
"workflows": "Fluxos de trabalho",
"new_workflow_btn": "Novo fluxo de trabalho",
@ -1227,11 +1224,6 @@
"upload": "Carregar",
"add_profile_photo": "Adicionar imagem de perfil",
"web3": "Web3",
"rainbow_token_gated": "Este tipo de evento é protegido por token.",
"rainbow_connect_wallet_gate": "Associe a sua carteira se possuir <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "A sua carteira associada não contém <1>{{symbol}}</1> suficientes.",
"rainbow_sign_message_request": "Assine o pedido de mensagem na sua carteira.",
"rainbow_signature_error": "Erro ao solicitar a assinatura da sua carteira.",
"token_address": "Endereço do Token",
"blockchain": "Blockchain",
"old_password": "Palavra-passe antiga",
@ -1294,7 +1286,6 @@
"download_responses_description": "Descarregue todas as respostas ao seu formulário em formato CSV.",
"download": "Descarregar",
"download_recording": "Transferir gravação",
"recording_from_your_recent_call": "Uma gravação da sua chamada recente no Cal.com está pronta para ser transferida",
"create_your_first_form": "Crie o seu primeiro formulário",
"create_your_first_form_description": "Com os Formulários de encaminhamento, pode fazer questões qualitativas e encaminhar para a pessoa ou o tipo de evento correto.",
"create_your_first_webhook": "Crie o seu primeiro Webhook",
@ -1340,6 +1331,7 @@
"exchange_version_2013_SP1": "2013 SP1",
"exchange_version_2015": "2015",
"exchange_version_2016": "2016",
"routing_forms_description": "Crie formulários para direcionar os participantes para os destinos corretos",
"routing_forms_send_email_owner": "Enviar e-mail ao proprietário",
"routing_forms_send_email_owner_description": "Envia um e-mail ao proprietário quando o formulário for submetido",
"add_new_form": "Adicionar novo formulário",
@ -1376,7 +1368,6 @@
"password_updated": "Palavra-passe atualizada!",
"pending_payment": "Pagamento pendente",
"pending_invites": "Convites pendentes",
"confirmation_page_rainbow": "Controle o acesso ao seu evento com tokens ou NFT na Ethereum, Polygon e muito mais.",
"not_on_cal": "Não existe em {{appName}}",
"no_calendar_installed": "Nenhum calendário instalado",
"no_calendar_installed_description": "Ainda não associou nenhum dos seus calendários",
@ -1490,8 +1481,6 @@
"find_the_best_person": "Encontre a melhor pessoa disponível e faça um ciclo pela sua equipa.",
"fixed_round_robin": "Distribuição equilibrada fixa",
"add_one_fixed_attendee": "Adicione um participante fixo e distribua de forma equilibrada a partir de um número de participantes.",
"calcom_is_better_with_team": "Cal.com funciona melhor com equipas",
"the_calcom_team": "A equipa Cal.com",
"add_your_team_members": "Adicione os membros da sua equipa aos seus tipos de eventos. Utilize o agendamento coletivo para incluir todos os membros ou encontre a pessoa mais adequada com o agendamento baseado numa distribuição equilibrada.",
"booking_limit_reached": "O limite de reservas para este tipo de evento foi atingido",
"duration_limit_reached": "O limite de duração para este tipo de evento foi atingido",
@ -1510,7 +1499,6 @@
"navigate_installed_apps": "Ir para as aplicações instaladas",
"disabled_calendar": "Se tiver outro calendário instalado, as novas reservas serão adicionadas ao mesmo. Se não for o caso, deve associar um novo calendário para garantir que não perde novas reservas.",
"enable_apps": "Ativar aplicações",
"enable_apps_description": "Ativar aplicações que os utilizadores podem integrar com Cal.com",
"purchase_license": "Adquira uma Licença",
"already_have_key": "Eu já tenho uma chave:",
"already_have_key_suggestion": "Por favor, copie a sua variável de ambiente CALCOM_LICENSE_KEY existente aqui.",

View File

@ -26,6 +26,8 @@
"rejection_confirmation": "Respingeți rezervarea",
"manage_this_event": "Gestionați acest eveniment",
"invite_team_member": "Invitați un membru al echipei",
"invite_team_individual_segment": "Invitați o persoană",
"invite_team_bulk_segment": "Import în masă",
"invite_team_notifcation_badge": "Inv.",
"your_event_has_been_scheduled": "Evenimentul a fost programat",
"your_event_has_been_scheduled_recurring": "Evenimentul dvs. recurent a fost programat",
@ -222,6 +224,7 @@
"go_back_login": "Mergi înapoi la pagina de autentificare",
"error_during_login": "A apărut o eroare la autentificare. Mergi înapoi la ecranul de autentificare și încearcă din nou.",
"request_password_reset": "Trimitere e-mail de resetare",
"send_invite": "Trimiteți invitația",
"forgot_password": "Ați uitat parola?",
"forgot": "Ai uitat?",
"done": "Adoptat",
@ -237,6 +240,8 @@
"set_availability": "Setează-ți disponibilitatea",
"continue_without_calendar": "Continuă fără calendar",
"connect_your_calendar": "Conectează-ți calendarul",
"connect_your_video_app": "Conectați-vă aplicațiile video preferate",
"connect_your_video_app_instructions": "Conectați aplicațiile video pentru a le utiliza la tipurile dvs. de evenimente.",
"connect_your_calendar_instructions": "Conectați calendarul pentru a verifica automat orele ocupate și evenimentele noi așa cum sunt programate.",
"set_up_later": "Configurați mai târziu",
"current_time": "Ora curentă",
@ -366,6 +371,7 @@
"create_webhook": "Creează Webhook",
"booking_cancelled": "Rezervare anulată",
"booking_rescheduled": "Rezervare reprogramată",
"recording_ready": "Link de descărcare înregistrare pregătit",
"booking_created": "Rezervare creată",
"meeting_ended": "Ședință încheiată",
"form_submitted": "Formular trimis",
@ -464,6 +470,7 @@
"friday": "Vineri",
"saturday": "Sâmbătă",
"sunday": "Duminică",
"all_booked_today": "Totul este rezervat.",
"slots_load_fail": "Nu s-au putut încărca intervalele de timp disponibile.",
"additional_guests": "Adăugați vizitatori",
"your_name": "Numele tău",
@ -623,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} tip de eveniment creat cu succes",
"event_type_updated_successfully": "{{eventTypeTitle}} tip de eveniment actualizat cu succes",
"event_type_deleted_successfully": "Tipul de eveniment șters cu succes",
"web3_metamask_added": "Metamask adăugat cu succes",
"web3_metamask_disconnected": "Metamask deconectat cu succes",
"hours": "Ore",
"your_email": "E-mailul tău",
"change_avatar": "Schimbă avatarul",
@ -751,6 +756,10 @@
"new_event_type_to_book_description": "Creaţi un nou tip de eveniment cu care oamenii să poată rezerva orare.",
"length": "Durata",
"minimum_booking_notice": "Aviz minim de rezervare",
"offset_toggle": "Decalare ore de început",
"offset_toggle_description": "Decalați cu un număr specificat de minute intervalele de timp afișate persoanelor care rezervă",
"offset_start": "Decalați cu",
"offset_start_description": "de ex., aceasta va afișa intervalele de timp persoanelor care rezervă ca fiind {{ adjustedTime }} în loc de {{ originalTime }}",
"slot_interval": "Intervale de timp",
"slot_interval_default": "Folosiți durata evenimentului (implicit)",
"delete_event_type": "Ștergeți tipul de eveniment?",
@ -861,7 +870,6 @@
"installed_one": "Instalat",
"installed_other": "{{count}} instalată/instalate",
"verify_wallet": "Verificați portofelul",
"connect_metamask": "Conectați Metamask",
"create_events_on": "Creați evenimente în",
"enterprise_license": "Aceasta este o caracteristică de întreprindere",
"enterprise_license_description": "Pentru a activa această caracteristică, obține o cheie de implementare la consola {{consoleUrl}} și adaug-o la .env ca CALCOM_LICENSE_KEY. Dacă echipa ta are deja o licență, te rugăm să contactezi {{supportMail}} pentru ajutor.",
@ -887,6 +895,7 @@
"availability_updated_successfully": "Disponibilitatea actualizată cu succes",
"schedule_deleted_successfully": "Program șters cu succes",
"default_schedule_name": "Program de lucru",
"member_default_schedule": "Programul implicit al membrului",
"new_schedule_heading": "Creați un program de disponibilitate",
"new_schedule_description": "Crearea programelor de disponibilitate vă permite să gestionați disponibilitatea în toate tipurile de evenimente. Acestea pot fi aplicate la unul sau mai multe tipuri de evenimente.",
"requires_ownership_of_a_token": "Necesită dreptul de proprietate asupra unui token care aparține următoarei adrese:",
@ -903,6 +912,7 @@
"duplicate": "Duplicare",
"offer_seats": "Oferiți locuri",
"offer_seats_description": "Opțiunea oferă locuri pentru rezervare și dezactivează automat rezervările pentru oaspeți și cele la alegere.",
"seats_available_one": "Loc disponibil",
"seats_available_other": "Locuri disponibile",
"number_of_seats": "Numărul de locuri per rezervare",
"enter_number_of_seats": "Introduceți numărul de locuri",
@ -1037,7 +1047,7 @@
"event_cancelled_trigger": "când se anulează evenimentul",
"new_event_trigger": "când este rezervat noul eveniment",
"email_host_action": "trimiteți e-mail la gazdă",
"sms_attendee_action": "trimiteți SMS la participant",
"email_attendee_action": "trimiteți e-mail către participanți",
"sms_number_action": "trimiteți SMS la un anumit număr",
"workflows": "Fluxuri de lucru",
"new_workflow_btn": "Flux de lucru nou",
@ -1189,6 +1199,7 @@
"create_workflow": "Creați un flux de lucru",
"do_this": "Faceți acest lucru",
"turn_off": "Dezactivați",
"turn_on": "Activați",
"settings_updated_successfully": "Setări actualizate cu succes",
"error_updating_settings": "Eroare la actualizarea setărilor",
"personal_cal_url": "URL-ul meu personal {{appName}}",
@ -1213,11 +1224,6 @@
"upload": "Încărcare",
"add_profile_photo": "Adăugați poză de profil",
"web3": "Web3",
"rainbow_token_gated": "Accesul la acest tip de eveniment este posibil cu tokenuri.",
"rainbow_connect_wallet_gate": "Conectați-vă portofelul dacă dețineți <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Portofelul dvs. conectat nu conține suficient <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Semnați solicitarea de mesaj în portofel.",
"rainbow_signature_error": "Eroare la solicitarea semnăturii din portofel.",
"token_address": "Adresă token",
"blockchain": "Blockchain",
"old_password": "Parola veche",
@ -1245,6 +1251,7 @@
"calendars_description": "Configurați modul în care interacționează tipurile de evenimente cu calendarele dvs.",
"appearance_description": "Gestionați setările pentru aspectul rezervărilor dvs.",
"conferencing_description": "Gestionează aplicațiile de conferințe video pentru întâlnirile tale",
"add_conferencing_app": "Adăugare aplicație de conferințe",
"password_description": "Gestionați setările pentru parolele contului dvs.",
"2fa_description": "Gestionați setările pentru parolele contului dvs.",
"we_just_need_basic_info": "Avem nevoie doar de câteva informații de bază pentru configurarea profilului dvs.",
@ -1279,7 +1286,6 @@
"download_responses_description": "Descărcați în format CSV toate răspunsurile la formularul dvs.",
"download": "Descarcă",
"download_recording": "Descărcați înregistrarea",
"recording_from_your_recent_call": "O înregistrare a apelului dvs. recent de pe Cal.com poate fi acum descărcată",
"create_your_first_form": "Creați primul dvs. formular",
"create_your_first_form_description": "Cu ajutorul formularelor de direcționare, puteți adresa întrebări de calificare și le puteți redirecționa persoanei sau tipului de eveniment potrivit.",
"create_your_first_webhook": "Creați primul dvs. webhook",
@ -1362,7 +1368,6 @@
"password_updated": "Parolă actualizată!",
"pending_payment": "Plată în așteptare",
"pending_invites": "Invitații în așteptare",
"confirmation_page_rainbow": "Restricționați accesul la evenimentul dvs. cu tokenuri sau NFT-uri pe Ethereum, Polygon și altele.",
"not_on_cal": "Nu este pe {{appName}}",
"no_calendar_installed": "Niciun calendar instalat",
"no_calendar_installed_description": "Încă nu v-ați conectat niciunul dintre calendare",
@ -1476,8 +1481,6 @@
"find_the_best_person": "Găsește cea mai bună persoană disponibilă și treci succesiv prin membrii echipei tale.",
"fixed_round_robin": "Sistem „round-robin” fix",
"add_one_fixed_attendee": "Adaugă un participant fix şi unul din sistemul „round-robin” dintr-un număr de participanţi.",
"calcom_is_better_with_team": "Cal.com funcționează mai bine cu echipe",
"the_calcom_team": "Echipa Cal.com",
"add_your_team_members": "Adaugă membrii echipei tale la tipurile tale de evenimente. Folosește programarea colectivă pentru a include pe toată lumea sau găsește persoana cea mai potrivită cu programarea „round-robin”.",
"booking_limit_reached": "A fost atinsă limita de rezervare pentru acest tip de eveniment",
"duration_limit_reached": "Durata limită pentru acest tip de eveniment a fost atinsă",
@ -1496,7 +1499,6 @@
"navigate_installed_apps": "Mergi la aplicațiile instalate",
"disabled_calendar": "Dacă ai un alt calendar instalat, rezervările noi vor fi adăugate la acesta. Dacă nu ai, conectează un calendar nou, astfel încât să nu ratezi nicio rezervare nouă.",
"enable_apps": "Activează aplicații",
"enable_apps_description": "Activează aplicațiile pe care utilizatorii le pot integra cu Cal.com",
"purchase_license": "Achiziționați o licență",
"already_have_key": "Am deja o cheie:",
"already_have_key_suggestion": "Copiați aici variabila de mediu CALCOM_LICENSE_KEY existentă.",
@ -1619,6 +1621,7 @@
"email_user_cta": "Vizualizare invitație",
"email_no_user_invite_heading": "Ați fost invitat să faceți parte dintr-o echipă de pe {{appName}}",
"email_no_user_invite_subheading": "{{invitedBy}} v-a invitat să faceți parte din echipa sa de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, care vă permite dvs. și echipei dvs. să programați ședințe fără a face ping-pong prin e-mail.",
"email_user_invite_subheading": "{{invitedBy}} v-a invitat să faceți parte din echipa sa „{{teamName}}” de pe {{appName}}. {{appName}} este un instrument de planificare a evenimentelor, care vă permite dvs. și echipei dvs. să programați ședințe fără a face ping-pong prin e-mail.",
"email_no_user_invite_steps_intro": "Vom parcurge împreună câțiva pași simpli și vă veți bucura alături de echipa dvs. de programări fără probleme, în cel mai scurt timp.",
"email_no_user_step_one": "Alegeți-vă numele de utilizator",
"email_no_user_step_two": "Conectați-vă contul de calendar",
@ -1694,6 +1697,15 @@
"spot_popular_event_types_description": "Vedeți care dintre tipurile de evenimente primesc cele mai multe clicuri și rezervări",
"no_responses_yet": "Nu există încă răspunsuri",
"this_will_be_the_placeholder": "Acesta va fi substituentul",
"error_booking_event": "A survenit o eroare la rezervarea evenimentului. Reîmprospătați pagina și încercați din nou",
"timeslot_missing_title": "Nu există niciun interval de timp selectat",
"timeslot_missing_description": "Selectați un interval de timp pentru a rezerva evenimentul.",
"timeslot_missing_cta": "Selectare interval de timp",
"switch_monthly": "Comutare la vizualizarea lunară",
"switch_weekly": "Comutare la vizualizarea săptămânală",
"switch_multiday": "Comutare la vizualizarea zilnică",
"num_locations": "{{num}} (de) opțiuni de locații",
"select_on_next_step": "Selectați în etapa următoare",
"this_meeting_has_not_started_yet": "Această întâlnire nu a început încă",
"this_app_requires_connected_account": "{{appName}} necesită un cont {{dependencyName}} conectat",
"connect_app": "Conectare {{dependencyName}}",
@ -1723,6 +1735,7 @@
"locked_apps_description": "Membrii vor putea vedea aplicațiile active, însă nu le vor putea modifica deloc setările",
"locked_webhooks_description": "Membrii vor putea vedea webhook-urile active, însă nu le vor putea modifica deloc setările",
"locked_workflows_description": "Membrii vor putea vedea fluxurile de lucru active, însă nu le vor putea modifica deloc setările",
"locked_by_admin": "Blocat de administratorul echipei",
"app_not_connected": "Nu ați conectat un cont {{appName}}.",
"connect_now": "Conectați-l acum",
"managed_event_dialog_confirm_button_one": "Înlocuiți și anunțați {{count}} membru",
@ -1780,5 +1793,34 @@
"seats_and_no_show_fee_error": "Momentan, nu se pot elibera locuri și nici nu se poate percepe o taxă de neprezentare",
"complete_your_booking": "Finalizați rezervarea",
"complete_your_booking_subject": "Finalizați rezervarea: {{title}}, pe {{date}}",
"email_invite_team": "{{email}} a fost invitat"
"confirm_your_details": "Confirmați datele dvs.",
"currency_string": "{{amount, currency}}",
"charge_card_dialog_body": "Urmează să percepeți de la participant {{amount, currency}}. Sigur doriți să continuați?",
"charge_attendee": "Percepeți {{amount, currency}} de la participant",
"payment_app_commission": "Solicitare plată ({{paymentFeePercentage}}% + {{fee, currency}} comision per tranzacție)",
"email_invite_team": "{{email}} a fost invitat",
"email_invite_team_bulk": "{{userCount}} (de) utilizatori au fost invitați",
"error_collecting_card": "Eroare la colectarea cardului",
"image_size_limit_exceed": "Imaginea încărcată nu trebuie să depășească dimensiunea limită de 5 MB",
"inline_embed": "Încorporare în linie",
"load_inline_content": "Încarcă tipul dvs. de eveniment direct în linie cu restul conținutului site-ul dvs.",
"floating_pop_up_button": "Buton flotant pop-up",
"floating_button_trigger_modal": "Afișează un buton flotant pe site-ul dvs. care deschide o fereastră modal cu tipul dvs. de eveniment.",
"pop_up_element_click": "Pop-up la accesarea elementului",
"open_dialog_with_element_click": "Deschide o fereastră de dialog Cal atunci când cineva face clic pe un element.",
"need_help_embedding": "Aveți nevoie de ajutor? Consultați ghidurile noastre pentru încorporarea Cal pe Wix, Squarespace sau WordPress, citiți răspunsurile la întrebările noastre frecvente sau explorați opțiunile de încorporare avansate.",
"book_my_cal": "Faceți o rezervare în Cal",
"invite_as": "Invitare ca",
"form_updated_successfully": "Formular actualizat cu succes.",
"email_not_cal_member_cta": "Alăturați-vă echipei dvs.",
"disable_attendees_confirmation_emails": "Dezactivare e-mailuri de confirmare implicite pentru participanți",
"disable_attendees_confirmation_emails_description": "Există cel puțin un flux de lucru activ pentru acest tip de eveniment care trimite un e-mail către participanți la rezervarea evenimentului.",
"disable_host_confirmation_emails": "Dezactivare e-mailuri de confirmare implicite pentru gazdă",
"disable_host_confirmation_emails_description": "Există cel puțin un flux de lucru activ pentru acest tip de eveniment care trimite un e-mail către gazdă la rezervarea evenimentului.",
"add_an_override": "Adaugați o suprascriere",
"import_from_google_workspace": "Import utilizatori din Google Workspace",
"connect_google_workspace": "Conectare la Google Workspace",
"google_workspace_admin_tooltip": "Trebuie să fiți administrator Google Workspace pentru a putea utiliza această funcție",
"first_event_type_webhook_description": "Creați primul dvs. webhook pentru acest tip de eveniment",
"create_for": "Creare pentru"
}

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} тип мероприятия успешно создан",
"event_type_updated_successfully": "Тип события {{eventTypeTitle}} успешно обновлен",
"event_type_deleted_successfully": "Тип события успешно удален",
"web3_metamask_added": "Metamask успешно добавлен",
"web3_metamask_disconnected": "Metamask успешно отключен",
"hours": "Часы",
"your_email": "Ваш адрес электронной почты",
"change_avatar": "Изменить аватар",
@ -872,7 +870,6 @@
"installed_one": "Установлено",
"installed_other": "Установок: {{count}}",
"verify_wallet": "Подтвердить кошелек",
"connect_metamask": "Подключить Metamask",
"create_events_on": "Создавать события в календаре:",
"enterprise_license": "Это функция корпоративного тарифного плана",
"enterprise_license_description": "Чтобы включить эту функцию, получите ключ развертывания на консоли {{consoleUrl}} и добавьте его в .env как CALCOM_LICENSE_KEY. Если у вашей команды уже есть лицензия, пожалуйста, обратитесь за помощью в {{supportMail}}.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Расписание {{scheduleName}} успешно обновлено",
"schedule_deleted_successfully": "Расписание успешно удалено",
"default_schedule_name": "Часы работы",
"member_default_schedule": "Расписание участника по умолчанию",
"new_schedule_heading": "Создать расписание доступности",
"new_schedule_description": "Расписания доступности позволяют управлять доступностью для различных типов событий. Их можно применять к одному или нескольким типам событий.",
"requires_ownership_of_a_token": "Нужно быть владельцем токена, относящегося к следующему адресу:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "когда будет забронировано новое событие",
"email_host_action": "отправить письмо организатору",
"email_attendee_action": "отправить письмо участникам",
"sms_attendee_action": "отправить SMS-сообщение участнику",
"sms_number_action": "отправка SMS-сообщение на указанный номер",
"workflows": "Рабочие процессы",
"new_workflow_btn": "Новый рабочий процесс",
@ -1227,11 +1224,6 @@
"upload": "Загрузить",
"add_profile_photo": "Добавить фото профиля",
"web3": "Web3",
"rainbow_token_gated": "Этот тип событий использует токены для контроля доступа.",
"rainbow_connect_wallet_gate": "Подключите кошелек, если у вас есть <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "В подключенном кошельке недостаточное количество <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Подпишите сообщение с запросом, используя свой кошелек.",
"rainbow_signature_error": "Ошибка при запросе подписи от вашего кошелька.",
"token_address": "Адрес токена",
"blockchain": "Блокчейн",
"old_password": "Старый пароль",
@ -1294,7 +1286,6 @@
"download_responses_description": "Скачать все ответы пользователей, заполнивших форму, в формате CSV.",
"download": "Скачать",
"download_recording": "Скачать запись",
"recording_from_your_recent_call": "Запись вашего недавнего звонка на Cal.com готова для скачивания",
"create_your_first_form": "Создайте первую форму",
"create_your_first_form_description": "Формы маршрутизации позволяют задавать пользователям уточняющие вопросы, чтобы перенаправлять их к соответствующему лицу или типу события.",
"create_your_first_webhook": "Создайте свой первый вебхук",
@ -1377,7 +1368,6 @@
"password_updated": "Пароль обновлен.",
"pending_payment": "Ожидает оплаты",
"pending_invites": "Приглашения, ожидающие ответа",
"confirmation_page_rainbow": "Используйте токены или NFT в Ethereum, Polygon и других сетях для ограничения доступа к мероприятиям.",
"not_on_cal": "Не является пользователем {{appName}}",
"no_calendar_installed": "Нет установленных календарей",
"no_calendar_installed_description": "Вы еще не подключили ни один календарь",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Выбирайте наиболее подходящего сотрудника из команды в порядке очередности.",
"fixed_round_robin": "Фиксированная очередность",
"add_one_fixed_attendee": "Добавьте одного фиксированного участника и назначайте участников по очереди.",
"calcom_is_better_with_team": "Cal.com отлично подходит для командной работы",
"the_calcom_team": "Команда Cal.com",
"add_your_team_members": "Добавьте участников команды к типам мероприятий. Благодаря совместному планированию можно включить в мероприятие всех пользователей или найти наиболее подходящего пользователя с циклическим планированием.",
"booking_limit_reached": "Достигнут лимит бронирования для этого типа события",
"duration_limit_reached": "Достигнут лимит продолжительности бронирования для этого типа события",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Перейти к установленным приложениям",
"disabled_calendar": "Если у вас установлен другой календарь, в него будут добавляться новые бронирования. Если у вас нет установленного календаря, подключите новый календарь, чтобы не пропускать новые бронирования.",
"enable_apps": "Включить приложения",
"enable_apps_description": "Включите приложения, которые пользователи могут интегрировать с Cal.com",
"purchase_license": "Купить лицензию",
"already_have_key": "У меня уже есть ключ:",
"already_have_key_suggestion": "Скопируйте сюда переменную окружения CALCOM_LICENSE_KEY.",

View File

@ -634,8 +634,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} tip događaja uspešno napravljen",
"event_type_updated_successfully": "{{eventTypeTitle}} tip događaja uspešno ažuriran",
"event_type_deleted_successfully": "Tip događaja uspešno obrisan",
"web3_metamask_added": "Metamask uspešno dodat",
"web3_metamask_disconnected": "Metamask uspešno diskonektovan",
"hours": "Sati",
"your_email": "Vaša E-pošta",
"change_avatar": "Promenite Avatara",
@ -876,7 +874,6 @@
"installed_one": "Instalirano",
"installed_other": "Instalirano {{count}} puta",
"verify_wallet": "Verifikuj Wallet",
"connect_metamask": "Poveži Metamask",
"create_events_on": "Kreiraj događaje na",
"enterprise_license": "Ovo je enterprise funkcija",
"enterprise_license_description": "Da biste omogućili ovu funkciju, nabavite ključ za primenu na {{consoleUrl}} konzoli i dodajte ga u svoj .env kao CALCOM_LICENCE_KEY. Ako vaš tim već ima licencu, obratite se na {{supportMail}} za pomoć.",
@ -902,6 +899,7 @@
"availability_updated_successfully": "Распоред {{scheduleName}} је успешно ажуриран",
"schedule_deleted_successfully": "Raspored uspešno izbrisan",
"default_schedule_name": "Radno vreme",
"member_default_schedule": "Podrazumevani raspored člana",
"new_schedule_heading": "Napravi raspored dostupnosti",
"new_schedule_description": "Kreiranje rasporeda dostupnosti vam omogućava da upravljate dostupnošću za različite tipove događaja. Mogu se primeniti na jedan ili više tipova događaja.",
"requires_ownership_of_a_token": "Potrebno je vlasništvo tokena koji pripada sledećoj adresi:",
@ -1054,7 +1052,6 @@
"new_event_trigger": "kada je zakazan novi događaj",
"email_host_action": "pošalji imejl domaćinu",
"email_attendee_action": "pošalji imejl polaznicima",
"sms_attendee_action": "pošalji SMS polazniku",
"sms_number_action": "pošalji SMS na određeni broj",
"workflows": "Radni tokovi",
"new_workflow_btn": "Novi radni tok",
@ -1231,11 +1228,6 @@
"upload": "Otpremi",
"add_profile_photo": "Dodajte profilnu fotografiju",
"web3": "Web3",
"rainbow_token_gated": "Za ovaj tip događaja je potreban token.",
"rainbow_connect_wallet_gate": "Povežite svoj novčanik, ako ga imate <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Vaš povezani novčanik ne sadrži dovoljno <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Potpišite poruku sa zahtevom u vašem novčaniku.",
"rainbow_signature_error": "Greška prilikom zahteva potpisa iz vašeg novčanika.",
"token_address": "Adresa tokena",
"blockchain": "Lanac blokova",
"old_password": "Stara lozinka",
@ -1298,7 +1290,6 @@
"download_responses_description": "Preuzmite sve odgovore iz obrasca u CSV formatu.",
"download": "Preuzmi",
"download_recording": "Preuzmi snimak",
"recording_from_your_recent_call": "Snimak vašeg nedavnog poziva na Cal.com je spreman za preuzimanje",
"create_your_first_form": "Kreirajte vaš prvi formular",
"create_your_first_form_description": "Sa formularima za rutiranje možete postavljati kvalifikaciona pitanja i usmeravati ih do prave osobe ili tipa događaja.",
"create_your_first_webhook": "Kreirajte vaš prvi Webhook",
@ -1381,7 +1372,6 @@
"password_updated": "Lozinka je ažurirana!",
"pending_payment": "Čeka se na plaćanje",
"pending_invites": "Pozivi na čekanju",
"confirmation_page_rainbow": "Zaštitite vaš događaj tokenom ili NFT-om na Ethereum-u, Polygon-u, itd.",
"not_on_cal": "Nije na {{appName}}",
"no_calendar_installed": "Nije instaliran kalendar",
"no_calendar_installed_description": "Još niste povezali nijedan od svojih kalendara",
@ -1495,8 +1485,6 @@
"find_the_best_person": "Pronađite najbolju dostupnu osobu i potom rotirajte ostale članove tima.",
"fixed_round_robin": "Fiksno kružno dodeljivanje",
"add_one_fixed_attendee": "Dodajte jednog fiksnog učesnika i onda rotirajte ostale učesnike.",
"calcom_is_better_with_team": "Cal.com je bolji uz timove",
"the_calcom_team": "Cal.com tim",
"add_your_team_members": "Dodajte članove vašeg tima vašim tipovima događaja. Koristite kolektivno zakazivanje da uključite svakoga ili pronađete osobu koja najviše odgovara pomoću zakazivanja kružnim dodeljivanjem.",
"booking_limit_reached": "Dostignuta je granica zakazivanja za ovaj tip događaja",
"duration_limit_reached": "Dostignuta je granica trajanja za ovaj tip događaja",
@ -1515,7 +1503,6 @@
"navigate_installed_apps": "Idi na instalirane aplikacije",
"disabled_calendar": "Ako imate instaliran drugi kalendar, nova zakazivanja će biti dodata na njega. Ako nemate, onda povežite novi kalendar da ne biste propustili nova zakazivanja.",
"enable_apps": "Omogući aplikacije",
"enable_apps_description": "Omogući aplikacije koje korisnici mogu da integrišu sa Cal.com",
"purchase_license": "Kupovina licence",
"already_have_key": "Već imam ključ:",
"already_have_key_suggestion": "Kopirajte ovde postojeću CALCOM_LICENSE_KEY promenljivu okruženja.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} har skapats",
"event_type_updated_successfully": "{{eventTypeTitle}} har uppdaterats",
"event_type_deleted_successfully": "Händelsetypen har raderats",
"web3_metamask_added": "Metamask tillagd",
"web3_metamask_disconnected": "Metamask bortkopplad",
"hours": "Timmar",
"your_email": "Din e-postadress",
"change_avatar": "Ändra avatar",
@ -872,7 +870,6 @@
"installed_one": "Installerad",
"installed_other": "{{count}} installerade",
"verify_wallet": "Verifiera plånbok",
"connect_metamask": "Anslut Metamask",
"create_events_on": "Skapa händelser i",
"enterprise_license": "Det här är en företagsfunktion",
"enterprise_license_description": "För att aktivera den här funktionen hämtar du en distributionsnyckel i konsolen {{consoleUrl}} och lägger till den i din .env som CALCOM_LICENSE_KEY. Om ditt team redan har en licens kan du kontakta {{supportMail}} för att få hjälp.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Schemat för {{scheduleName}} har uppdaterats",
"schedule_deleted_successfully": "Schemat har tagits bort",
"default_schedule_name": "Arbetstider",
"member_default_schedule": "Medlemmens standardschema",
"new_schedule_heading": "Skapa ett tillgänglighetsschema",
"new_schedule_description": "Genom att skapa tillgänglighetsscheman kan du hantera tillgänglighet för olika händelsetyper. De kan tillämpas på en eller flera händelsetyper.",
"requires_ownership_of_a_token": "Kräver ägande av en token som tillhör följande adress:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "när ny händelse bokas",
"email_host_action": "skicka e-post till värd",
"email_attendee_action": "skicka e-post till deltagare",
"sms_attendee_action": "skicka SMS till deltagare",
"sms_number_action": "skicka SMS till ett specifikt nummer",
"workflows": "Arbetsflöden",
"new_workflow_btn": "Nytt arbetsflöde",
@ -1227,11 +1224,6 @@
"upload": "Ladda upp",
"add_profile_photo": "Lägg till profilfoto",
"web3": "Web3",
"rainbow_token_gated": "Denna händelsetyp kräver token.",
"rainbow_connect_wallet_gate": "Anslut din plånbok om du äger <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Din anslutna plånbok innehåller inte tillräckligt med <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Signera meddelandebegäran på din plånbok.",
"rainbow_signature_error": "Fel vid begäran av signatur från din plånbok.",
"token_address": "Tokenadress",
"blockchain": "Blockkedja",
"old_password": "Gammalt lösenord",
@ -1294,7 +1286,6 @@
"download_responses_description": "Ladda ned alla svar till ditt formulär i CSV-format.",
"download": "Ladda ned",
"download_recording": "Ladda ned inspelning",
"recording_from_your_recent_call": "En inspelning från ditt senaste samtal på Cal.com är redo för nedladdning",
"create_your_first_form": "Skapa ditt första formulär",
"create_your_first_form_description": "Med omdirigeringsformulär kan du ställa kvalificerade frågor och dirigera till rätt person eller händelsetyp.",
"create_your_first_webhook": "Skapa din första webhook",
@ -1377,7 +1368,6 @@
"password_updated": "Lösenord uppdaterat!",
"pending_payment": "Väntande betalning",
"pending_invites": "Väntande inbjudningar",
"confirmation_page_rainbow": "Tokenskydda din händelse med tokens eller NFT:er på Ethereum, Polygon med mera.",
"not_on_cal": "Inte på {{appName}}",
"no_calendar_installed": "Ingen kalender installerad",
"no_calendar_installed_description": "Du har ännu inte anslutit någon av dina kalendrar",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Hitta den bästa personen som finns tillgänglig och gå igenom ditt team.",
"fixed_round_robin": "Fast Round Robin",
"add_one_fixed_attendee": "Lägg till en fast deltagare och Round Robin för ett antal deltagare.",
"calcom_is_better_with_team": "Cal.com är bättre med team",
"the_calcom_team": "Cal.com-teamet",
"add_your_team_members": "Lägg till teammedlemmar i dina händelsetyper. Använd kollektiv schemaläggning för att inkludera alla eller hitta den lämpligaste personen med Round Robin-schemaläggning.",
"booking_limit_reached": "Bokningsgränsen för denna händelsetyp har uppnåtts",
"duration_limit_reached": "Varaktighetsgränsen för denna händelsetyp har uppnåtts",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Gå till installerade appar",
"disabled_calendar": "Om du har en annan kalender installerad läggs nya bokningar till i den. Anslut annars en ny kalender så att du inte missar nya bokningar.",
"enable_apps": "Aktivera appar",
"enable_apps_description": "Aktivera appar som användare kan integrera med Cal.com",
"purchase_license": "Köp en licens",
"already_have_key": "Jag har redan en nyckel:",
"already_have_key_suggestion": "Kopiera din befintliga CALCOM_LICENSE_KEY-miljövariabel här.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} etkinlik türü başarıyla oluşturuldu",
"event_type_updated_successfully": "{{eventTypeTitle}} etkinlik türü başarıyla güncellendi",
"event_type_deleted_successfully": "Etkinlik türü başarıyla silindi",
"web3_metamask_added": "Metamask başarıyla eklendi",
"web3_metamask_disconnected": "Metamask bağlantısı başarıyla kesildi",
"hours": "Saat",
"your_email": "E-postanız",
"change_avatar": "Avatarı değiştir",
@ -872,7 +870,6 @@
"installed_one": "Yüklendi",
"installed_other": "{{count}} yüklü",
"verify_wallet": "Cüzdanı Doğrula",
"connect_metamask": "MetaMask'i Bağla",
"create_events_on": "Şurada etkinlik oluşturun:",
"enterprise_license": "Bu bir kurumsal özelliktir",
"enterprise_license_description": "Bu özelliği etkinleştirmek için {{consoleUrl}} konsolundan bir dağıtım anahtarı alın ve bunu .env dosyanıza CALCOM_LICENSE_KEY olarak ekleyin. Ekibinizin zaten bir lisansı varsa yardım için lütfen {{supportMail}} adresinden iletişime geçin.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} planı başarıyla güncellendi",
"schedule_deleted_successfully": "Plan başarıyla silindi",
"default_schedule_name": "Çalışma Saatleri",
"member_default_schedule": "Üyenin varsayılan programı",
"new_schedule_heading": "Müsaitlik planı oluşturun",
"new_schedule_description": "Müsaitlik planları oluşturmak, farklı etkinlik türleri için müsaitlik durumunuzu yönetmenize olanak tanır. Planlar bir veya daha fazla etkinlik türüne uygulanabilir.",
"requires_ownership_of_a_token": "Aşağıdaki adrese ait bir token'a sahip olmak gereklidir:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "yeni bir etkinlik için rezervasyon yapıldığında",
"email_host_action": "organizatöre e-posta gönder",
"email_attendee_action": "katılımcılara e-posta gönder",
"sms_attendee_action": "katılımcıya SMS gönder",
"sms_number_action": "belirli bir numaraya SMS gönder",
"workflows": "İş akışları",
"new_workflow_btn": "Yeni İş Akışı",
@ -1227,11 +1224,6 @@
"upload": "Yükle",
"add_profile_photo": "Profil fotoğrafı ekleyin",
"web3": "Web3",
"rainbow_token_gated": "Bu etkinlik türü token korumalıdır.",
"rainbow_connect_wallet_gate": "<1>{{name}}</1> (<3>{{symbol}}</3>) sahibiyseniz cüzdanınızı bağlayın.",
"rainbow_insufficient_balance": "Bağlı cüzdanınızda yeterli <1>{{symbol}}</1> yok.",
"rainbow_sign_message_request": "Cüzdanınızdaki mesaj isteğini imzalayın.",
"rainbow_signature_error": "Cüzdanınızdan imza istenirken bir hata oluştu.",
"token_address": "Token Adresi",
"blockchain": "Blok zinciri",
"old_password": "Eski şifre",
@ -1294,7 +1286,6 @@
"download_responses_description": "Formunuza gelen tüm yanıtları CSV formatında indirin.",
"download": "İndir",
"download_recording": "Kaydı İndir",
"recording_from_your_recent_call": "Cal.com'daki son aramanızın kaydı indirilmeye hazır",
"create_your_first_form": "İlk formunuzu oluşturun",
"create_your_first_form_description": "Yönlendirme Formları ile yeterlik soruları sorabilir ve bunları doğru kişiye veya etkinlik türüne yönlendirebilirsiniz.",
"create_your_first_webhook": "İlk Web kancanızı oluşturun",
@ -1377,7 +1368,6 @@
"password_updated": "Şifre güncellendi!",
"pending_payment": "Bekleyen ödeme",
"pending_invites": "Bekleyen Davetler",
"confirmation_page_rainbow": "Ethereum, Polygon ve diğer token'lar veya NFT ile etkinliğinize token kapısı ekleyin.",
"not_on_cal": "{{appName}}'da değil",
"no_calendar_installed": "Yüklü takvim yok",
"no_calendar_installed_description": "Henüz hiçbir takviminizi bağlamadınız",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Mevcut en iyi kişiyi bulun ve ekip üyeleriniz arasında rotasyon yapın.",
"fixed_round_robin": "Sabit döngü",
"add_one_fixed_attendee": "Bir sabit katılımcı ekleyin ve katılımcı sayısına göre rotasyon yapın.",
"calcom_is_better_with_team": "Cal.com ekiplerle daha iyidir",
"the_calcom_team": "Cal.com ekibi",
"add_your_team_members": "Ekip üyelerinizi etkinlik türlerinize ekleyin. Herkesi eklemek için toplu planlamayı kullanın veya döngüsel planlama ile en uygun kişiyi bulun.",
"booking_limit_reached": "Bu etkinlik türü için Rezervasyon Sınırına ulaşıldı",
"duration_limit_reached": "Bu etkinlik türü için Süre Sınırına ulaşıldı",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Yüklü uygulamalara git",
"disabled_calendar": "Yüklü başka bir takviminiz varsa yeni randevular bu takvime eklenir. Aksi takdirde yeni bir takvim bağlamazsanız yeni rezervasyonları kaçırabilirsiniz.",
"enable_apps": "Uygulamaları Etkinleştir",
"enable_apps_description": "Kullanıcıların Cal.com ile entegre edebileceği uygulamaları etkinleştirin",
"purchase_license": "Lisans satın alın",
"already_have_key": "Zaten bir anahtarım var:",
"already_have_key_suggestion": "Lütfen mevcut CALCOM_LICENSE_KEY ortam değişkeninizi buraya kopyalayın.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "Тип заходу «{{eventTypeTitle}}» створено",
"event_type_updated_successfully": "Тип заходу «{{eventTypeTitle}}» оновлено",
"event_type_deleted_successfully": "Тип заходу видалено",
"web3_metamask_added": "Metamask додано",
"web3_metamask_disconnected": "Metamask від’єднано",
"hours": "Години",
"your_email": "Ваша ел. адреса",
"change_avatar": "Змінити аватар",
@ -872,7 +870,6 @@
"installed_one": "Установлено",
"installed_other": "Установлено {{count}}",
"verify_wallet": "Пройдіть перевірку гаманця",
"connect_metamask": "Підключіть Metamask",
"create_events_on": "Створюйте заходи в календарі",
"enterprise_license": "Це корпоративна функція",
"enterprise_license_description": "Щоб увімкнути цю функцію, отримайте ключ розгортання в консолі {{consoleUrl}} і додайте його у свій файл .env як CALCOM_LICENSE_KEY. Якщо у вашої команди вже є ліцензія, зверніться по допомогу за адресою {{supportMail}}.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Розклад «{{scheduleName}}» оновлено",
"schedule_deleted_successfully": "Розклад видалено",
"default_schedule_name": "Робочі години",
"member_default_schedule": "Розклад учасника за замовчуванням",
"new_schedule_heading": "Створення розкладу доступності",
"new_schedule_description": "Розклад доступності дає змогу керувати своєю доступністю для участі в заходах різних типів. Його можна застосовувати як до одного, так і до кількох різних типів заходів.",
"requires_ownership_of_a_token": "Потрібен токен, що належить такій адресі:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "у момент бронювання нового заходу",
"email_host_action": "надсилати електронний лист ведучому",
"email_attendee_action": "надсилати ел. листи учасникам",
"sms_attendee_action": "надсилати SMS учаснику",
"sms_number_action": "надсилати SMS на певний номер",
"workflows": "Робочі процеси",
"new_workflow_btn": "Новий робочий процес",
@ -1227,11 +1224,6 @@
"upload": "Передати",
"add_profile_photo": "Додати фото профілю",
"web3": "Web3",
"rainbow_token_gated": "Цей тип заходу доступний тільки для власників токенів.",
"rainbow_connect_wallet_gate": "Якщо у вас є <1>{{name}}</1> (<3>{{symbol}}</3>), підключіть свій гаманець.",
"rainbow_insufficient_balance": "У вашому підключеному гаманці бракує <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Підпишіть запит повідомлення у своєму гаманці.",
"rainbow_signature_error": "Не вдалося надіслати запит підпису з вашого гаманця.",
"token_address": "Адреса токена",
"blockchain": "Блокчейн",
"old_password": "Старий пароль",
@ -1294,7 +1286,6 @@
"download_responses_description": "Завантажте всі відповіді у свою форму у форматі CSV.",
"download": "Завантажити",
"download_recording": "Завантажити запис",
"recording_from_your_recent_call": "Запис вашого попереднього дзвінка в Cal.com готовий до завантаження",
"create_your_first_form": "Створіть свою першу форму",
"create_your_first_form_description": "Форми переспрямування дають змогу надавати уточнювальні запитання та переходити до відповідної особи або типу заходу.",
"create_your_first_webhook": "Створіть свій перший вебгук",
@ -1377,7 +1368,6 @@
"password_updated": "Пароль оновлено!",
"pending_payment": "Очікується оплата",
"pending_invites": "Нерозглянуті запрошення",
"confirmation_page_rainbow": "Увімкніть доступ до свого заходу тільки для власників звичайних або невзаємозамінних токенів Ethereum, Polygon тощо.",
"not_on_cal": "Не на {{appName}}",
"no_calendar_installed": "Немає встановлених календарів",
"no_calendar_installed_description": "Ви ще не підключили свої календарі",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Знайдіть найвідповіднішого доступного члена команди та почергово залучайте інших.",
"fixed_round_robin": "Фіксоване циклічне планування",
"add_one_fixed_attendee": "Додайте одного постійного учасника та циклічно замінюйте кількох інших учасників.",
"calcom_is_better_with_team": "З Cal.com краще працювати в командах",
"the_calcom_team": "Команда Cal.com",
"add_your_team_members": "Додавайте членів своєї команди в типи заходів. Колективне планування дає змогу включати всіх або знаходити найвідповіднішого члена завдяки циклічній ротації.",
"booking_limit_reached": "Для цього типу заходу досягнуто ліміт бронювання",
"duration_limit_reached": "Досягнуто ліміту тривалості для цього типу заходу",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Перейти до встановлених додатків",
"disabled_calendar": "Якщо ви встановите інший календар, у нього буде додано нові бронювання. Якщо цього не станеться, підключіть новий календар, щоб не пропускати нові бронювання.",
"enable_apps": "Увімкнути додатки",
"enable_apps_description": "Активуйте додатки, які користувачі зможуть інтегрувати з Cal.com",
"purchase_license": "Придбати ліцензію",
"already_have_key": "У мене вже є ключ:",
"already_have_key_suggestion": "Скопіюйте сюди наявну змінну оточення CALCOM_LICENSE_KEY.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "Đã tạo thành công loại sự kiện {{eventTypeTitle}}",
"event_type_updated_successfully": "Đã cập nhật thành công loại sự kiện {{eventTypeTitle}}",
"event_type_deleted_successfully": "Đã xóa thành công loại sự kiện",
"web3_metamask_added": "Đã thêm thành công Metamask",
"web3_metamask_disconnected": "Đã ngắt kết nối thành công Metamask",
"hours": "Giờ",
"your_email": "Email của bạn",
"change_avatar": "Thay đổi hình đại diện",
@ -872,7 +870,6 @@
"installed_one": "Đã cài đặt",
"installed_other": "Đã cài đặt {{count}} lần",
"verify_wallet": "Xác minh Ví",
"connect_metamask": "Kết nối Metamask",
"create_events_on": "Tạo sự kiện trên",
"enterprise_license": "Đây là tính năng doanh nghiệp",
"enterprise_license_description": "Để bật tính năng này, nhận khoá triển khai tại console {{consoleUrl}} và thêm nó vào .env của bạn ở dạng CALCOM_LICENSE_KEY. Nếu nhóm của bạn đã có giấy phép, vui lòng liên hệ {{supportMail}} để được trợ giúp.",
@ -898,6 +895,7 @@
"availability_updated_successfully": "Đã cập nhật thành công lịch {{scheduleName}}",
"schedule_deleted_successfully": "Đã xóa lịch thành công",
"default_schedule_name": "Giờ làm việc",
"member_default_schedule": "Lịch biểu mặc định của thành viên",
"new_schedule_heading": "Tạo lịch khả dụng",
"new_schedule_description": "Tạo lịch khả dụng cho phép bạn quản lý tình trạng \bkhả dụng trên các loại sự kiện. Chúng có thể được áp dụng cho một hoặc nhiều loại sự kiện.",
"requires_ownership_of_a_token": "Yêu cầu quyền sở hữu mã token thuộc địa chỉ sau:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "khi sự kiện mới được đặt lịch hẹn",
"email_host_action": "gửi email đến chủ sự kiện",
"email_attendee_action": "gửi email đến người tham gia",
"sms_attendee_action": "gửi SMS đến người tham gia",
"sms_number_action": "gửi SMS đến một số cụ thể",
"workflows": "Tiến độ công việc",
"new_workflow_btn": "Dòng công việc mới",
@ -1227,11 +1224,6 @@
"upload": "Tải lên",
"add_profile_photo": "Thêm ảnh hồ sơ",
"web3": "Web3",
"rainbow_token_gated": "Loại sự kiện này yêu cầu token để truy cập.",
"rainbow_connect_wallet_gate": "Kết nối ví của bạn nếu bạn sở hữu <1>{{name}}</1> (<3>{{symbol}}</3>).",
"rainbow_insufficient_balance": "Ví được kết nối của bạn không chứa đủ <1>{{symbol}}</1>.",
"rainbow_sign_message_request": "Kí vào một yêu cầu tin nhắn trên ví của bạn.",
"rainbow_signature_error": "Lỗi khi gửi chữ kí từ ví của bạn.",
"token_address": "Địa chỉ token",
"blockchain": "Chuỗi khối",
"old_password": "Mật khẩu cũ",
@ -1294,7 +1286,6 @@
"download_responses_description": "Tải xuống tất cả phản hồi vào biểu mẫu của bạn ở định dạng CSV.",
"download": "Tải về",
"download_recording": "Tải xuống bản ghi âm",
"recording_from_your_recent_call": "Một bản ghi âm từ cuộc gọi gần đây trên Cal.com đã sẵn sàng để tải xuống",
"create_your_first_form": "Tạo biểu mẫu đầu tiên",
"create_your_first_form_description": "Với Biểu mẫu định hướng, bạn có thể hỏi một số câu sơ tuyển và định hướng đến đúng người hay đúng loại sự kiện.",
"create_your_first_webhook": "Tạo Webhook đầu tiên",
@ -1377,7 +1368,6 @@
"password_updated": "Mật khẩu đã được cập nhật!",
"pending_payment": "Thanh toán đang chờ xử lí",
"pending_invites": "Lời mời đang chờ xử lý",
"confirmation_page_rainbow": "Yêu cầu token để truy cập sự kiện của bạn, với các token hoặc NFT trên Ethereum, Polygon, v.v.",
"not_on_cal": "Không phải trên {{appName}}",
"no_calendar_installed": "Chưa cài đặt lịch nào",
"no_calendar_installed_description": "Bạn chưa kết nối lịch nào của bạn",
@ -1491,8 +1481,6 @@
"find_the_best_person": "Tìm người tốt nhất có được và xoay vòng trong nhóm bạn.",
"fixed_round_robin": "Round robin cố định",
"add_one_fixed_attendee": "Thêm một người tham dự và round robin cố định thông qua số người tham dự.",
"calcom_is_better_with_team": "Cal.com tốt hơn với nhóm",
"the_calcom_team": "Nhóm Cal.com",
"add_your_team_members": "Thêm những thành viên nhóm của bạn vào những loại sự kiện của bạn. Sử dụng lên lịch tập thể để bao gồm mọi người hoặc tìm người thích hợp nhất với chức năng lên lịch round robin.",
"booking_limit_reached": "Đã đạt mức giới hạn đặt hẹn cho loại sự kiện này",
"duration_limit_reached": "Đã đạt mức giới hạn thời gian cho loại sự kiện này",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "Đến những ứng dụng được cài đặt",
"disabled_calendar": "Nếu bạn có lịch khác được cài đặt, những mục đặt hẹn mới sẽ được thêm vào đó. Nếu không thì hãy kết nối với lịch mới để bạn không bỏ lỡ bất cứ mục đặt hẹn mới nào.",
"enable_apps": "Kích hoạt ứng dụng",
"enable_apps_description": "Kích hoạt những ứng dụng mà người dùng có thể tích hợp với Cal.com",
"purchase_license": "Mua một giấy phép",
"already_have_key": "Tôi đã có một khoá:",
"already_have_key_suggestion": "Vui lòng sao chép biến số môi trường CALCOM_LICENSE_KEY hiện có của bạn tại đây.",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "{{eventTypeTitle}} 活动类型创建成功",
"event_type_updated_successfully": "{{eventTypeTitle}} 活动类型更新成功",
"event_type_deleted_successfully": "活动类型删除成功",
"web3_metamask_added": "元掩码添加成功",
"web3_metamask_disconnected": "元掩码已成功断开连接",
"hours": "小时数",
"your_email": "您的邮箱",
"change_avatar": "修改头像",
@ -872,7 +870,6 @@
"installed_one": "已安装",
"installed_other": "已安装 {{count}} 次",
"verify_wallet": "验证钱包",
"connect_metamask": "连接元掩码",
"create_events_on": "活动创建于:",
"enterprise_license": "这是企业版功能",
"enterprise_license_description": "要启用此功能,请在 {{consoleUrl}} 控制台获取一个部署密钥,并将其添加到您的 .env 中作为 CALCOM_LICENSE_KEY。如果您的团队已经有许可证请联系 {{supportMail}} 获取帮助。",
@ -898,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} 日程更新成功",
"schedule_deleted_successfully": "已成功删除时间表",
"default_schedule_name": "工作时间",
"member_default_schedule": "成员的默认日程安排",
"new_schedule_heading": "创建可预约时间表",
"new_schedule_description": "通过创建可预约的时间表,可以管理不同活动类型的可预约时间。这些时间表可以应用于一个或多个活动类型。",
"requires_ownership_of_a_token": "需要属于以下地址的令牌的所有权:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "预约新活动时",
"email_host_action": "向主持人发送电子邮件",
"email_attendee_action": "向参与者发送电子邮件",
"sms_attendee_action": "向参与者发送短信",
"sms_number_action": "向特定号码发送短信",
"workflows": "工作流程",
"new_workflow_btn": "新建工作流程",
@ -1227,11 +1224,6 @@
"upload": "上传",
"add_profile_photo": "添加个人资料照片",
"web3": "Web3",
"rainbow_token_gated": "此活动类型采用代币门控。",
"rainbow_connect_wallet_gate": "如果您拥有 <1>{{name}}</1> (<3>{{symbol}}</3>),请连接您的钱包。",
"rainbow_insufficient_balance": "您的已连接钱包未包含足够的 <1>{{symbol}}</1>。",
"rainbow_sign_message_request": "使用您的钱包签署消息请求。",
"rainbow_signature_error": "从您的钱包请求签名时出错。",
"token_address": "代币地址",
"blockchain": "区块链",
"old_password": "旧密码",
@ -1294,7 +1286,6 @@
"download_responses_description": "以 CSV 格式下载对表格的所有回复。",
"download": "下载",
"download_recording": "下载录制内容",
"recording_from_your_recent_call": "您最近在 Cal.com 上的通话录制可供下载",
"create_your_first_form": "创建您的第一个表格",
"create_your_first_form_description": "利用途径表格,您可以提出符合条件的问题,并可根据途径找到正确的人或活动类型。",
"create_your_first_webhook": "创建您的第一个 Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "密码已更新!",
"pending_payment": "待付款",
"pending_invites": "待定邀请",
"confirmation_page_rainbow": "使用 Ethereum、Polygon 等平台的代币或 NFT 对您的活动进行代币门控。",
"not_on_cal": "不在 {{appName}} 上",
"no_calendar_installed": "未安装任何日历",
"no_calendar_installed_description": "您尚未连接任何日历",
@ -1491,8 +1481,6 @@
"find_the_best_person": "寻找最合适的人选,并在团队内轮流。",
"fixed_round_robin": "固定轮流模式",
"add_one_fixed_attendee": "添加一名固定参与者,并由多名参与者轮流担任。",
"calcom_is_better_with_team": "Cal.com 更适合团队",
"the_calcom_team": "Cal.com 团队",
"add_your_team_members": "将您的团队成员添加到您的活动类型。使用集体日程安排来包括所有人或以轮流安排的方式找到最适合的人员。",
"booking_limit_reached": "已达到此活动类型的预约限制",
"duration_limit_reached": "已达到此活动类型的时长限制",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "转到已安装的应用",
"disabled_calendar": "如果您安装了其他日历,新预约将添加至其中。如果没有,则连接一个新日历,这样就不会错过任何新预约。",
"enable_apps": "启用应用",
"enable_apps_description": "启用用户可以与 Cal.com 集成的应用",
"purchase_license": "购买许可证",
"already_have_key": "我已经有密钥:",
"already_have_key_suggestion": "请将您现有的 CALCOM_LICENSE_KEY 环境变量复制到此处。",

View File

@ -630,8 +630,6 @@
"event_type_created_successfully": "成功新增活動類型 {{eventTypeTitle}}",
"event_type_updated_successfully": "成功更新活動類型 {{eventTypeTitle}}",
"event_type_deleted_successfully": "成功刪除活動類型",
"web3_metamask_added": "成功新增 Metamask",
"web3_metamask_disconnected": "成功中斷 Metamask",
"hours": "小時",
"your_email": "電子郵件",
"change_avatar": "更換大頭照",
@ -872,7 +870,6 @@
"installed_one": "已安裝",
"installed_other": "已安裝 {{count}} 個",
"verify_wallet": "驗證錢包",
"connect_metamask": "連接 Metamask",
"create_events_on": "建立活動時間:",
"enterprise_license": "此為企業版功能",
"enterprise_license_description": "若要啟用此功能,請在 {{consoleUrl}} 主控台取得部署金鑰,並在您的 .env 中新增為 CALCOM_LICENSE_KEY。如果您的團隊已經取得授權請聯絡 {{supportMail}} 取得協助。",
@ -898,6 +895,7 @@
"availability_updated_successfully": "{{scheduleName}} 日程更新成功",
"schedule_deleted_successfully": "成功刪除行程表",
"default_schedule_name": "工作時間",
"member_default_schedule": "成員的預設行程表",
"new_schedule_heading": "新增開放時間行程表",
"new_schedule_description": "新增開放時間行程表,就可以管理每個活動類型的開放時間。可以用在單一或多個活動類型。",
"requires_ownership_of_a_token": "必須有屬於以下位址的 Token 所有權:",
@ -1050,7 +1048,6 @@
"new_event_trigger": "預約新活動時",
"email_host_action": "傳送電子郵件給主辦者",
"email_attendee_action": "傳送電子郵件給與會者",
"sms_attendee_action": "傳送簡訊給與會者",
"sms_number_action": "傳送簡訊至特定號碼",
"workflows": "工作流程",
"new_workflow_btn": "新工作流程",
@ -1227,11 +1224,6 @@
"upload": "上傳",
"add_profile_photo": "新增個人資料相片",
"web3": "Web3",
"rainbow_token_gated": "此活動類型是以代幣管制。",
"rainbow_connect_wallet_gate": "如果您擁有 <1>{{name}}</1> (<3>{{symbol}}</3>),請連接您的錢包。",
"rainbow_insufficient_balance": "您的已連接錢包未包含足夠的 <1>{{symbol}}</1>。",
"rainbow_sign_message_request": "在您的錢包上簽署訊息請求。",
"rainbow_signature_error": "請求您的錢包簽章時發生錯誤。",
"token_address": "代幣地址",
"blockchain": "區塊鏈",
"old_password": "舊密碼",
@ -1294,7 +1286,6 @@
"download_responses_description": "以 CSV 格式下載您表單的所有回覆。",
"download": "下載",
"download_recording": "下載錄製內容",
"recording_from_your_recent_call": "您最近在 Cal.com 的通話錄製內容已可供下載",
"create_your_first_form": "建立您的第一份表單",
"create_your_first_form_description": "您可使用引導表單提出符合條件的問題,並引導至適當的人員或活動類型。",
"create_your_first_webhook": "建立您的第一個 Webhook",
@ -1377,7 +1368,6 @@
"password_updated": "密碼已更新!",
"pending_payment": "待付款",
"pending_invites": "待回應的邀請",
"confirmation_page_rainbow": "使用 Ethereum、Polygon 等的 Token 或 NFT 來以代幣管制您的活動。",
"not_on_cal": "不在 {{appName}} 上",
"no_calendar_installed": "未安裝行事曆",
"no_calendar_installed_description": "您尚未連接任何行事曆",
@ -1491,8 +1481,6 @@
"find_the_best_person": "尋找可預約的最佳人選,並由團隊成員輪流擔任。",
"fixed_round_robin": "固定輪流制",
"add_one_fixed_attendee": "新增一名固定的與會者,並由多名與會者輪流擔任。",
"calcom_is_better_with_team": "Cal.com 更適合團隊使用",
"the_calcom_team": "Cal.com 團隊",
"add_your_team_members": "將團隊成員新增到活動類型。使用全體預定即可納入所有使用者,也可以使用輪流制預定找出最合適的人選。",
"booking_limit_reached": "已達此活動類型的預約限制",
"duration_limit_reached": "已達此活動類型的時間上限",
@ -1511,7 +1499,6 @@
"navigate_installed_apps": "前往已安裝的應用程式",
"disabled_calendar": "如果您安裝了其他行事曆,新的預約就會新增到該行事曆中。如果沒有,請連至新行事曆,這樣才不會錯過任何新的預約。",
"enable_apps": "啟用應用程式",
"enable_apps_description": "啟用使用者可以與 Cal.com 整合的應用程式",
"purchase_license": "購買授權",
"already_have_key": "我已經有金鑰:",
"already_have_key_suggestion": "請複製您目前的 CALCOM_LICENSE_KEY 環境變數至此處。",

View File

@ -1,5 +1,9 @@
import { execSync } from "child_process";
type Err = {
stdout: string;
};
const diff = execSync(`git diff --name-only origin/main HEAD`).toString();
const files = diff
@ -18,7 +22,7 @@ try {
console.log("😻 No errors!");
} catch (_err) {
const err = _err as any;
const err = _err as Err;
const output = err.stdout.toString() as string;

View File

@ -492,6 +492,7 @@ describe("getSchedule", () => {
});
// FIXME: Fix minimumBookingNotice is respected test
// eslint-disable-next-line playwright/no-skipped-test
test.skip("minimumBookingNotice is respected", async () => {
vi.useFakeTimers().setSystemTime(
(() => {

View File

@ -295,16 +295,24 @@ describe("handleChildrenEventTypes", () => {
describe("Workflows", () => {
it("Links workflows to new and existing assigned members", async () => {
const { schedulingType, id, teamId, locations, timeZone, parentId, userId, ...evType } =
mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
workflows: [
{
workflowId: 11,
} as CompleteWorkflowsOnEventTypes,
],
});
const {
schedulingType: _schedulingType,
id: _id,
teamId: _teamId,
locations: _locations,
timeZone: _timeZone,
parentId: _parentId,
userId: _userId,
...evType
} = mockFindFirstEventType({
metadata: { managedEventConfig: {} },
locations: [],
workflows: [
{
workflowId: 11,
} as CompleteWorkflowsOnEventTypes,
],
});
prismaMock.$transaction.mockResolvedValue([{ id: 2 }]);
await updateChildrenEventTypes({
eventTypeId: 1,

View File

@ -29,20 +29,30 @@ export default function AppCard({
const [animationRef] = useAutoAnimate<HTMLDivElement>();
return (
<div className={`border-subtle mb-4 mt-2 rounded-md border ${!app.enabled && "grayscale"}`}>
<div className="p-4 text-sm sm:p-6">
<div
className={classNames(
"border-subtle mb-4",
app.isInstalled ? "mt-2" : "mt-6",
"rounded-md border",
!app.enabled && "grayscale",
"bg-red-400"
)}>
<div className={classNames(app.isInstalled ? "p-4 text-sm sm:p-4" : "px-5 py-4 text-sm sm:px-5")}>
<div className="flex w-full flex-col gap-2 sm:flex-row sm:gap-0">
{/* Don't know why but w-[42px] isn't working, started happening when I started using next/dynamic */}
<Link href={"/apps/" + app.slug} className="mr-3 h-auto w-10 rounded-sm">
<img
className={classNames(app?.logo.includes("-dark") && "dark:invert", "w-full min-w-[40px]")}
className={classNames(
app?.logo.includes("-dark") && "dark:invert",
`w-full ${app.isInstalled ? "min-w-[42px]" : "min-w-[32.47px]"}`
)}
src={app?.logo}
alt={app?.name}
/>
</Link>
<div className="flex flex-col">
<span className="text-emphasis text-base font-semibold leading-4">{app?.name}</span>
<p className="text-default mb-2 pt-2 text-sm font-normal ltr:pr-2 rtl:pl-2">
<p className="text-default max-w-md truncate pt-2 text-sm font-normal ltr:pr-2 rtl:pl-2">
{description || app?.description}
</p>
</div>
@ -70,7 +80,7 @@ export default function AppCard({
</div>
<div ref={animationRef}>
{app?.isInstalled && switchChecked && <hr className="border-subtle" />}
{app?.isInstalled && switchChecked ? <div className="p-4 text-sm sm:px-8">{children}</div> : null}
{app?.isInstalled && switchChecked ? <div className="p-4 text-sm sm:px-4">{children}</div> : null}
</div>
</div>
);

View File

@ -1,9 +1,10 @@
export function DynamicComponent<T extends Record<string, any>>(props: {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function DynamicComponent<T extends Record<string, React.ComponentType<any>>>(props: {
componentMap: T;
slug: string;
wrapperClassName?: string;
}) {
const { componentMap, slug, ...rest } = props;
const { componentMap, slug, wrapperClassName, ...rest } = props;
const dirName = slug === "stripe" ? "stripepayment" : slug;
// There can be apps with no matching component
@ -12,7 +13,7 @@ export function DynamicComponent<T extends Record<string, any>>(props: {
const Component = componentMap[dirName];
return (
<div className={props.wrapperClassName || ""}>
<div className={wrapperClassName || ""}>
<Component {...rest} />
</div>
);

View File

@ -36,11 +36,6 @@ export const getEventTypeAppData = <T extends EventTypeAppsList>(
currency: eventType.currency,
paymentOption: "ON_BOOKING",
},
rainbow: {
enabled: !!(eventType.metadata?.smartContractAddress && eventType.metadata?.blockchainId),
smartContractAddress: eventType.metadata?.smartContractAddress || "",
blockchainId: eventType.metadata?.blockchainId || 0,
},
giphy: {
enabled: !!eventType.metadata?.giphyThankYouPage,
thankYouPage: eventType.metadata?.giphyThankYouPage || "",

View File

@ -22,7 +22,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
const data = {
type: "apple_calendar",
key: symmetricEncrypt(JSON.stringify({ username, password }), process.env.CALENDSO_ENCRYPTION_KEY!),
key: symmetricEncrypt(
JSON.stringify({ username, password }),
process.env.CALENDSO_ENCRYPTION_KEY || ""
),
userId: user.id,
appId: "apple-calendar",
invalid: false,

View File

@ -27,7 +27,6 @@ export const EventTypeAddonMap = {
metapixel: dynamic(() => import("./metapixel/components/EventTypeAppCardInterface")),
plausible: dynamic(() => import("./plausible/components/EventTypeAppCardInterface")),
qr_code: dynamic(() => import("./qr_code/components/EventTypeAppCardInterface")),
rainbow: dynamic(() => import("./rainbow/components/EventTypeAppCardInterface")),
stripepayment: dynamic(() => import("./stripepayment/components/EventTypeAppCardInterface")),
"booking-pages-tag": dynamic(() =>
import("./templates/booking-pages-tag/components/EventTypeAppCardInterface")

View File

@ -16,7 +16,6 @@ import { appKeysSchema as office365calendar_zod_ts } from "./office365calendar/z
import { appKeysSchema as office365video_zod_ts } from "./office365video/zod";
import { appKeysSchema as plausible_zod_ts } from "./plausible/zod";
import { appKeysSchema as qr_code_zod_ts } from "./qr_code/zod";
import { appKeysSchema as rainbow_zod_ts } from "./rainbow/zod";
import { appKeysSchema as routing_forms_zod_ts } from "./routing-forms/zod";
import { appKeysSchema as salesforce_zod_ts } from "./salesforce/zod";
import { appKeysSchema as stripepayment_zod_ts } from "./stripepayment/zod";
@ -46,7 +45,6 @@ export const appKeysSchemas = {
office365video: office365video_zod_ts,
plausible: plausible_zod_ts,
qr_code: qr_code_zod_ts,
rainbow: rainbow_zod_ts,
"routing-forms": routing_forms_zod_ts,
salesforce: salesforce_zod_ts,
stripe: stripepayment_zod_ts,

View File

@ -35,7 +35,6 @@ import ping_config_json from "./ping/config.json";
import pipedream_config_json from "./pipedream/config.json";
import plausible_config_json from "./plausible/config.json";
import qr_code_config_json from "./qr_code/config.json";
import rainbow_config_json from "./rainbow/config.json";
import raycast_config_json from "./raycast/config.json";
import riverside_config_json from "./riverside/config.json";
import routing_forms_config_json from "./routing-forms/config.json";
@ -101,7 +100,6 @@ export const appStoreMetadata = {
pipedream: pipedream_config_json,
plausible: plausible_config_json,
qr_code: qr_code_config_json,
rainbow: rainbow_config_json,
raycast: raycast_config_json,
riverside: riverside_config_json,
"routing-forms": routing_forms_config_json,

View File

@ -16,7 +16,6 @@ import { appDataSchema as office365calendar_zod_ts } from "./office365calendar/z
import { appDataSchema as office365video_zod_ts } from "./office365video/zod";
import { appDataSchema as plausible_zod_ts } from "./plausible/zod";
import { appDataSchema as qr_code_zod_ts } from "./qr_code/zod";
import { appDataSchema as rainbow_zod_ts } from "./rainbow/zod";
import { appDataSchema as routing_forms_zod_ts } from "./routing-forms/zod";
import { appDataSchema as salesforce_zod_ts } from "./salesforce/zod";
import { appDataSchema as stripepayment_zod_ts } from "./stripepayment/zod";
@ -46,7 +45,6 @@ export const appDataSchemas = {
office365video: office365video_zod_ts,
plausible: plausible_zod_ts,
qr_code: qr_code_zod_ts,
rainbow: rainbow_zod_ts,
"routing-forms": routing_forms_zod_ts,
salesforce: salesforce_zod_ts,
stripe: stripepayment_zod_ts,

View File

@ -35,7 +35,6 @@ export const apiHandlers = {
pipedream: import("./pipedream/api"),
plausible: import("./plausible/api"),
qr_code: import("./qr_code/api"),
rainbow: import("./rainbow/api"),
raycast: import("./raycast/api"),
riverside: import("./riverside/api"),
"routing-forms": import("./routing-forms/api"),

View File

@ -1,4 +1,4 @@
import type { NextApiRequest, NextApiResponse } from "next";
import type { NextApiRequest } from "next";
import { defaultResponder } from "@calcom/lib/server";
@ -7,7 +7,7 @@ import getInstalledAppPath from "../../_utils/getInstalledAppPath";
import { checkInstalled, createDefaultInstallation } from "../../_utils/installation";
import appConfig from "../config.json";
export async function getHandler(req: NextApiRequest, res: NextApiResponse) {
export async function getHandler(req: NextApiRequest) {
const session = checkSession(req);
const slug = appConfig.slug;
const variant = appConfig.variant;

View File

@ -24,7 +24,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
type: "caldav_calendar",
key: symmetricEncrypt(
JSON.stringify({ username, password, url }),
process.env.CALENDSO_ENCRYPTION_KEY!
process.env.CALENDSO_ENCRYPTION_KEY || ""
),
userId: user.id,
appId: "caldav-calendar",

View File

@ -113,6 +113,7 @@ export default class CloseComCalendarService implements Calendar {
});
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
async updateEvent(uid: string, event: CalendarEvent): Promise<any> {
return await this.closeComUpdateCustomActivity(uid, event);
}
@ -122,14 +123,14 @@ export default class CloseComCalendarService implements Calendar {
}
async getAvailability(
dateFrom: string,
dateTo: string,
selectedCalendars: IntegrationCalendar[]
_dateFrom: string,
_dateTo: string,
_selectedCalendars: IntegrationCalendar[]
): Promise<EventBusyDate[]> {
return Promise.resolve([]);
}
async listCalendars(event?: CalendarEvent): Promise<IntegrationCalendar[]> {
async listCalendars(_event?: CalendarEvent): Promise<IntegrationCalendar[]> {
return Promise.resolve([]);
}
}

View File

@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { expect, vi, afterEach, test } from "vitest";
import CloseCom from "@calcom/lib/CloseCom";

View File

@ -78,7 +78,7 @@ export const fetcher = async (endpoint: string, init?: RequestInit | undefined)
}).then(handleErrorsJson);
};
function postToDailyAPI(endpoint: string, body: Record<string, any>) {
function postToDailyAPI(endpoint: string, body: Record<string, unknown>) {
return fetcher(endpoint, {
method: "POST",
body: JSON.stringify(body),

View File

@ -31,7 +31,7 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) {
const data = {
type: "exchange2013_calendar",
key: symmetricEncrypt(JSON.stringify(body), process.env.CALENDSO_ENCRYPTION_KEY!),
key: symmetricEncrypt(JSON.stringify(body), process.env.CALENDSO_ENCRYPTION_KEY || ""),
userId: user.id,
appId: "exchange2013-calendar",
invalid: false,

View File

@ -31,7 +31,7 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) {
const data = {
type: "exchange2016_calendar",
key: symmetricEncrypt(JSON.stringify(body), process.env.CALENDSO_ENCRYPTION_KEY!),
key: symmetricEncrypt(JSON.stringify(body), process.env.CALENDSO_ENCRYPTION_KEY || ""),
userId: user.id,
appId: "exchange2016-calendar",
invalid: false,

View File

@ -97,6 +97,7 @@ export default class ExchangeCalendarService implements Calendar {
}
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
async updateEvent(uid: string, event: CalendarEvent): Promise<any> {
try {
const appointment = await Appointment.Bind(

View File

@ -121,8 +121,10 @@ export default function ExchangeSetup() {
options={authenticationMethods}
defaultValue={authenticationMethods[0]}
onChange={async (authentication) => {
onChange(authentication?.value);
form.setValue("authenticationMethod", authentication!.value);
if (authentication) {
onChange(authentication.value);
form.setValue("authenticationMethod", authentication.value);
}
}}
/>
)}
@ -137,7 +139,9 @@ export default function ExchangeSetup() {
defaultValue={exchangeVersions[7]}
onChange={async (version) => {
onChange(version?.value);
form.setValue("exchangeVersion", version!.value);
if (version) {
form.setValue("exchangeVersion", version.value);
}
}}
/>
)}

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