Compare commits

..

7 Commits

Author SHA1 Message Date
pandeymangg
5e39cdd7a2 chore: merge with main 2025-12-23 14:23:14 +05:30
pandeymangg
1859091efd some fixes 2025-12-23 13:53:19 +05:30
Matti Nannt
b9b052c102 fix: use correct bcrypt import for runtime 2025-12-22 13:44:28 +01:00
Matti Nannt
9dd604524f feat: implement robust database seeding strategy 2025-12-22 12:46:09 +01:00
Matti Nannt
5cc2a61089 fix: remove internal migration tables from seed clear list 2025-12-22 12:00:56 +01:00
Matti Nannt
520dc1f7b6 feat: improve seeding output with credentials summary 2025-12-22 11:57:57 +01:00
Matti Nannt
6ca21bca5e feat: implement database seeding strategy 2025-12-19 18:00:11 +01:00
225 changed files with 4627 additions and 8176 deletions

View File

@@ -25,7 +25,7 @@ const Page = async (props: ConnectPageProps) => {
const project = await getProjectByEnvironmentId(environment.id);
if (!project) {
throw new Error(t("common.workspace_not_found"));
throw new Error(t("common.project_not_found"));
}
const channel = project.config.channel || null;
@@ -46,7 +46,7 @@ const Page = async (props: ConnectPageProps) => {
channel={channel}
/>
<Button
className="absolute top-5 right-5 !mt-0 text-slate-500 hover:text-slate-700"
className="absolute right-5 top-5 !mt-0 text-slate-500 hover:text-slate-700"
variant="ghost"
asChild>
<Link href={`/environments/${environment.id}`}>

View File

@@ -38,7 +38,7 @@ const Page = async (props: XMTemplatePageProps) => {
const project = await getProjectByEnvironmentId(environment.id);
if (!project) {
throw new Error(t("common.workspace_not_found"));
throw new Error(t("common.project_not_found"));
}
const projects = await getUserProjects(session.user.id, organizationId);
@@ -49,7 +49,7 @@ const Page = async (props: XMTemplatePageProps) => {
<XMTemplateList project={project} user={user} environmentId={environment.id} />
{projects.length >= 2 && (
<Button
className="absolute top-5 right-5 !mt-0 text-slate-500 hover:text-slate-700"
className="absolute right-5 top-5 !mt-0 text-slate-500 hover:text-slate-700"
variant="ghost"
asChild>
<Link href={`/environments/${environment.id}/surveys`}>

View File

@@ -50,8 +50,8 @@ const Page = async (props) => {
</div>
<div className="flex h-full flex-col items-center justify-center space-y-12">
<Header
title={t("organizations.landing.no_workspaces_warning_title")}
subtitle={t("organizations.landing.no_workspaces_warning_subtitle")}
title={t("organizations.landing.no_projects_warning_title")}
subtitle={t("organizations.landing.no_projects_warning_subtitle")}
/>
</div>
</div>

View File

@@ -26,16 +26,16 @@ const Page = async (props: ChannelPageProps) => {
const t = await getTranslate();
const channelOptions = [
{
title: t("organizations.workspaces.new.channel.link_and_email_surveys"),
description: t("organizations.workspaces.new.channel.link_and_email_surveys_description"),
title: t("organizations.projects.new.channel.link_and_email_surveys"),
description: t("organizations.projects.new.channel.link_and_email_surveys_description"),
icon: SendIcon,
href: `/organizations/${params.organizationId}/workspaces/new/settings?channel=link`,
href: `/organizations/${params.organizationId}/projects/new/settings?channel=link`,
},
{
title: t("organizations.workspaces.new.channel.in_product_surveys"),
description: t("organizations.workspaces.new.channel.in_product_surveys_description"),
title: t("organizations.projects.new.channel.in_product_surveys"),
description: t("organizations.projects.new.channel.in_product_surveys_description"),
icon: PictureInPicture2Icon,
href: `/organizations/${params.organizationId}/workspaces/new/settings?channel=app`,
href: `/organizations/${params.organizationId}/projects/new/settings?channel=app`,
},
];
@@ -44,13 +44,13 @@ const Page = async (props: ChannelPageProps) => {
return (
<div className="flex min-h-full min-w-full flex-col items-center justify-center space-y-12">
<Header
title={t("organizations.workspaces.new.channel.channel_select_title")}
subtitle={t("organizations.workspaces.new.channel.channel_select_subtitle")}
title={t("organizations.projects.new.channel.channel_select_title")}
subtitle={t("organizations.projects.new.channel.channel_select_subtitle")}
/>
<OnboardingOptionsContainer options={channelOptions} />
{projects.length >= 1 && (
<Button
className="absolute top-5 right-5 !mt-0 text-slate-500 hover:text-slate-700"
className="absolute right-5 top-5 !mt-0 text-slate-500 hover:text-slate-700"
variant="ghost"
asChild>
<Link href={"/"}>

View File

@@ -26,16 +26,16 @@ const Page = async (props: ModePageProps) => {
const t = await getTranslate();
const channelOptions = [
{
title: t("organizations.workspaces.new.mode.formbricks_surveys"),
description: t("organizations.workspaces.new.mode.formbricks_surveys_description"),
title: t("organizations.projects.new.mode.formbricks_surveys"),
description: t("organizations.projects.new.mode.formbricks_surveys_description"),
icon: ListTodoIcon,
href: `/organizations/${params.organizationId}/workspaces/new/channel`,
href: `/organizations/${params.organizationId}/projects/new/channel`,
},
{
title: t("organizations.workspaces.new.mode.formbricks_cx"),
description: t("organizations.workspaces.new.mode.formbricks_cx_description"),
title: t("organizations.projects.new.mode.formbricks_cx"),
description: t("organizations.projects.new.mode.formbricks_cx_description"),
icon: HeartIcon,
href: `/organizations/${params.organizationId}/workspaces/new/settings?mode=cx`,
href: `/organizations/${params.organizationId}/projects/new/settings?mode=cx`,
},
];
@@ -43,11 +43,11 @@ const Page = async (props: ModePageProps) => {
return (
<div className="flex min-h-full min-w-full flex-col items-center justify-center space-y-12">
<Header title={t("organizations.workspaces.new.mode.what_are_you_here_for")} />
<Header title={t("organizations.projects.new.mode.what_are_you_here_for")} />
<OnboardingOptionsContainer options={channelOptions} />
{projects.length >= 1 && (
<Button
className="absolute top-5 right-5 !mt-0 text-slate-500 hover:text-slate-700"
className="absolute right-5 top-5 !mt-0 text-slate-500 hover:text-slate-700"
variant="ghost"
asChild>
<Link href={"/"}>

View File

@@ -79,7 +79,7 @@ export const ProjectSettings = ({
(environment) => environment.type === "production"
);
if (productionEnvironment) {
if (globalThis.window !== undefined) {
if (typeof window !== "undefined") {
// Rmove filters when creating a new project
localStorage.removeItem(FORMBRICKS_SURVEYS_FILTERS_KEY_LS);
}
@@ -96,7 +96,7 @@ export const ProjectSettings = ({
toast.error(errorMessage);
}
} catch (error) {
toast.error(t("organizations.workspaces.new.settings.workspace_creation_failed"));
toast.error(t("organizations.projects.new.settings.project_creation_failed"));
console.error(error);
}
};
@@ -131,9 +131,9 @@ export const ProjectSettings = ({
render={({ field, fieldState: { error } }) => (
<FormItem className="w-full space-y-4">
<div>
<FormLabel>{t("organizations.workspaces.new.settings.brand_color")}</FormLabel>
<FormLabel>{t("organizations.projects.new.settings.brand_color")}</FormLabel>
<FormDescription>
{t("organizations.workspaces.new.settings.brand_color_description")}
{t("organizations.projects.new.settings.brand_color_description")}
</FormDescription>
</div>
<FormControl>
@@ -155,9 +155,9 @@ export const ProjectSettings = ({
render={({ field, fieldState: { error } }) => (
<FormItem className="w-full space-y-4">
<div>
<FormLabel>{t("organizations.workspaces.new.settings.workspace_name")}</FormLabel>
<FormLabel>{t("organizations.projects.new.settings.project_name")}</FormLabel>
<FormDescription>
{t("organizations.workspaces.new.settings.workspace_name_description")}
{t("organizations.projects.new.settings.project_name_description")}
</FormDescription>
</div>
<FormControl>
@@ -186,7 +186,7 @@ export const ProjectSettings = ({
<div>
<FormLabel>{t("common.teams")}</FormLabel>
<FormDescription>
{t("organizations.workspaces.new.settings.team_description")}
{t("organizations.projects.new.settings.team_description")}
</FormDescription>
</div>
<Button
@@ -194,7 +194,7 @@ export const ProjectSettings = ({
size="sm"
type="button"
onClick={() => setCreateTeamModalOpen(true)}>
{t("organizations.workspaces.new.settings.create_new_team")}
{t("organizations.projects.new.settings.create_new_team")}
</Button>
</div>
<FormControl>

View File

@@ -3,7 +3,7 @@ import Link from "next/link";
import { redirect } from "next/navigation";
import { TProjectConfigChannel, TProjectConfigIndustry, TProjectMode } from "@formbricks/types/project";
import { getTeamsByOrganizationId } from "@/app/(app)/(onboarding)/lib/onboarding";
import { ProjectSettings } from "@/app/(app)/(onboarding)/organizations/[organizationId]/workspaces/new/settings/components/ProjectSettings";
import { ProjectSettings } from "@/app/(app)/(onboarding)/organizations/[organizationId]/projects/new/settings/components/ProjectSettings";
import { DEFAULT_BRAND_COLOR } from "@/lib/constants";
import { getPublicDomain } from "@/lib/getPublicUrl";
import { getUserProjects } from "@/lib/project/service";
@@ -53,8 +53,8 @@ const Page = async (props: ProjectSettingsPageProps) => {
return (
<div className="flex min-h-full min-w-full flex-col items-center justify-center space-y-12">
<Header
title={t("organizations.workspaces.new.settings.workspace_settings_title")}
subtitle={t("organizations.workspaces.new.settings.workspace_settings_subtitle")}
title={t("organizations.projects.new.settings.project_settings_title")}
subtitle={t("organizations.projects.new.settings.project_settings_subtitle")}
/>
<ProjectSettings
organizationId={params.organizationId}

View File

@@ -43,7 +43,7 @@ export const EnvironmentLayout = async ({ layoutData, children }: EnvironmentLay
// Validate that project permission exists for members
if (isMember && !projectPermission) {
throw new Error(t("common.workspace_permission_not_found"));
throw new Error(t("common.project_permission_not_found"));
}
return (

View File

@@ -113,7 +113,7 @@ export const MainNavigation = ({
},
{
name: t("common.configuration"),
href: `/environments/${environment.id}/workspace/general`,
href: `/environments/${environment.id}/project/general`,
icon: Cog,
isActive: pathname?.includes("/project"),
},
@@ -164,7 +164,7 @@ export const MainNavigation = ({
<aside
className={cn(
"z-40 flex flex-col justify-between rounded-r-xl border-r border-slate-200 bg-white pt-3 shadow-md transition-all duration-100",
isCollapsed ? "w-sidebar-expanded" : "w-sidebar-collapsed"
!isCollapsed ? "w-sidebar-collapsed" : "w-sidebar-expanded"
)}>
<div>
{/* Logo and Toggle */}

View File

@@ -17,13 +17,13 @@ export const WidgetStatusIndicator = ({ environment }: WidgetStatusIndicatorProp
const stati = {
notImplemented: {
icon: AlertTriangleIcon,
title: t("environments.workspace.app-connection.formbricks_sdk_not_connected"),
subtitle: t("environments.workspace.app-connection.formbricks_sdk_not_connected_description"),
title: t("environments.project.app-connection.formbricks_sdk_not_connected"),
subtitle: t("environments.project.app-connection.formbricks_sdk_not_connected_description"),
},
running: {
icon: CheckIcon,
title: t("environments.workspace.app-connection.receiving_data"),
subtitle: t("environments.workspace.app-connection.formbricks_sdk_connected"),
title: t("environments.project.app-connection.receiving_data"),
subtitle: t("environments.project.app-connection.formbricks_sdk_connected"),
},
};
@@ -53,11 +53,11 @@ export const WidgetStatusIndicator = ({ environment }: WidgetStatusIndicatorProp
<currentStatus.icon />
</div>
<p className="text-md font-bold text-slate-800 md:text-xl">{currentStatus.title}</p>
<p className="w-2/3 text-sm text-balance text-slate-600">{currentStatus.subtitle}</p>
<p className="w-2/3 text-balance text-sm text-slate-600">{currentStatus.subtitle}</p>
{status === "notImplemented" && (
<Button variant="outline" size="sm" className="bg-white" onClick={() => router.refresh()}>
<RotateCcwIcon />
{t("environments.workspace.app-connection.recheck")}
{t("environments.project.app-connection.recheck")}
</Button>
)}
</div>

View File

@@ -144,12 +144,6 @@ export const OrganizationBreadcrumb = ({
href: `/environments/${currentEnvironmentId}/settings/api-keys`,
hidden: !isOwnerOrManager,
},
{
id: "domain",
label: t("common.domain"),
href: `/environments/${currentEnvironmentId}/settings/domain`,
hidden: isFormbricksCloud,
},
{
id: "billing",
label: t("common.billing"),

View File

@@ -36,12 +36,12 @@ interface ProjectBreadcrumbProps {
}
const isActiveProjectSetting = (pathname: string, settingId: string): boolean => {
// Match /workspace/{settingId} or /workspace/{settingId}/... but exclude settings paths
// Match /project/{settingId} or /project/{settingId}/... but exclude settings paths
if (pathname.includes("/settings/")) {
return false;
}
// Check if path matches /workspace/{settingId} (with optional trailing path)
const pattern = new RegExp(`/workspace/${settingId}(?:/|$)`);
// Check if path matches /project/{settingId} (with optional trailing path)
const pattern = new RegExp(`/project/${settingId}(?:/|$)`);
return pattern.test(pathname);
};
@@ -90,7 +90,7 @@ export const ProjectBreadcrumb = ({
const error = new Error(errorMessage);
logger.error(error, "Failed to load projects");
Sentry.captureException(error);
setLoadError(errorMessage || t("common.failed_to_load_workspaces"));
setLoadError(errorMessage || t("common.failed_to_load_projects"));
}
setIsLoadingProjects(false);
});
@@ -101,37 +101,37 @@ export const ProjectBreadcrumb = ({
{
id: "general",
label: t("common.general"),
href: `/environments/${currentEnvironmentId}/workspace/general`,
href: `/environments/${currentEnvironmentId}/project/general`,
},
{
id: "look",
label: t("common.look_and_feel"),
href: `/environments/${currentEnvironmentId}/workspace/look`,
href: `/environments/${currentEnvironmentId}/project/look`,
},
{
id: "app-connection",
label: t("common.website_and_app_connection"),
href: `/environments/${currentEnvironmentId}/workspace/app-connection`,
href: `/environments/${currentEnvironmentId}/project/app-connection`,
},
{
id: "integrations",
label: t("common.integrations"),
href: `/environments/${currentEnvironmentId}/workspace/integrations`,
href: `/environments/${currentEnvironmentId}/project/integrations`,
},
{
id: "teams",
label: t("common.team_access"),
href: `/environments/${currentEnvironmentId}/workspace/teams`,
href: `/environments/${currentEnvironmentId}/project/teams`,
},
{
id: "languages",
label: t("common.survey_languages"),
href: `/environments/${currentEnvironmentId}/workspace/languages`,
href: `/environments/${currentEnvironmentId}/project/languages`,
},
{
id: "tags",
label: t("common.tags"),
href: `/environments/${currentEnvironmentId}/workspace/tags`,
href: `/environments/${currentEnvironmentId}/project/tags`,
},
];
@@ -159,7 +159,7 @@ export const ProjectBreadcrumb = ({
const handleProjectSettingsNavigation = (settingId: string) => {
startTransition(() => {
router.push(`/environments/${currentEnvironmentId}/workspace/${settingId}`);
router.push(`/environments/${currentEnvironmentId}/project/${settingId}`);
});
};
@@ -212,7 +212,7 @@ export const ProjectBreadcrumb = ({
<DropdownMenuContent align="start" className="mt-2">
<div className="px-2 py-1.5 text-sm font-medium text-slate-500">
<FolderOpenIcon className="mr-2 inline h-4 w-4" strokeWidth={1.5} />
{t("common.choose_workspace")}
{t("common.choose_project")}
</div>
{isLoadingProjects && (
<div className="flex items-center justify-center py-2">
@@ -251,7 +251,7 @@ export const ProjectBreadcrumb = ({
<DropdownMenuCheckboxItem
onClick={handleAddProject}
className="w-full cursor-pointer justify-between">
<span>{t("common.add_new_workspace")}</span>
<span>{t("common.add_new_project")}</span>
<PlusIcon className="ml-2 h-4 w-4" strokeWidth={1.5} />
</DropdownMenuCheckboxItem>
)}
@@ -261,7 +261,7 @@ export const ProjectBreadcrumb = ({
<DropdownMenuSeparator />
<div className="px-2 py-1.5 text-sm font-medium text-slate-500">
<CogIcon className="mr-2 inline h-4 w-4" strokeWidth={1.5} />
{t("common.workspace_configuration")}
{t("common.project_configuration")}
</div>
{projectSettings.map((setting) => (
<DropdownMenuCheckboxItem

View File

@@ -17,9 +17,9 @@ import {
import { TSurveyElement } from "@formbricks/types/surveys/elements";
import { TSurvey } from "@formbricks/types/surveys/types";
import { getTextContent } from "@formbricks/types/surveys/validation";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { BaseSelectDropdown } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/components/BaseSelectDropdown";
import { fetchTables } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/lib/airtable";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { BaseSelectDropdown } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/components/BaseSelectDropdown";
import { fetchTables } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/lib/airtable";
import AirtableLogo from "@/images/airtableLogo.svg";
import { recallToHeadline } from "@/lib/utils/recall";
import { getElementsFromBlocks } from "@/modules/survey/lib/client-utils";

View File

@@ -5,8 +5,8 @@ import { TIntegrationItem } from "@formbricks/types/integration";
import { TIntegrationAirtable } from "@formbricks/types/integration/airtable";
import { TSurvey } from "@formbricks/types/surveys/types";
import { TUserLocale } from "@formbricks/types/user";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/lib/airtable";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/lib/airtable";
import airtableLogo from "@/images/airtableLogo.svg";
import { ConnectIntegration } from "@/modules/ui/components/connect-integration";

View File

@@ -8,8 +8,8 @@ import { TIntegrationItem } from "@formbricks/types/integration";
import { TIntegrationAirtable } from "@formbricks/types/integration/airtable";
import { TSurvey } from "@formbricks/types/surveys/types";
import { TUserLocale } from "@formbricks/types/user";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { AddIntegrationModal } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/components/AddIntegrationModal";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { AddIntegrationModal } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/components/AddIntegrationModal";
import { timeSince } from "@/lib/time";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { Button } from "@/modules/ui/components/button";

View File

@@ -1,8 +1,8 @@
import { redirect } from "next/navigation";
import { TIntegrationItem } from "@formbricks/types/integration";
import { TIntegrationAirtable } from "@formbricks/types/integration/airtable";
import { AirtableWrapper } from "@/app/(app)/environments/[environmentId]/workspace/integrations/airtable/components/AirtableWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/workspace/integrations/lib/surveys";
import { AirtableWrapper } from "@/app/(app)/environments/[environmentId]/project/integrations/airtable/components/AirtableWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/project/integrations/lib/surveys";
import { getAirtableTables } from "@/lib/airtable/service";
import { AIRTABLE_CLIENT_ID, WEBAPP_URL } from "@/lib/constants";
import { getIntegrations } from "@/lib/integration/service";
@@ -42,7 +42,7 @@ const Page = async (props) => {
return (
<PageContentWrapper>
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/workspace/integrations`} />
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/project/integrations`} />
<PageHeader pageTitle={t("environments.integrations.airtable.airtable_integration")} />
<div className="h-[75vh] w-full">
<AirtableWrapper

View File

@@ -12,13 +12,13 @@ import {
} from "@formbricks/types/integration/google-sheet";
import { TSurvey, TSurveyQuestionId } from "@formbricks/types/surveys/types";
import { getTextContent } from "@formbricks/types/surveys/validation";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { getSpreadsheetNameByIdAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/google-sheets/actions";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { getSpreadsheetNameByIdAction } from "@/app/(app)/environments/[environmentId]/project/integrations/google-sheets/actions";
import {
constructGoogleSheetsUrl,
extractSpreadsheetIdFromUrl,
isValidGoogleSheetsUrl,
} from "@/app/(app)/environments/[environmentId]/workspace/integrations/google-sheets/lib/util";
} from "@/app/(app)/environments/[environmentId]/project/integrations/google-sheets/lib/util";
import GoogleSheetLogo from "@/images/googleSheetsLogo.png";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { recallToHeadline } from "@/lib/utils/recall";
@@ -266,7 +266,7 @@ export const AddIntegrationModal = ({
<div className="space-y-4">
<div>
<Label htmlFor="Surveys">{t("common.questions")}</Label>
<div className="mt-1 max-h-[15vh] overflow-x-hidden overflow-y-auto rounded-lg border border-slate-200">
<div className="mt-1 max-h-[15vh] overflow-y-auto overflow-x-hidden rounded-lg border border-slate-200">
<div className="grid content-center rounded-lg bg-slate-50 p-3 text-left text-sm text-slate-900">
{surveyElements.map((question) => (
<div key={question.id} className="my-1 flex items-center space-x-2">

View File

@@ -8,8 +8,8 @@ import {
} from "@formbricks/types/integration/google-sheet";
import { TSurvey } from "@formbricks/types/surveys/types";
import { TUserLocale } from "@formbricks/types/user";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/workspace/integrations/google-sheets/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/workspace/integrations/google-sheets/lib/google";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/project/integrations/google-sheets/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/project/integrations/google-sheets/lib/google";
import googleSheetLogo from "@/images/googleSheetsLogo.png";
import { ConnectIntegration } from "@/modules/ui/components/connect-integration";
import { AddIntegrationModal } from "./AddIntegrationModal";

View File

@@ -9,7 +9,7 @@ import {
TIntegrationGoogleSheetsConfigData,
} from "@formbricks/types/integration/google-sheet";
import { TUserLocale } from "@formbricks/types/user";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { timeSince } from "@/lib/time";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { Button } from "@/modules/ui/components/button";

View File

@@ -10,7 +10,7 @@ const Loading = () => {
<div className="mt-6 p-6">
<GoBackButton />
<div className="mb-6 text-right">
<Button className="pointer-events-none animate-pulse cursor-not-allowed bg-slate-200 select-none">
<Button className="pointer-events-none animate-pulse cursor-not-allowed select-none bg-slate-200">
{t("environments.integrations.google_sheets.link_new_sheet")}
</Button>
</div>
@@ -51,7 +51,7 @@ const Loading = () => {
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
</div>
</div>
<div className="col-span-2 my-auto flex items-center justify-center text-center text-sm whitespace-nowrap text-slate-500">
<div className="col-span-2 my-auto flex items-center justify-center whitespace-nowrap text-center text-sm text-slate-500">
<div className="h-4 w-16 animate-pulse rounded-full bg-slate-200"></div>
</div>
<div className="text-center"></div>

View File

@@ -1,7 +1,7 @@
import { redirect } from "next/navigation";
import { TIntegrationGoogleSheets } from "@formbricks/types/integration/google-sheet";
import { GoogleSheetWrapper } from "@/app/(app)/environments/[environmentId]/workspace/integrations/google-sheets/components/GoogleSheetWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/workspace/integrations/lib/surveys";
import { GoogleSheetWrapper } from "@/app/(app)/environments/[environmentId]/project/integrations/google-sheets/components/GoogleSheetWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/project/integrations/lib/surveys";
import {
GOOGLE_SHEETS_CLIENT_ID,
GOOGLE_SHEETS_CLIENT_SECRET,
@@ -40,7 +40,7 @@ const Page = async (props) => {
return (
<PageContentWrapper>
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/workspace/integrations`} />
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/project/integrations`} />
<PageHeader pageTitle={t("environments.integrations.google_sheets.google_sheets_integration")} />
<div className="h-[75vh] w-full">
<GoogleSheetWrapper

View File

@@ -15,12 +15,12 @@ import {
import { TSurveyElementTypeEnum } from "@formbricks/types/surveys/elements";
import { TSurvey } from "@formbricks/types/surveys/types";
import { getTextContent } from "@formbricks/types/surveys/validation";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import {
ERRORS,
TYPE_MAPPING,
UNSUPPORTED_TYPES_BY_NOTION,
} from "@/app/(app)/environments/[environmentId]/workspace/integrations/notion/constants";
} from "@/app/(app)/environments/[environmentId]/project/integrations/notion/constants";
import NotionLogo from "@/images/notion.png";
import { structuredClone } from "@/lib/pollyfills/structuredClone";
import { recallToHeadline } from "@/lib/utils/recall";

View File

@@ -6,7 +6,7 @@ import toast from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { TIntegrationNotion, TIntegrationNotionConfigData } from "@formbricks/types/integration/notion";
import { TUserLocale } from "@formbricks/types/user";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { timeSince } from "@/lib/time";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { Button } from "@/modules/ui/components/button";

View File

@@ -9,8 +9,8 @@ import {
} from "@formbricks/types/integration/notion";
import { TSurvey } from "@formbricks/types/surveys/types";
import { TUserLocale } from "@formbricks/types/user";
import { AddIntegrationModal } from "@/app/(app)/environments/[environmentId]/workspace/integrations/notion/components/AddIntegrationModal";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/workspace/integrations/notion/components/ManageIntegration";
import { AddIntegrationModal } from "@/app/(app)/environments/[environmentId]/project/integrations/notion/components/AddIntegrationModal";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/project/integrations/notion/components/ManageIntegration";
import notionLogo from "@/images/notion.png";
import { ConnectIntegration } from "@/modules/ui/components/connect-integration";
import { authorize } from "../lib/notion";

View File

@@ -10,7 +10,7 @@ const Loading = () => {
<div className="mt-6 p-6">
<GoBackButton />
<div className="mb-6 text-right">
<Button className="pointer-events-none animate-pulse cursor-not-allowed bg-slate-200 select-none">
<Button className="pointer-events-none animate-pulse cursor-not-allowed select-none bg-slate-200">
{t("environments.integrations.notion.link_database")}
</Button>
</div>
@@ -48,7 +48,7 @@ const Loading = () => {
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
</div>
</div>
<div className="col-span-2 my-auto flex items-center justify-center text-center text-sm whitespace-nowrap text-slate-500">
<div className="col-span-2 my-auto flex items-center justify-center whitespace-nowrap text-center text-sm text-slate-500">
<div className="h-4 w-16 animate-pulse rounded-full bg-slate-200"></div>
</div>
<div className="text-center"></div>

View File

@@ -1,7 +1,7 @@
import { redirect } from "next/navigation";
import { TIntegrationNotion, TIntegrationNotionDatabase } from "@formbricks/types/integration/notion";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/workspace/integrations/lib/surveys";
import { NotionWrapper } from "@/app/(app)/environments/[environmentId]/workspace/integrations/notion/components/NotionWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/project/integrations/lib/surveys";
import { NotionWrapper } from "@/app/(app)/environments/[environmentId]/project/integrations/notion/components/NotionWrapper";
import {
NOTION_AUTH_URL,
NOTION_OAUTH_CLIENT_ID,

View File

@@ -2,7 +2,7 @@ import { TFunction } from "i18next";
import Image from "next/image";
import { redirect } from "next/navigation";
import { TIntegrationType } from "@formbricks/types/integration";
import { getWebhookCountBySource } from "@/app/(app)/environments/[environmentId]/workspace/integrations/lib/webhook";
import { getWebhookCountBySource } from "@/app/(app)/environments/[environmentId]/project/integrations/lib/webhook";
import ActivePiecesLogo from "@/images/activepieces.webp";
import AirtableLogo from "@/images/airtableLogo.svg";
import GoogleSheetsLogo from "@/images/googleSheetsLogo.png";
@@ -79,7 +79,7 @@ const Page = async (props) => {
disabled: isReadOnly,
},
{
connectHref: `/environments/${params.environmentId}/workspace/integrations/webhooks`,
connectHref: `/environments/${params.environmentId}/project/integrations/webhooks`,
connectText: t("environments.integrations.manage_webhooks"),
connectNewTab: false,
docsHref: "https://formbricks.com/docs/xm-and-surveys/core-features/integrations/webhooks",
@@ -93,7 +93,7 @@ const Page = async (props) => {
disabled: false,
},
{
connectHref: `/environments/${params.environmentId}/workspace/integrations/google-sheets`,
connectHref: `/environments/${params.environmentId}/project/integrations/google-sheets`,
connectText: `${isGoogleSheetsIntegrationConnected ? t("common.manage") : t("common.connect")}`,
connectNewTab: false,
docsHref: "https://formbricks.com/docs/xm-and-surveys/core-features/integrations/google-sheets",
@@ -107,7 +107,7 @@ const Page = async (props) => {
disabled: isReadOnly,
},
{
connectHref: `/environments/${params.environmentId}/workspace/integrations/airtable`,
connectHref: `/environments/${params.environmentId}/project/integrations/airtable`,
connectText: `${isAirtableIntegrationConnected ? t("common.manage") : t("common.connect")}`,
connectNewTab: false,
docsHref: "https://formbricks.com/docs/xm-and-surveys/core-features/integrations/airtable",
@@ -121,7 +121,7 @@ const Page = async (props) => {
disabled: isReadOnly,
},
{
connectHref: `/environments/${params.environmentId}/workspace/integrations/slack`,
connectHref: `/environments/${params.environmentId}/project/integrations/slack`,
connectText: `${isSlackIntegrationConnected ? t("common.manage") : t("common.connect")}`,
connectNewTab: false,
docsHref: "https://formbricks.com/docs/xm-and-surveys/core-features/integrations/slack",
@@ -163,7 +163,7 @@ const Page = async (props) => {
disabled: isReadOnly,
},
{
connectHref: `/environments/${params.environmentId}/workspace/integrations/notion`,
connectHref: `/environments/${params.environmentId}/project/integrations/notion`,
connectText: `${isNotionIntegrationConnected ? t("common.manage") : t("common.connect")}`,
connectNewTab: false,
docsHref: "https://formbricks.com/docs/xm-and-surveys/core-features/integrations/notion",
@@ -196,7 +196,7 @@ const Page = async (props) => {
docsHref: "https://formbricks.com/docs/app-surveys/quickstart",
docsText: t("common.docs"),
docsNewTab: true,
connectHref: `/environments/${params.environmentId}/workspace/app-connection`,
connectHref: `/environments/${params.environmentId}/project/app-connection`,
connectText: t("common.connect"),
connectNewTab: false,
label: "Javascript SDK",
@@ -209,7 +209,7 @@ const Page = async (props) => {
return (
<PageContentWrapper>
<PageHeader pageTitle={t("common.workspace_configuration")}>
<PageHeader pageTitle={t("common.project_configuration")}>
<ProjectConfigNavigation environmentId={params.environmentId} activeId="integrations" />
</PageHeader>
<div className="grid grid-cols-3 place-content-stretch gap-4 lg:grid-cols-3">

View File

@@ -15,7 +15,7 @@ import {
} from "@formbricks/types/integration/slack";
import { TSurvey } from "@formbricks/types/surveys/types";
import { getTextContent } from "@formbricks/types/surveys/validation";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { createOrUpdateIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import SlackLogo from "@/images/slacklogo.png";
import { recallToHeadline } from "@/lib/utils/recall";
import { getElementsFromBlocks } from "@/modules/survey/lib/client-utils";

View File

@@ -6,7 +6,7 @@ import toast from "react-hot-toast";
import { Trans, useTranslation } from "react-i18next";
import { TIntegrationSlack, TIntegrationSlackConfigData } from "@formbricks/types/integration/slack";
import { TUserLocale } from "@formbricks/types/user";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/actions";
import { deleteIntegrationAction } from "@/app/(app)/environments/[environmentId]/project/integrations/actions";
import { timeSince } from "@/lib/time";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { Button } from "@/modules/ui/components/button";

View File

@@ -6,10 +6,10 @@ import { TIntegrationItem } from "@formbricks/types/integration";
import { TIntegrationSlack, TIntegrationSlackConfigData } from "@formbricks/types/integration/slack";
import { TSurvey } from "@formbricks/types/surveys/types";
import { TUserLocale } from "@formbricks/types/user";
import { getSlackChannelsAction } from "@/app/(app)/environments/[environmentId]/workspace/integrations/slack/actions";
import { AddChannelMappingModal } from "@/app/(app)/environments/[environmentId]/workspace/integrations/slack/components/AddChannelMappingModal";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/workspace/integrations/slack/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/workspace/integrations/slack/lib/slack";
import { getSlackChannelsAction } from "@/app/(app)/environments/[environmentId]/project/integrations/slack/actions";
import { AddChannelMappingModal } from "@/app/(app)/environments/[environmentId]/project/integrations/slack/components/AddChannelMappingModal";
import { ManageIntegration } from "@/app/(app)/environments/[environmentId]/project/integrations/slack/components/ManageIntegration";
import { authorize } from "@/app/(app)/environments/[environmentId]/project/integrations/slack/lib/slack";
import slackLogo from "@/images/slacklogo.png";
import { ConnectIntegration } from "@/modules/ui/components/connect-integration";

View File

@@ -1,7 +1,7 @@
import { redirect } from "next/navigation";
import { TIntegrationSlack } from "@formbricks/types/integration/slack";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/workspace/integrations/lib/surveys";
import { SlackWrapper } from "@/app/(app)/environments/[environmentId]/workspace/integrations/slack/components/SlackWrapper";
import { getSurveys } from "@/app/(app)/environments/[environmentId]/project/integrations/lib/surveys";
import { SlackWrapper } from "@/app/(app)/environments/[environmentId]/project/integrations/slack/components/SlackWrapper";
import { SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, WEBAPP_URL } from "@/lib/constants";
import { getIntegrationByType } from "@/lib/integration/service";
import { findMatchingLocale } from "@/lib/utils/locale";
@@ -32,7 +32,7 @@ const Page = async (props) => {
return (
<PageContentWrapper>
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/workspace/integrations`} />
<GoBackButton url={`${WEBAPP_URL}/environments/${params.environmentId}/project/integrations`} />
<PageHeader pageTitle={t("environments.integrations.slack.slack_integration")} />
<div className="h-[75vh] w-full">
<SlackWrapper

View File

@@ -21,7 +21,7 @@ const AccountSettingsLayout = async (props) => {
}
if (!project) {
throw new Error(t("common.workspace_not_found"));
throw new Error(t("common.project_not_found"));
}
if (!session) {

View File

@@ -16,7 +16,7 @@ export const IntegrationsTip = ({ environmentId }: IntegrationsTipProps) => {
<p className="text-sm">
{t("environments.settings.notifications.need_slack_or_discord_notifications")}?
<a
href={`/environments/${environmentId}/workspace/integrations`}
href={`/environments/${environmentId}/project/integrations`}
className="ml-1 cursor-pointer text-sm underline">
{t("environments.settings.notifications.use_the_integration")}
</a>

View File

@@ -47,13 +47,6 @@ export const OrganizationSettingsNavbar = ({
current: pathname?.includes("/api-keys"),
hidden: !isOwner,
},
{
id: "domain",
label: t("common.domain"),
href: `/environments/${environmentId}/settings/domain`,
current: pathname?.includes("/domain"),
hidden: isFormbricksCloud,
},
{
id: "billing",
label: t("common.billing"),

View File

@@ -1,102 +0,0 @@
"use client";
import Link from "next/link";
import { useTranslation } from "react-i18next";
import { TSurveyStatus } from "@formbricks/types/surveys/types";
import { IdBadge } from "@/modules/ui/components/id-badge";
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/modules/ui/components/table";
interface SurveyWithSlug {
id: string;
name: string;
slug: string | null;
status: TSurveyStatus;
environment: {
id: string;
type: "production" | "development";
project: {
id: string;
name: string;
};
};
createdAt: Date;
}
interface PrettyUrlsTableProps {
surveys: SurveyWithSlug[];
}
export const PrettyUrlsTable = ({ surveys }: PrettyUrlsTableProps) => {
const { t } = useTranslation();
const getEnvironmentBadgeColor = (type: string) => {
return type === "production" ? "bg-green-100 text-green-800" : "bg-blue-100 text-blue-800";
};
const tableHeaders = [
{
label: t("environments.settings.domain.survey_name"),
key: "name",
},
{
label: t("environments.settings.domain.workspace"),
key: "project",
},
{
label: t("environments.settings.domain.pretty_url"),
key: "slug",
},
{
label: t("common.environment"),
key: "environment",
},
];
return (
<div className="overflow-hidden rounded-lg">
<Table>
<TableHeader>
<TableRow className="bg-slate-100">
{tableHeaders.map((header) => (
<TableHead key={header.key} className="font-medium text-slate-500">
{header.label}
</TableHead>
))}
</TableRow>
</TableHeader>
<TableBody className="[&_tr:last-child]:border-b">
{surveys.length === 0 && (
<TableRow className="hover:bg-transparent">
<TableCell colSpan={4} className="text-center text-slate-500">
{t("environments.settings.domain.no_pretty_urls")}
</TableCell>
</TableRow>
)}
{surveys.map((survey) => (
<TableRow key={survey.id} className="border-slate-200 hover:bg-transparent">
<TableCell className="font-medium">
<Link
href={`/environments/${survey.environment.id}/surveys/${survey.id}/summary`}
className="text-slate-900 hover:text-slate-700 hover:underline">
{survey.name}
</Link>
</TableCell>
<TableCell>{survey.environment.project.name}</TableCell>
<TableCell>
<IdBadge id={survey.slug ?? ""} />
</TableCell>
<TableCell>
<span
className={`rounded px-2 py-1 text-xs font-medium ${getEnvironmentBadgeColor(survey.environment.type)}`}>
{survey.environment.type === "production"
? t("common.production")
: t("common.development")}
</span>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</div>
);
};

View File

@@ -1,53 +0,0 @@
import { notFound } from "next/navigation";
import { IS_FORMBRICKS_CLOUD } from "@/lib/constants";
import { getTranslate } from "@/lingodotdev/server";
import { getEnvironmentAuth } from "@/modules/environments/lib/utils";
import { getSurveysWithSlugsByOrganizationId } from "@/modules/survey/lib/slug";
import { PageContentWrapper } from "@/modules/ui/components/page-content-wrapper";
import { PageHeader } from "@/modules/ui/components/page-header";
import { SettingsCard } from "../../components/SettingsCard";
import { OrganizationSettingsNavbar } from "../components/OrganizationSettingsNavbar";
import { PrettyUrlsTable } from "./components/pretty-urls-table";
const Page = async (props: { params: Promise<{ environmentId: string }> }) => {
const params = await props.params;
const t = await getTranslate();
if (IS_FORMBRICKS_CLOUD) {
return notFound();
}
const { session, currentUserMembership, organization } = await getEnvironmentAuth(params.environmentId);
if (!session) {
throw new Error(t("common.session_not_found"));
}
const result = await getSurveysWithSlugsByOrganizationId(organization.id);
if (!result.ok) {
throw new Error(t("common.something_went_wrong"));
}
const surveys = result.data;
return (
<PageContentWrapper>
<PageHeader pageTitle={t("environments.settings.general.organization_settings")}>
<OrganizationSettingsNavbar
environmentId={params.environmentId}
isFormbricksCloud={IS_FORMBRICKS_CLOUD}
membershipRole={currentUserMembership?.role}
activeId="domain"
/>
</PageHeader>
<SettingsCard
title={t("environments.settings.domain.title")}
description={t("environments.settings.domain.description")}>
<PrettyUrlsTable surveys={surveys} />
</SettingsCard>
</PageContentWrapper>
);
};
export default Page;

View File

@@ -39,7 +39,7 @@ const Page = async (props) => {
onRequest: false,
},
{
title: t("environments.workspace.languages.multi_language_surveys"),
title: t("environments.project.languages.multi_language_surveys"),
comingSoon: false,
onRequest: false,
},
@@ -118,7 +118,7 @@ const Page = async (props) => {
<div className="relative isolate mt-8 overflow-hidden rounded-lg bg-slate-900 px-3 pt-8 shadow-2xl sm:px-8 md:pt-12 lg:flex lg:gap-x-10 lg:px-12 lg:pt-0">
<svg
viewBox="0 0 1024 1024"
className="absolute top-1/2 left-1/2 -z-10 h-[64rem] w-[64rem] -translate-y-1/2 [mask-image:radial-gradient(closest-side,white,transparent)] sm:left-full sm:-ml-80 lg:left-1/2 lg:ml-0 lg:-translate-x-1/2 lg:translate-y-0"
className="absolute left-1/2 top-1/2 -z-10 h-[64rem] w-[64rem] -translate-y-1/2 [mask-image:radial-gradient(closest-side,white,transparent)] sm:left-full sm:-ml-80 lg:left-1/2 lg:ml-0 lg:-translate-x-1/2 lg:translate-y-0"
aria-hidden="true">
<circle
cx={512}

View File

@@ -21,7 +21,7 @@ const Layout = async (props) => {
}
if (!project) {
throw new Error(t("common.workspace_not_found"));
throw new Error(t("common.project_not_found"));
}
if (!session) {

View File

@@ -27,7 +27,7 @@ export const EmptyAppSurveys = ({ environment }: TEmptyAppSurveysProps) => {
{t("environments.surveys.summary.connect_your_website_or_app_with_formbricks_to_get_started")}
</p>
<Link className="mt-2" href={`/environments/${environment.id}/workspace/app-connection`}>
<Link className="mt-2" href={`/environments/${environment.id}/project/app-connection`}>
<Button size="sm" className="flex w-[120px] justify-center">
{t("common.connect")}
</Button>

View File

@@ -3,7 +3,7 @@
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
import {
Code2Icon,
Link2Icon,
LinkIcon,
MailIcon,
QrCodeIcon,
Settings,
@@ -22,7 +22,6 @@ import { DynamicPopupTab } from "@/app/(app)/environments/[environmentId]/survey
import { EmailTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/email-tab";
import { LinkSettingsTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/link-settings-tab";
import { PersonalLinksTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/personal-links-tab";
import { PrettyUrlTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/pretty-url-tab";
import { QRCodeTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/qr-code-tab";
import { SocialMediaTab } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/social-media-tab";
import { TabContainer } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/shareEmbedModal/tab-container";
@@ -81,13 +80,13 @@ export const ShareSurveyModal = ({
componentType: React.ComponentType<unknown>;
componentProps: unknown;
disabled?: boolean;
}[] = useMemo(() => {
const tabs = [
}[] = useMemo(
() => [
{
id: ShareViaType.ANON_LINKS,
type: LinkTabsType.SHARE_VIA,
label: t("environments.surveys.share.anonymous_links.nav_title"),
icon: Link2Icon,
icon: LinkIcon,
title: t("environments.surveys.share.anonymous_links.nav_title"),
description: t("environments.surveys.share.anonymous_links.description"),
componentType: AnonymousLinksTab,
@@ -181,33 +180,22 @@ export const ShareSurveyModal = ({
componentType: LinkSettingsTab,
componentProps: { isReadOnly, locale: user.locale, isStorageConfigured },
},
{
id: ShareSettingsType.PRETTY_URL,
type: LinkTabsType.SHARE_SETTING,
label: t("environments.surveys.share.pretty_url.title"),
icon: Link2Icon,
title: t("environments.surveys.share.pretty_url.title"),
description: t("environments.surveys.share.pretty_url.description"),
componentType: PrettyUrlTab,
componentProps: { publicDomain, isReadOnly },
},
];
return isFormbricksCloud ? tabs.filter((tab) => tab.id !== ShareSettingsType.PRETTY_URL) : tabs;
}, [
t,
survey,
publicDomain,
user.locale,
surveyUrl,
isReadOnly,
environmentId,
segments,
isContactsEnabled,
isFormbricksCloud,
email,
isStorageConfigured,
]);
],
[
t,
survey,
publicDomain,
user.locale,
surveyUrl,
isReadOnly,
environmentId,
segments,
isContactsEnabled,
isFormbricksCloud,
email,
isStorageConfigured,
]
);
const getDefaultActiveId = useCallback(() => {
if (survey.type !== "link") {

View File

@@ -163,7 +163,7 @@ export const AppTab = () => {
</AlertDescription>
{!environment.appSetupCompleted && (
<AlertButton asChild>
<Link href={`/environments/${environment.id}/workspace/app-connection`}>
<Link href={`/environments/${environment.id}/project/app-connection`}>
{t("common.connect_formbricks")}
</Link>
</AlertButton>

View File

@@ -1,31 +0,0 @@
"use client";
import { useTranslation } from "react-i18next";
import { Input } from "@/modules/ui/components/input";
interface PrettyUrlInputProps {
value: string;
onChange: (value: string) => void;
publicDomain: string;
disabled?: boolean;
}
export const PrettyUrlInput = ({ value, onChange, publicDomain, disabled = false }: PrettyUrlInputProps) => {
const { t } = useTranslation();
return (
<div className="flex items-center overflow-hidden rounded-md border border-slate-300 bg-white">
<span className="flex-shrink-0 border-r border-slate-300 bg-slate-50 px-3 py-2 text-sm text-slate-600">
{publicDomain}/p/
</span>
<Input
type="text"
value={value}
onChange={(e) => onChange(e.target.value.toLowerCase().replaceAll(/[^a-z0-9-]/g, ""))}
placeholder={t("environments.surveys.share.pretty_url.slug_placeholder")}
disabled={disabled}
className="border-0 bg-white focus-visible:ring-0 focus-visible:ring-offset-0"
/>
</div>
);
};

View File

@@ -1,194 +0,0 @@
"use client";
import { Copy, Trash2 } from "lucide-react";
import { useRouter } from "next/navigation";
import { useEffect, useMemo, useState } from "react";
import { useForm } from "react-hook-form";
import toast from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { useSurvey } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/context/survey-context";
import { getFormattedErrorMessage } from "@/lib/utils/helper";
import { removeSurveySlugAction, updateSurveySlugAction } from "@/modules/survey/slug/actions";
import { Button } from "@/modules/ui/components/button";
import { DeleteDialog } from "@/modules/ui/components/delete-dialog";
import {
FormControl,
FormDescription,
FormField,
FormItem,
FormLabel,
FormProvider,
} from "@/modules/ui/components/form";
import { PrettyUrlInput } from "./pretty-url-input";
interface PrettyUrlTabProps {
publicDomain: string;
isReadOnly?: boolean;
}
interface PrettyUrlFormData {
slug: string;
}
export const PrettyUrlTab = ({ publicDomain, isReadOnly = false }: PrettyUrlTabProps) => {
const { t } = useTranslation();
const router = useRouter();
const { survey } = useSurvey();
const [isEditing, setIsEditing] = useState(!survey.slug);
const [showRemoveDialog, setShowRemoveDialog] = useState(false);
const [isSubmitting, setIsSubmitting] = useState(false);
// Initialize form with current values - memoize to prevent re-initialization
const initialFormData = useMemo(() => {
return {
slug: survey.slug || "",
};
}, [survey.slug]);
const form = useForm<PrettyUrlFormData>({
defaultValues: initialFormData,
});
const { handleSubmit, reset } = form;
// Sync isEditing state and form with survey.slug changes
useEffect(() => {
setIsEditing(!survey.slug);
reset({ slug: survey.slug || "" });
}, [survey.slug, reset]);
const onSubmit = async (data: PrettyUrlFormData) => {
if (!data.slug.trim()) {
toast.error(t("environments.surveys.share.pretty_url.slug_required"));
return;
}
setIsSubmitting(true);
const result = await updateSurveySlugAction({
surveyId: survey.id,
slug: data.slug,
});
if (result?.data) {
if (result.data.ok) {
toast.success(t("environments.surveys.share.pretty_url.save_success"));
router.refresh();
setIsEditing(false);
} else {
toast.error(result.data.error.message);
}
} else {
const errorMessage = getFormattedErrorMessage(result);
toast.error(errorMessage || "Failed to update slug");
}
setIsSubmitting(false);
};
const handleEdit = () => {
setIsEditing(true);
};
const handleCancel = () => {
reset({ slug: survey.slug || "" });
setIsEditing(false);
};
const handleRemove = async () => {
setIsSubmitting(true);
const result = await removeSurveySlugAction({ surveyId: survey.id });
if (result?.data) {
if (result.data.ok) {
setShowRemoveDialog(false);
reset({ slug: "" });
router.refresh();
setIsEditing(true);
toast.success(t("environments.surveys.share.pretty_url.remove_success"));
} else {
toast.error(result.data.error.message);
}
} else {
const errorMessage = getFormattedErrorMessage(result);
toast.error(errorMessage || "Failed to remove slug");
}
setIsSubmitting(false);
};
const handleCopyUrl = () => {
if (!survey.slug) return;
const prettyUrl = `${publicDomain}/p/${survey.slug}`;
navigator.clipboard.writeText(prettyUrl);
toast.success(t("common.copied_to_clipboard"));
};
return (
<div className="px-1">
<FormProvider {...form}>
<form onSubmit={handleSubmit(onSubmit)} className="space-y-6">
<FormField
control={form.control}
name="slug"
render={({ field }) => (
<FormItem>
<FormLabel>{t("environments.surveys.share.pretty_url.slug_label")}</FormLabel>
<FormControl>
<PrettyUrlInput
value={field.value}
onChange={field.onChange}
publicDomain={publicDomain}
disabled={isReadOnly || !isEditing}
/>
</FormControl>
<FormDescription>{t("environments.surveys.share.pretty_url.slug_help")}</FormDescription>
</FormItem>
)}
/>
<div className="flex gap-2">
{isEditing ? (
<>
<Button type="submit" disabled={isReadOnly || isSubmitting}>
{t("common.save")}
</Button>
{survey.slug && (
<Button type="button" variant="secondary" onClick={handleCancel} disabled={isSubmitting}>
{t("common.cancel")}
</Button>
)}
</>
) : (
<Button type="button" variant="secondary" onClick={handleEdit} disabled={isReadOnly}>
{t("common.edit")}
</Button>
)}
{survey.slug && !isEditing && (
<>
<Button type="button" variant="default" onClick={handleCopyUrl} disabled={isReadOnly}>
<Copy className="mr-2 h-4 w-4" />
{t("common.copy")} URL
</Button>
<Button
type="button"
variant="destructive"
onClick={() => setShowRemoveDialog(true)}
disabled={isReadOnly}>
<Trash2 className="mr-2 h-4 w-4" />
{t("common.remove")}
</Button>
</>
)}
</div>
</form>
</FormProvider>
<DeleteDialog
open={showRemoveDialog}
setOpen={setShowRemoveDialog}
deleteWhat={t("environments.surveys.share.pretty_url.title")}
onDelete={handleRemove}
text={t("environments.surveys.share.pretty_url.remove_description")}></DeleteDialog>
</div>
);
};

View File

@@ -66,7 +66,7 @@ export const SuccessView: React.FC<SuccessViewProps> = ({
className="relative flex flex-col items-center gap-3 rounded-lg border border-slate-100 bg-white p-4 text-center text-sm text-slate-900 hover:border-slate-200 md:p-8">
<UserIcon className="h-8 w-8 stroke-1 text-slate-900" />
{t("environments.surveys.summary.use_personal_links")}
<Badge size="normal" type="success" className="absolute top-3 right-3" text={t("common.new")} />
<Badge size="normal" type="success" className="absolute right-3 top-3" text={t("common.new")} />
</button>
<Link
href={`/environments/${environmentId}/settings/notifications`}
@@ -75,7 +75,7 @@ export const SuccessView: React.FC<SuccessViewProps> = ({
{t("environments.surveys.summary.configure_alerts")}
</Link>
<Link
href={`/environments/${environmentId}/workspace/integrations`}
href={`/environments/${environmentId}/project/integrations`}
className="flex flex-col items-center gap-3 rounded-lg border border-slate-100 bg-white p-4 text-center text-sm text-slate-900 hover:border-slate-200 md:p-8">
<BlocksIcon className="h-8 w-8 stroke-1 text-slate-900" />
{t("environments.surveys.summary.setup_integrations")}

View File

@@ -12,7 +12,6 @@ export enum ShareViaType {
export enum ShareSettingsType {
LINK_SETTINGS = "link-settings",
PRETTY_URL = "pretty-url",
}
export enum LinkTabsType {

View File

@@ -64,7 +64,7 @@ export const GET = async (req: Request) => {
const result = await createOrUpdateIntegration(environmentId, googleSheetIntegration);
if (result) {
return Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/google-sheets`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/google-sheets`
);
}

View File

@@ -91,7 +91,7 @@ export const GET = withV1ApiWrapper({
await createOrUpdateIntegration(environmentId, airtableIntegrationInput);
return {
response: Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/airtable`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/airtable`
),
};
} catch (error) {

View File

@@ -87,14 +87,14 @@ export const GET = withV1ApiWrapper({
if (result) {
return {
response: Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/notion`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/notion`
),
};
}
} else if (error) {
return {
response: Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/notion?error=${error}`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/notion?error=${error}`
),
};
}

View File

@@ -94,14 +94,14 @@ export const GET = withV1ApiWrapper({
if (result) {
return {
response: Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/slack`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/slack`
),
};
}
} else if (error) {
return {
response: Response.redirect(
`${WEBAPP_URL}/environments/${environmentId}/workspace/integrations/slack?error=${error}`
`${WEBAPP_URL}/environments/${environmentId}/project/integrations/slack?error=${error}`
),
};
}

View File

@@ -4915,6 +4915,5 @@ export const previewSurvey = (projectName: string, t: TFunction): TSurvey => {
isBackButtonHidden: false,
metadata: {},
questions: [], // Required for build-time type checking (Zod defaults to [] at runtime)
slug: null,
};
};

View File

@@ -1,5 +0,0 @@
import { LinkSurveyNotFound } from "@/modules/survey/link/not-found";
export default function NotFound() {
return <LinkSurveyNotFound />;
}

View File

@@ -1,34 +0,0 @@
import { notFound, redirect } from "next/navigation";
import { IS_FORMBRICKS_CLOUD } from "@/lib/constants";
import { getSurveyBySlug } from "@/modules/survey/lib/slug";
interface PrettyUrlPageProps {
params: Promise<{ slug: string }>;
searchParams: Promise<Record<string, string | string[] | undefined>>;
}
export default async function PrettyUrlPage(props: PrettyUrlPageProps) {
const { slug } = await props.params;
const searchParams = await props.searchParams;
if (IS_FORMBRICKS_CLOUD) {
return notFound();
}
const result = await getSurveyBySlug(slug);
if (!result.ok || !result.data) {
return notFound();
}
const survey = result.data;
// Preserve query params (suId, lang, etc.)
const queryString = new URLSearchParams(
Object.entries(searchParams).filter(([_, v]) => v !== undefined) as [string, string][]
).toString();
const baseUrl = `/s/${survey.id}`;
const redirectUrl = queryString ? `${baseUrl}?${queryString}` : baseUrl;
redirect(redirectUrl);
}

View File

@@ -66,7 +66,7 @@ const Page = async () => {
if (!firstProductionEnvironmentId) {
if (isOwner || isManager) {
return redirect(`/organizations/${userOrganizations[0].id}/workspaces/new/mode`);
return redirect(`/organizations/${userOrganizations[0].id}/projects/new/mode`);
} else {
return redirect(`/organizations/${userOrganizations[0].id}/landing`);
}

View File

@@ -18,8 +18,7 @@
"zh-Hant-TW",
"nl-NL",
"es-ES",
"sv-SE",
"ru-RU"
"sv-SE"
]
},
"version": 1.8

View File

@@ -94,9 +94,9 @@ checksums:
common/add_filter: ed5d8e9bfcb05cd1e10e4c403befbae6
common/add_logo: c8665aa9afd0d5a13528bdc96daefa53
common/add_member: 11979625770516ca287e929381778e02
common/add_new_workspace: 6571cc8952d3c9a017c51cb842965d57
common/add_new_project: 80e83b2059d1f727d68919a93b55a397
common/add_project: b9188094aece9060064ce9b03b393f74
common/add_to_team: 81ea05d21e72679f58a5bc77f6077ba1
common/add_workspace: 17b0856283b433b848ce9bf4c03c6ae5
common/all: 5e2e93f8e2a5f315b6fecdd0a0e6f55f
common/all_questions: e13634cf510cc6e89b65a6394ea96a21
common/allow: 3e39cc5940255e6bff0fea95c817dd43
@@ -121,7 +121,7 @@ checksums:
common/choices: 8a7a77a71ec6eebc363c5dc0f8490a4d
common/choose_environment: 5762cd499529815fc3e6a7feea39f90b
common/choose_organization: a8f5db68012323bfbb1a0ad0fb194603
common/choose_workspace: f9ed22d76c69cc75aa56cf3da3fa6320
common/choose_project: e9db88b0ae67498478a1ecb523e50e71
common/clear_all: 854be0c051e4a3491a2cdd9dd8c1b4d5
common/clear_filters: 8f40ab5af527e4b190da94e7b6221379
common/clear_selection: af5d720527735d4253e289400d29ec9e
@@ -147,9 +147,9 @@ checksums:
common/count_contacts: b1c413a4b06961b71b6aeee95d6775d7
common/count_responses: 690118a456c01c5b4d437ae82b50b131
common/create_new_organization: 51dae7b33143686ee218abf5bea764a5
common/create_project: 606c39c41c8b42373ba02ddf2a928b6c
common/create_segment: 9d8291cd4d778b53b73bbc84fd91c181
common/create_survey: 1cfbba08d34876566d84b2960054a987
common/create_workspace: 2e6718e79964ea5ce22d76c2189c77ca
common/created: 6045b4ff97fb7dca19ebadfa2e34a700
common/created_at: f98a3c3bc73494df9bbc14e4e47a018c
common/created_by: 6775c2fa7d495fea48f1ad816daea93b
@@ -160,7 +160,6 @@ checksums:
common/delete: 8bcf303dd10a645b5baacb02b47d72c9
common/description: e17686a22ffad04cc7bb70524ed4478b
common/dev_env: e650911d5e19ba256358e0cda154c005
common/development: 85211dbb918bda7a6e87649dcfc1b17a
common/development_environment_banner: 90aa859c1f43a9c2d9fbc758853d0c20
common/disable: 81b754fd7962e0bd9b6ba87f3972e7fc
common/disallow: 144b91c92ed07f29ff362fa9edc2e4d0
@@ -168,7 +167,6 @@ checksums:
common/dismissed: f0e21b3fe28726c577a7238a63cc29c2
common/docs: 1563fcb5ddb5037b0709ccd3dd384a92
common/documentation: 1563fcb5ddb5037b0709ccd3dd384a92
common/domain: 402d46965eacc3af4c5df92e53e95712
common/download: 56b7d0834952b39ee394b44bd8179178
common/draft: e8a92958ad300aacfe46c2bf6644927e
common/duplicate: 27756566785c2b8463e21582c4bb619b
@@ -178,7 +176,6 @@ checksums:
common/ending_card: 16d30d3a36472159da8c2dbd374dfe22
common/enter_url: 468c2276d0f2cb971ff5a47a20fa4b97
common/enterprise_license: e81bf506f47968870c7bd07245648a0d
common/environment: 0844e8dc1485339c8de066dc0a9bb6a1
common/environment_not_found: 4d7610bdb55a8b5e6131bb5b08ce04c5
common/environment_notice: 0a860e3fa89407726dd8a2083a6b7fd5
common/error: 3c95bcb32c2104b99a46f5b3dd015248
@@ -189,7 +186,7 @@ checksums:
common/expand_rows: b6e06327cb8718dfd6651720843e4dad
common/failed_to_copy_to_clipboard: de836a7d628d36c832809252f188f784
common/failed_to_load_organizations: 512808a2b674c7c28bca73f8f91fd87e
common/failed_to_load_workspaces: 6ee3448097394517dc605074cd4e6ea4
common/failed_to_load_projects: 0bba9f9b2b38c189706a486a1bb134c3
common/finish: ffa7a10f71182b48fefed7135bee24fa
common/follow_these: 3a730b242bb17a3f95e01bf0dae86885
common/formbricks_version: d9967c797f3e49ca0cae78bc0ebd19cb
@@ -297,10 +294,17 @@ checksums:
common/preview_survey: 7409e9c118e3e5d5f2a86201c2b354f2
common/privacy: 7459744a63ef8af4e517a09024bd7c08
common/product_manager: dfeadc96e6d3de22a884ee97974b505e
common/production: 226e0ce83b49700bc1b1c08c4c3ed23a
common/profile: d7878693f91303a438852d617f6d35df
common/profile_id: 0ef1286cce9d47b148e9a09deccb6655
common/progress: dd0200d5849ebb7d64c15098ae91d229
common/project_configuration: 252b62ea7dbccf752837dcea3cc306c6
common/project_creation_description: 2c488ade53bcd4f2bb68f4fd2479e135
common/project_id: a61075236b7d84c0fd9ec257e93d193d
common/project_name: dd546200ce6ed6eab0675a2324498b34
common/project_name_placeholder: 8a9e30ab01666af13c44a73b82c37ec1
common/project_not_found: be3b516c02b05553acb4ae338511f645
common/project_permission_not_found: ace6b03f06bd14e884e4295c5022d61b
common/projects: fe8af5cfb3c95cb35534872a325b225e
common/question: 2a47e06b62410b16003c4979dee0099f
common/question_id: d0c3672976c281411bdccf749faf5ffd
common/questions: 38d08215fd7a8026077c7b64eea6bb59
@@ -389,7 +393,7 @@ checksums:
common/top_right: 241f95c923846911aaf13af6109333e5
common/try_again: 33dd8820e743e35a66e6977f69e9d3b5
common/type: f04471a7ddac844b9ad145eb9911ef75
common/unlock_more_workspaces_with_a_higher_plan: fe1590075b855bb4306c9388b65143b0
common/unlock_more_projects_with_a_higher_plan: 97975218b01024f3023f3f791fd11887
common/update: 079fc039262fd31b10532929685c2d1b
common/updated: 8aa8ff2dc2977ca4b269e80a513100b4
common/updated_at: 8fdb85248e591254973403755dcc3724
@@ -413,18 +417,10 @@ checksums:
common/website_app_survey: 258579927ed3955dcc8e1cbd7f0df17f
common/website_survey: 17513d25a07b6361768a15ec622b021b
common/welcome_card: 76081ebd5b2e35da9b0f080323704ae7
common/workspace_configuration: d0a5812d6a97d7724d565b1017c34387
common/workspace_creation_description: aea2f480ba0c54c5cabac72c9c900ddf
common/workspace_id: bafef925e1b57b52a69844fdf47aac3c
common/workspace_name: 14c04a902a874ab5ddbe9cf369ef0414
common/workspace_name_placeholder: 8a9e30ab01666af13c44a73b82c37ec1
common/workspace_not_found: 038fb0aaf3570610f4377b9eaed13752
common/workspace_permission_not_found: e94bdff8af51175c5767714f82bb4833
common/workspaces: 8ba082a84aa35cf851af1cf874b853e2
common/you: db2a4a796b70cc1430d1b21f6ffb6dcb
common/you_are_downgraded_to_the_community_edition: e3ae56502ff787109cae0997519f628e
common/you_are_not_authorised_to_perform_this_action: 49595693c5c119aa213bb7854ddac780
common/you_have_reached_your_limit_of_workspace_limit: 54d754c3267036742f23fb05fd3fcc45
common/you_have_reached_your_limit_of_project_limit: f0ee61ef349d94eeca4f1dd04d1db88d
common/you_have_reached_your_monthly_miu_limit_of: ded62fc6842c707f62622386ca34f71a
common/you_have_reached_your_monthly_response_limit_of: 3824db23ecc3dcd2b1787b98ccfdd5f9
common/you_will_be_downgraded_to_the_community_edition_on_date: bff35b54c13e2c205dc4c19056261cc0
@@ -450,12 +446,14 @@ checksums:
emails/forgot_password_email_text: 5100fa2fe2180ded9cb2d89b4f77d2e0
emails/hidden_field: 3ed5c58d0ed359e558cdf7bd33606d2d
emails/imprint: c4e5f2a1994d3cc5896b200709cc499c
emails/invite_accepted_email_heading: 80763c6e4585cd57fa58e4d2d82e6500
emails/invite_accepted_email_heading: 6ff6dff269b0f1ac1b73912c9e344343
emails/invite_accepted_email_subject: 4f5f2a68c98dd1dd01143fcae3be5562
emails/invite_accepted_email_text: 48d792826ab9a97eed27599c17ec70d5
emails/invite_accepted_email_text_par1: b27eadc4779c9fa477103d136a6acab9
emails/invite_accepted_email_text_par2: c77209b510baf0415264fdb5ab8076a8
emails/invite_email_button_label: 02099d40cd11e717c0431fa43e68272c
emails/invite_email_heading: d9f9b18e4de575980de3cde3e4ed08bf
emails/invite_email_text: 1499fa615105121a133440929b039a64
emails/invite_email_heading: 6ff6dff269b0f1ac1b73912c9e344343
emails/invite_email_text_par1: 70b976a3d4a5509f6d905f9f3f962ada
emails/invite_email_text_par2: 14da6da9fdbc21a1cb38988abac7932d
emails/invite_member_email_subject: 295e329b1642339dc7cc2b49a687e1f8
emails/new_email_verification_text: b7f00f47d04afa9e872176d9933f2d93
emails/number_variable: d4f2bbb1965c791cf9921a5112914f3f
@@ -728,6 +726,130 @@ checksums:
environments/integrations/webhooks/webhook_url_placeholder: 5f2f7c074f6797e1506e21ce865219c1
environments/integrations/website_or_app_integration_description: d49af190ebc89de0d281bd1434bd4008
environments/integrations/zapier_integration_description: b8304da62a2490eced5ae50038d34e39
environments/project/api_keys/add_api_key: 3c7633bae18a6e19af7a5af12f9bc3da
environments/project/api_keys/api_key: ce825fec5b3e1f8e27c45b1a63619985
environments/project/api_keys/api_key_copied_to_clipboard: daeeac786ba09ffa650e206609b88f9c
environments/project/api_keys/api_key_created: 8dbb2b60a719b0d120e774d6666c8c45
environments/project/api_keys/api_key_deleted: 6b63d1a15bea4b41acdd8432e680751a
environments/project/api_keys/api_key_label: 66e9effa26d3dccd76383eb858e18dd4
environments/project/api_keys/api_key_security_warning: 8959f73972a79c27e4886c7a40e7842e
environments/project/api_keys/api_key_updated: 0e03754eb33742b4ee8d5fdad64c9b3f
environments/project/api_keys/delete_api_key_confirmation: b2f0342d4e55f0cb244fe121eeeb10a3
environments/project/api_keys/duplicate_access: ca60857bc80758977bd9bb30e520f15c
environments/project/api_keys/no_api_keys_yet: 829cc32ad4fb0bcafd67f07d50c5fba6
environments/project/api_keys/no_env_permissions_found: 97ef49946f3ce15c2ad44dcfd2bce507
environments/project/api_keys/organization_access: 96a92fa907b15e0c0e47e33cac15be88
environments/project/api_keys/organization_access_description: 773dfeaf6ffbf34dd9a0a3d656a6d83c
environments/project/api_keys/permissions: 2160be68b1d6b6577e64634e9feba2ed
environments/project/api_keys/project_access: 2c9f8da3ee1ebc2a5fe45786097438ca
environments/project/api_keys/secret: f041e5eb96121c8b4f2b8af7e0f83a9b
environments/project/api_keys/unable_to_delete_api_key: 1fd76d9a22c5f5f8c241c4891fca8295
environments/project/app-connection/app_connection: 778d2305e1a9c8efe91c2c7b4af37ae4
environments/project/app-connection/app_connection_description: dde226414bd2265cbd0daf6635efcfdd
environments/project/app-connection/cache_update_delay_description: 3368e4a8090b7684117a16c94f0c409c
environments/project/app-connection/cache_update_delay_title: 60e4a0fcfbd8850bddf29b5c3f59550c
environments/project/app-connection/environment_id: 3dba898b081c18cd4cae131765ef411f
environments/project/app-connection/environment_id_description: 8b4a763d069b000cfa1a2025a13df80c
environments/project/app-connection/formbricks_sdk_connected: 29e8a40ad6a7fdb5af5ee9451a70a9aa
environments/project/app-connection/formbricks_sdk_not_connected: 557c534e665750978ba6edb0eacb428e
environments/project/app-connection/formbricks_sdk_not_connected_description: 4ddbacae084238bd0cefeded0fe9dbb9
environments/project/app-connection/how_to_setup: 3bad40037f280b47fe6418fcbeb4c717
environments/project/app-connection/how_to_setup_description: 2ae5cd9456a8acd3986e3d3678e70ed2
environments/project/app-connection/receiving_data: 9f2a48c0b0278861add70b526061264c
environments/project/app-connection/recheck: f95f2bbe6990a123d60255c87bdd59f7
environments/project/app-connection/sdk_connection_details: 89f2c169fd1604c1df5a834517f1eae1
environments/project/app-connection/sdk_connection_details_description: d9b5d06776a139aef6fc8ed53d71bf0a
environments/project/app-connection/setup_alert_description: 6d676044d01dc2147731ffab7df6c259
environments/project/app-connection/setup_alert_title: 9561cca2b391e0df81e8a982921ff2bb
environments/project/app-connection/webapp_url: d64d8cc3c4c4ecce780d94755f7e4de9
environments/project/general/cannot_delete_only_project: 24751701a42d8b4d2ba6112a5f642bad
environments/project/general/delete_project: e4a2a227105c4ec71e561ab1f140eb26
environments/project/general/delete_project_confirmation: 54a4ee78867537e0244c7170453cdb3f
environments/project/general/delete_project_name_includes_surveys_responses_people_and_more: 11e9ac5a799fbec22495f92f42c40d98
environments/project/general/delete_project_settings_description: 74609281410279b8e0515c5649a3f616
environments/project/general/error_saving_project_information: 0354e1db63bc495a3b03d1480618044c
environments/project/general/only_owners_or_managers_can_delete_projects: fe5cc6941c53180b2938eaf2b1748e89
environments/project/general/project_deleted_successfully: dbedf0f0739b822f3951de4aeb2fc26f
environments/project/general/project_name_settings_description: 079c6380ad539543a9aa8772bc1b0fa2
environments/project/general/project_name_updated_successfully: f95f70f4a49d451dc0441a51d05a3aa3
environments/project/general/recontact_waiting_time: 0566dc710b4b9644e276e311b419c4c0
environments/project/general/recontact_waiting_time_settings_description: 8922cde1f95777f9a2747fb4bed57ab5
environments/project/general/this_action_cannot_be_undone: 3d8b13374ffd3cefc0f3f7ce077bd9c9
environments/project/general/wait_x_days_before_showing_next_survey: d96228788d32ec23dc0d8c8ba77150a6
environments/project/general/waiting_period_updated_successfully: fe21f3034e63ed079dc0f9b9b1dfdbdf
environments/project/general/whats_your_project_called: 599816573dcb6e5042b69fb276ca942c
environments/project/languages/add_language: bf0407850be7b8a56901533bceb4bc64
environments/project/languages/alias: 87e592cc48d819d7fdcf4597c1c63e7a
environments/project/languages/alias_tooltip: 0f681269a71d46a2d988eedaff31515a
environments/project/languages/cannot_remove_language_warning: a21bb501338eacefb5cf013aa107f452
environments/project/languages/conflict_between_identifier_and_alias: e1ebeb085c7f336bb17717765392cd9f
environments/project/languages/conflict_between_selected_alias_and_another_language: 86aadd7491a620c979819be809a21fea
environments/project/languages/delete_language_confirmation: 4f83321fed95d689f7ff3aa47a82ce68
environments/project/languages/duplicate_language_or_language_id: 0e17e3794b24e2428ca6ffadae0d08f3
environments/project/languages/edit_languages: c9d36f6b28557cc7d54e87c37dc18fdd
environments/project/languages/identifier: 7d8ade6b85e96216bcd73adeeeeecd8c
environments/project/languages/incomplete_translations: d82908b5725f18f5849c7876ad497ebc
environments/project/languages/language: 277fd1a41cc237a437cd1d5e4a80463b
environments/project/languages/language_deleted_successfully: 4a805d030491f3fe608d2371b0cfcd83
environments/project/languages/languages_updated_successfully: 60de474c99c5059c0458cddd0b016c15
environments/project/languages/multi_language_surveys: f4f98855fca2b6e9b72959247adb1bec
environments/project/languages/multi_language_surveys_description: 58da8b76c9d0f4d39a315667113a40b9
environments/project/languages/no_language_found: 8e3b7f1898d35075ba26f54c4cf9e7b8
environments/project/languages/please_select_a_language: d1ed573816cea84641c55ef0d33652ff
environments/project/languages/remove_language: 1a64563b0f37109f97b78eddd493e381
environments/project/languages/remove_language_from_surveys_to_remove_it_from_project: 24770f0a77fdca2a2a79b3d1c7b36508
environments/project/languages/search_items: b54b751c8b075200be579d6c8e58096b
environments/project/languages/translate: 59f9803b27e2030ba7323ed239116cf7
environments/project/look/add_background_color: 9be512ee1246e32d3958c56097d202d9
environments/project/look/add_background_color_description: adb6fcb392862b3d0e9420d9b5405ddb
environments/project/look/app_survey_placement: f09cddac6bbb77d4694df223c6edf6b6
environments/project/look/app_survey_placement_settings_description: d81bcff7a866a2f83ff76936dbad4770
environments/project/look/centered_modal_overlay_color: 1124ba61ee2ecb18a7175ff780dc3b60
environments/project/look/email_customization: ae399f381183a4fe0ffd41ab496b5d8f
environments/project/look/email_customization_description: 5ccaf1769b2c39d7e87f3a08d056a374
environments/project/look/enable_custom_styling: 4774d8fb009c27044aa0191ebcccdcc2
environments/project/look/enable_custom_styling_description: c640ce557046d87b2944118dbc7aaffe
environments/project/look/failed_to_remove_logo: c3b5aa87d945f7ea83e029d1ee90d310
environments/project/look/failed_to_update_logo: f8c9f8fe947f559dc698a3439d73f0c5
environments/project/look/formbricks_branding: 98dad6e31b03d235725c4d95065e36ff
environments/project/look/formbricks_branding_hidden: fda9ba81f8d7fdaacf8dc1642034e145
environments/project/look/formbricks_branding_settings_description: 5bb39206c6412c703895593f465a01f9
environments/project/look/formbricks_branding_shown: 6c9861cf8f95e8a68c5c64b2630d96cd
environments/project/look/logo_removed_successfully: f3a7f9d226affa91121e90ff360553aa
environments/project/look/logo_settings_description: da155953f55cb44d0e563d9e740241aa
environments/project/look/logo_updated_successfully: 170250f18062b79be6ac0481ec9d4368
environments/project/look/logo_upload_failed: 342624c84a04b891846a5d37e00d2c9f
environments/project/look/placement_updated_successfully: 65bdf0cfbf4f7e2430b4e7f5d4d377b5
environments/project/look/remove_branding_with_a_higher_plan: ee049340ea6fdc454edfdb0c29eb554b
environments/project/look/remove_logo: 7f0eb5e99706a338f3040cae5d724346
environments/project/look/remove_logo_confirmation: 386603e03a70672ae515fa6c9b8d6ab4
environments/project/look/replace_logo: b69a290f789ae2dfeb067c463482c824
environments/project/look/reset_styling: f25db45ece8637d660bd9d455c9b0265
environments/project/look/reset_styling_confirmation: 9ebc0403ebb8a51ed93ec2711db85796
environments/project/look/show_formbricks_branding_in: 80fabfec9b34a13c0445d02b923216ed
environments/project/look/show_powered_by_formbricks: 02b84acc3156de24e1aff8321d77603f
environments/project/look/styling_updated_successfully: b8b74b50dde95abcd498633e9d0c891f
environments/project/look/theme: 21fe00b7a518089576fb83c08631107a
environments/project/look/theme_settings_description: 9fc45322818c3774ab4a44ea14d7836e
environments/project/tags/add: 87c4a663507f2bcbbf79934af8164e13
environments/project/tags/add_tag: 2cfa04ceea966149f2b5d40d9c131141
environments/project/tags/count: 9c5848662eb8024ddf360f7e4001a968
environments/project/tags/delete_tag_confirmation: a9fb98064cd156242899643f3d2ef032
environments/project/tags/manage_tags: 2761d558b82b6104befbc240ae2379c6
environments/project/tags/manage_tags_description: ce7cc42da3646fba960502d7e4e49cd2
environments/project/tags/merge: 95051c859b8778be51226b43be6f1075
environments/project/tags/no_tag_found: 119c59a4367dfbd7f24a2f967d7f0f35
environments/project/tags/search_tags: 35066dce3d12ce93705cb2f5c2ea317d
environments/project/tags/tag: 924d12caa9981ef5859395382497d101
environments/project/tags/tag_already_exists: 1337fd5cdd04311bfdca4e7538f0a4f3
environments/project/tags/tag_deleted: 54fc251117cddad3ca42d10811ce0dde
environments/project/tags/tag_updated: 6685fd5cc501b8fb2fb284aa22c2823e
environments/project/tags/tags_merged: 544471de666f93fbb0ab600321d1e553
environments/project/teams/manage_teams: d7b5f26335cea450c333832adbe0b6ad
environments/project/teams/no_teams_found: fb6680d4b5b73731697b100713afb50d
environments/project/teams/permission: cc2ed7274bd8267f9e0a10b079584d8b
environments/project/teams/team_name: d1a5f99dbf503ca53f06b3a98b511d02
environments/project/teams/team_settings_description: da32d77993f5c5c7547cdf3e1d3fc7d5
environments/segments/add_filter_below: be9b9c51d4d61903e782fb37931d8905
environments/segments/add_your_first_filter_to_get_started: 365f9fc1600e2e44e2502e9ad9fde46a
environments/segments/cannot_delete_segment_used_in_surveys: 134200217852566d6743245006737093
@@ -784,9 +906,9 @@ checksums:
environments/settings/api_keys/add_permission: 4f0481d26a32aef6137ee6f18aaf8e89
environments/settings/api_keys/api_keys_description: 42c2d587834d54f124b9541b32ff7133
environments/settings/billing/1000_monthly_responses: e8625042bed54209770add138c27b3a5
environments/settings/billing/1_workspace: 4528d3e5277b172ef7a42fee7e881781
environments/settings/billing/1_project: 233cd44f2fe8aa28ef764b174494937e
environments/settings/billing/2000_contacts: af340a4c9297a61b255af65c2a4ee688
environments/settings/billing/3_workspaces: 3f76b2f62e426297db3c2942a10c22f8
environments/settings/billing/3_projects: 45fc2a4b20b8b35db1bca34653553413
environments/settings/billing/5000_monthly_responses: c2f4bf25658af916bbd8331d4bb045b3
environments/settings/billing/7500_contacts: eb1344ca1ba3338101087deda33e3383
environments/settings/billing/all_integrations: a607324ae2bd67640bf579f9e4092610
@@ -799,8 +921,8 @@ checksums:
environments/settings/billing/current_tier_limit: a6875905f376953b12fdf5ae8fc7e051
environments/settings/billing/custom: fee41bfbe59e71721d8648e7a95ec9c5
environments/settings/billing/custom_contacts_limit: 380f13656e3b9e1a6cb3fffd1a1cc263
environments/settings/billing/custom_project_limit: 9b9cc824609c476947dfe5b2c39f99ca
environments/settings/billing/custom_response_limit: 96ef34d587001a7b479f3f6f7c9e66dc
environments/settings/billing/custom_workspace_limit: 3f6f7f901dfc245028ce938e3d9aa2c6
environments/settings/billing/email_embedded_surveys: bb1f558f9061287666041c08384ad1d4
environments/settings/billing/email_follow_ups: 0cc02dc14aa28ce94ca6153c306924e5
environments/settings/billing/enterprise_description: 56832155245afde5f8366fbc97beefaa
@@ -827,19 +949,13 @@ checksums:
environments/settings/billing/team_access_roles: 1cc4af14e589f6c09ab92a4f21958049
environments/settings/billing/unable_to_upgrade_plan: 50fc725609411d139e534c85eeb2879e
environments/settings/billing/unlimited_miu: 29c3f5bd01c2a09fdf1d3601665ce90f
environments/settings/billing/unlimited_projects: 830c43605aa450f5a412a8248830d95b
environments/settings/billing/unlimited_responses: 25bd1cd99bc08c66b8d7d3380b2812e1
environments/settings/billing/unlimited_surveys: 7d5766ee0b7ef632a8b36c90b121c0bd
environments/settings/billing/unlimited_team_members: b73b1b6ec747f4c2f9cfcca9e883527d
environments/settings/billing/unlimited_workspaces: f7433bc693ee6d177e76509277f5c173
environments/settings/billing/upgrade: 63c3b52882e0d779859307d672c178c2
environments/settings/billing/uptime_sla_99: 25ca4060e575e1a7eee47fceb5576d7c
environments/settings/billing/website_surveys: f4d176cc66ffcc2abf44c0d5da1642e3
environments/settings/domain/description: f0b4d8c96da816f793cf1f4fdfaade34
environments/settings/domain/no_pretty_urls: 2a83d8e399d325fcd4e2db14e45b1a86
environments/settings/domain/pretty_url: 10a4b387b6df844245fc842be29527e3
environments/settings/domain/survey_name: 169f24df0e2f42254c5458f32eb7bf00
environments/settings/domain/title: 2c3a2951a31218e8e73f07cda69ed5ff
environments/settings/domain/workspace: b63ef0e99ee6f7fef6cbe4971ca6cf0f
environments/settings/enterprise/audit_logs: c7efb33d09676938d07651774b067bf6
environments/settings/enterprise/coming_soon: ee2b0671e00972773210c5be5a9ccb89
environments/settings/enterprise/contacts_and_segments: 5795d9e89c0c10e1ddbbc6fc65b8d90f
@@ -864,13 +980,13 @@ checksums:
environments/settings/general/cannot_leave_only_organization: dd8463262e4299fef7ad73512225c55b
environments/settings/general/copy_invite_link_to_clipboard: 7af7ad935428a3f9da6b96e2cd211af9
environments/settings/general/create_new_organization: 51dae7b33143686ee218abf5bea764a5
environments/settings/general/create_new_organization_description: 25d47fa089ae4ef3a963b46e903938c1
environments/settings/general/create_new_organization_description: 6d84bf3eb69d09266e314caf75cb6e6c
environments/settings/general/customize_email_with_a_higher_plan: 4a58f87cf38c821de2af140a6ad45e35
environments/settings/general/delete_member_confirmation: a8ea6d216063fbbc8367ff428a5f2439
environments/settings/general/delete_member_confirmation: d497f42203c1a77e99ccf805554e3ed7
environments/settings/general/delete_organization: 9f4061cc92673693bb43bbae062051c9
environments/settings/general/delete_organization_description: 578e51577840707a7845c9967d5d4010
environments/settings/general/delete_organization_description: 8e4c8f44b192fd8cb370aadcad0f9c70
environments/settings/general/delete_organization_warning: fcc75b900080d9700ad72ed985072711
environments/settings/general/delete_organization_warning_1: ffa4e85d53abffc214c1dff559c0f605
environments/settings/general/delete_organization_warning_1: e439bd92dcf74ea2c18f2bd9c599b3f4
environments/settings/general/delete_organization_warning_2: 4983371688c70c711b9b04d1e92b9ea8
environments/settings/general/delete_organization_warning_3: 2ddf440095276a33077c0dad5e0d8382
environments/settings/general/eliminate_branding_with_whitelabel: 2c7c61df65af823fee73f7ae79817b0c
@@ -956,10 +1072,10 @@ checksums:
environments/settings/profile/warning_cannot_delete_account: 07c25c3829149cd7171e7ad88229deac
environments/settings/profile/warning_cannot_undo: dd1b2a59ff244b362d1d0d4eb1dbf7c6
environments/settings/teams/add_members_description: 96e1e7125a0dfeaecc2c238eda3a216f
environments/settings/teams/add_workspaces_description: f0f0cdd4d1032fbcb83d34a780bdfa52
environments/settings/teams/add_projects_description: 4cc88a869322af51c11deb3ef638cce1
environments/settings/teams/all_members_added: 0541be1777b5c838f2e039035488506c
environments/settings/teams/all_workspaces_added: 50855f316bd80223b638b3cdc0685822
environments/settings/teams/are_you_sure_you_want_to_delete_this_team: 9cf027aeee8059e692948f2da4302163
environments/settings/teams/all_projects_added: dc0701f74b51236b3ffbbfbb614581d7
environments/settings/teams/are_you_sure_you_want_to_delete_this_team: 35c990fa4aecc1851ae7bb333f54529f
environments/settings/teams/billing_role_description: dfcfc3730c3dff59b983c5d9c3d6df12
environments/settings/teams/bulk_invite: 9c237edb8782df589c25ae1723942bf7
environments/settings/teams/contributor: 84febfd6836ddde20b1bd7b0661cc848
@@ -975,18 +1091,18 @@ checksums:
environments/settings/teams/manage: a3d40c0267b81ae53c9598eaeb05087d
environments/settings/teams/manage_team: 4c52e636cfd1451a08179fb7a68042ab
environments/settings/teams/manage_team_disabled: 2aaa0557b403a5bc657ec9e8b19ac5ac
environments/settings/teams/manager_role_description: 020b8674cc330536239dafe5db087de6
environments/settings/teams/manager_role_description: 39846863fa85ff8b1c6e4f354eb5018f
environments/settings/teams/member: 1606dc30b369856b9dba1fe9aec425d2
environments/settings/teams/member_role_description: 8c2447cb929850b41619988be0b9b1ac
environments/settings/teams/member_role_info_message: 511f3b954486f9c8a3b043e498f21c69
environments/settings/teams/member_role_description: 1c5deaece65798b74cc0d34525506c18
environments/settings/teams/member_role_info_message: 0a276eef3c3b907d6f396ebfdc693b12
environments/settings/teams/organization_role: 979b75fcc3696952e5922d659c839c10
environments/settings/teams/owner_role_description: 8f577e6f9d1368fed4eba5a91ffc8cbf
environments/settings/teams/please_fill_all_member_fields: 60e38d9906ec9a02a44d16c736bd9fe9
environments/settings/teams/please_fill_all_workspace_fields: 190fc5d3c63cc5ec49d77f587e619ed8
environments/settings/teams/please_fill_all_project_fields: 6712059df63c432ecd31f3c52b8e4d87
environments/settings/teams/read: 2494ca23d10e5b6381eb271aceeb5270
environments/settings/teams/read_write: 278a90dade128198d4c93ac00c345320
environments/settings/teams/select_member: 7f4a38312aabbbe3fe92756b57bd5d75
environments/settings/teams/select_workspace: 0ad989c23616c6a04faf23d9e63ed3f3
environments/settings/teams/select_project: 6e4f4a24178660851d9ae0874706be9f
environments/settings/teams/team_admin: 5df68214685738029af678ae1d5912bb
environments/settings/teams/team_created_successfully: 45f83048fcabf466551144858a761eca
environments/settings/teams/team_deleted_successfully: 972c86b0abe87f229f7bf1a691c0a253
@@ -997,8 +1113,8 @@ checksums:
environments/settings/teams/team_settings_description: 686f772f08d864d28cde23b900c9facf
environments/settings/teams/team_updated_successfully: 5f769a5073aa0fcaad76f8ba73e17e97
environments/settings/teams/teams: b63448c05270497973ac4407047dae02
environments/settings/teams/teams_description: b6f5bf0a6ff49f78bad84ad3f8a5a871
environments/settings/teams/unlock_teams_description: 0e5de01e914c0919aff3df797f9f7437
environments/settings/teams/teams_description: 2ffe6c26ab1d55bb738d89d719e32ed2
environments/settings/teams/unlock_teams_description: d57c682c7735dc8a12bb72b2255d4c7a
environments/settings/teams/unlock_teams_title: 45b2a27d29d706418fd62540d34a19f3
environments/settings/teams/upgrade_plan_notice_message: 305d6f94381482a8df6e72b74b097e99
environments/settings/teams/you_are_a_member: 0d13738accc3f85fa99add823a24c102
@@ -1251,7 +1367,7 @@ checksums:
environments/surveys/edit/how_funky_do_you_want_your_cards_in_survey_type_derived_surveys: 3cb16b37510c01af20a80f51b598346e
environments/surveys/edit/if_you_need_more_please: a7d208c283caf6b93800b809fca80768
environments/surveys/edit/if_you_really_want_that_answer_ask_until_you_get_it: 31c18a8c7c578db2ba49eed663d1739f
environments/surveys/edit/ignore_global_waiting_time: ea58ae981c2d3345b5a4e49e64be19ed
environments/surveys/edit/ignore_global_waiting_time: 1e7f1465aeb6d26c325ad7f135b207a8
environments/surveys/edit/ignore_global_waiting_time_description: 37d173a4d537622de40677389238d859
environments/surveys/edit/image: 048ba7a239de0fbd883ade8558415830
environments/surveys/edit/includes_all_of: ec72f90c0839d4c3bb518deb03894031
@@ -1325,7 +1441,7 @@ checksums:
environments/surveys/edit/options_used_in_logic_bulk_error: 1720e7a01a0bcb67c152cfe6a68c5355
environments/surveys/edit/override_theme_with_individual_styles_for_this_survey: edffc97f5d3372419fe0444de0a5aa3f
environments/surveys/edit/overwrite_global_waiting_time: 7bc23bd502b6bd048356b67acd956d9d
environments/surveys/edit/overwrite_global_waiting_time_description: c5ffe497e889e955f983bc82dbe2da3f
environments/surveys/edit/overwrite_global_waiting_time_description: 795cf6e93d4c01d2e43aa0ebab601c6e
environments/surveys/edit/overwrite_placement: d7278be243e52c5091974e0fc4a7c342
environments/surveys/edit/overwrite_survey_logo: a89cb566dfcc1559446abd8b830c84ed
environments/surveys/edit/overwrite_the_global_placement_of_the_survey: 874075712254b1ce92e099d89f675a48
@@ -1395,8 +1511,8 @@ checksums:
environments/surveys/edit/required: 04d7fb6f37ffe0a6ca97d49e2a8b6eb5
environments/surveys/edit/reset_to_theme_styles: f9edc3970ec23d6c4d2d7accc292ef3a
environments/surveys/edit/reset_to_theme_styles_main_text: d86fb2213d3b2efbd0361526dc6cb27b
environments/surveys/edit/respect_global_waiting_time: e5d80593318c28a25147c2d52ac8e46d
environments/surveys/edit/respect_global_waiting_time_description: 6fb317d929507487e76d9b536245c4e8
environments/surveys/edit/respect_global_waiting_time: 850e7e64ec890c591b2d07741ef26e11
environments/surveys/edit/respect_global_waiting_time_description: 5235fee102d619cb391c5aa2c75b61be
environments/surveys/edit/response_limit_can_t_be_set_to_0: 278664873ee3b1046dbcb58848efc12a
environments/surveys/edit/response_limit_needs_to_exceed_number_of_received_responses: 9a9c223c0918ded716ddfaa84fbaa8d9
environments/surveys/edit/response_limits_redirections_and_more: e4f1cf94e56ad0e1b08701158d688802
@@ -1491,12 +1607,12 @@ checksums:
environments/surveys/edit/visibility_and_recontact_description: 2969ab679e1f6111dd96e95cee26e219
environments/surveys/edit/wait: 014d18ade977bf08d75b995076596708
environments/surveys/edit/wait_a_few_seconds_after_the_trigger_before_showing_the_survey: 13d5521cf73be5afeba71f5db5847919
environments/surveys/edit/waiting_time_across_surveys: 7ddc00d5a500a646bf5a8adb462248bc
environments/surveys/edit/waiting_time_across_surveys_description: 0082297c799b909564cecab095dd14e2
environments/surveys/edit/waiting_time_across_surveys: 5c5a7653d797c86c4008f13a40434ad8
environments/surveys/edit/waiting_time_across_surveys_description: 1bbee2fee49f842056547c336f8fd788
environments/surveys/edit/welcome_message: 986a434e3895c8ee0b267df95cc40051
environments/surveys/edit/without_a_filter_all_of_your_users_can_be_surveyed: 451990569c61f25d01044cc45b1ce122
environments/surveys/edit/you_have_not_created_a_segment_yet: c6658bd1cee9c5c957c675db044708dd
environments/surveys/edit/you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations: 04241177ba989ef4c1d8c01e1a7b8541
environments/surveys/edit/you_need_to_have_two_or_more_languages_set_up_in_your_project_to_work_with_translations: b12b28699e02ff9ba69bcbae838ba5da
environments/surveys/edit/your_description_here_recall_information_with: 60f73a3cc9bdb9afea2166a7db8fd618
environments/surveys/edit/your_question_here_recall_information_with: 6395bd54f5167830c9d662ba403da167
environments/surveys/edit/your_web_app: 07234bed03a33330dc50ae9fcf0174f3
@@ -1608,15 +1724,6 @@ checksums:
environments/surveys/share/personal_links/upgrade_prompt_description: 09f394f5adf2d5a47352ceb80b43598b
environments/surveys/share/personal_links/upgrade_prompt_title: 8068b8c5b27268ec4d804a9c7d153a8f
environments/surveys/share/personal_links/work_with_segments: 45030e61077c88ae60f011b40566d5d1
environments/surveys/share/pretty_url/description: 67173cfc7010ab044428a22f5a4bdaa2
environments/surveys/share/pretty_url/remove_description: 7fb0afcb17447101ed4aa6aaffc6e136
environments/surveys/share/pretty_url/remove_success: a4a08113d3d4c53889da7c12a0674473
environments/surveys/share/pretty_url/save_success: e73e6e0adc93e0db723c765fbef7d82a
environments/surveys/share/pretty_url/slug_help: 3c81237bfb50f41b9e0525e9a2754b9d
environments/surveys/share/pretty_url/slug_label: b1cc25b6bf5032c75420aa862362808c
environments/surveys/share/pretty_url/slug_placeholder: e9266ae26c4993ef285a5b1a927e52a5
environments/surveys/share/pretty_url/slug_required: 9f1c28ff24a3507588c7c3710ae0b073
environments/surveys/share/pretty_url/title: 10a4b387b6df844245fc842be29527e3
environments/surveys/share/send_email/copy_embed_code: 04833baca1ed64dee8fc230462965d2d
environments/surveys/share/send_email/description: 875935d1d039fc5dd2de7b2a25008796
environments/surveys/share/send_email/email_preview_tab: 84458b39d3fd3bebb92de0e81d41b7da
@@ -1745,130 +1852,6 @@ checksums:
environments/surveys/templates/multiple_industries: 7dcb6f6d87feb08f8004dfb5a91e711f
environments/surveys/templates/use_this_template: 69020c8b5a521b8f027616bb5c4b64dd
environments/surveys/templates/uses_branching_logic: 7ac087d7067d342c17809d4ce497dfe0
environments/workspace/api_keys/add_api_key: 3c7633bae18a6e19af7a5af12f9bc3da
environments/workspace/api_keys/api_key: ce825fec5b3e1f8e27c45b1a63619985
environments/workspace/api_keys/api_key_copied_to_clipboard: daeeac786ba09ffa650e206609b88f9c
environments/workspace/api_keys/api_key_created: 8dbb2b60a719b0d120e774d6666c8c45
environments/workspace/api_keys/api_key_deleted: 6b63d1a15bea4b41acdd8432e680751a
environments/workspace/api_keys/api_key_label: 66e9effa26d3dccd76383eb858e18dd4
environments/workspace/api_keys/api_key_security_warning: 8959f73972a79c27e4886c7a40e7842e
environments/workspace/api_keys/api_key_updated: 0e03754eb33742b4ee8d5fdad64c9b3f
environments/workspace/api_keys/delete_api_key_confirmation: b2f0342d4e55f0cb244fe121eeeb10a3
environments/workspace/api_keys/duplicate_access: 7ac7ac5ba755ce94e6fc81afa5a21997
environments/workspace/api_keys/no_api_keys_yet: 829cc32ad4fb0bcafd67f07d50c5fba6
environments/workspace/api_keys/no_env_permissions_found: 97ef49946f3ce15c2ad44dcfd2bce507
environments/workspace/api_keys/organization_access: 96a92fa907b15e0c0e47e33cac15be88
environments/workspace/api_keys/organization_access_description: 773dfeaf6ffbf34dd9a0a3d656a6d83c
environments/workspace/api_keys/permissions: 2160be68b1d6b6577e64634e9feba2ed
environments/workspace/api_keys/secret: f041e5eb96121c8b4f2b8af7e0f83a9b
environments/workspace/api_keys/unable_to_delete_api_key: 1fd76d9a22c5f5f8c241c4891fca8295
environments/workspace/api_keys/workspace_access: b38cb73197ef5f5fa6653b88c68aa0bd
environments/workspace/app-connection/app_connection: 778d2305e1a9c8efe91c2c7b4af37ae4
environments/workspace/app-connection/app_connection_description: dde226414bd2265cbd0daf6635efcfdd
environments/workspace/app-connection/cache_update_delay_description: 3368e4a8090b7684117a16c94f0c409c
environments/workspace/app-connection/cache_update_delay_title: 60e4a0fcfbd8850bddf29b5c3f59550c
environments/workspace/app-connection/environment_id: 3dba898b081c18cd4cae131765ef411f
environments/workspace/app-connection/environment_id_description: 8b4a763d069b000cfa1a2025a13df80c
environments/workspace/app-connection/formbricks_sdk_connected: 29e8a40ad6a7fdb5af5ee9451a70a9aa
environments/workspace/app-connection/formbricks_sdk_not_connected: 557c534e665750978ba6edb0eacb428e
environments/workspace/app-connection/formbricks_sdk_not_connected_description: 4ddbacae084238bd0cefeded0fe9dbb9
environments/workspace/app-connection/how_to_setup: 3bad40037f280b47fe6418fcbeb4c717
environments/workspace/app-connection/how_to_setup_description: 2ae5cd9456a8acd3986e3d3678e70ed2
environments/workspace/app-connection/receiving_data: 9f2a48c0b0278861add70b526061264c
environments/workspace/app-connection/recheck: f95f2bbe6990a123d60255c87bdd59f7
environments/workspace/app-connection/sdk_connection_details: 89f2c169fd1604c1df5a834517f1eae1
environments/workspace/app-connection/sdk_connection_details_description: d9b5d06776a139aef6fc8ed53d71bf0a
environments/workspace/app-connection/setup_alert_description: 6d676044d01dc2147731ffab7df6c259
environments/workspace/app-connection/setup_alert_title: 9561cca2b391e0df81e8a982921ff2bb
environments/workspace/app-connection/webapp_url: d64d8cc3c4c4ecce780d94755f7e4de9
environments/workspace/general/cannot_delete_only_workspace: 853f32a75d92b06eaccc0d43d767c183
environments/workspace/general/delete_workspace: 3badbc0f4b49644986fc19d8b2d8f317
environments/workspace/general/delete_workspace_confirmation: 54a4ee78867537e0244c7170453cdb3f
environments/workspace/general/delete_workspace_name_includes_surveys_responses_people_and_more: 11e9ac5a799fbec22495f92f42c40d98
environments/workspace/general/delete_workspace_settings_description: 411ef100f167fc8fca64e833b6c0d030
environments/workspace/general/error_saving_workspace_information: e7b8022785619ef34de1fb1630b3c476
environments/workspace/general/only_owners_or_managers_can_delete_workspaces: 58da180cd2610210302d85a9896d80bd
environments/workspace/general/recontact_waiting_time: eb6b91b5cc4eeb7213d991492372ee13
environments/workspace/general/recontact_waiting_time_settings_description: 8922cde1f95777f9a2747fb4bed57ab5
environments/workspace/general/this_action_cannot_be_undone: 3d8b13374ffd3cefc0f3f7ce077bd9c9
environments/workspace/general/wait_x_days_before_showing_next_survey: d96228788d32ec23dc0d8c8ba77150a6
environments/workspace/general/waiting_period_updated_successfully: fe21f3034e63ed079dc0f9b9b1dfdbdf
environments/workspace/general/whats_your_workspace_called: bcc29ba97a90f656cf8f516d725ddc95
environments/workspace/general/workspace_deleted_successfully: 5eb380fdb741034a479644b5e7547099
environments/workspace/general/workspace_name_settings_description: d7fe4ab1709df12d540d7e57710fb4f0
environments/workspace/general/workspace_name_updated_successfully: ea244cd17b6644e05dbc89374ad0687a
environments/workspace/languages/add_language: bf0407850be7b8a56901533bceb4bc64
environments/workspace/languages/alias: 87e592cc48d819d7fdcf4597c1c63e7a
environments/workspace/languages/alias_tooltip: 0f681269a71d46a2d988eedaff31515a
environments/workspace/languages/cannot_remove_language_warning: a21bb501338eacefb5cf013aa107f452
environments/workspace/languages/conflict_between_identifier_and_alias: e1ebeb085c7f336bb17717765392cd9f
environments/workspace/languages/conflict_between_selected_alias_and_another_language: 3df7377a54909e439e38ec76514e5439
environments/workspace/languages/delete_language_confirmation: 4f83321fed95d689f7ff3aa47a82ce68
environments/workspace/languages/duplicate_language_or_language_id: 0e17e3794b24e2428ca6ffadae0d08f3
environments/workspace/languages/edit_languages: c9d36f6b28557cc7d54e87c37dc18fdd
environments/workspace/languages/identifier: 7d8ade6b85e96216bcd73adeeeeecd8c
environments/workspace/languages/incomplete_translations: d82908b5725f18f5849c7876ad497ebc
environments/workspace/languages/language: 277fd1a41cc237a437cd1d5e4a80463b
environments/workspace/languages/language_deleted_successfully: 4a805d030491f3fe608d2371b0cfcd83
environments/workspace/languages/languages_updated_successfully: 60de474c99c5059c0458cddd0b016c15
environments/workspace/languages/multi_language_surveys: f4f98855fca2b6e9b72959247adb1bec
environments/workspace/languages/multi_language_surveys_description: 58da8b76c9d0f4d39a315667113a40b9
environments/workspace/languages/no_language_found: 8e3b7f1898d35075ba26f54c4cf9e7b8
environments/workspace/languages/please_select_a_language: d1ed573816cea84641c55ef0d33652ff
environments/workspace/languages/remove_language: 1a64563b0f37109f97b78eddd493e381
environments/workspace/languages/remove_language_from_surveys_to_remove_it_from_workspace: 61bc96f9db31a29a649cc9ecd684bc39
environments/workspace/languages/search_items: b54b751c8b075200be579d6c8e58096b
environments/workspace/languages/translate: 59f9803b27e2030ba7323ed239116cf7
environments/workspace/look/add_background_color: 9be512ee1246e32d3958c56097d202d9
environments/workspace/look/add_background_color_description: adb6fcb392862b3d0e9420d9b5405ddb
environments/workspace/look/app_survey_placement: f09cddac6bbb77d4694df223c6edf6b6
environments/workspace/look/app_survey_placement_settings_description: d81bcff7a866a2f83ff76936dbad4770
environments/workspace/look/centered_modal_overlay_color: 1124ba61ee2ecb18a7175ff780dc3b60
environments/workspace/look/email_customization: ae399f381183a4fe0ffd41ab496b5d8f
environments/workspace/look/email_customization_description: 5ccaf1769b2c39d7e87f3a08d056a374
environments/workspace/look/enable_custom_styling: 4774d8fb009c27044aa0191ebcccdcc2
environments/workspace/look/enable_custom_styling_description: c640ce557046d87b2944118dbc7aaffe
environments/workspace/look/failed_to_remove_logo: c3b5aa87d945f7ea83e029d1ee90d310
environments/workspace/look/failed_to_update_logo: f8c9f8fe947f559dc698a3439d73f0c5
environments/workspace/look/formbricks_branding: 98dad6e31b03d235725c4d95065e36ff
environments/workspace/look/formbricks_branding_hidden: fda9ba81f8d7fdaacf8dc1642034e145
environments/workspace/look/formbricks_branding_settings_description: 5bb39206c6412c703895593f465a01f9
environments/workspace/look/formbricks_branding_shown: 6c9861cf8f95e8a68c5c64b2630d96cd
environments/workspace/look/logo_removed_successfully: f3a7f9d226affa91121e90ff360553aa
environments/workspace/look/logo_settings_description: da155953f55cb44d0e563d9e740241aa
environments/workspace/look/logo_updated_successfully: 170250f18062b79be6ac0481ec9d4368
environments/workspace/look/logo_upload_failed: 342624c84a04b891846a5d37e00d2c9f
environments/workspace/look/placement_updated_successfully: 65bdf0cfbf4f7e2430b4e7f5d4d377b5
environments/workspace/look/remove_branding_with_a_higher_plan: ee049340ea6fdc454edfdb0c29eb554b
environments/workspace/look/remove_logo: 7f0eb5e99706a338f3040cae5d724346
environments/workspace/look/remove_logo_confirmation: 386603e03a70672ae515fa6c9b8d6ab4
environments/workspace/look/replace_logo: b69a290f789ae2dfeb067c463482c824
environments/workspace/look/reset_styling: f25db45ece8637d660bd9d455c9b0265
environments/workspace/look/reset_styling_confirmation: 9ebc0403ebb8a51ed93ec2711db85796
environments/workspace/look/show_formbricks_branding_in: 80fabfec9b34a13c0445d02b923216ed
environments/workspace/look/show_powered_by_formbricks: 02b84acc3156de24e1aff8321d77603f
environments/workspace/look/styling_updated_successfully: b8b74b50dde95abcd498633e9d0c891f
environments/workspace/look/theme: 21fe00b7a518089576fb83c08631107a
environments/workspace/look/theme_settings_description: 9fc45322818c3774ab4a44ea14d7836e
environments/workspace/tags/add: 87c4a663507f2bcbbf79934af8164e13
environments/workspace/tags/add_tag: 2cfa04ceea966149f2b5d40d9c131141
environments/workspace/tags/count: 9c5848662eb8024ddf360f7e4001a968
environments/workspace/tags/delete_tag_confirmation: a9fb98064cd156242899643f3d2ef032
environments/workspace/tags/manage_tags: 2761d558b82b6104befbc240ae2379c6
environments/workspace/tags/manage_tags_description: ce7cc42da3646fba960502d7e4e49cd2
environments/workspace/tags/merge: 95051c859b8778be51226b43be6f1075
environments/workspace/tags/no_tag_found: 119c59a4367dfbd7f24a2f967d7f0f35
environments/workspace/tags/search_tags: 35066dce3d12ce93705cb2f5c2ea317d
environments/workspace/tags/tag: 924d12caa9981ef5859395382497d101
environments/workspace/tags/tag_already_exists: 1337fd5cdd04311bfdca4e7538f0a4f3
environments/workspace/tags/tag_deleted: 54fc251117cddad3ca42d10811ce0dde
environments/workspace/tags/tag_updated: 6685fd5cc501b8fb2fb284aa22c2823e
environments/workspace/tags/tags_merged: 544471de666f93fbb0ab600321d1e553
environments/workspace/teams/manage_teams: d7b5f26335cea450c333832adbe0b6ad
environments/workspace/teams/no_teams_found: fb6680d4b5b73731697b100713afb50d
environments/workspace/teams/permission: cc2ed7274bd8267f9e0a10b079584d8b
environments/workspace/teams/team_name: d1a5f99dbf503ca53f06b3a98b511d02
environments/workspace/teams/team_settings_description: 52f91883b9ceb6de83efbf8efd4f11c0
environments/xm-templates/ces: e2ea309b2f7f13257967b966c2fda1e9
environments/xm-templates/ces_description: c8d9794dd17d5ab85a979f1b3e1bc935
environments/xm-templates/csat: fdfc1dc6214cce661dcdc32a71d80337
@@ -1882,28 +1865,28 @@ checksums:
environments/xm-templates/nps_description: d116fc0e1e9f92f3d66cd83138254a84
environments/xm-templates/smileys: 592b612bd314663f6f6f205886796706
environments/xm-templates/smileys_description: 6670d8cd0d160c3456d2c27bcc3bf787
organizations/landing/no_workspaces_warning_subtitle: 305578d27209f1c4f706fccd53559f52
organizations/landing/no_workspaces_warning_title: c674555c5f11c93570b5d7f95a13b667
organizations/workspaces/new/channel/channel_select_subtitle: debeb0acf03f9f7b8a6efee291a89dc6
organizations/workspaces/new/channel/channel_select_title: a7f7e7f36b5fc36883111f5ad78417c4
organizations/workspaces/new/channel/in_product_surveys: 4b9fc41da77c5e36437a0e30fa525de5
organizations/workspaces/new/channel/in_product_surveys_description: 4e129633485ec5e07be88a897e7cab87
organizations/workspaces/new/channel/link_and_email_surveys: a1136de7ba6ad6dd2d3c1cc4155332fe
organizations/workspaces/new/channel/link_and_email_surveys_description: cac2165c355ae7cd69426f629cdbd75e
organizations/workspaces/new/mode/formbricks_cx: 470561141475b57d371007842cc91d71
organizations/workspaces/new/mode/formbricks_cx_description: 27fa1137df3551e5c054477db7263f54
organizations/workspaces/new/mode/formbricks_surveys: eba2fce04ee68f02626e5509adf7d66a
organizations/workspaces/new/mode/formbricks_surveys_description: 5d42ed40e5da85598a5ed80a724e2720
organizations/workspaces/new/mode/what_are_you_here_for: 54f3c08ad6c63023288ee5d19cd8da3e
organizations/workspaces/new/settings/brand_color: 84ddb5736deb9f5c081ffe4962a6c63e
organizations/workspaces/new/settings/brand_color_description: 458aced4c827cacbb5c3d3fb091083ad
organizations/workspaces/new/settings/create_new_team: 3f4d388a473f979d4bd366c3ef08e425
organizations/workspaces/new/settings/team_description: 534ba98e256646074a03949daf85665d
organizations/workspaces/new/settings/workspace_creation_failed: 5c6a0e087d481255a1b201c0287d0221
organizations/workspaces/new/settings/workspace_name: 7002a32bc4ce3343ede2076b30649ff7
organizations/workspaces/new/settings/workspace_name_description: 0885c4cd8cc8836e74b6ccdb5d25b43d
organizations/workspaces/new/settings/workspace_settings_subtitle: 83a72b3e9c08f2936524fcd11b29421b
organizations/workspaces/new/settings/workspace_settings_title: 00e42231ca647111d3288f57ad3ce53a
organizations/landing/no_projects_warning_subtitle: cbfaf5c03dc2f66735379f1f3b72c313
organizations/landing/no_projects_warning_title: 3e1a0b8b78dc4bc6ebbb3a2a94ffa4aa
organizations/projects/new/channel/channel_select_subtitle: debeb0acf03f9f7b8a6efee291a89dc6
organizations/projects/new/channel/channel_select_title: a7f7e7f36b5fc36883111f5ad78417c4
organizations/projects/new/channel/in_product_surveys: 4b9fc41da77c5e36437a0e30fa525de5
organizations/projects/new/channel/in_product_surveys_description: 4e129633485ec5e07be88a897e7cab87
organizations/projects/new/channel/link_and_email_surveys: a1136de7ba6ad6dd2d3c1cc4155332fe
organizations/projects/new/channel/link_and_email_surveys_description: cac2165c355ae7cd69426f629cdbd75e
organizations/projects/new/mode/formbricks_cx: 470561141475b57d371007842cc91d71
organizations/projects/new/mode/formbricks_cx_description: 27fa1137df3551e5c054477db7263f54
organizations/projects/new/mode/formbricks_surveys: eba2fce04ee68f02626e5509adf7d66a
organizations/projects/new/mode/formbricks_surveys_description: 5d42ed40e5da85598a5ed80a724e2720
organizations/projects/new/mode/what_are_you_here_for: 54f3c08ad6c63023288ee5d19cd8da3e
organizations/projects/new/settings/brand_color: 84ddb5736deb9f5c081ffe4962a6c63e
organizations/projects/new/settings/brand_color_description: 458aced4c827cacbb5c3d3fb091083ad
organizations/projects/new/settings/create_new_team: 3f4d388a473f979d4bd366c3ef08e425
organizations/projects/new/settings/project_creation_failed: 493492e108675913b88c90b882b7401a
organizations/projects/new/settings/project_name: 7002a32bc4ce3343ede2076b30649ff7
organizations/projects/new/settings/project_name_description: 0885c4cd8cc8836e74b6ccdb5d25b43d
organizations/projects/new/settings/project_settings_subtitle: 83a72b3e9c08f2936524fcd11b29421b
organizations/projects/new/settings/project_settings_title: 00e42231ca647111d3288f57ad3ce53a
organizations/projects/new/settings/team_description: 3e1ceed1fe4418f20c6090f2d610c8ee
s/check_inbox_or_spam: dfaf193f2106045c1bd3f463984317a2
s/completed: 98a9cd97b409933edf1991e7d022bea9
s/create_your_own: 27976ec69029d6dd52d146a9b5765bc6

View File

@@ -177,7 +177,6 @@ export const AVAILABLE_LOCALES: TUserLocale[] = [
"zh-Hans-CN",
"es-ES",
"sv-SE",
"ru-RU",
];
// Billing constants

View File

@@ -141,7 +141,6 @@ export const appLanguages = [
"nl-NL": "Engels (VS)",
"es-ES": "Inglés (EE.UU.)",
"sv-SE": "Engelska (USA)",
"ru-RU": "Английский (США)",
},
},
{
@@ -159,7 +158,6 @@ export const appLanguages = [
"nl-NL": "Duits",
"es-ES": "Alemán",
"sv-SE": "Tyska",
"ru-RU": "Немецкий",
},
},
{
@@ -177,7 +175,6 @@ export const appLanguages = [
"nl-NL": "Portugees (Brazilië)",
"es-ES": "Portugués (Brasil)",
"sv-SE": "Portugisiska (Brasilien)",
"ru-RU": "Португальский (Бразилия)",
},
},
{
@@ -195,7 +192,6 @@ export const appLanguages = [
"nl-NL": "Frans",
"es-ES": "Francés",
"sv-SE": "Franska",
"ru-RU": "Французский",
},
},
{
@@ -213,7 +209,6 @@ export const appLanguages = [
"nl-NL": "Chinees (Traditioneel)",
"es-ES": "Chino (Tradicional)",
"sv-SE": "Kinesiska (traditionell)",
"ru-RU": "Китайский (традиционный)",
},
},
{
@@ -231,7 +226,6 @@ export const appLanguages = [
"nl-NL": "Portugees (Portugal)",
"es-ES": "Portugués (Portugal)",
"sv-SE": "Portugisiska (Portugal)",
"ru-RU": "Португальский (Португалия)",
},
},
{
@@ -249,7 +243,6 @@ export const appLanguages = [
"nl-NL": "Roemeens",
"es-ES": "Rumano",
"sv-SE": "Rumänska",
"ru-RU": "Румынский",
},
},
{
@@ -267,7 +260,6 @@ export const appLanguages = [
"nl-NL": "Japans",
"es-ES": "Japonés",
"sv-SE": "Japanska",
"ru-RU": "Японский",
},
},
{
@@ -285,7 +277,6 @@ export const appLanguages = [
"nl-NL": "Chinees (Vereenvoudigd)",
"es-ES": "Chino (Simplificado)",
"sv-SE": "Kinesiska (förenklad)",
"ru-RU": "Китайский (упрощенный)",
},
},
{
@@ -303,7 +294,6 @@ export const appLanguages = [
"nl-NL": "Nederlands",
"es-ES": "Neerlandés",
"sv-SE": "Nederländska",
"ru-RU": "Голландский",
},
},
{
@@ -321,7 +311,6 @@ export const appLanguages = [
"nl-NL": "Spaans",
"es-ES": "Español",
"sv-SE": "Spanska",
"ru-RU": "Испанский",
},
},
{
@@ -339,7 +328,6 @@ export const appLanguages = [
"nl-NL": "Zweeds",
"es-ES": "Sueco",
"sv-SE": "Svenska",
"ru-RU": "Шведский",
},
},
];

View File

@@ -267,7 +267,6 @@ export const mockSyncSurveyOutput: SurveyMock = {
variables: [],
showLanguageSwitch: null,
metadata: {},
slug: null,
};
export const mockSurveyOutput: SurveyMock = {
@@ -291,7 +290,6 @@ export const mockSurveyOutput: SurveyMock = {
variables: [],
showLanguageSwitch: null,
...baseSurveyProperties,
slug: null,
};
export const createSurveyInput: TSurveyCreateInput = {
@@ -321,7 +319,6 @@ export const updateSurveyInput: TSurvey = {
followUps: [],
...baseSurveyProperties,
...commonMockProperties,
slug: null,
};
export const mockTransformedSurveyOutput = {

View File

@@ -108,7 +108,6 @@ export const selectSurvey = {
},
},
followUps: true,
slug: true,
} satisfies Prisma.SurveySelect;
export const checkTriggersValidity = (triggers: TSurvey["triggers"], actionClasses: ActionClass[]) => {

View File

@@ -1,5 +1,5 @@
import { formatDistance, intlFormat } from "date-fns";
import { de, enUS, es, fr, ja, nl, pt, ptBR, ro, ru, sv, zhCN, zhTW } from "date-fns/locale";
import { de, enUS, es, fr, ja, nl, pt, ptBR, ro, sv, zhCN, zhTW } from "date-fns/locale";
import { TUserLocale } from "@formbricks/types/user";
export const convertDateString = (dateString: string | null) => {
@@ -107,8 +107,6 @@ const getLocaleForTimeSince = (locale: TUserLocale) => {
return zhCN;
case "es-ES":
return es;
case "ru-RU":
return ru;
}
};

View File

@@ -84,12 +84,9 @@ describe("Helper Utilities", () => {
validationErrors: {
name: { _errors: ["Name is required"] },
email: { _errors: ["Email is invalid"] },
password: { _errors: ["is too short"] },
},
};
expect(getFormattedErrorMessage(result)).toBe(
"Name is required\nEmail is invalid\npassword: is too short"
);
expect(getFormattedErrorMessage(result)).toBe("nameName is required\nemailEmail is invalid");
});
test("returns empty string for undefined errors", () => {

View File

@@ -27,12 +27,7 @@ export const getFormattedErrorMessage = (result): string => {
message = Object.keys(errors || {})
.map((key) => {
if (key === "_errors") return errors[key].join(", ");
const fieldError = errors?.[key]?._errors?.join(", ");
if (key && fieldError?.toLowerCase().startsWith(key.toLowerCase())) {
return fieldError;
}
const keyPrefix = key ? `${key}: ` : "";
return `${keyPrefix}${fieldError}`;
return `${key ? `${key}` : ""}${errors?.[key]?._errors?.join(", ")}`;
})
.join("\n");
}

View File

@@ -121,9 +121,9 @@
"add_filter": "Filter hinzufügen",
"add_logo": "Logo hinzufügen",
"add_member": "Mitglied hinzufügen",
"add_new_workspace": "Neues Projekt hinzufügen",
"add_new_project": "Neues Projekt hinzufügen",
"add_project": "Projekt hinzufügen",
"add_to_team": "Zum Team hinzufügen",
"add_workspace": "Projekt hinzufügen",
"all": "Alle",
"all_questions": "Alle Fragen",
"allow": "erlauben",
@@ -148,7 +148,7 @@
"choices": "Entscheidungen",
"choose_environment": "Umgebung auswählen",
"choose_organization": "Organisation auswählen",
"choose_workspace": "Projekt auswählen",
"choose_project": "Projekt wählen",
"clear_all": "Alles löschen",
"clear_filters": "Filter löschen",
"clear_selection": "Auswahl aufheben",
@@ -171,12 +171,12 @@
"copy": "Kopieren",
"copy_code": "Code kopieren",
"copy_link": "Link kopieren",
"count_contacts": "{value, plural, one {{value} Kontakt} other {{value} Kontakte}}",
"count_responses": "{value, plural, one {{value} Antwort} other {{value} Antworten}}",
"count_contacts": "{value, plural, other {'{'value, plural,\none '{{#}' Kontakt'}'\nother '{{#}' Kontakte'}'\n'}'}}",
"count_responses": "{value, plural, other {{count} Antworten}}",
"create_new_organization": "Neue Organisation erstellen",
"create_project": "Projekt erstellen",
"create_segment": "Segment erstellen",
"create_survey": "Umfrage erstellen",
"create_workspace": "Projekt erstellen",
"created": "Erstellt",
"created_at": "Erstellt am",
"created_by": "Erstellt von",
@@ -187,7 +187,6 @@
"delete": "Löschen",
"description": "Beschreibung",
"dev_env": "Entwicklungsumgebung",
"development": "Entwicklung",
"development_environment_banner": "Du bist in einer Entwicklungsumgebung. Richte sie ein, um Umfragen, Aktionen und Attribute zu testen.",
"disable": "Deaktivieren",
"disallow": "Nicht erlauben",
@@ -195,7 +194,6 @@
"dismissed": "Entlassen",
"docs": "Dokumentation",
"documentation": "Dokumentation",
"domain": "Domain",
"download": "Herunterladen",
"draft": "Entwurf",
"duplicate": "Duplikat",
@@ -205,7 +203,6 @@
"ending_card": "Abschluss-Karte",
"enter_url": "URL eingeben",
"enterprise_license": "Enterprise Lizenz",
"environment": "Umgebung",
"environment_not_found": "Umgebung nicht gefunden",
"environment_notice": "Du befindest dich derzeit in der {environment}-Umgebung.",
"error": "Fehler",
@@ -216,7 +213,7 @@
"expand_rows": "Zeilen erweitern",
"failed_to_copy_to_clipboard": "Fehler beim Kopieren in die Zwischenablage",
"failed_to_load_organizations": "Fehler beim Laden der Organisationen",
"failed_to_load_workspaces": "Projekte konnten nicht geladen werden",
"failed_to_load_projects": "Fehler beim Laden der Projekte",
"finish": "Fertigstellen",
"follow_these": "Folge diesen",
"formbricks_version": "Formbricks Version",
@@ -324,10 +321,17 @@
"preview_survey": "Umfragevorschau",
"privacy": "Datenschutz",
"product_manager": "Produktmanager",
"production": "Produktion",
"profile": "Profil",
"profile_id": "Profil-ID",
"progress": "Fortschritt",
"project_configuration": "Projekteinstellungen",
"project_creation_description": "Organisieren Sie Umfragen in Projekten für eine bessere Zugriffskontrolle.",
"project_id": "Projekt-ID",
"project_name": "Projektname",
"project_name_placeholder": "z.B. Formbricks",
"project_not_found": "Projekt nicht gefunden",
"project_permission_not_found": "Projekt-Berechtigung nicht gefunden",
"projects": "Projekte",
"question": "Frage",
"question_id": "Frage-ID",
"questions": "Fragen",
@@ -416,7 +420,7 @@
"top_right": "Oben rechts",
"try_again": "Versuch's nochmal",
"type": "Typ",
"unlock_more_workspaces_with_a_higher_plan": "Schalten Sie mehr Projekte mit einem höheren Tarif frei.",
"unlock_more_projects_with_a_higher_plan": "Schalte mehr Projekte mit einem höheren Plan frei.",
"update": "Aktualisierung",
"updated": "Aktualisiert",
"updated_at": "Aktualisiert am",
@@ -440,18 +444,10 @@
"website_app_survey": "Website- & App-Umfrage",
"website_survey": "Website-Umfrage",
"welcome_card": "Willkommenskarte",
"workspace_configuration": "Projektkonfiguration",
"workspace_creation_description": "Organisieren Sie Umfragen in Projekten für eine bessere Zugriffskontrolle.",
"workspace_id": "Projekt-ID",
"workspace_name": "Projektname",
"workspace_name_placeholder": "z. B. Formbricks",
"workspace_not_found": "Projekt nicht gefunden",
"workspace_permission_not_found": "Projektberechtigung nicht gefunden",
"workspaces": "Projekte",
"you": "Du",
"you_are_downgraded_to_the_community_edition": "Du wurdest auf die Community Edition herabgestuft.",
"you_are_not_authorised_to_perform_this_action": "Du bist nicht berechtigt, diese Aktion auszuführen.",
"you_have_reached_your_limit_of_workspace_limit": "Sie haben Ihr Limit von {projectLimit} Workspaces erreicht.",
"you_have_reached_your_limit_of_project_limit": "Du hast dein Limit von {projectLimit} Projekten erreicht.",
"you_have_reached_your_monthly_miu_limit_of": "Du hast dein monatliches MIU-Limit erreicht",
"you_have_reached_your_monthly_response_limit_of": "Du hast dein monatliches Antwortlimit erreicht",
"you_will_be_downgraded_to_the_community_edition_on_date": "Du wirst am {date} auf die Community Edition herabgestuft."
@@ -479,12 +475,14 @@
"forgot_password_email_text": "Du hast einen Link angefordert, um dein Passwort zu ändern. Du kannst dies tun, indem Du auf den untenstehenden Link klickst:",
"hidden_field": "Verstecktes Feld",
"imprint": "Impressum",
"invite_accepted_email_heading": "Hey {inviterName}",
"invite_accepted_email_heading": "Hey",
"invite_accepted_email_subject": "Du hast einen neuen Organisation-Mitglied!",
"invite_accepted_email_text": "Nur zur Info: {inviteeName} hat deine Einladung angenommen. Viel Spaß bei der Zusammenarbeit!",
"invite_accepted_email_text_par1": "Wollte dir nur Bescheid geben, dass",
"invite_accepted_email_text_par2": "deine Einladung angenommen hat. Viel Spaß bei der Zusammenarbeit!",
"invite_email_button_label": "Organisation beitreten",
"invite_email_heading": "Hey {inviteeName}",
"invite_email_text": "Dein Kollege {inviterName} hat dich eingeladen, bei Formbricks mitzumachen. Um die Einladung anzunehmen, klicke bitte auf den Link unten:",
"invite_email_heading": "Hey",
"invite_email_text_par1": "Dein Kollege",
"invite_email_text_par2": "hat Dich eingeladen, Formbricks zu nutzen. Um die Einladung anzunehmen, klicke bitte auf den untenstehenden Link:",
"invite_member_email_subject": "Du wurdest eingeladen, Formbricks zu nutzen!",
"new_email_verification_text": "Um Ihre neue E-Mail-Adresse zu bestätigen, klicken Sie bitte auf die Schaltfläche unten:",
"number_variable": "Zahlenvariable",
@@ -608,7 +606,7 @@
"contacts_table_refresh": "Kontakte aktualisieren",
"contacts_table_refresh_success": "Kontakte erfolgreich aktualisiert",
"delete_contact_confirmation": "Dies wird alle Umfrageantworten und Kontaktattribute löschen, die mit diesem Kontakt verbunden sind. Jegliche zielgerichtete Kommunikation und Personalisierung basierend auf den Daten dieses Kontakts gehen verloren.",
"delete_contact_confirmation_with_quotas": "{value, plural, one {Dies wird alle Umfrageantworten und Kontaktattribute löschen, die mit diesem Kontakt verbunden sind. Jegliche zielgerichtete Kommunikation und Personalisierung basierend auf den Daten dieses Kontakts gehen verloren. Wenn dieser Kontakt Antworten hat, die zu den Umfragequoten zählen, werden die Quotenstände reduziert, aber die Quotenlimits bleiben unverändert.} other {Dies wird alle Umfrageantworten und Kontaktattribute löschen, die mit diesen Kontakten verbunden sind. Jegliche zielgerichtete Kommunikation und Personalisierung basierend auf den Daten dieses Kontakts gehen verloren. Wenn diesen Kontakten Antworten haben, die zu den Umfragequoten zählen, werden die Quotenstände reduziert, aber die Quotenlimits bleiben unverändert.}}",
"delete_contact_confirmation_with_quotas": "{value, plural, other {Dies wird alle Umfrageantworten und Kontaktattribute löschen, die mit diesem Kontakt verbunden sind. Jegliche zielgerichtete Kommunikation und Personalisierung basierend auf den Daten dieses Kontakts gehen verloren. Wenn dieser Kontakt Antworten hat, die zu den Umfragequoten zählen, werden die Quotenstände reduziert, aber die Quotenlimits bleiben unverändert.}}",
"generate_personal_link": "Persönlichen Link generieren",
"generate_personal_link_description": "Wähle eine veröffentlichte Umfrage aus, um einen personalisierten Link für diesen Kontakt zu generieren.",
"no_published_link_surveys_available": "Keine veröffentlichten Link-Umfragen verfügbar. Bitte veröffentliche zuerst eine Link-Umfrage.",
@@ -777,6 +775,146 @@
"website_or_app_integration_description": "Integriere Formbricks in deine Website oder App",
"zapier_integration_description": "Integriere Formbricks mit über 5000 Apps über Zapier"
},
"project": {
"api_keys": {
"add_api_key": "API-Schlüssel hinzufügen",
"api_key": "API-Schlüssel",
"api_key_copied_to_clipboard": "API-Schlüssel in die Zwischenablage kopiert",
"api_key_created": "API-Schlüssel erstellt",
"api_key_deleted": "API-Schlüssel gelöscht",
"api_key_label": "API-Schlüssel Label",
"api_key_security_warning": "Aus Sicherheitsgründen wird der API-Schlüssel nur einmal nach der Erstellung angezeigt. Bitte kopiere ihn sofort an einen sicheren Ort.",
"api_key_updated": "API-Schlüssel aktualisiert",
"delete_api_key_confirmation": "Alle Anwendungen, die diesen Schlüssel verwenden, können nicht mehr auf Ihre Formbricks-Daten zugreifen.",
"duplicate_access": "Doppelter Projektzugriff nicht erlaubt",
"no_api_keys_yet": "Du hast noch keine API-Schlüssel",
"no_env_permissions_found": "Keine Umgebungsberechtigungen gefunden",
"organization_access": "Organisationszugang",
"organization_access_description": "Wähle Lese- oder Schreibrechte für organisationsweite Ressourcen aus.",
"permissions": "Berechtigungen",
"project_access": "Projektzugriff",
"secret": "Geheimnis",
"unable_to_delete_api_key": "API-Schlüssel kann nicht gelöscht werden"
},
"app-connection": {
"app_connection": "App-Verbindung",
"app_connection_description": "Verbinde deine App oder Website mit Formbricks.",
"cache_update_delay_description": "Wenn Sie Aktualisierungen an Umfragen, Kontakten, Aktionen oder anderen Daten vornehmen, kann es bis zu 1 Minute dauern, bis diese Änderungen in Ihrer lokalen App, die das Formbricks SDK ausführt, erscheinen.",
"cache_update_delay_title": "Änderungen werden aufgrund von Caching nach etwa 1 Minute angezeigt",
"environment_id": "Deine Umgebungs-ID",
"environment_id_description": "Diese ID identifiziert eindeutig diese Formbricks Umgebung.",
"formbricks_sdk_connected": "Formbricks SDK ist verbunden",
"formbricks_sdk_not_connected": "Formbricks SDK ist noch nicht verbunden.",
"formbricks_sdk_not_connected_description": "Füge das Formbricks SDK zu deiner Website oder App hinzu, um sie mit Formbricks zu verbinden",
"how_to_setup": "Wie einrichten",
"how_to_setup_description": "Befolge diese Schritte, um das Formbricks Widget in deiner App einzurichten.",
"receiving_data": "Daten werden empfangen 💃🕺",
"recheck": "Erneut prüfen",
"sdk_connection_details": "SDK-Verbindungsdetails",
"sdk_connection_details_description": "Deine eindeutige Umgebungs-ID und SDK-Verbindungs-URL zur Integration von Formbricks mit deiner Anwendung.",
"setup_alert_description": "Befolge dieses Schritt-für-Schritt-Tutorial, um deine App oder Website in weniger als 5 Minuten zu verbinden.",
"setup_alert_title": "Wie man verbindet",
"webapp_url": "SDK-Verbindungs-URL"
},
"general": {
"cannot_delete_only_project": "Dies ist dein einziges Projekt, es kann nicht gelöscht werden. Erstelle zuerst ein neues Projekt.",
"delete_project": "Projekt löschen",
"delete_project_confirmation": "Bist Du sicher, dass Du {projectName} löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.",
"delete_project_name_includes_surveys_responses_people_and_more": "{projectName} löschen inkl. aller Umfragen, Antworten, Personen, Aktionen und Attribute.",
"delete_project_settings_description": "Projekt mit allen Umfragen, Antworten, Personen, Aktionen und Attributen löschen. Dies kann nicht rückgängig gemacht werden.",
"error_saving_project_information": "Fehler beim Speichern der Projektinformationen",
"only_owners_or_managers_can_delete_projects": "Nur Eigentümer oder Manager können Projekte löschen",
"project_deleted_successfully": "Projekt erfolgreich gelöscht",
"project_name_settings_description": "Ändere den Namen deines Projekts.",
"project_name_updated_successfully": "Projektname erfolgreich aktualisiert",
"recontact_waiting_time": "Projektweite Wartezeit zwischen Umfragen",
"recontact_waiting_time_settings_description": "Steuere, wie oft Nutzer in allen App-Umfragen eine Umfrage angezeigt bekommen können.",
"this_action_cannot_be_undone": "Diese Aktion kann nicht rückgängig gemacht werden.",
"wait_x_days_before_showing_next_survey": "Warte X Tage, bevor die nächste Umfrage angezeigt wird:",
"waiting_period_updated_successfully": "Wartezeit erfolgreich aktualisiert",
"whats_your_project_called": "Wie heißt dein Projekt?"
},
"languages": {
"add_language": "Sprache hinzufügen",
"alias": "Alias",
"alias_tooltip": "Das Alias ist ein alternativer Name, um die Sprache identifizieren (optional)",
"cannot_remove_language_warning": "Du kannst diese Sprache nicht entfernen, da sie noch in folgenden Umfragen verwendet wird:",
"conflict_between_identifier_and_alias": "Es gibt einen Konflikt zwischen der ID einer hinzugefügten Sprache und einem deiner Aliase. Aliase und IDs dürfen nicht identisch sein.",
"conflict_between_selected_alias_and_another_language": "Es gibt einen Konflikt zwischen dem ausgewählten Alias und einer anderen Sprache, die diese ID hat. Bitte füge stattdessen die Sprache mit dieser ID zu deinem Projekt hinzu, um Unstimmigkeiten zu vermeiden.",
"delete_language_confirmation": "Bist Du sicher, dass Du diese Sprache löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.",
"duplicate_language_or_language_id": "Doppelte Sprache oder Sprach-ID",
"edit_languages": "Sprachen bearbeiten",
"identifier": "Kennung (ISO)",
"incomplete_translations": "Unvollständige Übersetzungen",
"language": "Sprache",
"language_deleted_successfully": "Sprache erfolgreich gelöscht",
"languages_updated_successfully": "Sprachen erfolgreich aktualisiert",
"multi_language_surveys": "Mehrsprachige Umfragen",
"multi_language_surveys_description": "Füge Sprachen hinzu, um mehrsprachige Umfragen zu erstellen.",
"no_language_found": "Keine Sprache gefunden. Füge unten deine erste Sprache hinzu.",
"please_select_a_language": "Bitte wähle eine Sprache aus",
"remove_language": "Sprache entfernen",
"remove_language_from_surveys_to_remove_it_from_project": "Bitte entferne die Sprache aus diesen Umfragen, um sie aus dem Projekt zu entfernen.",
"search_items": "Artikel suchen",
"translate": "übersetzen"
},
"look": {
"add_background_color": "Hintergrundfarbe hinzufügen",
"add_background_color_description": "Füge dem Logo eine Hintergrundfarbe hinzu.",
"app_survey_placement": "Platzierung der Umfragen",
"app_survey_placement_settings_description": "Ändere, wo Umfragen in deiner App oder Website angezeigt werden.",
"centered_modal_overlay_color": "Hintergrundfarbe bei Modal-Ansicht",
"email_customization": "E-Mail-Anpassung",
"email_customization_description": "Ändere das Aussehen und das Gefühl der E-Mails, die Formbricks in deinem Namen sendet.",
"enable_custom_styling": "Eigenes Styling aktivieren",
"enable_custom_styling_description": "Erlaube Nutzern, dieses Styling im Umfrageditor zu überschreiben.",
"failed_to_remove_logo": "Logo konnte nicht entfernt werden",
"failed_to_update_logo": "Logo konnte nicht aktualisiert werden",
"formbricks_branding": "Formbricks Branding",
"formbricks_branding_hidden": "Formbricks Branding ist versteckt.",
"formbricks_branding_settings_description": "Wir schätzen deine Unterstützung, aber verstehen, wenn Du sie ausschaltest.",
"formbricks_branding_shown": "Formbricks Branding wird angezeigt.",
"logo_removed_successfully": "Logo erfolgreich entfernt",
"logo_settings_description": "Lade dein Firmenlogo hoch, um Umfragen zu branden.",
"logo_updated_successfully": "Logo erfolgreich aktualisiert",
"logo_upload_failed": "Logo Upload fehlgeschlagen. Bitte versuche es erneut.",
"placement_updated_successfully": "Platzierung erfolgreich aktualisiert",
"remove_branding_with_a_higher_plan": "Branding entfernen mit einem höheren Plan",
"remove_logo": "Logo entfernen",
"remove_logo_confirmation": "Bist Du sicher, dass Du das Logo entfernen möchtest?",
"replace_logo": "Logo ersetzen",
"reset_styling": "Styling zurücksetzen",
"reset_styling_confirmation": "Bist Du sicher, dass Du das Styling auf die Standardeinstellungen zurücksetzen möchtest?",
"show_formbricks_branding_in": "Formbricks Branding in {type} Umfragen anzeigen",
"show_powered_by_formbricks": "Zeige 'Powered by Formbricks' Signatur",
"styling_updated_successfully": "Styling erfolgreich aktualisiert",
"theme": "Styling",
"theme_settings_description": "Erstelle ein Styling für alle Umfragen. Du kannst eigenes Styling für jede Umfrage aktivieren."
},
"tags": {
"add": "Hinzufügen",
"add_tag": "Tag hinzufügen",
"count": "zählen",
"delete_tag_confirmation": "Bist Du sicher, dass Du diesen Tag löschen möchtest?",
"manage_tags": "Tags verwalten",
"manage_tags_description": "Zusammenführen und Antwort-Tags entfernen.",
"merge": "Zusammenführen",
"no_tag_found": "Kein Tag gefunden",
"search_tags": "Such-Tags...",
"tag": "Tag",
"tag_already_exists": "Tag existiert bereits",
"tag_deleted": "Tag gelöscht",
"tag_updated": "Tag aktualisiert",
"tags_merged": "Tags zusammengeführt"
},
"teams": {
"manage_teams": "Teams verwalten",
"no_teams_found": "Keine Teams gefunden",
"permission": "Berechtigung",
"team_name": "Teamname",
"team_settings_description": "Teams und ihre Mitglieder können auf dieses Projekt und seine Umfragen zugreifen. Organisationsbesitzer und Manager können diesen Zugriff gewähren."
}
},
"segments": {
"add_filter_below": "Filter unten hinzufügen",
"add_your_first_filter_to_get_started": "Füge deinen ersten Filter hinzu, um loszulegen",
@@ -839,9 +977,9 @@
},
"billing": {
"1000_monthly_responses": "1,000 monatliche Antworten",
"1_workspace": "1 Projekt",
"1_project": "1 Projekt",
"2000_contacts": "2,000 Kontakte",
"3_workspaces": "3 Projekte",
"3_projects": "3 Projekte",
"5000_monthly_responses": "5,000 monatliche Antworten",
"7500_contacts": "7,500 Kontakte",
"all_integrations": "Alle Integrationen",
@@ -854,8 +992,8 @@
"current_tier_limit": "Aktuelles Limit",
"custom": "Benutzerdefiniert & Skalierung",
"custom_contacts_limit": "Benutzerdefiniertes Kontaktlimit",
"custom_project_limit": "Benutzerdefiniertes Projektlimit",
"custom_response_limit": "Benutzerdefiniertes Antwortlimit",
"custom_workspace_limit": "Individuelles Projektlimit",
"email_embedded_surveys": "Eingebettete Umfragen in E-Mails",
"email_follow_ups": "E-Mail Follow-ups",
"enterprise_description": "Premium-Support und benutzerdefinierte Limits.",
@@ -882,22 +1020,14 @@
"team_access_roles": "Rollen für Teammitglieder",
"unable_to_upgrade_plan": "Plan kann nicht aktualisiert werden",
"unlimited_miu": "Unbegrenzte MIU",
"unlimited_projects": "Unbegrenzte Projekte",
"unlimited_responses": "Unbegrenzte Antworten",
"unlimited_surveys": "Unbegrenzte Umfragen",
"unlimited_team_members": "Unbegrenzte Teammitglieder",
"unlimited_workspaces": "Unbegrenzte Projekte",
"upgrade": "Upgrade",
"uptime_sla_99": "Betriebszeit SLA (99%)",
"website_surveys": "Website-Umfragen"
},
"domain": {
"description": "Übersicht aller Umfragen mit Pretty URLs in Ihrer Organisation",
"no_pretty_urls": "Noch keine Umfragen mit Pretty URLs konfiguriert.",
"pretty_url": "Pretty URL",
"survey_name": "Umfragename",
"title": "Pretty URLs",
"workspace": "Projekt"
},
"enterprise": {
"audit_logs": "Audit Logs",
"coming_soon": "Kommt bald",
@@ -925,13 +1055,13 @@
"cannot_leave_only_organization": "Du kannst diese Organisation nicht verlassen, da es deine einzige Organisation ist. Erstelle zuerst eine neue Organisation.",
"copy_invite_link_to_clipboard": "Einladungslink in die Zwischenablage kopieren",
"create_new_organization": "Neue Organisation erstellen",
"create_new_organization_description": "Erstellen Sie eine neue Organisation, um eine andere Gruppe von Projekten zu verwalten.",
"create_new_organization_description": "Erstelle eine neue Organisation, um weitere Projekte zu verwalten.",
"customize_email_with_a_higher_plan": "E-Mail-Anpassung mit einem höheren Plan",
"delete_member_confirmation": "Gelöschte Mitglieder verlieren den Zugriff auf alle Projekte und Umfragen Ihrer Organisation.",
"delete_member_confirmation": "Gelöschte Mitglieder verlieren den Zugriff auf alle Projekte und Umfragen deiner Organisation.",
"delete_organization": "Organisation löschen",
"delete_organization_description": "Organisation mit allen Projekten einschließlich aller Umfragen, Antworten, Personen, Aktionen und Attribute löschen",
"delete_organization_warning": "Bevor Du mit dem Löschen dieser Organisation fortfährst, sei dir bitte der folgenden Konsequenzen bewusst:",
"delete_organization_warning_1": "Dauerhafte Entfernung aller mit dieser Organisation verknüpften Projekte.",
"delete_organization_warning_1": "Dauerhafte Entfernung aller Projekte, die mit dieser Organisation verbunden sind.",
"delete_organization_warning_2": "Diese Aktion kann nicht rückgängig gemacht werden. Wenn es weg ist, ist es weg.",
"delete_organization_warning_3": "Bitte gib {organizationName} in das folgende Feld ein, um die endgültige Löschung dieser Organisation zu bestätigen:",
"eliminate_branding_with_whitelabel": "Entferne Formbricks Branding und aktiviere zusätzliche White-Label-Anpassungsoptionen.",
@@ -1023,10 +1153,10 @@
},
"teams": {
"add_members_description": "Füge Mitglieder zum Team hinzu und bestimme ihre Rolle.",
"add_workspaces_description": "Steuern Sie, auf welche Projekte die Teammitglieder zugreifen können.",
"add_projects_description": "Kontrolliere, auf welche Projekte die Teammitglieder zugreifen können.",
"all_members_added": "Alle Mitglieder zu diesem Team hinzugefügt.",
"all_workspaces_added": "Alle Workspaces zu diesem Team hinzugefügt.",
"are_you_sure_you_want_to_delete_this_team": "Möchten Sie dieses Team wirklich löschen? Dadurch wird auch der Zugriff auf alle Workspaces und Umfragen entfernt, die mit diesem Team verknüpft sind.",
"all_projects_added": "Alle Projekte zu diesem Team hinzugefügt.",
"are_you_sure_you_want_to_delete_this_team": "Sind Sie sicher, dass Sie dieses Team löschen möchten? Dadurch wird auch der Zugriff auf alle Projekte und Umfragen entfernt, die mit diesem Team verbunden sind.",
"billing_role_description": "Haben nur Zugriff auf Abrechnungsinformationen.",
"bulk_invite": "Sammel-Einladung",
"contributor": "Mitwirkender",
@@ -1042,18 +1172,18 @@
"manage": "Verwalten",
"manage_team": "Team verwalten",
"manage_team_disabled": "Nur Organisationsbesitzer, Manager und Team-Admins können Teams verwalten.",
"manager_role_description": "Manager können auf alle Workspaces zugreifen und Mitglieder hinzufügen oder entfernen.",
"manager_role_description": "Manager können auf alle Projekte zugreifen und Mitglieder hinzufügen und entfernen.",
"member": "Mitglied",
"member_role_description": "Mitglieder können in ausgewählten Workspaces arbeiten.",
"member_role_info_message": "Um neuen Mitgliedern Zugriff auf einen Workspace zu gewähren, fügen Sie sie bitte unten einem Team hinzu. Mit Teams können Sie verwalten, wer Zugriff auf welchen Workspace hat.",
"member_role_description": "Mitglieder können in ausgewählten Projekten arbeiten.",
"member_role_info_message": "Um neuen Mitgliedern Zugriff auf ein Projekt zu geben, füge sie bitte unten einem Team hinzu. Mit Teams kannst du steuern, wer auf welches Projekt zugreifen kann.",
"organization_role": "Organisationsrolle",
"owner_role_description": "Besitzer haben die volle Kontrolle über die Organisation.",
"please_fill_all_member_fields": "Bitte fülle alle Felder aus, um ein neues Mitglied hinzuzufügen.",
"please_fill_all_workspace_fields": "Bitte füllen Sie alle Felder aus, um einen neuen Workspace hinzuzufügen.",
"please_fill_all_project_fields": "Bitte fülle alle Felder aus, um ein neues Projekt hinzuzufügen.",
"read": "Lesen",
"read_write": "Lesen & Schreiben",
"select_member": "Mitglied auswählen",
"select_workspace": "Workspace auswählen",
"select_project": "Projekt auswählen",
"team_admin": "Team-Admin",
"team_created_successfully": "Team erfolgreich erstellt.",
"team_deleted_successfully": "Team erfolgreich gelöscht.",
@@ -1064,8 +1194,8 @@
"team_settings_description": "Teammitglieder, Zugriffsrechte und mehr verwalten.",
"team_updated_successfully": "Team erfolgreich aktualisiert",
"teams": "Teams",
"teams_description": "Weisen Sie Mitglieder Teams zu und gewähren Sie Teams Zugriff auf Workspaces.",
"unlock_teams_description": "Verwalten Sie, welche Organisationsmitglieder Zugriff auf bestimmte Workspaces und Umfragen haben.",
"teams_description": "Mitglieder in Teams einteilen und Teams Zugriff auf Projekte gewähren.",
"unlock_teams_description": "Verwalten Sie, welche Organisationsmitglieder Zugriff auf bestimmte Projekte und Umfragen haben.",
"unlock_teams_title": "Schalten Sie Teams mit einem höheren Plan frei.",
"upgrade_plan_notice_message": "Freischalten von Organisationsrollen mit einem höheren Plan.",
"you_are_a_member": "Du bist Mitglied"
@@ -1322,7 +1452,7 @@
"how_funky_do_you_want_your_cards_in_survey_type_derived_surveys": "Wie funky sollen deine Karten in {surveyTypeDerived} Umfragen sein",
"if_you_need_more_please": "Wenn Du mehr brauchst, bitte",
"if_you_really_want_that_answer_ask_until_you_get_it": "Weiterhin anzeigen, wenn ausgelöst, bis eine Antwort abgegeben wird.",
"ignore_global_waiting_time": "Workspace-weite Wartezeit ignorieren",
"ignore_global_waiting_time": "Projektweite Wartezeit ignorieren",
"ignore_global_waiting_time_description": "Diese Umfrage kann angezeigt werden, wenn ihre Bedingungen erfüllt sind, auch wenn kürzlich eine andere Umfrage angezeigt wurde.",
"image": "Bild",
"includes_all_of": "Enthält alles von",
@@ -1396,7 +1526,7 @@
"options_used_in_logic_bulk_error": "Die folgenden Optionen werden in der Logik verwendet: {questionIndexes}. Bitte entferne sie zuerst aus der Logik.",
"override_theme_with_individual_styles_for_this_survey": "Styling für diese Umfrage überschreiben.",
"overwrite_global_waiting_time": "Benutzerdefinierte Wartezeit festlegen",
"overwrite_global_waiting_time_description": "Überschreiben Sie die Workspace-Konfiguration nur für diese Umfrage.",
"overwrite_global_waiting_time_description": "Die Projektkonfiguration nur für diese Umfrage überschreiben.",
"overwrite_placement": "Platzierung überschreiben",
"overwrite_survey_logo": "Benutzerdefiniertes Umfragelogo festlegen",
"overwrite_the_global_placement_of_the_survey": "Platzierung für diese Umfrage überschreiben",
@@ -1438,7 +1568,7 @@
"edit_quota": "Bearbeite Quote",
"end_survey_for_matching_participants": "Umfrage für passende Teilnehmer beenden",
"inclusion_criteria": "Einschlusskriterien",
"limit_must_be_greater_than_or_equal_to_the_number_of_responses": "{value, plural, one {Sie haben bereits {value} Antwort für dieses Kontingent, daher muss das Limit größer als {value} sein.} other {Sie haben bereits {value} Antworten für dieses Kontingent, daher muss das Limit größer als {value} sein.}}",
"limit_must_be_greater_than_or_equal_to_the_number_of_responses": "{value, plural, other {Limit muss größer oder gleich der Anzahl der Antworten sein}}",
"limited_to_x_responses": "Begrenzt auf {limit}",
"new_quota": "Neues Kontingent",
"quota_created_successfull_toast": "Kontingent erfolgreich erstellt",
@@ -1468,8 +1598,8 @@
"required": "Erforderlich",
"reset_to_theme_styles": "Styling zurücksetzen",
"reset_to_theme_styles_main_text": "Bist Du sicher, dass Du das Styling auf die Themenstile zurücksetzen möchtest? Dadurch wird jegliches benutzerdefinierte Styling entfernt.",
"respect_global_waiting_time": "Workspace-weite Wartezeit verwenden",
"respect_global_waiting_time_description": "Diese Umfrage folgt der in der Workspace-Konfiguration festgelegten Wartezeit. Sie wird nur angezeigt, wenn während dieses Zeitraums keine andere Umfrage erschienen ist.",
"respect_global_waiting_time": "Projektweite Wartezeit verwenden",
"respect_global_waiting_time_description": "Diese Umfrage folgt der in der Projektkonfiguration festgelegten Wartezeit. Sie wird nur angezeigt, wenn in diesem Zeitraum keine andere Umfrage erschienen ist.",
"response_limit_can_t_be_set_to_0": "Das Antwortlimit kann nicht auf 0 gesetzt werden",
"response_limit_needs_to_exceed_number_of_received_responses": "Antwortlimit muss die Anzahl der erhaltenen Antworten ({responseCount}) überschreiten.",
"response_limits_redirections_and_more": "Antwort Limits, Weiterleitungen und mehr.",
@@ -1564,12 +1694,12 @@
"visibility_and_recontact_description": "Steuern Sie, wann diese Umfrage erscheinen kann und wie oft sie erneut erscheinen kann.",
"wait": "Warte",
"wait_a_few_seconds_after_the_trigger_before_showing_the_survey": "Warte ein paar Sekunden nach dem Auslöser, bevor Du die Umfrage anzeigst",
"waiting_time_across_surveys": "Workspace-weite Wartezeit",
"waiting_time_across_surveys_description": "Um Umfragemüdigkeit zu vermeiden, wählen Sie aus, wie diese Umfrage mit der workspace-weiten Wartezeit interagiert.",
"waiting_time_across_surveys": "Projektweite Wartezeit",
"waiting_time_across_surveys_description": "Um Umfragemüdigkeit zu vermeiden, wählen Sie aus, wie diese Umfrage mit der projektweiten Wartezeit interagiert.",
"welcome_message": "Willkommensnachricht",
"without_a_filter_all_of_your_users_can_be_surveyed": "Ohne Filter können alle deine Nutzer befragt werden.",
"you_have_not_created_a_segment_yet": "Du hast noch keinen Segment erstellt.",
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Sie müssen zwei oder mehr Sprachen in Ihrem Workspace eingerichtet haben, um mit Übersetzungen zu arbeiten.",
"you_need_to_have_two_or_more_languages_set_up_in_your_project_to_work_with_translations": "Du musst zwei oder mehr Sprachen in deinem Projekt einrichten, um mit Übersetzungen zu arbeiten.",
"your_description_here_recall_information_with": "Deine Beschreibung hier. Informationen abrufen mit @",
"your_question_here_recall_information_with": "Deine Frage hier. Informationen abrufen mit @",
"your_web_app": "Deine Web-App",
@@ -1697,17 +1827,6 @@
"upgrade_prompt_title": "Verwende persönliche Links mit einem höheren Plan",
"work_with_segments": "Persönliche Links funktionieren mit Segmenten."
},
"pretty_url": {
"description": "Erstellen Sie eine individuelle, einprägsame URL für Ihre Umfrage",
"remove_description": "Ihre Umfrage bleibt über die ursprüngliche URL weiterhin erreichbar.",
"remove_success": "Pretty URL erfolgreich entfernt",
"save_success": "Pretty URL erfolgreich gespeichert",
"slug_help": "Verwenden Sie nur Kleinbuchstaben, Zahlen und Bindestriche.",
"slug_label": "Individueller Slug",
"slug_placeholder": "kunden-feedback",
"slug_required": "Bitte geben Sie einen gültigen Slug ein",
"title": "Pretty URL"
},
"send_email": {
"copy_embed_code": "Einbettungscode kopieren",
"description": "Binden Sie Ihre Umfrage in eine E-Mail ein, um Antworten von Ihrem Publikum zu erhalten.",
@@ -1848,146 +1967,6 @@
"uses_branching_logic": "Diese Umfrage verwendet Logik."
}
},
"workspace": {
"api_keys": {
"add_api_key": "API-Schlüssel hinzufügen",
"api_key": "API-Schlüssel",
"api_key_copied_to_clipboard": "API-Schlüssel in Zwischenablage kopiert",
"api_key_created": "API-Schlüssel erstellt",
"api_key_deleted": "API-Schlüssel gelöscht",
"api_key_label": "API-Schlüssel-Bezeichnung",
"api_key_security_warning": "Aus Sicherheitsgründen wird der API-Schlüssel nur einmal nach der Erstellung angezeigt. Bitte kopieren Sie ihn sofort an Ihr Ziel.",
"api_key_updated": "API-Schlüssel aktualisiert",
"delete_api_key_confirmation": "Alle Anwendungen, die diesen Schlüssel verwenden, können nicht mehr auf Ihre Formbricks-Daten zugreifen.",
"duplicate_access": "Doppelter Workspace-Zugriff nicht erlaubt",
"no_api_keys_yet": "Du hast noch keine API-Schlüssel",
"no_env_permissions_found": "Keine Umgebungsberechtigungen gefunden",
"organization_access": "Organisationszugriff",
"organization_access_description": "Wähle Lese- oder Schreibrechte für organisationsweite Ressourcen.",
"permissions": "Berechtigungen",
"secret": "Geheimnis",
"unable_to_delete_api_key": "API-Schlüssel kann nicht gelöscht werden",
"workspace_access": "Workspace-Zugriff"
},
"app-connection": {
"app_connection": "App-Verbindung",
"app_connection_description": "Verbinde deine App oder Website mit Formbricks.",
"cache_update_delay_description": "Wenn du Änderungen an Umfragen, Kontakten, Aktionen oder anderen Daten vornimmst, kann es bis zu 1 Minute dauern, bis diese Änderungen in deiner lokalen App mit dem Formbricks SDK angezeigt werden.",
"cache_update_delay_title": "Änderungen werden aufgrund von Caching nach ~1 Minute angezeigt",
"environment_id": "Deine Umgebungs-ID",
"environment_id_description": "Diese ID identifiziert diese Formbricks-Umgebung eindeutig.",
"formbricks_sdk_connected": "Formbricks SDK ist verbunden",
"formbricks_sdk_not_connected": "Formbricks SDK ist noch nicht verbunden.",
"formbricks_sdk_not_connected_description": "Füge das Formbricks SDK zu deiner Website oder App hinzu, um es mit Formbricks zu verbinden",
"how_to_setup": "Einrichtungsanleitung",
"how_to_setup_description": "Folge diesen Schritten, um das Formbricks-Widget in deiner App einzurichten.",
"receiving_data": "Daten werden empfangen 💃🕺",
"recheck": "Erneut prüfen",
"sdk_connection_details": "SDK-Verbindungsdetails",
"sdk_connection_details_description": "Deine eindeutige Umgebungs-ID und SDK-Verbindungs-URL zur Integration von Formbricks in deine Anwendung.",
"setup_alert_description": "Folge dieser Schritt-für-Schritt-Anleitung, um deine App oder Website in unter 5 Minuten zu verbinden.",
"setup_alert_title": "So verbinden",
"webapp_url": "SDK-Verbindungs-URL"
},
"general": {
"cannot_delete_only_workspace": "Dies ist Ihr einziges Projekt, es kann nicht gelöscht werden. Erstellen Sie zuerst ein neues Projekt.",
"delete_workspace": "Projekt löschen",
"delete_workspace_confirmation": "Sind Sie sicher, dass Sie {projectName} löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"delete_workspace_name_includes_surveys_responses_people_and_more": "{projectName} inkl. aller Umfragen, Antworten, Personen, Aktionen und Attribute löschen.",
"delete_workspace_settings_description": "Projekt mit allen Umfragen, Antworten, Personen, Aktionen und Attributen löschen. Das kann nicht rückgängig gemacht werden.",
"error_saving_workspace_information": "Fehler beim Speichern der Projektinformationen",
"only_owners_or_managers_can_delete_workspaces": "Nur Eigentümer oder Manager können Projekte löschen",
"recontact_waiting_time": "Projektweite Wartezeit zwischen Umfragen",
"recontact_waiting_time_settings_description": "Steuern Sie, wie häufig Nutzer über alle App-Umfragen hinweg befragt werden können.",
"this_action_cannot_be_undone": "Diese Aktion kann nicht rückgängig gemacht werden.",
"wait_x_days_before_showing_next_survey": "X Tage warten, bevor die nächste Umfrage angezeigt wird:",
"waiting_period_updated_successfully": "Wartezeit erfolgreich aktualisiert",
"whats_your_workspace_called": "Wie heißt Ihr Projekt?",
"workspace_deleted_successfully": "Projekt erfolgreich gelöscht",
"workspace_name_settings_description": "Ändern Sie den Namen Ihres Projekts.",
"workspace_name_updated_successfully": "Projektname erfolgreich aktualisiert"
},
"languages": {
"add_language": "Sprache hinzufügen",
"alias": "Alias",
"alias_tooltip": "Der Alias ist ein alternativer Name zur Identifizierung der Sprache in Link-Umfragen und im SDK (optional)",
"cannot_remove_language_warning": "Sie können diese Sprache nicht entfernen, da sie noch in diesen Umfragen verwendet wird:",
"conflict_between_identifier_and_alias": "Es besteht ein Konflikt zwischen der Kennung einer hinzugefügten Sprache und einem Ihrer Aliase. Aliase und Kennungen können nicht identisch sein.",
"conflict_between_selected_alias_and_another_language": "Es besteht ein Konflikt zwischen dem ausgewählten Alias und einer anderen Sprache, die diese Kennung hat. Bitte fügen Sie stattdessen die Sprache mit dieser Kennung zu Ihrem Projekt hinzu, um Inkonsistenzen zu vermeiden.",
"delete_language_confirmation": "Sind Sie sicher, dass Sie diese Sprache löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"duplicate_language_or_language_id": "Doppelte Sprache oder Sprach-ID",
"edit_languages": "Sprachen bearbeiten",
"identifier": "Kennung (ISO)",
"incomplete_translations": "Unvollständige Übersetzungen",
"language": "Sprache",
"language_deleted_successfully": "Sprache erfolgreich gelöscht",
"languages_updated_successfully": "Sprachen erfolgreich aktualisiert",
"multi_language_surveys": "Mehrsprachige Umfragen",
"multi_language_surveys_description": "Füge Sprachen hinzu, um mehrsprachige Umfragen zu erstellen.",
"no_language_found": "Keine Sprache gefunden. Füge unten deine erste Sprache hinzu.",
"please_select_a_language": "Bitte wähle eine Sprache aus",
"remove_language": "Sprache entfernen",
"remove_language_from_surveys_to_remove_it_from_workspace": "Bitte entferne die Sprache aus diesen Umfragen, um sie aus dem Workspace zu entfernen.",
"search_items": "Elemente suchen",
"translate": "Übersetzen"
},
"look": {
"add_background_color": "Hintergrundfarbe hinzufügen",
"add_background_color_description": "Füge dem Logo-Container eine Hintergrundfarbe hinzu.",
"app_survey_placement": "Platzierung der App-Umfrage",
"app_survey_placement_settings_description": "Ändere, wo Umfragen in deiner Web-App oder Website angezeigt werden.",
"centered_modal_overlay_color": "Zentrierte modale Überlagerungsfarbe",
"email_customization": "E-Mail-Anpassung",
"email_customization_description": "Ändere das Aussehen und die Gestaltung von E-Mails, die Formbricks in deinem Namen versendet.",
"enable_custom_styling": "Benutzerdefiniertes Styling aktivieren",
"enable_custom_styling_description": "Erlaube Nutzern, dieses Theme im Umfrage-Editor zu überschreiben.",
"failed_to_remove_logo": "Logo konnte nicht entfernt werden",
"failed_to_update_logo": "Logo konnte nicht aktualisiert werden",
"formbricks_branding": "Formbricks-Branding",
"formbricks_branding_hidden": "Formbricks-Branding ist ausgeblendet.",
"formbricks_branding_settings_description": "Wir freuen uns über deine Unterstützung, haben aber Verständnis, wenn du es ausschaltest.",
"formbricks_branding_shown": "Formbricks-Branding wird angezeigt.",
"logo_removed_successfully": "Logo erfolgreich entfernt",
"logo_settings_description": "Lade dein Firmenlogo hoch, um Umfragen und Link-Vorschauen zu branden.",
"logo_updated_successfully": "Logo erfolgreich aktualisiert",
"logo_upload_failed": "Logo-Upload fehlgeschlagen. Bitte versuche es erneut.",
"placement_updated_successfully": "Platzierung erfolgreich aktualisiert",
"remove_branding_with_a_higher_plan": "Branding mit einem höheren Plan entfernen",
"remove_logo": "Logo entfernen",
"remove_logo_confirmation": "Bist du sicher, dass du das Logo entfernen möchtest?",
"replace_logo": "Logo ersetzen",
"reset_styling": "Styling zurücksetzen",
"reset_styling_confirmation": "Bist du sicher, dass du das Styling auf die Standardeinstellungen zurücksetzen möchtest?",
"show_formbricks_branding_in": "Formbricks-Branding in {type}-Umfragen anzeigen",
"show_powered_by_formbricks": "\"Powered by Formbricks\"-Signatur anzeigen",
"styling_updated_successfully": "Styling erfolgreich aktualisiert",
"theme": "Theme",
"theme_settings_description": "Erstelle ein Style-Theme für alle Umfragen. Du kannst für jede Umfrage individuelles Styling aktivieren."
},
"tags": {
"add": "Hinzufügen",
"add_tag": "Tag hinzufügen",
"count": "Anzahl",
"delete_tag_confirmation": "Bist du sicher, dass du diesen Tag löschen möchtest?",
"manage_tags": "Tags verwalten",
"manage_tags_description": "Antwort-Tags zusammenführen und entfernen.",
"merge": "Zusammenführen",
"no_tag_found": "Kein Tag gefunden",
"search_tags": "Tags durchsuchen...",
"tag": "Tag",
"tag_already_exists": "Tag existiert bereits",
"tag_deleted": "Tag gelöscht",
"tag_updated": "Tag aktualisiert",
"tags_merged": "Tags zusammengeführt"
},
"teams": {
"manage_teams": "Teams verwalten",
"no_teams_found": "Keine Teams gefunden",
"permission": "Berechtigung",
"team_name": "Teamname",
"team_settings_description": "Sehen Sie, welche Teams auf diesen Workspace zugreifen können."
}
},
"xm-templates": {
"ces": "CES",
"ces_description": "Nutze jeden Berührungspunkt, um zu verstehen, wie Du einfach der Umgang mit Deinem Produkt ist.",
@@ -2006,36 +1985,36 @@
},
"organizations": {
"landing": {
"no_workspaces_warning_subtitle": "Wenden Sie sich an den Inhaber Ihrer Organisation, um Zugriff auf Workspaces zu erhalten. Oder erstellen Sie eine eigene Organisation, um loszulegen.",
"no_workspaces_warning_title": "Ihr Konto hat noch keinen Zugriff auf Workspaces."
"no_projects_warning_subtitle": "Wenden Sie sich an den Eigentümer Ihrer Organisation, um Zugriff auf Projekte zu erhalten. Oder erstellen Sie eine eigene Organisation, um loszulegen.",
"no_projects_warning_title": "Ihr Konto hat noch keinen Zugriff auf Projekte."
},
"workspaces": {
"projects": {
"new": {
"channel": {
"channel_select_subtitle": "Teilen Sie einen Link oder zeigen Sie Ihre Umfrage in Apps oder auf Websites an.",
"channel_select_title": "Welche Art von Umfragen benötigen Sie?",
"channel_select_subtitle": "Teile einen Link oder zeige deine Umfrage in Apps oder auf Websites.",
"channel_select_title": "Welche Art von Umfrage brauchst du?",
"in_product_surveys": "In-Product-Umfragen",
"in_product_surveys_description": "Eingebettet in Apps oder Websites.",
"link_and_email_surveys": "Link- & E-Mail-Umfragen",
"link_and_email_surveys_description": "Erreichen Sie Menschen überall online."
"in_product_surveys_description": "Führe zielgerichtete Micro-Umfragen in deinen Apps durch.",
"link_and_email_surveys": "Link- und E-Mail-Umfragen",
"link_and_email_surveys_description": "Erreiche Menschen überall online."
},
"mode": {
"formbricks_cx": "Formbricks CX",
"formbricks_cx_description": "Umfragen und Berichte, um zu verstehen, was Ihre Kunden benötigen.",
"formbricks_cx_description": "Umfragen und Berichte, um zu verstehen, was deine Kunden brauchen.",
"formbricks_surveys": "Formbricks Umfragen",
"formbricks_surveys_description": "Vielseitige Umfrageplattform für Web-, App- und E-Mail-Umfragen.",
"what_are_you_here_for": "Wofür sind Sie hier?"
"formbricks_surveys_description": "Multifunktionale Umfrageplattform für Web-, App- und E-Mail-Umfragen.",
"what_are_you_here_for": "Warum bist Du hier?"
},
"settings": {
"brand_color": "Markenfarbe",
"brand_color_description": "Passen Sie die Hauptfarbe der Umfragen an Ihre Marke an.",
"brand_color_description": "Passe die Hauptfarbe der Umfragen an deine Marke an.",
"create_new_team": "Neues Team erstellen",
"team_description": "Wer kann auf diesen Workspace zugreifen?",
"workspace_creation_failed": "Workspace-Erstellung fehlgeschlagen",
"workspace_name": "Produktname",
"workspace_name_description": "Wie heißt Ihr Produkt?",
"workspace_settings_subtitle": "Wenn Menschen Ihre Marke wiedererkennen, ist die Wahrscheinlichkeit viel höher, dass sie Antworten beginnen und abschließen.",
"workspace_settings_title": "Lassen Sie Befragte wissen, dass Sie es sind"
"project_creation_failed": "Projekterstellung fehlgeschlagen",
"project_name": "Produktname",
"project_name_description": "Wie heißt dein Produkt?",
"project_settings_subtitle": "Wenn Leute deine Marke erkennen, ist es viel wahrscheinlicher, dass sie Umfragen beantworten und abschließen.",
"project_settings_title": "Lass die Teilnehmenden wissen, dass du es bist",
"team_description": "Wer kann auf dieses Projekt zugreifen?"
}
}
}

View File

@@ -121,9 +121,9 @@
"add_filter": "Add filter",
"add_logo": "Add logo",
"add_member": "Add member",
"add_new_workspace": "Add new workspace",
"add_new_project": "Add new project",
"add_project": "Add project",
"add_to_team": "Add to team",
"add_workspace": "Add workspace",
"all": "All",
"all_questions": "All questions",
"allow": "Allow",
@@ -148,7 +148,7 @@
"choices": "Choices",
"choose_environment": "Choose environment",
"choose_organization": "Choose organization",
"choose_workspace": "Choose workspace",
"choose_project": "Choose project",
"clear_all": "Clear all",
"clear_filters": "Clear filters",
"clear_selection": "Clear selection",
@@ -174,9 +174,9 @@
"count_contacts": "{value, plural, one {{value} contact} other {{value} contacts}}",
"count_responses": "{value, plural, one {{value} response} other {{value} responses}}",
"create_new_organization": "Create new organization",
"create_project": "Create project",
"create_segment": "Create segment",
"create_survey": "Create survey",
"create_workspace": "Create workspace",
"created": "Created",
"created_at": "Created at",
"created_by": "Created by",
@@ -187,7 +187,6 @@
"delete": "Delete",
"description": "Description",
"dev_env": "Dev Environment",
"development": "Development",
"development_environment_banner": "You're in a development environment. Set it up to test surveys, actions and attributes.",
"disable": "Disable",
"disallow": "Don't allow",
@@ -195,7 +194,6 @@
"dismissed": "Dismissed",
"docs": "Documentation",
"documentation": "Documentation",
"domain": "Domain",
"download": "Download",
"draft": "Draft",
"duplicate": "Duplicate",
@@ -205,7 +203,6 @@
"ending_card": "Ending card",
"enter_url": "Enter URL",
"enterprise_license": "Enterprise License",
"environment": "Environment",
"environment_not_found": "Environment not found",
"environment_notice": "You're currently in the {environment} environment.",
"error": "Error",
@@ -216,7 +213,7 @@
"expand_rows": "Expand rows",
"failed_to_copy_to_clipboard": "Failed to copy to clipboard",
"failed_to_load_organizations": "Failed to load organizations",
"failed_to_load_workspaces": "Failed to load workspaces",
"failed_to_load_projects": "Failed to load projects",
"finish": "Finish",
"follow_these": "Follow these",
"formbricks_version": "Formbricks Version",
@@ -324,10 +321,17 @@
"preview_survey": "Preview Survey",
"privacy": "Privacy Policy",
"product_manager": "Product Manager",
"production": "Production",
"profile": "Profile",
"profile_id": "Profile ID",
"progress": "Progress",
"project_configuration": "Project Configuration",
"project_creation_description": "Organize surveys in projects for better access control.",
"project_id": "Project ID",
"project_name": "Project Name",
"project_name_placeholder": "e.g. Formbricks",
"project_not_found": "Project not found",
"project_permission_not_found": "Project permission not found",
"projects": "Projects",
"question": "question",
"question_id": "Question ID",
"questions": "Questions",
@@ -416,7 +420,7 @@
"top_right": "Top Right",
"try_again": "Try again",
"type": "Type",
"unlock_more_workspaces_with_a_higher_plan": "Unlock more workspaces with a higher plan.",
"unlock_more_projects_with_a_higher_plan": "Unlock more projects with a higher plan.",
"update": "Update",
"updated": "Updated",
"updated_at": "Updated at",
@@ -440,18 +444,10 @@
"website_app_survey": "Website & App Survey",
"website_survey": "Website Survey",
"welcome_card": "Welcome card",
"workspace_configuration": "Workspace Configuration",
"workspace_creation_description": "Organize surveys in workspaces for better access control.",
"workspace_id": "Workspace ID",
"workspace_name": "Workspace Name",
"workspace_name_placeholder": "e.g. Formbricks",
"workspace_not_found": "Workspace not found",
"workspace_permission_not_found": "Workspace permission not found",
"workspaces": "Workspaces",
"you": "You",
"you_are_downgraded_to_the_community_edition": "You are downgraded to the Community Edition.",
"you_are_not_authorised_to_perform_this_action": "You are not authorised to perform this action.",
"you_have_reached_your_limit_of_workspace_limit": "You have reached your limit of {projectLimit} workspaces.",
"you_have_reached_your_limit_of_project_limit": "You have reached your limit of {projectLimit} projects.",
"you_have_reached_your_monthly_miu_limit_of": "You have reached your monthly MIU limit of",
"you_have_reached_your_monthly_response_limit_of": "You have reached your monthly response limit of",
"you_will_be_downgraded_to_the_community_edition_on_date": "You will be downgraded to the Community Edition on {date}."
@@ -479,12 +475,14 @@
"forgot_password_email_text": "You have requested a link to change your password. You can do this by clicking the link below:",
"hidden_field": "Hidden field",
"imprint": "Imprint",
"invite_accepted_email_heading": "Hey {inviterName}",
"invite_accepted_email_heading": "Hey",
"invite_accepted_email_subject": "You've got a new organization member!",
"invite_accepted_email_text": "Just letting you know that {inviteeName} accepted your invitation. Have fun collaborating!",
"invite_accepted_email_text_par1": "Just letting you know that",
"invite_accepted_email_text_par2": "accepted your invitation. Have fun collaborating!",
"invite_email_button_label": "Join organization",
"invite_email_heading": "Hey {inviteeName}",
"invite_email_text": "Your colleague {inviterName} invited you to join them at Formbricks. To accept the invitation, please click the link below:",
"invite_email_heading": "Hey",
"invite_email_text_par1": "Your colleague",
"invite_email_text_par2": "invited you to join them at Formbricks. To accept the invitation, please click the link below:",
"invite_member_email_subject": "You're invited to collaborate on Formbricks!",
"new_email_verification_text": "To verify your new email address, please click the button below:",
"number_variable": "Number variable",
@@ -777,6 +775,146 @@
"website_or_app_integration_description": "Integrate Formbricks into your Website or App",
"zapier_integration_description": "Integrate Formbricks with 5000+ apps via Zapier"
},
"project": {
"api_keys": {
"add_api_key": "Add API Key",
"api_key": "API Key",
"api_key_copied_to_clipboard": "API key copied to clipboard",
"api_key_created": "API key created",
"api_key_deleted": "API Key deleted",
"api_key_label": "API Key Label",
"api_key_security_warning": "For security reasons, the API key will only be shown once after creation. Please copy it to your destination right away.",
"api_key_updated": "API Key updated",
"delete_api_key_confirmation": "Any applications using this key will no longer be able to access your Formbricks data.",
"duplicate_access": "Duplicate project access not allowed",
"no_api_keys_yet": "You don't have any API keys yet",
"no_env_permissions_found": "No environment permissions found",
"organization_access": "Organization Access",
"organization_access_description": "Select read or write privileges for organization-wide resources.",
"permissions": "Permissions",
"project_access": "Project Access",
"secret": "Secret",
"unable_to_delete_api_key": "Unable to delete API Key"
},
"app-connection": {
"app_connection": "App Connection",
"app_connection_description": "Connect your app or website to Formbricks.",
"cache_update_delay_description": "When you make updates to surveys, contacts, actions, or other data, it can take up to 1 minute for those changes to appear in your local app running the Formbricks SDK.",
"cache_update_delay_title": "Changes will be reflected after ~1 minute due to caching",
"environment_id": "Your Environment ID",
"environment_id_description": "This id uniquely identifies this Formbricks environment.",
"formbricks_sdk_connected": "Formbricks SDK is connected",
"formbricks_sdk_not_connected": "Formbricks SDK is not yet connected.",
"formbricks_sdk_not_connected_description": "Add the Formbricks SDK to your website or app to connect it with Formbricks",
"how_to_setup": "How to setup",
"how_to_setup_description": "Follow these steps to setup the Formbricks widget within your app.",
"receiving_data": "Receiving data \uD83D\uDC83\uD83D\uDD7A",
"recheck": "Re-check",
"sdk_connection_details": "SDK Connection Details",
"sdk_connection_details_description": "Your unique environment ID and SDK connection URL for integrating Formbricks with your application.",
"setup_alert_description": "Follow this step-by-step tutorial to connect your app or website in under 5 minutes.",
"setup_alert_title": "How to connect",
"webapp_url": "SDK Connection URL"
},
"general": {
"cannot_delete_only_project": "This is your only project, it cannot be deleted. Create a new project first.",
"delete_project": "Delete Project",
"delete_project_confirmation": "Are you sure you want to delete {projectName}? This action cannot be undone.",
"delete_project_name_includes_surveys_responses_people_and_more": "Delete {projectName} incl. all surveys, responses, people, actions and attributes.",
"delete_project_settings_description": "Delete project with all surveys, responses, people, actions and attributes. This cannot be undone.",
"error_saving_project_information": "Error saving project information",
"only_owners_or_managers_can_delete_projects": "Only owners or managers can delete projects",
"project_deleted_successfully": "Project deleted successfully",
"project_name_settings_description": "Change your projects name.",
"project_name_updated_successfully": "Project name updated successfully",
"recontact_waiting_time": "Project-wide Waiting Time Between Surveys",
"recontact_waiting_time_settings_description": "Control how frequently users can be surveyed across all app surveys.",
"this_action_cannot_be_undone": "This action cannot be undone.",
"wait_x_days_before_showing_next_survey": "Wait X days before showing next survey:",
"waiting_period_updated_successfully": "Waiting period updated successfully",
"whats_your_project_called": "What's your project called?"
},
"languages": {
"add_language": "Add language",
"alias": "Alias",
"alias_tooltip": "The alias is an alternate name to identify the language in link surveys and the SDK (optional)",
"cannot_remove_language_warning": "You cannot remove this language since its still used in these surveys:",
"conflict_between_identifier_and_alias": "There is a conflict between the identifier of an added language and one for your aliases. Aliases and identifiers cannot be identical.",
"conflict_between_selected_alias_and_another_language": "There is a conflict between the selected alias and another language that has this identifier. Please add the language with this identifier to your project instead to avoid inconsistencies.",
"delete_language_confirmation": "Are you sure you want to delete this language? This action cannot be undone.",
"duplicate_language_or_language_id": "Duplicate language or language ID",
"edit_languages": "Edit languages",
"identifier": "Identifier (ISO)",
"incomplete_translations": "Incomplete translations",
"language": "Language",
"language_deleted_successfully": "Language deleted successfully",
"languages_updated_successfully": "Languages updated successfully",
"multi_language_surveys": "Multi-Language Surveys",
"multi_language_surveys_description": "Add languages to create multi-language surveys.",
"no_language_found": "No language found. Add your first language below.",
"please_select_a_language": "Please select a language",
"remove_language": "Remove Language",
"remove_language_from_surveys_to_remove_it_from_project": "Please remove the language from these surveys in order to remove it from the project.",
"search_items": "Search items",
"translate": "Translate"
},
"look": {
"add_background_color": "Add background color",
"add_background_color_description": "Add a background color to the logo container.",
"app_survey_placement": "App Survey Placement",
"app_survey_placement_settings_description": "Change where surveys will be shown in your web app or website.",
"centered_modal_overlay_color": "Centered modal overlay color",
"email_customization": "Email Customization",
"email_customization_description": "Change the look and feel of emails Formbricks sends out on your behalf.",
"enable_custom_styling": "Enable custom styling",
"enable_custom_styling_description": "Allow users to override this theme in the survey editor.",
"failed_to_remove_logo": "Failed to remove the logo",
"failed_to_update_logo": "Failed to update the logo",
"formbricks_branding": "Formbricks Branding",
"formbricks_branding_hidden": "Formbricks branding is hidden.",
"formbricks_branding_settings_description": "We love your support but understand if you toggle it off.",
"formbricks_branding_shown": "Formbricks branding is shown.",
"logo_removed_successfully": "Logo removed successfully",
"logo_settings_description": "Upload your company logo to brand surveys and link previews.",
"logo_updated_successfully": "Logo updated successfully",
"logo_upload_failed": "Logo upload failed. Please try again.",
"placement_updated_successfully": "Placement updated successfully",
"remove_branding_with_a_higher_plan": "Remove branding with a higher plan",
"remove_logo": "Remove Logo",
"remove_logo_confirmation": "Are you sure you want to remove the logo?",
"replace_logo": "Replace Logo",
"reset_styling": "Reset styling",
"reset_styling_confirmation": "Are you sure you want to reset the styling to default?",
"show_formbricks_branding_in": "Show Formbricks Branding in {type} surveys",
"show_powered_by_formbricks": "Show 'Powered by Formbricks' Signature",
"styling_updated_successfully": "Styling updated successfully",
"theme": "Theme",
"theme_settings_description": "Create a style theme for all surveys. You can enable custom styling for each survey."
},
"tags": {
"add": "Add",
"add_tag": "Add Tag",
"count": "Count",
"delete_tag_confirmation": "Are you sure you want to delete this tag?",
"manage_tags": "Manage Tags",
"manage_tags_description": "Merge and remove response tags.",
"merge": "Merge",
"no_tag_found": "No tag found",
"search_tags": "Search Tags...",
"tag": "Tag",
"tag_already_exists": "Tag already exists",
"tag_deleted": "Tag deleted",
"tag_updated": "Tag updated",
"tags_merged": "Tags merged"
},
"teams": {
"manage_teams": "Manage teams",
"no_teams_found": "No teams found",
"permission": "Permission",
"team_name": "Team Name",
"team_settings_description": "See which teams can access this project."
}
},
"segments": {
"add_filter_below": "Add filter below",
"add_your_first_filter_to_get_started": "Add your first filter to get started",
@@ -839,9 +977,9 @@
},
"billing": {
"1000_monthly_responses": "Monthly 1,000 Responses",
"1_workspace": "1 Workspace",
"1_project": "1 Project",
"2000_contacts": "2,000 Contacts",
"3_workspaces": "3 Workspaces",
"3_projects": "3 Projects",
"5000_monthly_responses": "5,000 Monthly Responses",
"7500_contacts": "7,500 Contacts",
"all_integrations": "All Integrations",
@@ -854,8 +992,8 @@
"current_tier_limit": "Current Tier Limit",
"custom": "Custom & Scale",
"custom_contacts_limit": "Custom Contacts Limit",
"custom_project_limit": "Custom Project Limit",
"custom_response_limit": "Custom Response Limit",
"custom_workspace_limit": "Custom Workspace Limit",
"email_embedded_surveys": "Email Embedded Surveys",
"email_follow_ups": "Email Follow-ups",
"enterprise_description": "Premium support and custom limits.",
@@ -882,22 +1020,14 @@
"team_access_roles": "Team Access Roles",
"unable_to_upgrade_plan": "Unable to upgrade plan",
"unlimited_miu": "Unlimited MIU",
"unlimited_projects": "Unlimited Projects",
"unlimited_responses": "Unlimited Responses",
"unlimited_surveys": "Unlimited Surveys",
"unlimited_team_members": "Unlimited Team Members",
"unlimited_workspaces": "Unlimited Workspaces",
"upgrade": "Upgrade",
"uptime_sla_99": "Uptime SLA (99%)",
"website_surveys": "Website Surveys"
},
"domain": {
"description": "Overview of all surveys using Pretty URLs across your organization",
"no_pretty_urls": "No surveys with Pretty URLs configured yet.",
"pretty_url": "Pretty URL",
"survey_name": "Survey Name",
"title": "Pretty URLs",
"workspace": "Workspace"
},
"enterprise": {
"audit_logs": "Audit Logs",
"coming_soon": "Coming soon",
@@ -925,13 +1055,13 @@
"cannot_leave_only_organization": "You cannot leave this organization as it is your only organization. Create a new organization first.",
"copy_invite_link_to_clipboard": "Copy invite link to clipboard",
"create_new_organization": "Create new organization",
"create_new_organization_description": "Create a new organization to handle a different set of workspaces.",
"create_new_organization_description": "Create a new organization to handle a different set of projects.",
"customize_email_with_a_higher_plan": "Customize email with a higher plan",
"delete_member_confirmation": "Deleted members will lose access to all workspaces and surveys of your organization.",
"delete_member_confirmation": "Deleted members will lose access to all projects and surveys of your organization.",
"delete_organization": "Delete Organization",
"delete_organization_description": "Delete organization with all its workspaces including all surveys, responses, people, actions and attributes",
"delete_organization_description": "Delete organization with all its projects including all surveys, responses, people, actions and attributes",
"delete_organization_warning": "Before you proceed with deleting this organization, please be aware of the following consequences:",
"delete_organization_warning_1": "Permanent removal of all workspaces linked to this organization.",
"delete_organization_warning_1": "Permanent removal of all projects linked to this organization.",
"delete_organization_warning_2": "This action cannot be undone. If it's gone, it's gone.",
"delete_organization_warning_3": "Please enter {organizationName} in the following field to confirm the definitive deletion of this organization:",
"eliminate_branding_with_whitelabel": "Eliminate Formbricks branding and enable additional white-label customization options.",
@@ -1023,10 +1153,10 @@
},
"teams": {
"add_members_description": "Add members to the team and determine their role.",
"add_workspaces_description": "Control which workspaces the team members can access.",
"add_projects_description": "Control which projects the team members can access.",
"all_members_added": "All members added to this team.",
"all_workspaces_added": "All workspaces added to this team.",
"are_you_sure_you_want_to_delete_this_team": "Are you sure you want to delete this team? This also removes the access to all the workspaces and surveys associated with this team.",
"all_projects_added": "All projects added to this team.",
"are_you_sure_you_want_to_delete_this_team": "Are you sure you want to delete this team? This also removes the access to all the projects and surveys associated with this team.",
"billing_role_description": "Only have access to billing info.",
"bulk_invite": "Bulk Invite",
"contributor": "Contributor",
@@ -1042,18 +1172,18 @@
"manage": "Manage",
"manage_team": "Manage team",
"manage_team_disabled": "Only organization owners, managers and team admins can manage teams.",
"manager_role_description": "Managers can access all workspaces and add and remove members.",
"manager_role_description": "Managers can access all projects and add and remove members.",
"member": "Member",
"member_role_description": "Members can work in selected workspaces.",
"member_role_info_message": "To give new members access to a workspace, please add them to a Team below. With Teams you can manage who has access to which workspace.",
"member_role_description": "Members can work in selected projects.",
"member_role_info_message": "To give new members access to a project, please add them to a Team below. With Teams you can manage who has access to which project.",
"organization_role": "Organization role",
"owner_role_description": "Owners have full control over the organization.",
"please_fill_all_member_fields": "Please fill all the fields to add a new member.",
"please_fill_all_workspace_fields": "Please fill all the fields to add a new workspace.",
"please_fill_all_project_fields": "Please fill all the fields to add a new project.",
"read": "Read",
"read_write": "Read & Write",
"select_member": "Select member",
"select_workspace": "Select workspace",
"select_project": "Select project",
"team_admin": "Team Admin",
"team_created_successfully": "Team created successfully.",
"team_deleted_successfully": "Team deleted successfully.",
@@ -1064,8 +1194,8 @@
"team_settings_description": "Manage team members, access rights, and more.",
"team_updated_successfully": "Team updated successfully",
"teams": "Teams",
"teams_description": "Assign members into teams and give teams access to workspaces.",
"unlock_teams_description": "Manage which organization members have access to specific workspaces and surveys.",
"teams_description": "Assign members into teams and give teams access to projects.",
"unlock_teams_description": "Manage which organization members have access to specific projects and surveys.",
"unlock_teams_title": "Unlock Teams with a higher plan.",
"upgrade_plan_notice_message": "Unlock Organization Roles with a higher plan.",
"you_are_a_member": "You're a member"
@@ -1322,7 +1452,7 @@
"how_funky_do_you_want_your_cards_in_survey_type_derived_surveys": "How funky do you want your cards in {surveyTypeDerived} Surveys",
"if_you_need_more_please": "If you need more, please",
"if_you_really_want_that_answer_ask_until_you_get_it": "Keep showing whenever triggered until a response is submitted.",
"ignore_global_waiting_time": "Ignore workspace-wide waiting time",
"ignore_global_waiting_time": "Ignore project-wide waiting time",
"ignore_global_waiting_time_description": "This survey can show whenever its conditions are met, even if another survey was shown recently.",
"image": "Image",
"includes_all_of": "Includes all of",
@@ -1396,7 +1526,7 @@
"options_used_in_logic_bulk_error": "The following options are used in logic: {questionIndexes}. Please remove them from logic first.",
"override_theme_with_individual_styles_for_this_survey": "Override the theme with individual styles for this survey.",
"overwrite_global_waiting_time": "Set custom waiting time",
"overwrite_global_waiting_time_description": "Override the workspace configuration for this survey only.",
"overwrite_global_waiting_time_description": "Override the project configuration for this survey only.",
"overwrite_placement": "Overwrite placement",
"overwrite_survey_logo": "Set custom survey logo",
"overwrite_the_global_placement_of_the_survey": "Overwrite the global placement of the survey",
@@ -1468,8 +1598,8 @@
"required": "Required",
"reset_to_theme_styles": "Reset to theme styles",
"reset_to_theme_styles_main_text": "Are you sure you want to reset the styling to the theme styles? This will remove all custom styling.",
"respect_global_waiting_time": "Use workspace-wide waiting time",
"respect_global_waiting_time_description": "This survey follows the waiting time set in workspace configuration. It only shows if no other survey has appeared during that period.",
"respect_global_waiting_time": "Use project-wide waiting time",
"respect_global_waiting_time_description": "This survey follows the waiting time set in project configuration. It only shows if no other survey has appeared during that period.",
"response_limit_can_t_be_set_to_0": "Response limit can't be set to 0",
"response_limit_needs_to_exceed_number_of_received_responses": "Response limit needs to exceed number of received responses ({responseCount}).",
"response_limits_redirections_and_more": "Response limits, redirections and more.",
@@ -1564,12 +1694,12 @@
"visibility_and_recontact_description": "Control when this survey can appear and how often it can reappear.",
"wait": "Wait",
"wait_a_few_seconds_after_the_trigger_before_showing_the_survey": "Wait a few seconds after the trigger before showing the survey",
"waiting_time_across_surveys": "Workspace-wide waiting time",
"waiting_time_across_surveys_description": "To prevent survey fatigue, choose how this survey interacts with the workspace-wide waiting time.",
"waiting_time_across_surveys": "Project-wide waiting time",
"waiting_time_across_surveys_description": "To prevent survey fatigue, choose how this survey interacts with the project-wide waiting time.",
"welcome_message": "Welcome message",
"without_a_filter_all_of_your_users_can_be_surveyed": "Without a filter, all of your users can be surveyed.",
"you_have_not_created_a_segment_yet": "You have not created a segment yet",
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "You need to have two or more languages set up in your workspace to work with translations.",
"you_need_to_have_two_or_more_languages_set_up_in_your_project_to_work_with_translations": "You need to have two or more languages set up in your project to work with translations.",
"your_description_here_recall_information_with": "Your description here. Recall information with @",
"your_question_here_recall_information_with": "Your question here. Recall information with @",
"your_web_app": "Your web app",
@@ -1697,17 +1827,6 @@
"upgrade_prompt_title": "Use personal links with a higher plan",
"work_with_segments": "Personal links work with segments."
},
"pretty_url": {
"description": "Create a custom, memorable URL for your survey",
"remove_description": "Your survey will still be accessible via its original URL.",
"remove_success": "Pretty URL removed successfully",
"save_success": "Pretty URL saved successfully",
"slug_help": "Use lowercase letters, numbers, and hyphens only.",
"slug_label": "Custom Slug",
"slug_placeholder": "customer-feedback",
"slug_required": "Please enter a valid slug",
"title": "Pretty URL"
},
"send_email": {
"copy_embed_code": "Copy embed code",
"description": "Embed your survey in an email to get responses from your audience.",
@@ -1848,146 +1967,6 @@
"uses_branching_logic": "This survey uses branching logic."
}
},
"workspace": {
"api_keys": {
"add_api_key": "Add API Key",
"api_key": "API Key",
"api_key_copied_to_clipboard": "API key copied to clipboard",
"api_key_created": "API key created",
"api_key_deleted": "API Key deleted",
"api_key_label": "API Key Label",
"api_key_security_warning": "For security reasons, the API key will only be shown once after creation. Please copy it to your destination right away.",
"api_key_updated": "API Key updated",
"delete_api_key_confirmation": "Any applications using this key will no longer be able to access your Formbricks data.",
"duplicate_access": "Duplicate workspace access not allowed",
"no_api_keys_yet": "You don't have any API keys yet",
"no_env_permissions_found": "No environment permissions found",
"organization_access": "Organization Access",
"organization_access_description": "Select read or write privileges for organization-wide resources.",
"permissions": "Permissions",
"secret": "Secret",
"unable_to_delete_api_key": "Unable to delete API Key",
"workspace_access": "Workspace Access"
},
"app-connection": {
"app_connection": "App Connection",
"app_connection_description": "Connect your app or website to Formbricks.",
"cache_update_delay_description": "When you make updates to surveys, contacts, actions, or other data, it can take up to 1 minute for those changes to appear in your local app running the Formbricks SDK.",
"cache_update_delay_title": "Changes will be reflected after ~1 minute due to caching",
"environment_id": "Your Environment ID",
"environment_id_description": "This id uniquely identifies this Formbricks environment.",
"formbricks_sdk_connected": "Formbricks SDK is connected",
"formbricks_sdk_not_connected": "Formbricks SDK is not yet connected.",
"formbricks_sdk_not_connected_description": "Add the Formbricks SDK to your website or app to connect it with Formbricks",
"how_to_setup": "How to setup",
"how_to_setup_description": "Follow these steps to setup the Formbricks widget within your app.",
"receiving_data": "Receiving data \uD83D\uDC83\uD83D\uDD7A",
"recheck": "Re-check",
"sdk_connection_details": "SDK Connection Details",
"sdk_connection_details_description": "Your unique environment ID and SDK connection URL for integrating Formbricks with your application.",
"setup_alert_description": "Follow this step-by-step tutorial to connect your app or website in under 5 minutes.",
"setup_alert_title": "How to connect",
"webapp_url": "SDK Connection URL"
},
"general": {
"cannot_delete_only_workspace": "This is your only workspace, it cannot be deleted. Create a new workspace first.",
"delete_workspace": "Delete Workspace",
"delete_workspace_confirmation": "Are you sure you want to delete {projectName}? This action cannot be undone.",
"delete_workspace_name_includes_surveys_responses_people_and_more": "Delete {projectName} incl. all surveys, responses, people, actions and attributes.",
"delete_workspace_settings_description": "Delete workspace with all surveys, responses, people, actions and attributes. This cannot be undone.",
"error_saving_workspace_information": "Error saving workspace information",
"only_owners_or_managers_can_delete_workspaces": "Only owners or managers can delete workspaces",
"recontact_waiting_time": "Workspace-wide Waiting Time Between Surveys",
"recontact_waiting_time_settings_description": "Control how frequently users can be surveyed across all app surveys.",
"this_action_cannot_be_undone": "This action cannot be undone.",
"wait_x_days_before_showing_next_survey": "Wait X days before showing next survey:",
"waiting_period_updated_successfully": "Waiting period updated successfully",
"whats_your_workspace_called": "What's your workspace called?",
"workspace_deleted_successfully": "Workspace deleted successfully",
"workspace_name_settings_description": "Change your workspace's name.",
"workspace_name_updated_successfully": "Workspace name updated successfully"
},
"languages": {
"add_language": "Add language",
"alias": "Alias",
"alias_tooltip": "The alias is an alternate name to identify the language in link surveys and the SDK (optional)",
"cannot_remove_language_warning": "You cannot remove this language since its still used in these surveys:",
"conflict_between_identifier_and_alias": "There is a conflict between the identifier of an added language and one for your aliases. Aliases and identifiers cannot be identical.",
"conflict_between_selected_alias_and_another_language": "There is a conflict between the selected alias and another language that has this identifier. Please add the language with this identifier to your workspace instead to avoid inconsistencies.",
"delete_language_confirmation": "Are you sure you want to delete this language? This action cannot be undone.",
"duplicate_language_or_language_id": "Duplicate language or language ID",
"edit_languages": "Edit languages",
"identifier": "Identifier (ISO)",
"incomplete_translations": "Incomplete translations",
"language": "Language",
"language_deleted_successfully": "Language deleted successfully",
"languages_updated_successfully": "Languages updated successfully",
"multi_language_surveys": "Multi-Language Surveys",
"multi_language_surveys_description": "Add languages to create multi-language surveys.",
"no_language_found": "No language found. Add your first language below.",
"please_select_a_language": "Please select a language",
"remove_language": "Remove Language",
"remove_language_from_surveys_to_remove_it_from_workspace": "Please remove the language from these surveys in order to remove it from the workspace.",
"search_items": "Search items",
"translate": "Translate"
},
"look": {
"add_background_color": "Add background color",
"add_background_color_description": "Add a background color to the logo container.",
"app_survey_placement": "App Survey Placement",
"app_survey_placement_settings_description": "Change where surveys will be shown in your web app or website.",
"centered_modal_overlay_color": "Centered modal overlay color",
"email_customization": "Email Customization",
"email_customization_description": "Change the look and feel of emails Formbricks sends out on your behalf.",
"enable_custom_styling": "Enable custom styling",
"enable_custom_styling_description": "Allow users to override this theme in the survey editor.",
"failed_to_remove_logo": "Failed to remove the logo",
"failed_to_update_logo": "Failed to update the logo",
"formbricks_branding": "Formbricks Branding",
"formbricks_branding_hidden": "Formbricks branding is hidden.",
"formbricks_branding_settings_description": "We love your support but understand if you toggle it off.",
"formbricks_branding_shown": "Formbricks branding is shown.",
"logo_removed_successfully": "Logo removed successfully",
"logo_settings_description": "Upload your company logo to brand surveys and link previews.",
"logo_updated_successfully": "Logo updated successfully",
"logo_upload_failed": "Logo upload failed. Please try again.",
"placement_updated_successfully": "Placement updated successfully",
"remove_branding_with_a_higher_plan": "Remove branding with a higher plan",
"remove_logo": "Remove Logo",
"remove_logo_confirmation": "Are you sure you want to remove the logo?",
"replace_logo": "Replace Logo",
"reset_styling": "Reset styling",
"reset_styling_confirmation": "Are you sure you want to reset the styling to default?",
"show_formbricks_branding_in": "Show Formbricks Branding in {type} surveys",
"show_powered_by_formbricks": "Show 'Powered by Formbricks' Signature",
"styling_updated_successfully": "Styling updated successfully",
"theme": "Theme",
"theme_settings_description": "Create a style theme for all surveys. You can enable custom styling for each survey."
},
"tags": {
"add": "Add",
"add_tag": "Add Tag",
"count": "Count",
"delete_tag_confirmation": "Are you sure you want to delete this tag?",
"manage_tags": "Manage Tags",
"manage_tags_description": "Merge and remove response tags.",
"merge": "Merge",
"no_tag_found": "No tag found",
"search_tags": "Search Tags...",
"tag": "Tag",
"tag_already_exists": "Tag already exists",
"tag_deleted": "Tag deleted",
"tag_updated": "Tag updated",
"tags_merged": "Tags merged"
},
"teams": {
"manage_teams": "Manage teams",
"no_teams_found": "No teams found",
"permission": "Permission",
"team_name": "Team Name",
"team_settings_description": "See which teams can access this workspace."
}
},
"xm-templates": {
"ces": "CES",
"ces_description": "Leverage every touchpoint to understand ease of customer interaction.",
@@ -2006,10 +1985,10 @@
},
"organizations": {
"landing": {
"no_workspaces_warning_subtitle": "Reach out to your organization owner to get access to workspaces. Or create an own organization to get started.",
"no_workspaces_warning_title": "Your account doesn't have access to any workspaces yet."
"no_projects_warning_subtitle": "Reach out to your organization owner to get access to projects. Or create an own organization to get started.",
"no_projects_warning_title": "Your account doesn't have access to any projects yet."
},
"workspaces": {
"projects": {
"new": {
"channel": {
"channel_select_subtitle": "Share a link or display your survey in apps or on websites.",
@@ -2030,12 +2009,12 @@
"brand_color": "Brand color",
"brand_color_description": "Match the main color of surveys with your brand.",
"create_new_team": "Create new team",
"team_description": "Who all can access this workspace?",
"workspace_creation_failed": "Workspace creation failed",
"workspace_name": "Product name",
"workspace_name_description": "What is your product called?",
"workspace_settings_subtitle": "When people recognize your brand, they are much more likely to start and complete responses.",
"workspace_settings_title": "Let respondents know it's you"
"project_creation_failed": "Project creation failed",
"project_name": "Product name",
"project_name_description": "What is your product called?",
"project_settings_subtitle": "When people recognize your brand, they are much more likely to start and complete responses.",
"project_settings_title": "Let respondents know it's you",
"team_description": "Who all can access this project?"
}
}
}

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