mirror of
https://github.com/formbricks/formbricks.git
synced 2026-05-06 19:35:53 -05:00
Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cb0fc115fe | |||
| d1b12dc228 | |||
| 9f7d6038b1 | |||
| d22a4bc445 | |||
| 1da92addd2 | |||
| 1e4aa5f54b | |||
| db28141142 | |||
| 96f173c3b1 | |||
| f2eaed585c | |||
| 9c9e55fba6 | |||
| 42541f86fd | |||
| 0ba469a73d | |||
| afa192e5b9 | |||
| 4860a9a5cf | |||
| af02ce9ea6 | |||
| fc1c91896a | |||
| f5c7dbdc71 | |||
| b88ea5cc66 | |||
| f31085a9e7 | |||
| 2ab0441404 | |||
| 299ae81b21 | |||
| f73f13f16c | |||
| e9bcbf6e4c | |||
| 32eda35a71 | |||
| 84999cddfd | |||
| f0a0cf531a | |||
| f3e02fa466 | |||
| f0a93ae092 | |||
| 1c922dfe2c | |||
| 33010fb6f5 | |||
| d5fdacadd7 | |||
| d939263472 | |||
| e4aa66b067 | |||
| ffcc101ed9 | |||
| 2740cd16b9 | |||
| 7eb94f0bd5 | |||
| 6dd2e707fe | |||
| 58d5de7d45 | |||
| 7c3fa8b5ea | |||
| 2601169877 | |||
| aecf85815a | |||
| c6ebaea989 | |||
| 68c1422733 | |||
| b8b4ef5f65 |
@@ -1,2 +0,0 @@
|
|||||||
echo "{\"branchName\": \"$(git rev-parse --abbrev-ref HEAD)\"}" > ./branch.json
|
|
||||||
prettier --write ./branch.json
|
|
||||||
+12
-17
@@ -10,25 +10,20 @@
|
|||||||
"build-storybook": "storybook build",
|
"build-storybook": "storybook build",
|
||||||
"clean": "rimraf .turbo node_modules dist storybook-static"
|
"clean": "rimraf .turbo node_modules dist storybook-static"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
|
||||||
"@formbricks/survey-ui": "workspace:*"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@chromatic-com/storybook": "^5.0.0",
|
"@chromatic-com/storybook": "^5.0.1",
|
||||||
"@storybook/addon-a11y": "10.1.11",
|
"@storybook/addon-a11y": "10.2.15",
|
||||||
"@storybook/addon-links": "10.1.11",
|
"@storybook/addon-links": "10.2.15",
|
||||||
"@storybook/addon-onboarding": "10.1.11",
|
"@storybook/addon-onboarding": "10.2.15",
|
||||||
"@storybook/react-vite": "10.1.11",
|
"@storybook/react-vite": "10.2.15",
|
||||||
"@typescript-eslint/eslint-plugin": "8.53.0",
|
"@typescript-eslint/eslint-plugin": "8.56.1",
|
||||||
"@tailwindcss/vite": "4.1.18",
|
"@tailwindcss/vite": "4.2.1",
|
||||||
"@typescript-eslint/parser": "8.53.0",
|
"@typescript-eslint/parser": "8.56.1",
|
||||||
"@vitejs/plugin-react": "5.1.2",
|
"@vitejs/plugin-react": "5.1.4",
|
||||||
"esbuild": "0.25.12",
|
|
||||||
"eslint-plugin-react-refresh": "0.4.26",
|
"eslint-plugin-react-refresh": "0.4.26",
|
||||||
"eslint-plugin-storybook": "10.1.11",
|
"eslint-plugin-storybook": "10.2.14",
|
||||||
"prop-types": "15.8.1",
|
"storybook": "10.2.15",
|
||||||
"storybook": "10.1.11",
|
|
||||||
"vite": "7.3.1",
|
"vite": "7.3.1",
|
||||||
"@storybook/addon-docs": "10.1.11"
|
"@storybook/addon-docs": "10.2.15"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
const baseConfig = require("../../.prettierrc.js");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
...baseConfig,
|
||||||
|
tailwindConfig: "./tailwind.config.js",
|
||||||
|
};
|
||||||
@@ -101,6 +101,9 @@ RUN chown -R nextjs:nextjs ./apps/web/public && chmod -R 755 ./apps/web/public
|
|||||||
# Create packages/database directory structure with proper ownership for runtime migrations
|
# Create packages/database directory structure with proper ownership for runtime migrations
|
||||||
RUN mkdir -p ./packages/database/migrations && chown -R nextjs:nextjs ./packages/database
|
RUN mkdir -p ./packages/database/migrations && chown -R nextjs:nextjs ./packages/database
|
||||||
|
|
||||||
|
COPY --from=installer /app/packages/database/package.json ./packages/database/package.json
|
||||||
|
RUN chown nextjs:nextjs ./packages/database/package.json && chmod 644 ./packages/database/package.json
|
||||||
|
|
||||||
COPY --from=installer /app/packages/database/schema.prisma ./packages/database/schema.prisma
|
COPY --from=installer /app/packages/database/schema.prisma ./packages/database/schema.prisma
|
||||||
RUN chown nextjs:nextjs ./packages/database/schema.prisma && chmod 644 ./packages/database/schema.prisma
|
RUN chown nextjs:nextjs ./packages/database/schema.prisma && chmod 644 ./packages/database/schema.prisma
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ export const ConnectWithFormbricks = ({
|
|||||||
) : (
|
) : (
|
||||||
<div className="flex animate-pulse flex-col items-center space-y-4">
|
<div className="flex animate-pulse flex-col items-center space-y-4">
|
||||||
<span className="relative flex h-10 w-10">
|
<span className="relative flex h-10 w-10">
|
||||||
<span className="animate-ping-slow absolute inline-flex h-full w-full rounded-full bg-slate-400 opacity-75"></span>
|
<span className="absolute inline-flex h-full w-full animate-ping-slow rounded-full bg-slate-400 opacity-75"></span>
|
||||||
<span className="relative inline-flex h-10 w-10 rounded-full bg-slate-500"></span>
|
<span className="relative inline-flex h-10 w-10 rounded-full bg-slate-500"></span>
|
||||||
</span>
|
</span>
|
||||||
<p className="pt-4 text-sm font-medium text-slate-600">
|
<p className="pt-4 text-sm font-medium text-slate-600">
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ const Page = async (props: ConnectPageProps) => {
|
|||||||
channel={channel}
|
channel={channel}
|
||||||
/>
|
/>
|
||||||
<Button
|
<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"
|
variant="ghost"
|
||||||
asChild>
|
asChild>
|
||||||
<Link href={`/environments/${environment.id}`}>
|
<Link href={`/environments/${environment.id}`}>
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ const Page = async (props: XMTemplatePageProps) => {
|
|||||||
<XMTemplateList project={project} user={user} environmentId={environment.id} />
|
<XMTemplateList project={project} user={user} environmentId={environment.id} />
|
||||||
{projects.length >= 2 && (
|
{projects.length >= 2 && (
|
||||||
<Button
|
<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"
|
variant="ghost"
|
||||||
asChild>
|
asChild>
|
||||||
<Link href={`/environments/${environment.id}/surveys`}>
|
<Link href={`/environments/${environment.id}/surveys`}>
|
||||||
|
|||||||
+1
-1
@@ -42,7 +42,7 @@ export const LandingSidebar = ({ user, organization }: LandingSidebarProps) => {
|
|||||||
return (
|
return (
|
||||||
<aside
|
<aside
|
||||||
className={cn(
|
className={cn(
|
||||||
"w-sidebar-collapsed 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"
|
"z-40 flex w-sidebar-collapsed flex-col justify-between rounded-r-xl border-r border-slate-200 bg-white pt-3 shadow-md transition-all duration-100"
|
||||||
)}>
|
)}>
|
||||||
<Image src={FBLogo} width={160} height={30} alt={t("environments.formbricks_logo")} />
|
<Image src={FBLogo} width={160} height={30} alt={t("environments.formbricks_logo")} />
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -50,7 +50,7 @@ const Page = async (props: ChannelPageProps) => {
|
|||||||
<OnboardingOptionsContainer options={channelOptions} />
|
<OnboardingOptionsContainer options={channelOptions} />
|
||||||
{projects.length >= 1 && (
|
{projects.length >= 1 && (
|
||||||
<Button
|
<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"
|
variant="ghost"
|
||||||
asChild>
|
asChild>
|
||||||
<Link href={"/"}>
|
<Link href={"/"}>
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ const Page = async (props: ModePageProps) => {
|
|||||||
<OnboardingOptionsContainer options={channelOptions} />
|
<OnboardingOptionsContainer options={channelOptions} />
|
||||||
{projects.length >= 1 && (
|
{projects.length >= 1 && (
|
||||||
<Button
|
<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"
|
variant="ghost"
|
||||||
asChild>
|
asChild>
|
||||||
<Link href={"/"}>
|
<Link href={"/"}>
|
||||||
|
|||||||
+11
-13
@@ -228,7 +228,7 @@ export const ProjectSettings = ({
|
|||||||
</FormProvider>
|
</FormProvider>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="relative flex h-[30rem] w-1/2 flex-col items-center justify-center space-y-2 rounded-lg border bg-slate-200 shadow">
|
<div className="relative flex w-1/2 flex-col items-center justify-center space-y-2 rounded-lg border bg-slate-200 p-6 shadow">
|
||||||
{logoUrl && (
|
{logoUrl && (
|
||||||
<Image
|
<Image
|
||||||
src={logoUrl}
|
src={logoUrl}
|
||||||
@@ -239,18 +239,16 @@ export const ProjectSettings = ({
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<p className="text-sm text-slate-400">{t("common.preview")}</p>
|
<p className="text-sm text-slate-400">{t("common.preview")}</p>
|
||||||
<div className="z-0 h-3/4 w-3/4">
|
<SurveyInline
|
||||||
<SurveyInline
|
appUrl={publicDomain}
|
||||||
appUrl={publicDomain}
|
isPreviewMode={true}
|
||||||
isPreviewMode={true}
|
survey={previewSurvey(projectName || t("common.my_product"), t)}
|
||||||
survey={previewSurvey(projectName || "my Product", t)}
|
styling={previewStyling}
|
||||||
styling={previewStyling}
|
isBrandingEnabled={false}
|
||||||
isBrandingEnabled={false}
|
languageCode="default"
|
||||||
languageCode="default"
|
onFileUpload={async (file) => file.name}
|
||||||
onFileUpload={async (file) => file.name}
|
autoFocus={false}
|
||||||
autoFocus={false}
|
/>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<CreateTeamModal
|
<CreateTeamModal
|
||||||
open={createTeamModalOpen}
|
open={createTeamModalOpen}
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ const Page = async (props: ProjectSettingsPageProps) => {
|
|||||||
/>
|
/>
|
||||||
{projects.length >= 1 && (
|
{projects.length >= 1 && (
|
||||||
<Button
|
<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"
|
variant="ghost"
|
||||||
asChild>
|
asChild>
|
||||||
<Link href={"/"}>
|
<Link href={"/"}>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
export const ZOrganizationTeam = z.object({
|
export const ZOrganizationTeam = z.object({
|
||||||
id: z.string().cuid2(),
|
id: z.cuid2(),
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const ZCreateProjectAction = z.object({
|
|||||||
data: ZProjectUpdateInput,
|
data: ZProjectUpdateInput,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const createProjectAction = authenticatedActionClient.schema(ZCreateProjectAction).action(
|
export const createProjectAction = authenticatedActionClient.inputSchema(ZCreateProjectAction).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"created",
|
"created",
|
||||||
"project",
|
"project",
|
||||||
@@ -97,7 +97,7 @@ const ZGetOrganizationsForSwitcherAction = z.object({
|
|||||||
* Called on-demand when user opens the organization switcher.
|
* Called on-demand when user opens the organization switcher.
|
||||||
*/
|
*/
|
||||||
export const getOrganizationsForSwitcherAction = authenticatedActionClient
|
export const getOrganizationsForSwitcherAction = authenticatedActionClient
|
||||||
.schema(ZGetOrganizationsForSwitcherAction)
|
.inputSchema(ZGetOrganizationsForSwitcherAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -122,7 +122,7 @@ const ZGetProjectsForSwitcherAction = z.object({
|
|||||||
* Called on-demand when user opens the project switcher.
|
* Called on-demand when user opens the project switcher.
|
||||||
*/
|
*/
|
||||||
export const getProjectsForSwitcherAction = authenticatedActionClient
|
export const getProjectsForSwitcherAction = authenticatedActionClient
|
||||||
.schema(ZGetProjectsForSwitcherAction)
|
.inputSchema(ZGetProjectsForSwitcherAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {
|
|||||||
RocketIcon,
|
RocketIcon,
|
||||||
UserCircleIcon,
|
UserCircleIcon,
|
||||||
UserIcon,
|
UserIcon,
|
||||||
|
WorkflowIcon,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
@@ -114,6 +115,13 @@ export const MainNavigation = ({
|
|||||||
pathname?.includes("/segments") ||
|
pathname?.includes("/segments") ||
|
||||||
pathname?.includes("/attributes"),
|
pathname?.includes("/attributes"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: t("common.workflows"),
|
||||||
|
href: `/environments/${environment.id}/workflows`,
|
||||||
|
icon: WorkflowIcon,
|
||||||
|
isActive: pathname?.includes("/workflows"),
|
||||||
|
isHidden: !isFormbricksCloud,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: t("common.configuration"),
|
name: t("common.configuration"),
|
||||||
href: `/environments/${environment.id}/workspace/general`,
|
href: `/environments/${environment.id}/workspace/general`,
|
||||||
@@ -121,7 +129,7 @@ export const MainNavigation = ({
|
|||||||
isActive: pathname?.includes("/project"),
|
isActive: pathname?.includes("/project"),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[t, environment.id, pathname]
|
[t, environment.id, pathname, isFormbricksCloud]
|
||||||
);
|
);
|
||||||
|
|
||||||
const dropdownNavigation = [
|
const dropdownNavigation = [
|
||||||
@@ -188,7 +196,7 @@ export const MainNavigation = ({
|
|||||||
size="icon"
|
size="icon"
|
||||||
onClick={toggleSidebar}
|
onClick={toggleSidebar}
|
||||||
className={cn(
|
className={cn(
|
||||||
"rounded-xl bg-slate-50 p-1 text-slate-600 transition-all hover:bg-slate-100 focus:ring-0 focus:ring-transparent focus:outline-none"
|
"rounded-xl bg-slate-50 p-1 text-slate-600 transition-all hover:bg-slate-100 focus:outline-none focus:ring-0 focus:ring-transparent"
|
||||||
)}>
|
)}>
|
||||||
{isCollapsed ? (
|
{isCollapsed ? (
|
||||||
<PanelLeftOpenIcon strokeWidth={1.5} />
|
<PanelLeftOpenIcon strokeWidth={1.5} />
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ export const WidgetStatusIndicator = ({ environment }: WidgetStatusIndicatorProp
|
|||||||
<currentStatus.icon />
|
<currentStatus.icon />
|
||||||
</div>
|
</div>
|
||||||
<p className="text-md font-bold text-slate-800 md:text-xl">{currentStatus.title}</p>
|
<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" && (
|
{status === "notImplemented" && (
|
||||||
<Button variant="outline" size="sm" className="bg-white" onClick={() => router.refresh()}>
|
<Button variant="outline" size="sm" className="bg-white" onClick={() => router.refresh()}>
|
||||||
<RotateCcwIcon />
|
<RotateCcwIcon />
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ const ZUpdateNotificationSettingsAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const updateNotificationSettingsAction = authenticatedActionClient
|
export const updateNotificationSettingsAction = authenticatedActionClient
|
||||||
.schema(ZUpdateNotificationSettingsAction)
|
.inputSchema(ZUpdateNotificationSettingsAction)
|
||||||
.action(
|
.action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"updated",
|
"updated",
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ async function handleEmailUpdate({
|
|||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const updateUserAction = authenticatedActionClient.schema(ZUserPersonalInfoUpdateInput).action(
|
export const updateUserAction = authenticatedActionClient.inputSchema(ZUserPersonalInfoUpdateInput).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"updated",
|
"updated",
|
||||||
"user",
|
"user",
|
||||||
|
|||||||
+49
-36
@@ -9,7 +9,7 @@ import { useTranslation } from "react-i18next";
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { TUser, TUserUpdateInput, ZUser, ZUserEmail } from "@formbricks/types/user";
|
import { TUser, TUserUpdateInput, ZUser, ZUserEmail } from "@formbricks/types/user";
|
||||||
import { PasswordConfirmationModal } from "@/app/(app)/environments/[environmentId]/settings/(account)/profile/components/password-confirmation-modal";
|
import { PasswordConfirmationModal } from "@/app/(app)/environments/[environmentId]/settings/(account)/profile/components/password-confirmation-modal";
|
||||||
import { appLanguages } from "@/lib/i18n/utils";
|
import { appLanguages, sortedAppLanguages } from "@/lib/i18n/utils";
|
||||||
import { getFormattedErrorMessage } from "@/lib/utils/helper";
|
import { getFormattedErrorMessage } from "@/lib/utils/helper";
|
||||||
import { useSignOut } from "@/modules/auth/hooks/use-sign-out";
|
import { useSignOut } from "@/modules/auth/hooks/use-sign-out";
|
||||||
import { Button } from "@/modules/ui/components/button";
|
import { Button } from "@/modules/ui/components/button";
|
||||||
@@ -198,41 +198,54 @@ export const EditProfileDetailsForm = ({
|
|||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name="locale"
|
name="locale"
|
||||||
render={({ field }) => (
|
render={({ field }) => {
|
||||||
<FormItem className="mt-4">
|
const selectedLanguage = appLanguages.find((l) => l.code === field.value);
|
||||||
<FormLabel>{t("common.language")}</FormLabel>
|
|
||||||
<FormControl>
|
return (
|
||||||
<DropdownMenu>
|
<FormItem className="mt-4">
|
||||||
<DropdownMenuTrigger asChild>
|
<FormLabel>{t("common.language")}</FormLabel>
|
||||||
<Button
|
<FormControl>
|
||||||
type="button"
|
<DropdownMenu>
|
||||||
variant="ghost"
|
<DropdownMenuTrigger asChild>
|
||||||
className="h-10 w-full border border-slate-300 px-3 text-left">
|
<Button
|
||||||
<div className="flex w-full items-center justify-between">
|
type="button"
|
||||||
{appLanguages.find((l) => l.code === field.value)?.label["en-US"] ?? "NA"}
|
variant="ghost"
|
||||||
<ChevronDownIcon className="h-4 w-4 text-slate-500" />
|
className="h-10 w-full border border-slate-300 px-3 text-left">
|
||||||
</div>
|
<div className="flex w-full items-center justify-between">
|
||||||
</Button>
|
{selectedLanguage ? (
|
||||||
</DropdownMenuTrigger>
|
<>
|
||||||
<DropdownMenuContent
|
{selectedLanguage.label["en-US"]}
|
||||||
className="min-w-[var(--radix-dropdown-menu-trigger-width)] bg-white text-slate-700"
|
{selectedLanguage.label.native !== selectedLanguage.label["en-US"] &&
|
||||||
align="start">
|
` (${selectedLanguage.label.native})`}
|
||||||
<DropdownMenuRadioGroup value={field.value} onValueChange={field.onChange}>
|
</>
|
||||||
{appLanguages.map((lang) => (
|
) : (
|
||||||
<DropdownMenuRadioItem
|
t("common.select")
|
||||||
key={lang.code}
|
)}
|
||||||
value={lang.code}
|
<ChevronDownIcon className="h-4 w-4 text-slate-500" />
|
||||||
className="min-h-8 cursor-pointer">
|
</div>
|
||||||
{lang.label["en-US"]}
|
</Button>
|
||||||
</DropdownMenuRadioItem>
|
</DropdownMenuTrigger>
|
||||||
))}
|
<DropdownMenuContent
|
||||||
</DropdownMenuRadioGroup>
|
className="min-w-[var(--radix-dropdown-menu-trigger-width)] bg-white text-slate-700"
|
||||||
</DropdownMenuContent>
|
align="start">
|
||||||
</DropdownMenu>
|
<DropdownMenuRadioGroup value={field.value} onValueChange={field.onChange}>
|
||||||
</FormControl>
|
{sortedAppLanguages.map((lang) => (
|
||||||
<FormError />
|
<DropdownMenuRadioItem
|
||||||
</FormItem>
|
key={lang.code}
|
||||||
)}
|
value={lang.code}
|
||||||
|
className="min-h-8 cursor-pointer">
|
||||||
|
{lang.label["en-US"]}
|
||||||
|
{lang.label.native !== lang.label["en-US"] && ` (${lang.label.native})`}
|
||||||
|
</DropdownMenuRadioItem>
|
||||||
|
))}
|
||||||
|
</DropdownMenuRadioGroup>
|
||||||
|
</DropdownMenuContent>
|
||||||
|
</DropdownMenu>
|
||||||
|
</FormControl>
|
||||||
|
<FormError />
|
||||||
|
</FormItem>
|
||||||
|
);
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{isPasswordResetEnabled && (
|
{isPasswordResetEnabled && (
|
||||||
|
|||||||
+1
-1
@@ -98,7 +98,7 @@ export const PasswordConfirmationModal = ({
|
|||||||
aria-label="password"
|
aria-label="password"
|
||||||
aria-required="true"
|
aria-required="true"
|
||||||
required
|
required
|
||||||
className="focus:border-brand-dark focus:ring-brand-dark block w-full rounded-md border-slate-300 shadow-sm sm:text-sm"
|
className="block w-full rounded-md border-slate-300 shadow-sm focus:border-brand-dark focus:ring-brand-dark sm:text-sm"
|
||||||
value={field.value}
|
value={field.value}
|
||||||
onChange={(password) => field.onChange(password)}
|
onChange={(password) => field.onChange(password)}
|
||||||
/>
|
/>
|
||||||
|
|||||||
+33
-25
@@ -17,7 +17,7 @@ const ZUpdateOrganizationNameAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const updateOrganizationNameAction = authenticatedActionClient
|
export const updateOrganizationNameAction = authenticatedActionClient
|
||||||
.schema(ZUpdateOrganizationNameAction)
|
.inputSchema(ZUpdateOrganizationNameAction)
|
||||||
.action(
|
.action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"updated",
|
"updated",
|
||||||
@@ -55,28 +55,36 @@ const ZDeleteOrganizationAction = z.object({
|
|||||||
organizationId: ZId,
|
organizationId: ZId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const deleteOrganizationAction = authenticatedActionClient.schema(ZDeleteOrganizationAction).action(
|
export const deleteOrganizationAction = authenticatedActionClient
|
||||||
withAuditLogging(
|
.inputSchema(ZDeleteOrganizationAction)
|
||||||
"deleted",
|
.action(
|
||||||
"organization",
|
withAuditLogging(
|
||||||
async ({ ctx, parsedInput }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
"deleted",
|
||||||
const isMultiOrgEnabled = await getIsMultiOrgEnabled();
|
"organization",
|
||||||
if (!isMultiOrgEnabled) throw new OperationNotAllowedError("Organization deletion disabled");
|
async ({
|
||||||
|
ctx,
|
||||||
|
parsedInput,
|
||||||
|
}: {
|
||||||
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: Record<string, any>;
|
||||||
|
}) => {
|
||||||
|
const isMultiOrgEnabled = await getIsMultiOrgEnabled();
|
||||||
|
if (!isMultiOrgEnabled) throw new OperationNotAllowedError("Organization deletion disabled");
|
||||||
|
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
organizationId: parsedInput.organizationId,
|
organizationId: parsedInput.organizationId,
|
||||||
access: [
|
access: [
|
||||||
{
|
{
|
||||||
type: "organization",
|
type: "organization",
|
||||||
roles: ["owner"],
|
roles: ["owner"],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
ctx.auditLoggingCtx.organizationId = parsedInput.organizationId;
|
ctx.auditLoggingCtx.organizationId = parsedInput.organizationId;
|
||||||
const oldObject = await getOrganization(parsedInput.organizationId);
|
const oldObject = await getOrganization(parsedInput.organizationId);
|
||||||
ctx.auditLoggingCtx.oldObject = oldObject;
|
ctx.auditLoggingCtx.oldObject = oldObject;
|
||||||
return await deleteOrganization(parsedInput.organizationId);
|
return await deleteOrganization(parsedInput.organizationId);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
+5
-1
@@ -9,6 +9,7 @@ import { Alert, AlertDescription } from "@/modules/ui/components/alert";
|
|||||||
import { IdBadge } from "@/modules/ui/components/id-badge";
|
import { IdBadge } from "@/modules/ui/components/id-badge";
|
||||||
import { PageContentWrapper } from "@/modules/ui/components/page-content-wrapper";
|
import { PageContentWrapper } from "@/modules/ui/components/page-content-wrapper";
|
||||||
import { PageHeader } from "@/modules/ui/components/page-header";
|
import { PageHeader } from "@/modules/ui/components/page-header";
|
||||||
|
import packageJson from "@/package.json";
|
||||||
import { SettingsCard } from "../../components/SettingsCard";
|
import { SettingsCard } from "../../components/SettingsCard";
|
||||||
import { DeleteOrganization } from "./components/DeleteOrganization";
|
import { DeleteOrganization } from "./components/DeleteOrganization";
|
||||||
import { EditOrganizationNameForm } from "./components/EditOrganizationNameForm";
|
import { EditOrganizationNameForm } from "./components/EditOrganizationNameForm";
|
||||||
@@ -81,7 +82,10 @@ const Page = async (props: { params: Promise<{ environmentId: string }> }) => {
|
|||||||
</SettingsCard>
|
</SettingsCard>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<IdBadge id={organization.id} label={t("common.organization_id")} variant="column" />
|
<div className="space-y-2">
|
||||||
|
<IdBadge id={organization.id} label={t("common.organization_id")} variant="column" />
|
||||||
|
<IdBadge id={packageJson.version} label={t("common.formbricks_version")} variant="column" />
|
||||||
|
</div>
|
||||||
</PageContentWrapper>
|
</PageContentWrapper>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
+6
-6
@@ -23,7 +23,7 @@ const ZGetResponsesAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getResponsesAction = authenticatedActionClient
|
export const getResponsesAction = authenticatedActionClient
|
||||||
.schema(ZGetResponsesAction)
|
.inputSchema(ZGetResponsesAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -57,7 +57,7 @@ const ZGetSurveySummaryAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getSurveySummaryAction = authenticatedActionClient
|
export const getSurveySummaryAction = authenticatedActionClient
|
||||||
.schema(ZGetSurveySummaryAction)
|
.inputSchema(ZGetSurveySummaryAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -85,7 +85,7 @@ const ZGetResponseCountAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getResponseCountAction = authenticatedActionClient
|
export const getResponseCountAction = authenticatedActionClient
|
||||||
.schema(ZGetResponseCountAction)
|
.inputSchema(ZGetResponseCountAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -110,12 +110,12 @@ export const getResponseCountAction = authenticatedActionClient
|
|||||||
|
|
||||||
const ZGetDisplaysWithContactAction = z.object({
|
const ZGetDisplaysWithContactAction = z.object({
|
||||||
surveyId: ZId,
|
surveyId: ZId,
|
||||||
limit: z.number().int().min(1).max(100),
|
limit: z.int().min(1).max(100),
|
||||||
offset: z.number().int().nonnegative(),
|
offset: z.int().nonnegative(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const getDisplaysWithContactAction = authenticatedActionClient
|
export const getDisplaysWithContactAction = authenticatedActionClient
|
||||||
.schema(ZGetDisplaysWithContactAction)
|
.inputSchema(ZGetDisplaysWithContactAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
+3
-1
@@ -3,6 +3,7 @@ import { getServerSession } from "next-auth";
|
|||||||
import { ResponseFilterProvider } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/response-filter-context";
|
import { ResponseFilterProvider } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/components/response-filter-context";
|
||||||
import { getResponseCountBySurveyId } from "@/lib/response/service";
|
import { getResponseCountBySurveyId } from "@/lib/response/service";
|
||||||
import { getSurvey } from "@/lib/survey/service";
|
import { getSurvey } from "@/lib/survey/service";
|
||||||
|
import { getTranslate } from "@/lingodotdev/server";
|
||||||
import { authOptions } from "@/modules/auth/lib/authOptions";
|
import { authOptions } from "@/modules/auth/lib/authOptions";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -14,10 +15,11 @@ export const generateMetadata = async (props: Props): Promise<Metadata> => {
|
|||||||
const session = await getServerSession(authOptions);
|
const session = await getServerSession(authOptions);
|
||||||
const survey = await getSurvey(params.surveyId);
|
const survey = await getSurvey(params.surveyId);
|
||||||
const responseCount = await getResponseCountBySurveyId(params.surveyId);
|
const responseCount = await getResponseCountBySurveyId(params.surveyId);
|
||||||
|
const t = await getTranslate();
|
||||||
|
|
||||||
if (session) {
|
if (session) {
|
||||||
return {
|
return {
|
||||||
title: `${responseCount} Responses | ${survey?.name} Results`,
|
title: `${t("common.count_responses", { count: responseCount })} | ${t("environments.surveys.summary.survey_results", { surveyName: survey?.name })}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
|
|||||||
+5
-5
@@ -22,7 +22,7 @@ const ZSendEmbedSurveyPreviewEmailAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const sendEmbedSurveyPreviewEmailAction = authenticatedActionClient
|
export const sendEmbedSurveyPreviewEmailAction = authenticatedActionClient
|
||||||
.schema(ZSendEmbedSurveyPreviewEmailAction)
|
.inputSchema(ZSendEmbedSurveyPreviewEmailAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
const organizationId = await getOrganizationIdFromSurveyId(parsedInput.surveyId);
|
const organizationId = await getOrganizationIdFromSurveyId(parsedInput.surveyId);
|
||||||
const organizationLogoUrl = await getOrganizationLogoUrl(organizationId);
|
const organizationLogoUrl = await getOrganizationLogoUrl(organizationId);
|
||||||
@@ -69,7 +69,7 @@ const ZResetSurveyAction = z.object({
|
|||||||
projectId: ZId,
|
projectId: ZId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const resetSurveyAction = authenticatedActionClient.schema(ZResetSurveyAction).action(
|
export const resetSurveyAction = authenticatedActionClient.inputSchema(ZResetSurveyAction).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"updated",
|
"updated",
|
||||||
"survey",
|
"survey",
|
||||||
@@ -123,7 +123,7 @@ const ZGetEmailHtmlAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getEmailHtmlAction = authenticatedActionClient
|
export const getEmailHtmlAction = authenticatedActionClient
|
||||||
.schema(ZGetEmailHtmlAction)
|
.inputSchema(ZGetEmailHtmlAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -152,7 +152,7 @@ const ZGeneratePersonalLinksAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const generatePersonalLinksAction = authenticatedActionClient
|
export const generatePersonalLinksAction = authenticatedActionClient
|
||||||
.schema(ZGeneratePersonalLinksAction)
|
.inputSchema(ZGeneratePersonalLinksAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
const isContactsEnabled = await getIsContactsEnabled();
|
const isContactsEnabled = await getIsContactsEnabled();
|
||||||
if (!isContactsEnabled) {
|
if (!isContactsEnabled) {
|
||||||
@@ -231,7 +231,7 @@ const ZUpdateSingleUseLinksAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const updateSingleUseLinksAction = authenticatedActionClient
|
export const updateSingleUseLinksAction = authenticatedActionClient
|
||||||
.schema(ZUpdateSingleUseLinksAction)
|
.inputSchema(ZUpdateSingleUseLinksAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
+2
-4
@@ -30,8 +30,7 @@ export const CalSummary = ({ elementSummary, survey }: CalSummaryProps) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{elementSummary.booked.count}{" "}
|
{t("common.count_responses", { count: elementSummary.booked.count })}
|
||||||
{elementSummary.booked.count === 1 ? t("common.response") : t("common.responses")}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<ProgressBar barColor="bg-brand-dark" progress={elementSummary.booked.percentage / 100} />
|
<ProgressBar barColor="bg-brand-dark" progress={elementSummary.booked.percentage / 100} />
|
||||||
@@ -47,8 +46,7 @@ export const CalSummary = ({ elementSummary, survey }: CalSummaryProps) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{elementSummary.skipped.count}{" "}
|
{t("common.count_responses", { count: elementSummary.skipped.count })}
|
||||||
{elementSummary.skipped.count === 1 ? t("common.response") : t("common.responses")}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<ProgressBar barColor="bg-brand-dark" progress={elementSummary.skipped.percentage / 100} />
|
<ProgressBar barColor="bg-brand-dark" progress={elementSummary.skipped.percentage / 100} />
|
||||||
|
|||||||
+1
-1
@@ -64,7 +64,7 @@ export const ConsentSummary = ({ elementSummary, survey, setFilter }: ConsentSum
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{summaryItem.count} {summaryItem.count === 1 ? t("common.response") : t("common.responses")}
|
{t("common.count_responses", { count: summaryItem.count })}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="group-hover:opacity-80">
|
<div className="group-hover:opacity-80">
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ export const ElementSummaryHeader = ({
|
|||||||
{showResponses && (
|
{showResponses && (
|
||||||
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
||||||
<InboxIcon className="mr-2 h-4 w-4" />
|
<InboxIcon className="mr-2 h-4 w-4" />
|
||||||
{`${elementSummary.responseCount} ${t("common.responses")}`}
|
{t("common.count_responses", { count: elementSummary.responseCount })}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{additionalInfo}
|
{additionalInfo}
|
||||||
|
|||||||
+1
-2
@@ -41,8 +41,7 @@ export const HiddenFieldsSummary = ({ environment, elementSummary, locale }: Hid
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
||||||
<InboxIcon className="mr-2 h-4 w-4" />
|
<InboxIcon className="mr-2 h-4 w-4" />
|
||||||
{elementSummary.responseCount}{" "}
|
{t("common.count_responses", { count: elementSummary.responseCount })}
|
||||||
{elementSummary.responseCount === 1 ? t("common.response") : t("common.responses")}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+2
-2
@@ -31,7 +31,7 @@ export const MatrixElementSummary = ({ elementSummary, survey, setFilter }: Matr
|
|||||||
if (label) {
|
if (label) {
|
||||||
return label;
|
return label;
|
||||||
} else if (percentage !== undefined && totalResponsesForRow !== undefined) {
|
} else if (percentage !== undefined && totalResponsesForRow !== undefined) {
|
||||||
return `${Math.round((percentage / 100) * totalResponsesForRow)} ${t("common.responses")}`;
|
return t("common.count_responses", { count: Math.round((percentage / 100) * totalResponsesForRow) });
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
};
|
};
|
||||||
@@ -77,7 +77,7 @@ export const MatrixElementSummary = ({ elementSummary, survey, setFilter }: Matr
|
|||||||
)}>
|
)}>
|
||||||
<button
|
<button
|
||||||
style={{ backgroundColor: `rgba(0,196,184,${getOpacityLevel(percentage)})` }}
|
style={{ backgroundColor: `rgba(0,196,184,${getOpacityLevel(percentage)})` }}
|
||||||
className="hover:outline-brand-dark m-1 flex h-full w-40 cursor-pointer items-center justify-center rounded p-4 text-sm text-slate-950 hover:outline"
|
className="m-1 flex h-full w-40 cursor-pointer items-center justify-center rounded p-4 text-sm text-slate-950 hover:outline hover:outline-brand-dark"
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
setFilter(
|
setFilter(
|
||||||
elementSummary.element.id,
|
elementSummary.element.id,
|
||||||
|
|||||||
+2
-2
@@ -75,7 +75,7 @@ export const MultipleChoiceSummary = ({
|
|||||||
elementSummary.type === "multipleChoiceMulti" ? (
|
elementSummary.type === "multipleChoiceMulti" ? (
|
||||||
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
||||||
<InboxIcon className="mr-2 h-4 w-4" />
|
<InboxIcon className="mr-2 h-4 w-4" />
|
||||||
{`${elementSummary.selectionCount} ${t("common.selections")}`}
|
{t("common.count_selections", { count: elementSummary.selectionCount })}
|
||||||
</div>
|
</div>
|
||||||
) : undefined
|
) : undefined
|
||||||
}
|
}
|
||||||
@@ -110,7 +110,7 @@ export const MultipleChoiceSummary = ({
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex w-full space-x-2">
|
<div className="flex w-full space-x-2">
|
||||||
<p className="flex w-full pt-1 text-slate-600 sm:items-end sm:justify-end sm:pt-0">
|
<p className="flex w-full pt-1 text-slate-600 sm:items-end sm:justify-end sm:pt-0">
|
||||||
{result.count} {result.count === 1 ? t("common.selection") : t("common.selections")}
|
{t("common.count_selections", { count: result.count })}
|
||||||
</p>
|
</p>
|
||||||
<p className="rounded-lg bg-slate-100 px-2 text-slate-700">
|
<p className="rounded-lg bg-slate-100 px-2 text-slate-700">
|
||||||
{convertFloatToNDecimal(result.percentage, 2)}%
|
{convertFloatToNDecimal(result.percentage, 2)}%
|
||||||
|
|||||||
+2
-3
@@ -123,8 +123,7 @@ export const NPSSummary = ({ elementSummary, survey, setFilter }: NPSSummaryProp
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{elementSummary[group]?.count}{" "}
|
{t("common.count_responses", { count: elementSummary[group]?.count })}
|
||||||
{elementSummary[group]?.count === 1 ? t("common.response") : t("common.responses")}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
@@ -158,7 +157,7 @@ export const NPSSummary = ({ elementSummary, survey, setFilter }: NPSSummaryProp
|
|||||||
}>
|
}>
|
||||||
<div className="flex h-32 w-full flex-col items-center justify-end">
|
<div className="flex h-32 w-full flex-col items-center justify-end">
|
||||||
<div
|
<div
|
||||||
className="bg-brand-dark w-full rounded-t-lg border border-slate-200 transition-all group-hover:brightness-110"
|
className="w-full rounded-t-lg border border-slate-200 bg-brand-dark transition-all group-hover:brightness-110"
|
||||||
style={{
|
style={{
|
||||||
height: `${Math.max(choice.percentage, 2)}%`,
|
height: `${Math.max(choice.percentage, 2)}%`,
|
||||||
opacity,
|
opacity,
|
||||||
|
|||||||
+2
-2
@@ -37,7 +37,7 @@ export const PictureChoiceSummary = ({ elementSummary, survey, setFilter }: Pict
|
|||||||
elementSummary.element.allowMulti ? (
|
elementSummary.element.allowMulti ? (
|
||||||
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
<div className="flex items-center rounded-lg bg-slate-100 p-2">
|
||||||
<InboxIcon className="mr-2 h-4 w-4" />
|
<InboxIcon className="mr-2 h-4 w-4" />
|
||||||
{`${elementSummary.selectionCount} ${t("common.selections")}`}
|
{t("common.count_selections", { count: elementSummary.selectionCount })}
|
||||||
</div>
|
</div>
|
||||||
) : undefined
|
) : undefined
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ export const PictureChoiceSummary = ({ elementSummary, survey, setFilter }: Pict
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex w-full space-x-2">
|
<div className="flex w-full space-x-2">
|
||||||
<p className="flex w-full pt-1 text-slate-600 sm:items-end sm:justify-end sm:pt-0">
|
<p className="flex w-full pt-1 text-slate-600 sm:items-end sm:justify-end sm:pt-0">
|
||||||
{result.count} {result.count === 1 ? t("common.selection") : t("common.selections")}
|
{t("common.count_selections", { count: result.count })}
|
||||||
</p>
|
</p>
|
||||||
<p className="self-end rounded-lg bg-slate-100 px-2 text-slate-700">
|
<p className="self-end rounded-lg bg-slate-100 px-2 text-slate-700">
|
||||||
{convertFloatToNDecimal(result.percentage, 2)}%
|
{convertFloatToNDecimal(result.percentage, 2)}%
|
||||||
|
|||||||
+3
-4
@@ -116,7 +116,7 @@ export const RatingSummary = ({ elementSummary, survey, setFilter }: RatingSumma
|
|||||||
)
|
)
|
||||||
}>
|
}>
|
||||||
<div
|
<div
|
||||||
className={`bg-brand-dark h-full ${isFirst ? "rounded-tl-lg" : ""} ${isLast ? "rounded-tr-lg" : ""}`}
|
className={`h-full bg-brand-dark ${isFirst ? "rounded-tl-lg" : ""} ${isLast ? "rounded-tr-lg" : ""}`}
|
||||||
style={{ opacity }}
|
style={{ opacity }}
|
||||||
/>
|
/>
|
||||||
</ClickableBarSegment>
|
</ClickableBarSegment>
|
||||||
@@ -198,7 +198,7 @@ export const RatingSummary = ({ elementSummary, survey, setFilter }: RatingSumma
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{result.count} {result.count === 1 ? t("common.response") : t("common.responses")}
|
{t("common.count_responses", { count: result.count })}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<ProgressBar barColor="bg-brand-dark" progress={result.percentage / 100} />
|
<ProgressBar barColor="bg-brand-dark" progress={result.percentage / 100} />
|
||||||
@@ -215,8 +215,7 @@ export const RatingSummary = ({ elementSummary, survey, setFilter }: RatingSumma
|
|||||||
<div className="text flex justify-between px-2">
|
<div className="text flex justify-between px-2">
|
||||||
<p className="font-semibold text-slate-700">{t("common.dismissed")}</p>
|
<p className="font-semibold text-slate-700">{t("common.dismissed")}</p>
|
||||||
<p className="flex w-32 items-end justify-end text-slate-600">
|
<p className="flex w-32 items-end justify-end text-slate-600">
|
||||||
{elementSummary.dismissed.count}{" "}
|
{t("common.count_responses", { count: elementSummary.dismissed.count })}
|
||||||
{elementSummary.dismissed.count === 1 ? t("common.response") : t("common.responses")}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+2
-2
@@ -105,7 +105,7 @@ export const CustomHtmlTab = ({ projectCustomScripts, isReadOnly }: CustomHtmlTa
|
|||||||
<div className={scriptsMode === "replace" ? "opacity-50" : ""}>
|
<div className={scriptsMode === "replace" ? "opacity-50" : ""}>
|
||||||
<FormLabel>{t("environments.surveys.share.custom_html.workspace_scripts_label")}</FormLabel>
|
<FormLabel>{t("environments.surveys.share.custom_html.workspace_scripts_label")}</FormLabel>
|
||||||
<div className="mt-2 max-h-32 overflow-auto rounded-md border border-slate-200 bg-slate-50 p-3">
|
<div className="mt-2 max-h-32 overflow-auto rounded-md border border-slate-200 bg-slate-50 p-3">
|
||||||
<pre className="font-mono text-xs whitespace-pre-wrap text-slate-600">
|
<pre className="whitespace-pre-wrap font-mono text-xs text-slate-600">
|
||||||
{projectCustomScripts}
|
{projectCustomScripts}
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -135,7 +135,7 @@ export const CustomHtmlTab = ({ projectCustomScripts, isReadOnly }: CustomHtmlTa
|
|||||||
rows={8}
|
rows={8}
|
||||||
placeholder={t("environments.surveys.share.custom_html.placeholder")}
|
placeholder={t("environments.surveys.share.custom_html.placeholder")}
|
||||||
className={cn(
|
className={cn(
|
||||||
"focus:border-brand-dark flex w-full rounded-md border border-slate-300 bg-white px-3 py-2 font-mono text-xs text-slate-800 placeholder:text-slate-400 focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50"
|
"flex w-full rounded-md border border-slate-300 bg-white px-3 py-2 font-mono text-xs text-slate-800 placeholder:text-slate-400 focus:border-brand-dark focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
)}
|
)}
|
||||||
{...field}
|
{...field}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
|
|||||||
+1
-1
@@ -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">
|
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" />
|
<UserIcon className="h-8 w-8 stroke-1 text-slate-900" />
|
||||||
{t("environments.surveys.summary.use_personal_links")}
|
{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>
|
</button>
|
||||||
<Link
|
<Link
|
||||||
href={`/environments/${environmentId}/settings/notifications`}
|
href={`/environments/${environmentId}/settings/notifications`}
|
||||||
|
|||||||
+1
-1
@@ -1095,7 +1095,7 @@ export const getResponsesForSummary = reactCache(
|
|||||||
[limit, ZOptionalNumber],
|
[limit, ZOptionalNumber],
|
||||||
[offset, ZOptionalNumber],
|
[offset, ZOptionalNumber],
|
||||||
[filterCriteria, ZResponseFilterCriteria.optional()],
|
[filterCriteria, ZResponseFilterCriteria.optional()],
|
||||||
[cursor, z.string().cuid2().optional()]
|
[cursor, z.cuid2().optional()]
|
||||||
);
|
);
|
||||||
|
|
||||||
const queryLimit = limit ?? RESPONSES_PER_PAGE;
|
const queryLimit = limit ?? RESPONSES_PER_PAGE;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const ZGetResponsesDownloadUrlAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getResponsesDownloadUrlAction = authenticatedActionClient
|
export const getResponsesDownloadUrlAction = authenticatedActionClient
|
||||||
.schema(ZGetResponsesDownloadUrlAction)
|
.inputSchema(ZGetResponsesDownloadUrlAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -58,7 +58,7 @@ const ZGetSurveyFilterDataAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getSurveyFilterDataAction = authenticatedActionClient
|
export const getSurveyFilterDataAction = authenticatedActionClient
|
||||||
.schema(ZGetSurveyFilterDataAction)
|
.inputSchema(ZGetSurveyFilterDataAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
const survey = await getSurvey(parsedInput.surveyId);
|
const survey = await getSurvey(parsedInput.surveyId);
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ const checkSurveyFollowUpsPermission = async (organizationId: string): Promise<v
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateSurveyAction = authenticatedActionClient.schema(ZSurvey).action(
|
export const updateSurveyAction = authenticatedActionClient.inputSchema(ZSurvey).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"updated",
|
"updated",
|
||||||
"survey",
|
"survey",
|
||||||
|
|||||||
+1
-1
@@ -192,7 +192,7 @@ export const ElementsComboBox = ({ options, selected, onChangeValue }: ElementCo
|
|||||||
value={inputValue}
|
value={inputValue}
|
||||||
onValueChange={setInputValue}
|
onValueChange={setInputValue}
|
||||||
placeholder={open ? `${t("common.search")}...` : t("common.select_filter")}
|
placeholder={open ? `${t("common.search")}...` : t("common.select_filter")}
|
||||||
className="max-w-full grow border-none p-0 pl-2 text-sm shadow-none ring-offset-transparent outline-none focus:border-none focus:shadow-none focus:ring-offset-0 focus:outline-none"
|
className="max-w-full grow border-none p-0 pl-2 text-sm shadow-none outline-none ring-offset-transparent focus:border-none focus:shadow-none focus:outline-none focus:ring-offset-0"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
+208
@@ -0,0 +1,208 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { CheckCircle2, Sparkles } from "lucide-react";
|
||||||
|
import { useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { Button } from "@/modules/ui/components/button";
|
||||||
|
|
||||||
|
const FORMBRICKS_HOST = "https://app.formbricks.com";
|
||||||
|
const SURVEY_ID = "cr9r4b2r73x6hlmn5aa2ha44";
|
||||||
|
const ENVIRONMENT_ID = "cmk41i8bi92bdad01svi74dec";
|
||||||
|
|
||||||
|
interface WorkflowsPageProps {
|
||||||
|
userEmail: string;
|
||||||
|
organizationName: string;
|
||||||
|
billingPlan: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
type Step = "prompt" | "followup" | "thankyou";
|
||||||
|
|
||||||
|
export const WorkflowsPage = ({ userEmail, organizationName, billingPlan }: WorkflowsPageProps) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const [step, setStep] = useState<Step>("prompt");
|
||||||
|
const [promptValue, setPromptValue] = useState("");
|
||||||
|
const [detailsValue, setDetailsValue] = useState("");
|
||||||
|
const [responseId, setResponseId] = useState<string | null>(null);
|
||||||
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||||
|
|
||||||
|
const handleGenerateWorkflow = async () => {
|
||||||
|
if (promptValue.trim().length < 100 || isSubmitting) return;
|
||||||
|
setIsSubmitting(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await fetch(`${FORMBRICKS_HOST}/api/v2/client/${ENVIRONMENT_ID}/responses`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({
|
||||||
|
surveyId: SURVEY_ID,
|
||||||
|
finished: false,
|
||||||
|
data: {
|
||||||
|
workflow: promptValue.trim(),
|
||||||
|
useremail: userEmail,
|
||||||
|
orgname: organizationName,
|
||||||
|
billingplan: billingPlan,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.ok) {
|
||||||
|
const json = await res.json();
|
||||||
|
setResponseId(json.data?.id ?? null);
|
||||||
|
}
|
||||||
|
|
||||||
|
setStep("followup");
|
||||||
|
} catch {
|
||||||
|
setStep("followup");
|
||||||
|
} finally {
|
||||||
|
setIsSubmitting(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmitFeedback = async () => {
|
||||||
|
if (isSubmitting) return;
|
||||||
|
setIsSubmitting(true);
|
||||||
|
|
||||||
|
if (responseId) {
|
||||||
|
try {
|
||||||
|
await fetch(`${FORMBRICKS_HOST}/api/v1/client/${ENVIRONMENT_ID}/responses/${responseId}`, {
|
||||||
|
method: "PUT",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({
|
||||||
|
finished: true,
|
||||||
|
data: {
|
||||||
|
details: detailsValue.trim(),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} catch {
|
||||||
|
// silently fail
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setIsSubmitting(false);
|
||||||
|
setStep("thankyou");
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSkipFeedback = async () => {
|
||||||
|
if (!responseId) {
|
||||||
|
setStep("thankyou");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fetch(`${FORMBRICKS_HOST}/api/v1/client/${ENVIRONMENT_ID}/responses/${responseId}`, {
|
||||||
|
method: "PUT",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify({
|
||||||
|
finished: true,
|
||||||
|
data: {},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} catch {
|
||||||
|
// silently fail
|
||||||
|
}
|
||||||
|
|
||||||
|
setStep("thankyou");
|
||||||
|
};
|
||||||
|
|
||||||
|
if (step === "prompt") {
|
||||||
|
return (
|
||||||
|
<div className="flex h-full flex-col items-center px-4 pt-[15vh]">
|
||||||
|
<div className="w-full max-w-2xl space-y-8">
|
||||||
|
<div className="space-y-3 text-center">
|
||||||
|
<div className="from-brand-light to-brand-dark mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-xl bg-gradient-to-br shadow-md">
|
||||||
|
<Sparkles className="h-6 w-6 text-white" />
|
||||||
|
</div>
|
||||||
|
<h1 className="text-4xl font-bold tracking-tight text-slate-800">{t("workflows.heading")}</h1>
|
||||||
|
<p className="text-lg text-slate-500">{t("workflows.subheading")}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="relative">
|
||||||
|
<textarea
|
||||||
|
value={promptValue}
|
||||||
|
onChange={(e) => setPromptValue(e.target.value)}
|
||||||
|
placeholder={t("workflows.placeholder")}
|
||||||
|
rows={5}
|
||||||
|
className="focus:border-brand-dark focus:ring-brand-light/20 w-full resize-none rounded-xl border border-slate-200 bg-white px-5 py-4 text-base text-slate-800 shadow-sm transition-all placeholder:text-slate-400 focus:outline-none focus:ring-2"
|
||||||
|
onKeyDown={(e) => {
|
||||||
|
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
||||||
|
handleGenerateWorkflow();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div className="mt-3 flex items-center justify-between">
|
||||||
|
<span
|
||||||
|
className={`text-xs ${promptValue.trim().length >= 100 ? "text-slate-400" : "text-amber-500"}`}>
|
||||||
|
{promptValue.trim().length} / 100
|
||||||
|
</span>
|
||||||
|
<Button
|
||||||
|
onClick={handleGenerateWorkflow}
|
||||||
|
disabled={promptValue.trim().length < 100 || isSubmitting}
|
||||||
|
loading={isSubmitting}
|
||||||
|
size="lg">
|
||||||
|
<Sparkles className="h-4 w-4" />
|
||||||
|
{t("workflows.generate_button")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (step === "followup") {
|
||||||
|
return (
|
||||||
|
<div className="flex h-full flex-col items-center px-4 pt-[15vh]">
|
||||||
|
<div className="w-full max-w-2xl space-y-8">
|
||||||
|
<div className="space-y-3 text-center">
|
||||||
|
<div className="mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-xl bg-slate-100">
|
||||||
|
<Sparkles className="text-brand-dark h-6 w-6" />
|
||||||
|
</div>
|
||||||
|
<h1 className="text-3xl font-bold tracking-tight text-slate-800">
|
||||||
|
{t("workflows.coming_soon_title")}
|
||||||
|
</h1>
|
||||||
|
<p className="mx-auto max-w-md text-base text-slate-500">
|
||||||
|
{t("workflows.coming_soon_description")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="rounded-xl border border-slate-200 bg-white p-6 shadow-sm">
|
||||||
|
<label className="text-md mb-2 block font-medium text-slate-700">
|
||||||
|
{t("workflows.follow_up_label")}
|
||||||
|
</label>
|
||||||
|
<textarea
|
||||||
|
value={detailsValue}
|
||||||
|
onChange={(e) => setDetailsValue(e.target.value)}
|
||||||
|
placeholder={t("workflows.follow_up_placeholder")}
|
||||||
|
rows={4}
|
||||||
|
className="focus:border-brand-dark focus:ring-brand-light/20 w-full resize-none rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-800 transition-all placeholder:text-slate-400 focus:bg-white focus:outline-none focus:ring-2"
|
||||||
|
/>
|
||||||
|
<div className="mt-4 flex items-center justify-end gap-3">
|
||||||
|
<Button variant="ghost" onClick={handleSkipFeedback} className="text-slate-500">
|
||||||
|
{t("common.skip")}
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
onClick={handleSubmitFeedback}
|
||||||
|
disabled={!detailsValue.trim() || isSubmitting}
|
||||||
|
loading={isSubmitting}>
|
||||||
|
{t("workflows.submit_button")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex h-full flex-col items-center px-4 pt-[15vh]">
|
||||||
|
<div className="w-full max-w-md space-y-6 text-center">
|
||||||
|
<div className="mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-green-50">
|
||||||
|
<CheckCircle2 className="h-8 w-8 text-green-500" />
|
||||||
|
</div>
|
||||||
|
<h1 className="text-2xl font-bold text-slate-800">{t("workflows.thank_you_title")}</h1>
|
||||||
|
<p className="text-base text-slate-500">{t("workflows.thank_you_description")}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
import { Metadata } from "next";
|
||||||
|
import { notFound, redirect } from "next/navigation";
|
||||||
|
import { IS_FORMBRICKS_CLOUD } from "@/lib/constants";
|
||||||
|
import { getUser } from "@/lib/user/service";
|
||||||
|
import { getEnvironmentAuth } from "@/modules/environments/lib/utils";
|
||||||
|
import { WorkflowsPage } from "./components/workflows-page";
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Workflows",
|
||||||
|
};
|
||||||
|
|
||||||
|
const Page = async (props: { params: Promise<{ environmentId: string }> }) => {
|
||||||
|
const params = await props.params;
|
||||||
|
|
||||||
|
if (!IS_FORMBRICKS_CLOUD) {
|
||||||
|
return notFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
const { session, organization, isBilling } = await getEnvironmentAuth(params.environmentId);
|
||||||
|
|
||||||
|
if (isBilling) {
|
||||||
|
return redirect(`/environments/${params.environmentId}/settings/billing`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = await getUser(session.user.id);
|
||||||
|
if (!user) {
|
||||||
|
return redirect("/auth/login");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<WorkflowsPage
|
||||||
|
userEmail={user.email}
|
||||||
|
organizationName={organization.name}
|
||||||
|
billingPlan={organization.billing.plan}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Page;
|
||||||
@@ -21,7 +21,7 @@ const ZCreateOrUpdateIntegrationAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const createOrUpdateIntegrationAction = authenticatedActionClient
|
export const createOrUpdateIntegrationAction = authenticatedActionClient
|
||||||
.schema(ZCreateOrUpdateIntegrationAction)
|
.inputSchema(ZCreateOrUpdateIntegrationAction)
|
||||||
.action(
|
.action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"createdUpdated",
|
"createdUpdated",
|
||||||
@@ -67,7 +67,7 @@ const ZDeleteIntegrationAction = z.object({
|
|||||||
integrationId: ZId,
|
integrationId: ZId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const deleteIntegrationAction = authenticatedActionClient.schema(ZDeleteIntegrationAction).action(
|
export const deleteIntegrationAction = authenticatedActionClient.inputSchema(ZDeleteIntegrationAction).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"deleted",
|
"deleted",
|
||||||
"integration",
|
"integration",
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ const ZValidateGoogleSheetsConnectionAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const validateGoogleSheetsConnectionAction = authenticatedActionClient
|
export const validateGoogleSheetsConnectionAction = authenticatedActionClient
|
||||||
.schema(ZValidateGoogleSheetsConnectionAction)
|
.inputSchema(ZValidateGoogleSheetsConnectionAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -51,7 +51,7 @@ const ZGetSpreadsheetNameByIdAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getSpreadsheetNameByIdAction = authenticatedActionClient
|
export const getSpreadsheetNameByIdAction = authenticatedActionClient
|
||||||
.schema(ZGetSpreadsheetNameByIdAction)
|
.inputSchema(ZGetSpreadsheetNameByIdAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ const Loading = () => {
|
|||||||
<div className="mt-6 p-6">
|
<div className="mt-6 p-6">
|
||||||
<GoBackButton />
|
<GoBackButton />
|
||||||
<div className="mb-6 text-right">
|
<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")}
|
{t("environments.integrations.google_sheets.link_new_sheet")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
@@ -51,7 +51,7 @@ const Loading = () => {
|
|||||||
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
|
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
|
||||||
</div>
|
</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 className="h-4 w-16 animate-pulse rounded-full bg-slate-200"></div>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-center"></div>
|
<div className="text-center"></div>
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ const Loading = () => {
|
|||||||
<div className="mt-6 p-6">
|
<div className="mt-6 p-6">
|
||||||
<GoBackButton />
|
<GoBackButton />
|
||||||
<div className="mb-6 text-right">
|
<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")}
|
{t("environments.integrations.notion.link_database")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
@@ -48,7 +48,7 @@ const Loading = () => {
|
|||||||
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
|
<div className="mt-0 h-4 w-24 animate-pulse rounded-full bg-slate-200"></div>
|
||||||
</div>
|
</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 className="h-4 w-16 animate-pulse rounded-full bg-slate-200"></div>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-center"></div>
|
<div className="text-center"></div>
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ const ZGetSlackChannelsAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getSlackChannelsAction = authenticatedActionClient
|
export const getSlackChannelsAction = authenticatedActionClient
|
||||||
.schema(ZGetSlackChannelsAction)
|
.inputSchema(ZGetSlackChannelsAction)
|
||||||
.action(async ({ ctx, parsedInput }) => {
|
.action(async ({ ctx, parsedInput }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { getOrganizationByEnvironmentId } from "@/lib/organization/service";
|
|||||||
import { getResponseCountBySurveyId } from "@/lib/response/service";
|
import { getResponseCountBySurveyId } from "@/lib/response/service";
|
||||||
import { getSurvey, updateSurvey } from "@/lib/survey/service";
|
import { getSurvey, updateSurvey } from "@/lib/survey/service";
|
||||||
import { convertDatesInObject } from "@/lib/time";
|
import { convertDatesInObject } from "@/lib/time";
|
||||||
|
import { validateWebhookUrl } from "@/lib/utils/validate-webhook-url";
|
||||||
import { queueAuditEvent } from "@/modules/ee/audit-logs/lib/handler";
|
import { queueAuditEvent } from "@/modules/ee/audit-logs/lib/handler";
|
||||||
import { TAuditStatus, UNKNOWN_DATA } from "@/modules/ee/audit-logs/types/audit-log";
|
import { TAuditStatus, UNKNOWN_DATA } from "@/modules/ee/audit-logs/types/audit-log";
|
||||||
import { sendResponseFinishedEmail } from "@/modules/email";
|
import { sendResponseFinishedEmail } from "@/modules/email";
|
||||||
@@ -135,13 +136,17 @@ export const POST = async (request: Request) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return fetchWithTimeout(webhook.url, {
|
return validateWebhookUrl(webhook.url)
|
||||||
method: "POST",
|
.then(() =>
|
||||||
headers: requestHeaders,
|
fetchWithTimeout(webhook.url, {
|
||||||
body,
|
method: "POST",
|
||||||
}).catch((error) => {
|
headers: requestHeaders,
|
||||||
logger.error({ error, url: request.url }, `Webhook call to ${webhook.url} failed`);
|
body,
|
||||||
});
|
})
|
||||||
|
)
|
||||||
|
.catch((error) => {
|
||||||
|
logger.error({ error, url: request.url }, `Webhook call to ${webhook.url} failed`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if (event === "responseFinished") {
|
if (event === "responseFinished") {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ export const GET = withV1ApiWrapper({
|
|||||||
{
|
{
|
||||||
environmentId: params.environmentId,
|
environmentId: params.environmentId,
|
||||||
url: req.url,
|
url: req.url,
|
||||||
validationError: cuidValidation.error.errors[0]?.message,
|
validationError: cuidValidation.error.issues[0]?.message,
|
||||||
},
|
},
|
||||||
"Invalid CUID v1 format detected"
|
"Invalid CUID v1 format detected"
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,140 +6,138 @@ export const GET = async (req: NextRequest) => {
|
|||||||
let brandColor = req.nextUrl.searchParams.get("brandColor");
|
let brandColor = req.nextUrl.searchParams.get("brandColor");
|
||||||
|
|
||||||
return new ImageResponse(
|
return new ImageResponse(
|
||||||
(
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
width: "100%",
|
||||||
|
height: "100%",
|
||||||
|
alignItems: "center",
|
||||||
|
backgroundColor: brandColor ? brandColor + "BF" : "#0000BFBF", // /75 opacity is approximately BF in hex
|
||||||
|
borderRadius: "0.75rem",
|
||||||
|
}}>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
flexDirection: "column",
|
flexDirection: "column",
|
||||||
width: "100%",
|
width: "80%",
|
||||||
height: "100%",
|
height: "60%",
|
||||||
alignItems: "center",
|
backgroundColor: "white",
|
||||||
backgroundColor: brandColor ? brandColor + "BF" : "#0000BFBF", // /75 opacity is approximately BF in hex
|
|
||||||
borderRadius: "0.75rem",
|
borderRadius: "0.75rem",
|
||||||
|
marginTop: "3.25rem",
|
||||||
|
position: "absolute",
|
||||||
|
left: "3rem",
|
||||||
|
top: "0.75rem",
|
||||||
|
opacity: 0.2,
|
||||||
|
transform: "rotate(356deg)",
|
||||||
|
}}></div>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
width: "84%",
|
||||||
|
height: "60%",
|
||||||
|
backgroundColor: "white",
|
||||||
|
borderRadius: "0.75rem",
|
||||||
|
marginTop: "3rem",
|
||||||
|
position: "absolute",
|
||||||
|
top: "1.25rem",
|
||||||
|
left: "3.25rem",
|
||||||
|
borderWidth: "2px",
|
||||||
|
opacity: 0.6,
|
||||||
|
transform: "rotate(357deg)",
|
||||||
|
}}></div>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
width: "85%",
|
||||||
|
height: "67%",
|
||||||
|
alignItems: "center",
|
||||||
|
backgroundColor: "white",
|
||||||
|
borderRadius: "0.75rem",
|
||||||
|
marginTop: "2rem",
|
||||||
|
position: "absolute",
|
||||||
|
top: "2.3rem",
|
||||||
|
left: "3.5rem",
|
||||||
|
transform: "rotate(360deg)",
|
||||||
}}>
|
}}>
|
||||||
<div
|
<div style={{ display: "flex", flexDirection: "column", width: "100%" }}>
|
||||||
style={{
|
<div
|
||||||
display: "flex",
|
style={{
|
||||||
flexDirection: "column",
|
display: "flex",
|
||||||
width: "80%",
|
flexDirection: "column",
|
||||||
height: "60%",
|
width: "100%",
|
||||||
backgroundColor: "white",
|
justifyContent: "space-between",
|
||||||
borderRadius: "0.75rem",
|
}}>
|
||||||
marginTop: "3.25rem",
|
|
||||||
position: "absolute",
|
|
||||||
left: "3rem",
|
|
||||||
top: "0.75rem",
|
|
||||||
opacity: 0.2,
|
|
||||||
transform: "rotate(356deg)",
|
|
||||||
}}></div>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
flexDirection: "column",
|
|
||||||
width: "84%",
|
|
||||||
height: "60%",
|
|
||||||
backgroundColor: "white",
|
|
||||||
borderRadius: "0.75rem",
|
|
||||||
marginTop: "3rem",
|
|
||||||
position: "absolute",
|
|
||||||
top: "1.25rem",
|
|
||||||
left: "3.25rem",
|
|
||||||
borderWidth: "2px",
|
|
||||||
opacity: 0.6,
|
|
||||||
transform: "rotate(357deg)",
|
|
||||||
}}></div>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
flexDirection: "column",
|
|
||||||
width: "85%",
|
|
||||||
height: "67%",
|
|
||||||
alignItems: "center",
|
|
||||||
backgroundColor: "white",
|
|
||||||
borderRadius: "0.75rem",
|
|
||||||
marginTop: "2rem",
|
|
||||||
position: "absolute",
|
|
||||||
top: "2.3rem",
|
|
||||||
left: "3.5rem",
|
|
||||||
transform: "rotate(360deg)",
|
|
||||||
}}>
|
|
||||||
<div style={{ display: "flex", flexDirection: "column", width: "100%" }}>
|
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
flexDirection: "column",
|
flexDirection: "column",
|
||||||
width: "100%",
|
paddingLeft: "2rem",
|
||||||
justifyContent: "space-between",
|
paddingRight: "2rem",
|
||||||
|
}}>
|
||||||
|
<h2
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
fontSize: "2rem",
|
||||||
|
fontWeight: "700",
|
||||||
|
letterSpacing: "-0.025em",
|
||||||
|
color: "#0f172a",
|
||||||
|
textAlign: "left",
|
||||||
|
marginTop: "3.75rem",
|
||||||
|
}}>
|
||||||
|
{name}
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style={{ display: "flex", justifyContent: "flex-end", marginRight: "2.5rem" }}>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
borderRadius: "1rem",
|
||||||
|
position: "absolute",
|
||||||
|
right: "-0.5rem",
|
||||||
|
marginTop: "0.5rem",
|
||||||
|
}}>
|
||||||
|
<div
|
||||||
|
content=""
|
||||||
|
style={{
|
||||||
|
borderRadius: "0.75rem",
|
||||||
|
border: "1px solid transparent",
|
||||||
|
backgroundColor: brandColor ?? "#000",
|
||||||
|
height: "4.5rem",
|
||||||
|
width: "9.5rem",
|
||||||
|
opacity: 0.5,
|
||||||
|
}}></div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
borderRadius: "1rem",
|
||||||
|
boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
||||||
}}>
|
}}>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
flexDirection: "column",
|
alignItems: "center",
|
||||||
paddingLeft: "2rem",
|
justifyContent: "center",
|
||||||
paddingRight: "2rem",
|
borderRadius: "0.75rem",
|
||||||
|
border: "1px solid transparent",
|
||||||
|
backgroundColor: brandColor ?? "#000",
|
||||||
|
fontSize: "1.5rem",
|
||||||
|
color: "white",
|
||||||
|
height: "4.5rem",
|
||||||
|
width: "9.5rem",
|
||||||
}}>
|
}}>
|
||||||
<h2
|
Begin!
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
flexDirection: "column",
|
|
||||||
fontSize: "2rem",
|
|
||||||
fontWeight: "700",
|
|
||||||
letterSpacing: "-0.025em",
|
|
||||||
color: "#0f172a",
|
|
||||||
textAlign: "left",
|
|
||||||
marginTop: "3.75rem",
|
|
||||||
}}>
|
|
||||||
{name}
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style={{ display: "flex", justifyContent: "flex-end", marginRight: "2.5rem" }}>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
borderRadius: "1rem",
|
|
||||||
position: "absolute",
|
|
||||||
right: "-0.5rem",
|
|
||||||
marginTop: "0.5rem",
|
|
||||||
}}>
|
|
||||||
<div
|
|
||||||
content=""
|
|
||||||
style={{
|
|
||||||
borderRadius: "0.75rem",
|
|
||||||
border: "1px solid transparent",
|
|
||||||
backgroundColor: brandColor ?? "#000",
|
|
||||||
height: "4.5rem",
|
|
||||||
width: "9.5rem",
|
|
||||||
opacity: 0.5,
|
|
||||||
}}></div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
borderRadius: "1rem",
|
|
||||||
boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",
|
|
||||||
}}>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "center",
|
|
||||||
borderRadius: "0.75rem",
|
|
||||||
border: "1px solid transparent",
|
|
||||||
backgroundColor: brandColor ?? "#000",
|
|
||||||
fontSize: "1.5rem",
|
|
||||||
color: "white",
|
|
||||||
height: "4.5rem",
|
|
||||||
width: "9.5rem",
|
|
||||||
}}>
|
|
||||||
Begin!
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
</div>,
|
||||||
{
|
{
|
||||||
width: 800,
|
width: 800,
|
||||||
height: 400,
|
height: 400,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { DatabaseError } from "@formbricks/types/errors";
|
|||||||
import { validateInputs } from "@/lib/utils/validate";
|
import { validateInputs } from "@/lib/utils/validate";
|
||||||
|
|
||||||
export const deleteSurvey = async (surveyId: string) => {
|
export const deleteSurvey = async (surveyId: string) => {
|
||||||
validateInputs([surveyId, z.string().cuid2()]);
|
validateInputs([surveyId, z.cuid2()]);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const deletedSurvey = await prisma.survey.delete({
|
const deletedSurvey = await prisma.survey.delete({
|
||||||
|
|||||||
@@ -2,10 +2,11 @@ import { Prisma, WebhookSource } from "@prisma/client";
|
|||||||
import { cleanup } from "@testing-library/react";
|
import { cleanup } from "@testing-library/react";
|
||||||
import { afterEach, describe, expect, test, vi } from "vitest";
|
import { afterEach, describe, expect, test, vi } from "vitest";
|
||||||
import { prisma } from "@formbricks/database";
|
import { prisma } from "@formbricks/database";
|
||||||
import { DatabaseError, ValidationError } from "@formbricks/types/errors";
|
import { DatabaseError, InvalidInputError, ValidationError } from "@formbricks/types/errors";
|
||||||
import { createWebhook } from "@/app/api/v1/webhooks/lib/webhook";
|
import { createWebhook } from "@/app/api/v1/webhooks/lib/webhook";
|
||||||
import { TWebhookInput } from "@/app/api/v1/webhooks/types/webhooks";
|
import { TWebhookInput } from "@/app/api/v1/webhooks/types/webhooks";
|
||||||
import { validateInputs } from "@/lib/utils/validate";
|
import { validateInputs } from "@/lib/utils/validate";
|
||||||
|
import { validateWebhookUrl } from "@/lib/utils/validate-webhook-url";
|
||||||
|
|
||||||
vi.mock("@formbricks/database", () => ({
|
vi.mock("@formbricks/database", () => ({
|
||||||
prisma: {
|
prisma: {
|
||||||
@@ -23,6 +24,10 @@ vi.mock("@/lib/crypto", () => ({
|
|||||||
generateWebhookSecret: vi.fn(() => "whsec_test_secret_1234567890"),
|
generateWebhookSecret: vi.fn(() => "whsec_test_secret_1234567890"),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
vi.mock("@/lib/utils/validate-webhook-url", () => ({
|
||||||
|
validateWebhookUrl: vi.fn().mockResolvedValue(undefined),
|
||||||
|
}));
|
||||||
|
|
||||||
describe("createWebhook", () => {
|
describe("createWebhook", () => {
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
cleanup();
|
cleanup();
|
||||||
@@ -75,6 +80,41 @@ describe("createWebhook", () => {
|
|||||||
expect(result).toEqual(createdWebhook);
|
expect(result).toEqual(createdWebhook);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("should call validateWebhookUrl with the provided URL", async () => {
|
||||||
|
const webhookInput: TWebhookInput = {
|
||||||
|
environmentId: "test-env-id",
|
||||||
|
name: "Test Webhook",
|
||||||
|
url: "https://example.com",
|
||||||
|
source: "user",
|
||||||
|
triggers: ["responseCreated"],
|
||||||
|
surveyIds: ["survey1"],
|
||||||
|
};
|
||||||
|
|
||||||
|
vi.mocked(prisma.webhook.create).mockResolvedValueOnce({} as any);
|
||||||
|
|
||||||
|
await createWebhook(webhookInput);
|
||||||
|
|
||||||
|
expect(validateWebhookUrl).toHaveBeenCalledWith("https://example.com");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should throw InvalidInputError and skip Prisma create when URL fails SSRF validation", async () => {
|
||||||
|
const webhookInput: TWebhookInput = {
|
||||||
|
environmentId: "test-env-id",
|
||||||
|
name: "Test Webhook",
|
||||||
|
url: "http://169.254.169.254/latest/meta-data/",
|
||||||
|
source: "user",
|
||||||
|
triggers: ["responseCreated"],
|
||||||
|
surveyIds: ["survey1"],
|
||||||
|
};
|
||||||
|
|
||||||
|
vi.mocked(validateWebhookUrl).mockRejectedValueOnce(
|
||||||
|
new InvalidInputError("Webhook URL must not point to private or internal IP addresses")
|
||||||
|
);
|
||||||
|
|
||||||
|
await expect(createWebhook(webhookInput)).rejects.toThrow(InvalidInputError);
|
||||||
|
expect(prisma.webhook.create).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
test("should throw a ValidationError if the input data does not match the ZWebhookInput schema", async () => {
|
test("should throw a ValidationError if the input data does not match the ZWebhookInput schema", async () => {
|
||||||
const invalidWebhookInput = {
|
const invalidWebhookInput = {
|
||||||
environmentId: "test-env-id",
|
environmentId: "test-env-id",
|
||||||
|
|||||||
@@ -6,9 +6,11 @@ import { TWebhookInput, ZWebhookInput } from "@/app/api/v1/webhooks/types/webhoo
|
|||||||
import { ITEMS_PER_PAGE } from "@/lib/constants";
|
import { ITEMS_PER_PAGE } from "@/lib/constants";
|
||||||
import { generateWebhookSecret } from "@/lib/crypto";
|
import { generateWebhookSecret } from "@/lib/crypto";
|
||||||
import { validateInputs } from "@/lib/utils/validate";
|
import { validateInputs } from "@/lib/utils/validate";
|
||||||
|
import { validateWebhookUrl } from "@/lib/utils/validate-webhook-url";
|
||||||
|
|
||||||
export const createWebhook = async (webhookInput: TWebhookInput): Promise<Webhook> => {
|
export const createWebhook = async (webhookInput: TWebhookInput): Promise<Webhook> => {
|
||||||
validateInputs([webhookInput, ZWebhookInput]);
|
validateInputs([webhookInput, ZWebhookInput]);
|
||||||
|
await validateWebhookUrl(webhookInput.url);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const secret = generateWebhookSecret();
|
const secret = generateWebhookSecret();
|
||||||
|
|||||||
@@ -101,7 +101,9 @@ describe("verifyRecaptchaToken", () => {
|
|||||||
},
|
},
|
||||||
signal: {},
|
signal: {},
|
||||||
};
|
};
|
||||||
vi.spyOn(global, "AbortController").mockImplementation(() => abortController as any);
|
vi.spyOn(global, "AbortController").mockImplementation(function AbortController() {
|
||||||
|
return abortController as any;
|
||||||
|
});
|
||||||
(global.fetch as any).mockImplementation(() => new Promise(() => {}));
|
(global.fetch as any).mockImplementation(() => new Promise(() => {}));
|
||||||
verifyRecaptchaToken("token", 0.5);
|
verifyRecaptchaToken("token", 0.5);
|
||||||
vi.advanceTimersByTime(5000);
|
vi.advanceTimersByTime(5000);
|
||||||
|
|||||||
@@ -131,13 +131,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("logs and audits on error response with API key authentication", async () => {
|
test("logs and audits on error response with API key authentication", async () => {
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
@@ -185,13 +183,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("does not log Sentry if not 500", async () => {
|
test("does not log Sentry if not 500", async () => {
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
@@ -233,13 +229,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("logs and audits on thrown error", async () => {
|
test("logs and audits on thrown error", async () => {
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
@@ -291,13 +285,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("does not log on success response but still audits", async () => {
|
test("does not log on success response but still audits", async () => {
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
@@ -347,13 +339,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
REDIS_URL: "redis://localhost:6379",
|
REDIS_URL: "redis://localhost:6379",
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
const { withV1ApiWrapper } = await import("./with-api-logging");
|
const { withV1ApiWrapper } = await import("./with-api-logging");
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
@@ -376,9 +366,8 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("handles client-side API routes without authentication", async () => {
|
test("handles client-side API routes without authentication", async () => {
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { applyIPRateLimit } = await import("@/modules/core/rate-limit/helpers");
|
const { applyIPRateLimit } = await import("@/modules/core/rate-limit/helpers");
|
||||||
|
|
||||||
@@ -410,9 +399,8 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("returns authentication error for non-client routes without auth", async () => {
|
test("returns authentication error for non-client routes without auth", async () => {
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
|
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
@@ -435,9 +423,8 @@ describe("withV1ApiWrapper", () => {
|
|||||||
|
|
||||||
test("handles rate limiting errors", async () => {
|
test("handles rate limiting errors", async () => {
|
||||||
const { applyRateLimit } = await import("@/modules/core/rate-limit/helpers");
|
const { applyRateLimit } = await import("@/modules/core/rate-limit/helpers");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
@@ -462,13 +449,11 @@ describe("withV1ApiWrapper", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("skips audit log creation when no action/targetType provided", async () => {
|
test("skips audit log creation when no action/targetType provided", async () => {
|
||||||
const { queueAuditEvent: mockedQueueAuditEvent } = (await import(
|
const { queueAuditEvent: mockedQueueAuditEvent } =
|
||||||
"@/modules/ee/audit-logs/lib/handler"
|
(await import("@/modules/ee/audit-logs/lib/handler")) as unknown as { queueAuditEvent: Mock };
|
||||||
)) as unknown as { queueAuditEvent: Mock };
|
|
||||||
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
const { authenticateRequest } = await import("@/app/api/v1/auth");
|
||||||
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } = await import(
|
const { isClientSideApiRoute, isManagementApiRoute, isIntegrationRoute } =
|
||||||
"@/app/middleware/endpoint-validator"
|
await import("@/app/middleware/endpoint-validator");
|
||||||
);
|
|
||||||
|
|
||||||
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
vi.mocked(authenticateRequest).mockResolvedValue(mockApiAuthentication);
|
||||||
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
vi.mocked(isClientSideApiRoute).mockReturnValue({ isClientSideApi: false, isRateLimited: true });
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import cuid2 from "@paralleldrive/cuid2";
|
import * as cuid2 from "@paralleldrive/cuid2";
|
||||||
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
|
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
|
||||||
import * as crypto from "@/lib/crypto";
|
import * as crypto from "@/lib/crypto";
|
||||||
import { generateSurveySingleUseId, validateSurveySingleUseId } from "./singleUseSurveys";
|
import { generateSurveySingleUseId, validateSurveySingleUseId } from "./singleUseSurveys";
|
||||||
@@ -20,10 +20,6 @@ vi.mock("@paralleldrive/cuid2", () => {
|
|||||||
const isCuidMock = vi.fn();
|
const isCuidMock = vi.fn();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
default: {
|
|
||||||
createId: createIdMock,
|
|
||||||
isCuid: isCuidMock,
|
|
||||||
},
|
|
||||||
createId: createIdMock,
|
createId: createIdMock,
|
||||||
isCuid: isCuidMock,
|
isCuid: isCuidMock,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import cuid2 from "@paralleldrive/cuid2";
|
import { createId, isCuid } from "@paralleldrive/cuid2";
|
||||||
import { ENCRYPTION_KEY } from "@/lib/constants";
|
import { ENCRYPTION_KEY } from "@/lib/constants";
|
||||||
import { symmetricDecrypt, symmetricEncrypt } from "@/lib/crypto";
|
import { symmetricDecrypt, symmetricEncrypt } from "@/lib/crypto";
|
||||||
|
|
||||||
// generate encrypted single use id for the survey
|
// generate encrypted single use id for the survey
|
||||||
export const generateSurveySingleUseId = (isEncrypted: boolean): string => {
|
export const generateSurveySingleUseId = (isEncrypted: boolean): string => {
|
||||||
const cuid = cuid2.createId();
|
const cuid = createId();
|
||||||
if (!isEncrypted) {
|
if (!isEncrypted) {
|
||||||
return cuid;
|
return cuid;
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ export const validateSurveySingleUseId = (surveySingleUseId: string): string | u
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cuid2.isCuid(decryptedCuid)) {
|
if (isCuid(decryptedCuid)) {
|
||||||
return decryptedCuid;
|
return decryptedCuid;
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|||||||
+221
-210
File diff suppressed because it is too large
Load Diff
@@ -14,31 +14,39 @@ const ZCreateOrganizationAction = z.object({
|
|||||||
organizationName: z.string(),
|
organizationName: z.string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const createOrganizationAction = authenticatedActionClient.schema(ZCreateOrganizationAction).action(
|
export const createOrganizationAction = authenticatedActionClient
|
||||||
withAuditLogging(
|
.inputSchema(ZCreateOrganizationAction)
|
||||||
"created",
|
.action(
|
||||||
"organization",
|
withAuditLogging(
|
||||||
async ({ ctx, parsedInput }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
"created",
|
||||||
const hasNoOrganizations = await gethasNoOrganizations();
|
"organization",
|
||||||
const isMultiOrgEnabled = await getIsMultiOrgEnabled();
|
async ({
|
||||||
|
ctx,
|
||||||
|
parsedInput,
|
||||||
|
}: {
|
||||||
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: Record<string, any>;
|
||||||
|
}) => {
|
||||||
|
const hasNoOrganizations = await gethasNoOrganizations();
|
||||||
|
const isMultiOrgEnabled = await getIsMultiOrgEnabled();
|
||||||
|
|
||||||
if (!hasNoOrganizations && !isMultiOrgEnabled) {
|
if (!hasNoOrganizations && !isMultiOrgEnabled) {
|
||||||
throw new OperationNotAllowedError("This action can only be performed on a fresh instance.");
|
throw new OperationNotAllowedError("This action can only be performed on a fresh instance.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const newOrganization = await createOrganization({
|
||||||
|
name: parsedInput.organizationName,
|
||||||
|
});
|
||||||
|
|
||||||
|
await createMembership(newOrganization.id, ctx.user.id, {
|
||||||
|
role: "owner",
|
||||||
|
accepted: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.auditLoggingCtx.organizationId = newOrganization.id;
|
||||||
|
ctx.auditLoggingCtx.newObject = newOrganization;
|
||||||
|
|
||||||
|
return newOrganization;
|
||||||
}
|
}
|
||||||
|
)
|
||||||
const newOrganization = await createOrganization({
|
);
|
||||||
name: parsedInput.organizationName,
|
|
||||||
});
|
|
||||||
|
|
||||||
await createMembership(newOrganization.id, ctx.user.id, {
|
|
||||||
role: "owner",
|
|
||||||
accepted: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
ctx.auditLoggingCtx.organizationId = newOrganization.id;
|
|
||||||
ctx.auditLoggingCtx.newObject = newOrganization;
|
|
||||||
|
|
||||||
return newOrganization;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|||||||
+70
-33
@@ -148,9 +148,12 @@ checksums:
|
|||||||
common/copy: 627c00d2c850b9b45f7341a6ac01b6bb
|
common/copy: 627c00d2c850b9b45f7341a6ac01b6bb
|
||||||
common/copy_code: 704c13d9bc01caad29a1cf3179baa111
|
common/copy_code: 704c13d9bc01caad29a1cf3179baa111
|
||||||
common/copy_link: 57a37acfe6d7ed71d00fbbc8079fbb35
|
common/copy_link: 57a37acfe6d7ed71d00fbbc8079fbb35
|
||||||
common/count_attributes: 042fba9baffef5afe2c24f13d4f50697
|
common/count_attributes: 48805e836a9b50f9635ad00fed953058
|
||||||
common/count_contacts: b1c413a4b06961b71b6aeee95d6775d7
|
common/count_contacts: 9f71d503455264f1eec1ae58894cf143
|
||||||
common/count_responses: 690118a456c01c5b4d437ae82b50b131
|
common/count_members: 31ce64ca63fdf95e02ab5543b6e2f717
|
||||||
|
common/count_questions: a7a34376a01eda781381fe7544541293
|
||||||
|
common/count_responses: 437e022825c7a08481d8f7e56926742d
|
||||||
|
common/count_selections: a1ec41682b9a7d8601c3905dfba34e16
|
||||||
common/create_new_organization: 51dae7b33143686ee218abf5bea764a5
|
common/create_new_organization: 51dae7b33143686ee218abf5bea764a5
|
||||||
common/create_segment: 9d8291cd4d778b53b73bbc84fd91c181
|
common/create_segment: 9d8291cd4d778b53b73bbc84fd91c181
|
||||||
common/create_survey: 1cfbba08d34876566d84b2960054a987
|
common/create_survey: 1cfbba08d34876566d84b2960054a987
|
||||||
@@ -164,6 +167,7 @@ checksums:
|
|||||||
common/days: c95fe8aedde21a0b5653dbd0b3c58b48
|
common/days: c95fe8aedde21a0b5653dbd0b3c58b48
|
||||||
common/default: d9c6dc5c412fe94143dfd1d332ec81d4
|
common/default: d9c6dc5c412fe94143dfd1d332ec81d4
|
||||||
common/delete: 8bcf303dd10a645b5baacb02b47d72c9
|
common/delete: 8bcf303dd10a645b5baacb02b47d72c9
|
||||||
|
common/delete_what: 718ddfcc1dec7f3e8b67856fba838267
|
||||||
common/description: e17686a22ffad04cc7bb70524ed4478b
|
common/description: e17686a22ffad04cc7bb70524ed4478b
|
||||||
common/dev_env: e650911d5e19ba256358e0cda154c005
|
common/dev_env: e650911d5e19ba256358e0cda154c005
|
||||||
common/development: 85211dbb918bda7a6e87649dcfc1b17a
|
common/development: 85211dbb918bda7a6e87649dcfc1b17a
|
||||||
@@ -179,6 +183,8 @@ checksums:
|
|||||||
common/download: 56b7d0834952b39ee394b44bd8179178
|
common/download: 56b7d0834952b39ee394b44bd8179178
|
||||||
common/draft: e8a92958ad300aacfe46c2bf6644927e
|
common/draft: e8a92958ad300aacfe46c2bf6644927e
|
||||||
common/duplicate: 27756566785c2b8463e21582c4bb619b
|
common/duplicate: 27756566785c2b8463e21582c4bb619b
|
||||||
|
common/duplicate_copy: 68d2201918610ca87c2914b61dc8010f
|
||||||
|
common/duplicate_copy_number: 083cfffd294672043dcbcc4c3dfeac6a
|
||||||
common/e_commerce: b9584e7d0449a6d1b0c182d7ff14061e
|
common/e_commerce: b9584e7d0449a6d1b0c182d7ff14061e
|
||||||
common/edit: eee7f39ff90b18852afc1671f21fbaa9
|
common/edit: eee7f39ff90b18852afc1671f21fbaa9
|
||||||
common/email: e7f34943a0c2fb849db1839ff6ef5cb5
|
common/email: e7f34943a0c2fb849db1839ff6ef5cb5
|
||||||
@@ -198,6 +204,7 @@ checksums:
|
|||||||
common/failed_to_copy_to_clipboard: de836a7d628d36c832809252f188f784
|
common/failed_to_copy_to_clipboard: de836a7d628d36c832809252f188f784
|
||||||
common/failed_to_load_organizations: 512808a2b674c7c28bca73f8f91fd87e
|
common/failed_to_load_organizations: 512808a2b674c7c28bca73f8f91fd87e
|
||||||
common/failed_to_load_workspaces: 6ee3448097394517dc605074cd4e6ea4
|
common/failed_to_load_workspaces: 6ee3448097394517dc605074cd4e6ea4
|
||||||
|
common/filter: 626325a05e4c8800f7ede7012b0cadaf
|
||||||
common/finish: ffa7a10f71182b48fefed7135bee24fa
|
common/finish: ffa7a10f71182b48fefed7135bee24fa
|
||||||
common/first_name: cf040a5d6a9fd696be400380cc99f54b
|
common/first_name: cf040a5d6a9fd696be400380cc99f54b
|
||||||
common/follow_these: 3a730b242bb17a3f95e01bf0dae86885
|
common/follow_these: 3a730b242bb17a3f95e01bf0dae86885
|
||||||
@@ -245,7 +252,6 @@ checksums:
|
|||||||
common/look_and_feel: 9125503712626d495cedec7a79f1418c
|
common/look_and_feel: 9125503712626d495cedec7a79f1418c
|
||||||
common/manage: a3d40c0267b81ae53c9598eaeb05087d
|
common/manage: a3d40c0267b81ae53c9598eaeb05087d
|
||||||
common/marketing: fcf0f06f8b64b458c7ca6d95541a3cc8
|
common/marketing: fcf0f06f8b64b458c7ca6d95541a3cc8
|
||||||
common/member: 1606dc30b369856b9dba1fe9aec425d2
|
|
||||||
common/members: 0932e80cba1e3e0a7f52bb67ff31da32
|
common/members: 0932e80cba1e3e0a7f52bb67ff31da32
|
||||||
common/members_and_teams: bf5c3fadcb9fc23533ec1532b805ac08
|
common/members_and_teams: bf5c3fadcb9fc23533ec1532b805ac08
|
||||||
common/membership_not_found: 7ac63584af23396aace9992ad919ffd4
|
common/membership_not_found: 7ac63584af23396aace9992ad919ffd4
|
||||||
@@ -257,6 +263,7 @@ checksums:
|
|||||||
common/move_down: 4f4de55743043355ad4a839aff2c48ff
|
common/move_down: 4f4de55743043355ad4a839aff2c48ff
|
||||||
common/move_up: 69f25b205c677abdb26cbb69d97cd10b
|
common/move_up: 69f25b205c677abdb26cbb69d97cd10b
|
||||||
common/multiple_languages: 7d8ddd4b40d32fcd7bd6f7bac6485b1f
|
common/multiple_languages: 7d8ddd4b40d32fcd7bd6f7bac6485b1f
|
||||||
|
common/my_product: ad022177062f9ef6e9acf33b13e889aa
|
||||||
common/name: 9368b5a047572b6051f334af5aa76819
|
common/name: 9368b5a047572b6051f334af5aa76819
|
||||||
common/new: 126d036fae5fb6b629728ecb97e6195b
|
common/new: 126d036fae5fb6b629728ecb97e6195b
|
||||||
common/new_version_available: 399ddfc4232712e18ddab2587356b3dc
|
common/new_version_available: 399ddfc4232712e18ddab2587356b3dc
|
||||||
@@ -352,8 +359,6 @@ checksums:
|
|||||||
common/select_teams: ae5d451929846ae6367562bc671a1af9
|
common/select_teams: ae5d451929846ae6367562bc671a1af9
|
||||||
common/selected: 9f09e059ba20c88ed34e2b4e8e032d56
|
common/selected: 9f09e059ba20c88ed34e2b4e8e032d56
|
||||||
common/selected_questions: beffe92d5272d99a0022f004e6a6ad73
|
common/selected_questions: beffe92d5272d99a0022f004e6a6ad73
|
||||||
common/selection: 25b570dc6339916a7aada2142aca0cd1
|
|
||||||
common/selections: 82f0681bf0208e25d7efedc23c556b8f
|
|
||||||
common/send_test_email: 2fd3ea40199b9589132ac826a5b0f3f5
|
common/send_test_email: 2fd3ea40199b9589132ac826a5b0f3f5
|
||||||
common/session_not_found: e9622df3170dbfd9636403bb0c22295b
|
common/session_not_found: e9622df3170dbfd9636403bb0c22295b
|
||||||
common/settings: 8df6777277469c1fd88cc18dde2f1cc3
|
common/settings: 8df6777277469c1fd88cc18dde2f1cc3
|
||||||
@@ -362,6 +367,7 @@ checksums:
|
|||||||
common/show_response_count: 609e5dc7c074d57e711a728fa2f8eb79
|
common/show_response_count: 609e5dc7c074d57e711a728fa2f8eb79
|
||||||
common/shown: 63e4ffb245c05e04b636446c3dbdd8df
|
common/shown: 63e4ffb245c05e04b636446c3dbdd8df
|
||||||
common/size: 227fadeeff951e041ff42031a11a4626
|
common/size: 227fadeeff951e041ff42031a11a4626
|
||||||
|
common/skip: b7f28dfa2f58b80b149bb82b392d0291
|
||||||
common/skipped: d496f0f667e1b4364b954db71335d4ef
|
common/skipped: d496f0f667e1b4364b954db71335d4ef
|
||||||
common/skips: 99de7579122a3fa6ec5e2a47f3fd8b34
|
common/skips: 99de7579122a3fa6ec5e2a47f3fd8b34
|
||||||
common/some_files_failed_to_upload: a0e26efeb29ae905257ecf93b112dff0
|
common/some_files_failed_to_upload: a0e26efeb29ae905257ecf93b112dff0
|
||||||
@@ -431,6 +437,7 @@ checksums:
|
|||||||
common/website_survey: 17513d25a07b6361768a15ec622b021b
|
common/website_survey: 17513d25a07b6361768a15ec622b021b
|
||||||
common/weeks: 545de30df4f44d3f6d1d344af6a10815
|
common/weeks: 545de30df4f44d3f6d1d344af6a10815
|
||||||
common/welcome_card: 76081ebd5b2e35da9b0f080323704ae7
|
common/welcome_card: 76081ebd5b2e35da9b0f080323704ae7
|
||||||
|
common/workflows: b0c9c8615a9ba7d9cb73e767290a7f72
|
||||||
common/workspace_configuration: d0a5812d6a97d7724d565b1017c34387
|
common/workspace_configuration: d0a5812d6a97d7724d565b1017c34387
|
||||||
common/workspace_created_successfully: bf401ae83da954f1db48724e2a8e40f1
|
common/workspace_created_successfully: bf401ae83da954f1db48724e2a8e40f1
|
||||||
common/workspace_creation_description: aea2f480ba0c54c5cabac72c9c900ddf
|
common/workspace_creation_description: aea2f480ba0c54c5cabac72c9c900ddf
|
||||||
@@ -604,11 +611,11 @@ checksums:
|
|||||||
environments/contacts/attribute_value: 34b0eaa85808b15cbc4be94c64d0146b
|
environments/contacts/attribute_value: 34b0eaa85808b15cbc4be94c64d0146b
|
||||||
environments/contacts/attribute_value_placeholder: 90fb17015de807031304d7a650a6cb8c
|
environments/contacts/attribute_value_placeholder: 90fb17015de807031304d7a650a6cb8c
|
||||||
environments/contacts/attributes_msg_attribute_limit_exceeded: a6c430860f307f9cc90c449f96a1284f
|
environments/contacts/attributes_msg_attribute_limit_exceeded: a6c430860f307f9cc90c449f96a1284f
|
||||||
environments/contacts/attributes_msg_attribute_type_validation_error: ed177ce83bd174ed6be7e889664f93a1
|
environments/contacts/attributes_msg_attribute_type_validation_error: bd70f9773ae873240d4cdb26a662334c
|
||||||
environments/contacts/attributes_msg_email_already_exists: a3ea1265e3db885f53d0e589aecf6260
|
environments/contacts/attributes_msg_email_already_exists: a3ea1265e3db885f53d0e589aecf6260
|
||||||
environments/contacts/attributes_msg_email_or_userid_required: 3be0e745cd3500c9a23bad2e25ad3147
|
environments/contacts/attributes_msg_email_or_userid_required: febc8b0cda4dd45d2c3cdb1ac2d45dcb
|
||||||
environments/contacts/attributes_msg_new_attribute_created: c4c7b27523058f43b70411d7aa6510e5
|
environments/contacts/attributes_msg_new_attribute_created: 5cba6158c4305c05104814ec1479267c
|
||||||
environments/contacts/attributes_msg_userid_already_exists: d2d95ece4b06507be18c9ba240b0a26b
|
environments/contacts/attributes_msg_userid_already_exists: 9c695538befc152806c460f52a73821a
|
||||||
environments/contacts/contact_deleted_successfully: c5b64a42a50e055f9e27ec49e20e03fa
|
environments/contacts/contact_deleted_successfully: c5b64a42a50e055f9e27ec49e20e03fa
|
||||||
environments/contacts/contact_not_found: 045396f0b13fafd43612a286263737c0
|
environments/contacts/contact_not_found: 045396f0b13fafd43612a286263737c0
|
||||||
environments/contacts/contacts_table_refresh: 6a959475991dd4ab28ad881bae569a09
|
environments/contacts/contacts_table_refresh: 6a959475991dd4ab28ad881bae569a09
|
||||||
@@ -620,7 +627,7 @@ checksums:
|
|||||||
environments/contacts/data_type: 1ea127ba2c18d0d91fb0361cc6747e2b
|
environments/contacts/data_type: 1ea127ba2c18d0d91fb0361cc6747e2b
|
||||||
environments/contacts/data_type_cannot_be_changed: 22603f6193fdac3784eeef8315df70de
|
environments/contacts/data_type_cannot_be_changed: 22603f6193fdac3784eeef8315df70de
|
||||||
environments/contacts/data_type_description: 800bf4935df15e6cb14269e1b60c506e
|
environments/contacts/data_type_description: 800bf4935df15e6cb14269e1b60c506e
|
||||||
environments/contacts/date_value_required: e0e75b75ae4e8c02f03284954756adc9
|
environments/contacts/date_value_required: f70908e22f962731635c0bc9026da1c4
|
||||||
environments/contacts/delete_attribute_confirmation: 01d99b89eb3d27ff468d0db1b4aeb394
|
environments/contacts/delete_attribute_confirmation: 01d99b89eb3d27ff468d0db1b4aeb394
|
||||||
environments/contacts/delete_contact_confirmation: 2d45579e0bb4bc40fb1ee75b43c0e7a4
|
environments/contacts/delete_contact_confirmation: 2d45579e0bb4bc40fb1ee75b43c0e7a4
|
||||||
environments/contacts/delete_contact_confirmation_with_quotas: d3d17f13ae46ce04c126c82bf01299ac
|
environments/contacts/delete_contact_confirmation_with_quotas: d3d17f13ae46ce04c126c82bf01299ac
|
||||||
@@ -656,7 +663,7 @@ checksums:
|
|||||||
environments/contacts/system_attributes: eadb6a8888c7b32c0e68881f945ae9b6
|
environments/contacts/system_attributes: eadb6a8888c7b32c0e68881f945ae9b6
|
||||||
environments/contacts/unlock_contacts_description: c5572047f02b4c39e5109f9de715499d
|
environments/contacts/unlock_contacts_description: c5572047f02b4c39e5109f9de715499d
|
||||||
environments/contacts/unlock_contacts_title: a8b3d7db03eb404d9267fd5cdd6d5ddb
|
environments/contacts/unlock_contacts_title: a8b3d7db03eb404d9267fd5cdd6d5ddb
|
||||||
environments/contacts/upload_contacts_error_attribute_type_mismatch: 70a60f0886ce767c00defa7d4aad0f93
|
environments/contacts/upload_contacts_error_attribute_type_mismatch: 5f1ba60a88f166c5d387f49f1040c675
|
||||||
environments/contacts/upload_contacts_error_duplicate_mappings: 9c1e1f07e476226bad98ccfa07979fec
|
environments/contacts/upload_contacts_error_duplicate_mappings: 9c1e1f07e476226bad98ccfa07979fec
|
||||||
environments/contacts/upload_contacts_error_file_too_large: 0c1837286c55d18049277465bc2444c1
|
environments/contacts/upload_contacts_error_file_too_large: 0c1837286c55d18049277465bc2444c1
|
||||||
environments/contacts/upload_contacts_error_generic: 3a8d35a421b377198361af9972392693
|
environments/contacts/upload_contacts_error_generic: 3a8d35a421b377198361af9972392693
|
||||||
@@ -722,7 +729,7 @@ checksums:
|
|||||||
environments/integrations/google_sheets/reconnect_button: 8992a0f250278c116cb26be448b68ba2
|
environments/integrations/google_sheets/reconnect_button: 8992a0f250278c116cb26be448b68ba2
|
||||||
environments/integrations/google_sheets/reconnect_button_description: 851fd2fda57211293090f371d5b2c734
|
environments/integrations/google_sheets/reconnect_button_description: 851fd2fda57211293090f371d5b2c734
|
||||||
environments/integrations/google_sheets/reconnect_button_tooltip: 210dd97470fde8264d2c076db3c98fde
|
environments/integrations/google_sheets/reconnect_button_tooltip: 210dd97470fde8264d2c076db3c98fde
|
||||||
environments/integrations/google_sheets/spreadsheet_permission_error: 94f0007a187d3b9a7ab8200fe26aad20
|
environments/integrations/google_sheets/spreadsheet_permission_error: 24a55163c657593e88c28fdc8628acdd
|
||||||
environments/integrations/google_sheets/spreadsheet_url: b1665f96e6ecce23ea2d9196f4a3e5dd
|
environments/integrations/google_sheets/spreadsheet_url: b1665f96e6ecce23ea2d9196f4a3e5dd
|
||||||
environments/integrations/google_sheets/token_expired_error: 555d34c18c554ec8ac66614f21bd44fc
|
environments/integrations/google_sheets/token_expired_error: 555d34c18c554ec8ac66614f21bd44fc
|
||||||
environments/integrations/include_created_at: 8011355b13e28e638d74e6f3d68a2bbf
|
environments/integrations/include_created_at: 8011355b13e28e638d74e6f3d68a2bbf
|
||||||
@@ -919,7 +926,7 @@ checksums:
|
|||||||
environments/settings/billing/current_plan: 7497746eb3b4897ff953b1aa8c7c9f63
|
environments/settings/billing/current_plan: 7497746eb3b4897ff953b1aa8c7c9f63
|
||||||
environments/settings/billing/current_tier_limit: a6875905f376953b12fdf5ae8fc7e051
|
environments/settings/billing/current_tier_limit: a6875905f376953b12fdf5ae8fc7e051
|
||||||
environments/settings/billing/custom: fee41bfbe59e71721d8648e7a95ec9c5
|
environments/settings/billing/custom: fee41bfbe59e71721d8648e7a95ec9c5
|
||||||
environments/settings/billing/custom_contacts_limit: 380f13656e3b9e1a6cb3fffd1a1cc263
|
environments/settings/billing/custom_contacts_limit: c9c10a51c470d9b5661d47317eb8f94e
|
||||||
environments/settings/billing/custom_response_limit: 96ef34d587001a7b479f3f6f7c9e66dc
|
environments/settings/billing/custom_response_limit: 96ef34d587001a7b479f3f6f7c9e66dc
|
||||||
environments/settings/billing/custom_workspace_limit: 3f6f7f901dfc245028ce938e3d9aa2c6
|
environments/settings/billing/custom_workspace_limit: 3f6f7f901dfc245028ce938e3d9aa2c6
|
||||||
environments/settings/billing/email_embedded_surveys: bb1f558f9061287666041c08384ad1d4
|
environments/settings/billing/email_embedded_surveys: bb1f558f9061287666041c08384ad1d4
|
||||||
@@ -993,7 +1000,7 @@ checksums:
|
|||||||
environments/settings/enterprise/recheck_license_invalid: 58f41bc208692b7d53b975dfcf9f4ad8
|
environments/settings/enterprise/recheck_license_invalid: 58f41bc208692b7d53b975dfcf9f4ad8
|
||||||
environments/settings/enterprise/recheck_license_success: 700ddd805be904a415f614de3df1da78
|
environments/settings/enterprise/recheck_license_success: 700ddd805be904a415f614de3df1da78
|
||||||
environments/settings/enterprise/recheck_license_unreachable: 0ca81bd89595a9da24bc94dcef132175
|
environments/settings/enterprise/recheck_license_unreachable: 0ca81bd89595a9da24bc94dcef132175
|
||||||
environments/settings/enterprise/rechecking: 54c454aa8e4d27363543349b7c2a28bc
|
environments/settings/enterprise/rechecking: 68dacda4ccacfc808c5105e99dad4b71
|
||||||
environments/settings/enterprise/request_30_day_trial_license: 8d5a1b5d9f0790783693122ac30c16ef
|
environments/settings/enterprise/request_30_day_trial_license: 8d5a1b5d9f0790783693122ac30c16ef
|
||||||
environments/settings/enterprise/saml_sso: 86b76024524fc585b2c3950126ef6f62
|
environments/settings/enterprise/saml_sso: 86b76024524fc585b2c3950126ef6f62
|
||||||
environments/settings/enterprise/service_level_agreement: e31e74f66f5c7c79e82878f4f68abc37
|
environments/settings/enterprise/service_level_agreement: e31e74f66f5c7c79e82878f4f68abc37
|
||||||
@@ -1019,7 +1026,7 @@ checksums:
|
|||||||
environments/settings/general/email_customization_preview_email_heading: 8b798cb8438b3dd356c02dab33b4c897
|
environments/settings/general/email_customization_preview_email_heading: 8b798cb8438b3dd356c02dab33b4c897
|
||||||
environments/settings/general/email_customization_preview_email_text: fa6ae92403cc8f3c35c03e6c94cbde51
|
environments/settings/general/email_customization_preview_email_text: fa6ae92403cc8f3c35c03e6c94cbde51
|
||||||
environments/settings/general/error_deleting_organization_please_try_again: 7f0fe257d4a0b40bff025408a7766706
|
environments/settings/general/error_deleting_organization_please_try_again: 7f0fe257d4a0b40bff025408a7766706
|
||||||
environments/settings/general/from_your_organization: 4b7970431edb3d0f13c394dbd755a055
|
environments/settings/general/from_your_organization: 9ebd6dcd79f7bfad3fea46ed2e3133d2
|
||||||
environments/settings/general/invitation_sent_once_more: e6e5ea066810f9dcb65788aa4f05d6e2
|
environments/settings/general/invitation_sent_once_more: e6e5ea066810f9dcb65788aa4f05d6e2
|
||||||
environments/settings/general/invite_deleted_successfully: 1c7dca6d0f6870d945288e38cfd2f943
|
environments/settings/general/invite_deleted_successfully: 1c7dca6d0f6870d945288e38cfd2f943
|
||||||
environments/settings/general/invite_expires_on: 6fd2356ad91a5f189070c43855904bb4
|
environments/settings/general/invite_expires_on: 6fd2356ad91a5f189070c43855904bb4
|
||||||
@@ -1066,7 +1073,7 @@ checksums:
|
|||||||
environments/settings/notifications/notification_settings_updated: 948fb98c8a9225ba6b17c43365576df9
|
environments/settings/notifications/notification_settings_updated: 948fb98c8a9225ba6b17c43365576df9
|
||||||
environments/settings/notifications/set_up_an_alert_to_get_an_email_on_new_responses: 4168ae6f5962244a4894a22b56fbb55f
|
environments/settings/notifications/set_up_an_alert_to_get_an_email_on_new_responses: 4168ae6f5962244a4894a22b56fbb55f
|
||||||
environments/settings/notifications/use_the_integration: 765ec5b4959cb096234e8b9a0d6b01f5
|
environments/settings/notifications/use_the_integration: 765ec5b4959cb096234e8b9a0d6b01f5
|
||||||
environments/settings/notifications/want_to_loop_in_organization_mates: 147cb4d1ebcc957e5e965914ae9d7d4d
|
environments/settings/notifications/want_to_loop_in_organization_mates: 46b06df5be0d610c2c3b552a5553ee2b
|
||||||
environments/settings/notifications/you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore: e158e20fc4fa511ce457d99d0c865c3c
|
environments/settings/notifications/you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore: e158e20fc4fa511ce457d99d0c865c3c
|
||||||
environments/settings/notifications/you_will_not_receive_any_more_emails_for_responses_on_this_survey: 7e2a88fe0d0489ebdc8f2621584b1c29
|
environments/settings/notifications/you_will_not_receive_any_more_emails_for_responses_on_this_survey: 7e2a88fe0d0489ebdc8f2621584b1c29
|
||||||
environments/settings/profile/account_deletion_consequences_warning: b87b9eebe0a373eb6debe52db73e5aba
|
environments/settings/profile/account_deletion_consequences_warning: b87b9eebe0a373eb6debe52db73e5aba
|
||||||
@@ -1174,6 +1181,7 @@ checksums:
|
|||||||
environments/surveys/edit/add_fallback_placeholder: 0e77ea487ddd7bc7fc2f1574b018dc08
|
environments/surveys/edit/add_fallback_placeholder: 0e77ea487ddd7bc7fc2f1574b018dc08
|
||||||
environments/surveys/edit/add_hidden_field_id: a8f55b51b790cf5f4d898af7770ad1ed
|
environments/surveys/edit/add_hidden_field_id: a8f55b51b790cf5f4d898af7770ad1ed
|
||||||
environments/surveys/edit/add_highlight_border: 66f52b21fbb9aa6561c98a090abaaf8f
|
environments/surveys/edit/add_highlight_border: 66f52b21fbb9aa6561c98a090abaaf8f
|
||||||
|
environments/surveys/edit/add_highlight_border_description: fe548fe03ea10ef5cd9e553d6812b3c2
|
||||||
environments/surveys/edit/add_logic: f234c9f1393a9ed4792dfbd15838c951
|
environments/surveys/edit/add_logic: f234c9f1393a9ed4792dfbd15838c951
|
||||||
environments/surveys/edit/add_none_of_the_above: dbe1ada4512d6c3f80c54c8fac107ec6
|
environments/surveys/edit/add_none_of_the_above: dbe1ada4512d6c3f80c54c8fac107ec6
|
||||||
environments/surveys/edit/add_option: 143c54f0b201067fe5159284d6daeca2
|
environments/surveys/edit/add_option: 143c54f0b201067fe5159284d6daeca2
|
||||||
@@ -1190,12 +1198,14 @@ checksums:
|
|||||||
environments/surveys/edit/adjust_survey_closed_message: ae6f38c9daf08656362bd84459a312fa
|
environments/surveys/edit/adjust_survey_closed_message: ae6f38c9daf08656362bd84459a312fa
|
||||||
environments/surveys/edit/adjust_survey_closed_message_description: e906aebd9af6451a2a39c73287927299
|
environments/surveys/edit/adjust_survey_closed_message_description: e906aebd9af6451a2a39c73287927299
|
||||||
environments/surveys/edit/adjust_the_theme_in_the: bccdafda8af5871513266f668b55d690
|
environments/surveys/edit/adjust_the_theme_in_the: bccdafda8af5871513266f668b55d690
|
||||||
|
environments/surveys/edit/all_are_true: 05d02c5afac857da530b73dcf18dd8e4
|
||||||
environments/surveys/edit/all_other_answers_will_continue_to: 9a5d09eea42ff5fd1c18cc58a14dcabd
|
environments/surveys/edit/all_other_answers_will_continue_to: 9a5d09eea42ff5fd1c18cc58a14dcabd
|
||||||
environments/surveys/edit/allow_multi_select: 7b4b83f7a0205e2a0a8971671a69a174
|
environments/surveys/edit/allow_multi_select: 7b4b83f7a0205e2a0a8971671a69a174
|
||||||
environments/surveys/edit/allow_multiple_files: dbd99f9d1026e4f7c5a5d03f71ba379d
|
environments/surveys/edit/allow_multiple_files: dbd99f9d1026e4f7c5a5d03f71ba379d
|
||||||
environments/surveys/edit/allow_users_to_select_more_than_one_image: d683e0b538d1366400292a771f3fbd08
|
environments/surveys/edit/allow_users_to_select_more_than_one_image: d683e0b538d1366400292a771f3fbd08
|
||||||
environments/surveys/edit/and_launch_surveys_in_your_website_or_app: a3edcdb4aea792a27d90aad1930f001a
|
environments/surveys/edit/and_launch_surveys_in_your_website_or_app: a3edcdb4aea792a27d90aad1930f001a
|
||||||
environments/surveys/edit/animation: 66a18eacfb92fc9fc9db188d2dde4f81
|
environments/surveys/edit/animation: 66a18eacfb92fc9fc9db188d2dde4f81
|
||||||
|
environments/surveys/edit/any_is_true: 32c9f3998984fd32a2b5bc53f2d97429
|
||||||
environments/surveys/edit/app_survey_description: bdfacfce478e97f70b700a1382dfa687
|
environments/surveys/edit/app_survey_description: bdfacfce478e97f70b700a1382dfa687
|
||||||
environments/surveys/edit/assign: e80715ab64bf7cf463abb3a9fd1ad516
|
environments/surveys/edit/assign: e80715ab64bf7cf463abb3a9fd1ad516
|
||||||
environments/surveys/edit/audience: a4d9fab4214a641e2d358fbb28f010e0
|
environments/surveys/edit/audience: a4d9fab4214a641e2d358fbb28f010e0
|
||||||
@@ -1226,7 +1236,7 @@ checksums:
|
|||||||
environments/surveys/edit/calculate: c5fcf8d3a38706ae2071b6f78339ec68
|
environments/surveys/edit/calculate: c5fcf8d3a38706ae2071b6f78339ec68
|
||||||
environments/surveys/edit/capture_a_new_action_to_trigger_a_survey_on: 73410e9665a37bc4a9747db5d683d36c
|
environments/surveys/edit/capture_a_new_action_to_trigger_a_survey_on: 73410e9665a37bc4a9747db5d683d36c
|
||||||
environments/surveys/edit/capture_ip_address: e950f924f1c0b52f8c5b06ca118e049f
|
environments/surveys/edit/capture_ip_address: e950f924f1c0b52f8c5b06ca118e049f
|
||||||
environments/surveys/edit/capture_ip_address_description: 932d1b4ad68594d06d4eaf0212f9570c
|
environments/surveys/edit/capture_ip_address_description: f6bf6046db16667237511265e9fba5f0
|
||||||
environments/surveys/edit/capture_new_action: 0aa2a3c399b62b1a52307deedf4922e8
|
environments/surveys/edit/capture_new_action: 0aa2a3c399b62b1a52307deedf4922e8
|
||||||
environments/surveys/edit/card_arrangement_for_survey_type_derived: c06b9aaebcc11bc16e57a445b62361fc
|
environments/surveys/edit/card_arrangement_for_survey_type_derived: c06b9aaebcc11bc16e57a445b62361fc
|
||||||
environments/surveys/edit/card_background_color: acd5d023e1d1a4471b053dce504c7a83
|
environments/surveys/edit/card_background_color: acd5d023e1d1a4471b053dce504c7a83
|
||||||
@@ -1237,7 +1247,7 @@ checksums:
|
|||||||
environments/surveys/edit/casual: 6534fe68718fade470a9031f7390409e
|
environments/surveys/edit/casual: 6534fe68718fade470a9031f7390409e
|
||||||
environments/surveys/edit/caution_edit_duplicate: ee93bccb34fcd707e1ef4735f1c2fc31
|
environments/surveys/edit/caution_edit_duplicate: ee93bccb34fcd707e1ef4735f1c2fc31
|
||||||
environments/surveys/edit/caution_edit_published_survey: faf7fc57c776f2a9104d143e20044486
|
environments/surveys/edit/caution_edit_published_survey: faf7fc57c776f2a9104d143e20044486
|
||||||
environments/surveys/edit/caution_explanation_intro: d6bd8cfdca654353cdced650c1416834
|
environments/surveys/edit/caution_explanation_intro: 143ed2e04bf5bf0bcc0752cb87acda51
|
||||||
environments/surveys/edit/caution_explanation_new_responses_separated: 387286482b7ecd725ce20521dacbc485
|
environments/surveys/edit/caution_explanation_new_responses_separated: 387286482b7ecd725ce20521dacbc485
|
||||||
environments/surveys/edit/caution_explanation_only_new_responses_in_summary: 1ad5f649c7784a58bfa9d62304780514
|
environments/surveys/edit/caution_explanation_only_new_responses_in_summary: 1ad5f649c7784a58bfa9d62304780514
|
||||||
environments/surveys/edit/caution_explanation_responses_are_safe: 090ff00b7922a49c273e67c5f364730d
|
environments/surveys/edit/caution_explanation_responses_are_safe: 090ff00b7922a49c273e67c5f364730d
|
||||||
@@ -1372,7 +1382,6 @@ checksums:
|
|||||||
environments/surveys/edit/follow_ups_modal_updated_successfull_toast: 61204fada3231f4f1fe3866e87e1130a
|
environments/surveys/edit/follow_ups_modal_updated_successfull_toast: 61204fada3231f4f1fe3866e87e1130a
|
||||||
environments/surveys/edit/follow_ups_new: 224c779d252b3e75086e4ed456ba2548
|
environments/surveys/edit/follow_ups_new: 224c779d252b3e75086e4ed456ba2548
|
||||||
environments/surveys/edit/follow_ups_upgrade_button_text: 4cd167527fc6cdb5b0bfc9b486b142a8
|
environments/surveys/edit/follow_ups_upgrade_button_text: 4cd167527fc6cdb5b0bfc9b486b142a8
|
||||||
environments/surveys/edit/form_styling: 1278a2db4257b5500474161133acc857
|
|
||||||
environments/surveys/edit/formbricks_sdk_is_not_connected: 35165b0cac182a98408007a378cc677e
|
environments/surveys/edit/formbricks_sdk_is_not_connected: 35165b0cac182a98408007a378cc677e
|
||||||
environments/surveys/edit/four_points: b289628a6b8a6cd0f7d17a14ca6cd7bf
|
environments/surveys/edit/four_points: b289628a6b8a6cd0f7d17a14ca6cd7bf
|
||||||
environments/surveys/edit/heading: 79e9dfa461f38a239d34b9833ca103f1
|
environments/surveys/edit/heading: 79e9dfa461f38a239d34b9833ca103f1
|
||||||
@@ -1462,7 +1471,7 @@ checksums:
|
|||||||
environments/surveys/edit/option_idx: 9eb69cb3d19797daf1300699b441ef9d
|
environments/surveys/edit/option_idx: 9eb69cb3d19797daf1300699b441ef9d
|
||||||
environments/surveys/edit/option_used_in_logic_error: c682ac2cfd286c3cc07dd21ac863dd4c
|
environments/surveys/edit/option_used_in_logic_error: c682ac2cfd286c3cc07dd21ac863dd4c
|
||||||
environments/surveys/edit/optional: 396fb9a0472daf401c392bdc3e248943
|
environments/surveys/edit/optional: 396fb9a0472daf401c392bdc3e248943
|
||||||
environments/surveys/edit/options: 59156082418d80acb211f973b1218f11
|
environments/surveys/edit/options: 39ba06e709561761d922ca1254155d5f
|
||||||
environments/surveys/edit/options_used_in_logic_bulk_error: 1720e7a01a0bcb67c152cfe6a68c5355
|
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/override_theme_with_individual_styles_for_this_survey: edffc97f5d3372419fe0444de0a5aa3f
|
||||||
environments/surveys/edit/overwrite_global_waiting_time: bf39ba91e35742e1ff3a281a18e9159c
|
environments/surveys/edit/overwrite_global_waiting_time: bf39ba91e35742e1ff3a281a18e9159c
|
||||||
@@ -1487,6 +1496,7 @@ checksums:
|
|||||||
environments/surveys/edit/question_deleted: ecdeb22b81ae2d732656a7742c1eec7b
|
environments/surveys/edit/question_deleted: ecdeb22b81ae2d732656a7742c1eec7b
|
||||||
environments/surveys/edit/question_duplicated: 3f02439fd0a8b818bc84c1b1b473898c
|
environments/surveys/edit/question_duplicated: 3f02439fd0a8b818bc84c1b1b473898c
|
||||||
environments/surveys/edit/question_id_updated: e8d94dbefcbad00c7464b3d1fb0ee81a
|
environments/surveys/edit/question_id_updated: e8d94dbefcbad00c7464b3d1fb0ee81a
|
||||||
|
environments/surveys/edit/question_number: 742636e9d2d5dcc7ee6ca1b3016bcee7
|
||||||
environments/surveys/edit/question_used_in_logic_warning_text: ec78767a7cf335222d41b98cb5baa6be
|
environments/surveys/edit/question_used_in_logic_warning_text: ec78767a7cf335222d41b98cb5baa6be
|
||||||
environments/surveys/edit/question_used_in_logic_warning_title: 4bb8528cdc3b8649c194487067737f6d
|
environments/surveys/edit/question_used_in_logic_warning_title: 4bb8528cdc3b8649c194487067737f6d
|
||||||
environments/surveys/edit/question_used_in_quota: ceb5e88f6916e4863e589c6be030bb3b
|
environments/surveys/edit/question_used_in_quota: ceb5e88f6916e4863e589c6be030bb3b
|
||||||
@@ -1543,7 +1553,7 @@ checksums:
|
|||||||
environments/surveys/edit/response_limits_redirections_and_more: e4f1cf94e56ad0e1b08701158d688802
|
environments/surveys/edit/response_limits_redirections_and_more: e4f1cf94e56ad0e1b08701158d688802
|
||||||
environments/surveys/edit/response_options: 2988136d5248d7726583108992dcbaee
|
environments/surveys/edit/response_options: 2988136d5248d7726583108992dcbaee
|
||||||
environments/surveys/edit/roundness: 5a161c8f5f258defb57ed1d551737cc4
|
environments/surveys/edit/roundness: 5a161c8f5f258defb57ed1d551737cc4
|
||||||
environments/surveys/edit/roundness_description: bde131aa5674836416dcdf2ff517d899
|
environments/surveys/edit/roundness_description: 03940a6871ae43efa4810cba7cadb74b
|
||||||
environments/surveys/edit/row_used_in_logic_error: f89453ff1b6db77ad84af840fedd9813
|
environments/surveys/edit/row_used_in_logic_error: f89453ff1b6db77ad84af840fedd9813
|
||||||
environments/surveys/edit/rows: 8f41f34e6ca28221cf1ebd948af4c151
|
environments/surveys/edit/rows: 8f41f34e6ca28221cf1ebd948af4c151
|
||||||
environments/surveys/edit/save_and_close: 6ede705b3f82f30269ff3054a5049e34
|
environments/surveys/edit/save_and_close: 6ede705b3f82f30269ff3054a5049e34
|
||||||
@@ -1589,6 +1599,7 @@ checksums:
|
|||||||
environments/surveys/edit/survey_completed_subheading: db537c356c3ab6564d24de0d11a0fee2
|
environments/surveys/edit/survey_completed_subheading: db537c356c3ab6564d24de0d11a0fee2
|
||||||
environments/surveys/edit/survey_display_settings: 8ed19e6a8e1376f7a1ba037d82c4ae11
|
environments/surveys/edit/survey_display_settings: 8ed19e6a8e1376f7a1ba037d82c4ae11
|
||||||
environments/surveys/edit/survey_placement: 083c10f257337f9648bf9d435b18ec2c
|
environments/surveys/edit/survey_placement: 083c10f257337f9648bf9d435b18ec2c
|
||||||
|
environments/surveys/edit/survey_styling: 7f96d6563e934e65687b74374a33b1dc
|
||||||
environments/surveys/edit/survey_trigger: f0c7014a684ca566698b87074fad5579
|
environments/surveys/edit/survey_trigger: f0c7014a684ca566698b87074fad5579
|
||||||
environments/surveys/edit/switch_multi_language_on_to_get_started: cca0ef91ee49095da30cd1e3f26c406f
|
environments/surveys/edit/switch_multi_language_on_to_get_started: cca0ef91ee49095da30cd1e3f26c406f
|
||||||
environments/surveys/edit/target_block_not_found: 0a0c401017ab32364fec2fcbf815d832
|
environments/surveys/edit/target_block_not_found: 0a0c401017ab32364fec2fcbf815d832
|
||||||
@@ -1650,7 +1661,7 @@ checksums:
|
|||||||
environments/surveys/edit/validation/pattern: c6f01d7bc9baa21a40ea38fa986bd5a0
|
environments/surveys/edit/validation/pattern: c6f01d7bc9baa21a40ea38fa986bd5a0
|
||||||
environments/surveys/edit/validation/phone: bcd7bd37a475ab1f80ea4c5b4d4d0bb5
|
environments/surveys/edit/validation/phone: bcd7bd37a475ab1f80ea4c5b4d4d0bb5
|
||||||
environments/surveys/edit/validation/rank_all_options: a885523e9d7820c9b0529bca37e48ccc
|
environments/surveys/edit/validation/rank_all_options: a885523e9d7820c9b0529bca37e48ccc
|
||||||
environments/surveys/edit/validation/select_file_extensions: 208ccb7bd4dde20b0d79bdd1fa763076
|
environments/surveys/edit/validation/select_file_extensions: cbe67b01658ff5f654e4e18fd6fa34ec
|
||||||
environments/surveys/edit/validation/select_option: 53ba37697cca1f6c7d57ecca53ea063e
|
environments/surveys/edit/validation/select_option: 53ba37697cca1f6c7d57ecca53ea063e
|
||||||
environments/surveys/edit/validation/start_date: 881de78c79b56f5ceb9b7103bf23cb2c
|
environments/surveys/edit/validation/start_date: 881de78c79b56f5ceb9b7103bf23cb2c
|
||||||
environments/surveys/edit/validation/url: 4006a4d8dfac013758f0053f6aa67cdd
|
environments/surveys/edit/validation/url: 4006a4d8dfac013758f0053f6aa67cdd
|
||||||
@@ -1675,9 +1686,9 @@ checksums:
|
|||||||
environments/surveys/edit/waiting_time_across_surveys: 6873c18d51830e2cadef67cce6a2c95c
|
environments/surveys/edit/waiting_time_across_surveys: 6873c18d51830e2cadef67cce6a2c95c
|
||||||
environments/surveys/edit/waiting_time_across_surveys_description: 6edafaeb3ccd8cadde81175776636c8e
|
environments/surveys/edit/waiting_time_across_surveys_description: 6edafaeb3ccd8cadde81175776636c8e
|
||||||
environments/surveys/edit/welcome_message: 986a434e3895c8ee0b267df95cc40051
|
environments/surveys/edit/welcome_message: 986a434e3895c8ee0b267df95cc40051
|
||||||
|
environments/surveys/edit/when: a40ad3eed1b75e76226290eeb9bb20cd
|
||||||
environments/surveys/edit/without_a_filter_all_of_your_users_can_be_surveyed: 451990569c61f25d01044cc45b1ce122
|
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_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/your_description_here_recall_information_with: 60f73a3cc9bdb9afea2166a7db8fd618
|
environments/surveys/edit/your_description_here_recall_information_with: 60f73a3cc9bdb9afea2166a7db8fd618
|
||||||
environments/surveys/edit/your_question_here_recall_information_with: 6395bd54f5167830c9d662ba403da167
|
environments/surveys/edit/your_question_here_recall_information_with: 6395bd54f5167830c9d662ba403da167
|
||||||
environments/surveys/edit/your_web_app: 07234bed03a33330dc50ae9fcf0174f3
|
environments/surveys/edit/your_web_app: 07234bed03a33330dc50ae9fcf0174f3
|
||||||
@@ -1740,7 +1751,7 @@ checksums:
|
|||||||
environments/surveys/share/anonymous_links/disable_single_use_link_modal_button: e26f8f680c7c21dcade0b96543d7fb0b
|
environments/surveys/share/anonymous_links/disable_single_use_link_modal_button: e26f8f680c7c21dcade0b96543d7fb0b
|
||||||
environments/surveys/share/anonymous_links/disable_single_use_link_modal_description: 30e41451528ee1ec80cad04ffd90d64b
|
environments/surveys/share/anonymous_links/disable_single_use_link_modal_description: 30e41451528ee1ec80cad04ffd90d64b
|
||||||
environments/surveys/share/anonymous_links/generate_and_download_links: bb28f5a4f6d7cc4c8b4ca94b923b2574
|
environments/surveys/share/anonymous_links/generate_and_download_links: bb28f5a4f6d7cc4c8b4ca94b923b2574
|
||||||
environments/surveys/share/anonymous_links/generate_links_error: cc37320a3b3e63274982eb37c06569dd
|
environments/surveys/share/anonymous_links/generate_links_error: ef2d0c17d261ca498defe91c6f5e8901
|
||||||
environments/surveys/share/anonymous_links/multi_use_link: 99d94762889174aa0643416accaa2427
|
environments/surveys/share/anonymous_links/multi_use_link: 99d94762889174aa0643416accaa2427
|
||||||
environments/surveys/share/anonymous_links/multi_use_link_description: 6ac5e527e647ebecdf795c5acfd744e9
|
environments/surveys/share/anonymous_links/multi_use_link_description: 6ac5e527e647ebecdf795c5acfd744e9
|
||||||
environments/surveys/share/anonymous_links/multi_use_powers_other_channels_description: b3758f9e7a8488d5ef3101584715ef9f
|
environments/surveys/share/anonymous_links/multi_use_powers_other_channels_description: b3758f9e7a8488d5ef3101584715ef9f
|
||||||
@@ -1832,7 +1843,7 @@ checksums:
|
|||||||
environments/surveys/share/social_media/source_tracking_enabled: 3c0a4f7aecda5f1ca8c1991f7b36c05b
|
environments/surveys/share/social_media/source_tracking_enabled: 3c0a4f7aecda5f1ca8c1991f7b36c05b
|
||||||
environments/surveys/share/social_media/source_tracking_enabled_alert_description: 4f4929310e307e946281b96943e834e1
|
environments/surveys/share/social_media/source_tracking_enabled_alert_description: 4f4929310e307e946281b96943e834e1
|
||||||
environments/surveys/share/social_media/title: 1bf4899b063ee8f02f7188576555828b
|
environments/surveys/share/social_media/title: 1bf4899b063ee8f02f7188576555828b
|
||||||
environments/surveys/summary/added_filter_for_responses_where_answer_to_question: 5bddf0d4f771efd06d58441d11fa5091
|
environments/surveys/summary/added_filter_for_responses_where_answer_to_question: ca743504c3f34b4e5fa98e3e79100624
|
||||||
environments/surveys/summary/added_filter_for_responses_where_answer_to_question_is_skipped: 74ca713c491cfc33751a5db3de972821
|
environments/surveys/summary/added_filter_for_responses_where_answer_to_question_is_skipped: 74ca713c491cfc33751a5db3de972821
|
||||||
environments/surveys/summary/aggregated: 9d4e77225d5952abed414fffd828c078
|
environments/surveys/summary/aggregated: 9d4e77225d5952abed414fffd828c078
|
||||||
environments/surveys/summary/all_responses_csv: 16c0c211853f0839a79f1127ec679ca2
|
environments/surveys/summary/all_responses_csv: 16c0c211853f0839a79f1127ec679ca2
|
||||||
@@ -1923,6 +1934,7 @@ checksums:
|
|||||||
environments/surveys/summary/starts: 3153990a4ade414f501a7e63ab771362
|
environments/surveys/summary/starts: 3153990a4ade414f501a7e63ab771362
|
||||||
environments/surveys/summary/starts_tooltip: 0a7dd01320490dbbea923053fa1ccad6
|
environments/surveys/summary/starts_tooltip: 0a7dd01320490dbbea923053fa1ccad6
|
||||||
environments/surveys/summary/survey_reset_successfully: f53db36a28980ef4766215cf13f01e51
|
environments/surveys/summary/survey_reset_successfully: f53db36a28980ef4766215cf13f01e51
|
||||||
|
environments/surveys/summary/survey_results: b7d86f636beaee2b4d5746bdda058d07
|
||||||
environments/surveys/summary/this_month: 50845a38865204a97773c44dcd2ebb90
|
environments/surveys/summary/this_month: 50845a38865204a97773c44dcd2ebb90
|
||||||
environments/surveys/summary/this_quarter: 9c77d94783dff2269c069389122cd7bd
|
environments/surveys/summary/this_quarter: 9c77d94783dff2269c069389122cd7bd
|
||||||
environments/surveys/summary/this_year: 1e69651c2ac722f8ce138f43cf2e02f9
|
environments/surveys/summary/this_year: 1e69651c2ac722f8ce138f43cf2e02f9
|
||||||
@@ -2028,7 +2040,7 @@ checksums:
|
|||||||
environments/workspace/look/add_background_color_description: adb6fcb392862b3d0e9420d9b5405ddb
|
environments/workspace/look/add_background_color_description: adb6fcb392862b3d0e9420d9b5405ddb
|
||||||
environments/workspace/look/advanced_styling_field_border_radius: 63b8f3541a9792d705e67d5aca7b6451
|
environments/workspace/look/advanced_styling_field_border_radius: 63b8f3541a9792d705e67d5aca7b6451
|
||||||
environments/workspace/look/advanced_styling_field_button_bg: fc103ab926721e6213d39cc1f913c018
|
environments/workspace/look/advanced_styling_field_button_bg: fc103ab926721e6213d39cc1f913c018
|
||||||
environments/workspace/look/advanced_styling_field_button_bg_description: 9f14ec79ed40c0d3eb168cc46a9e0a14
|
environments/workspace/look/advanced_styling_field_button_bg_description: b8195c91717d8ba6e14cd83396caebe5
|
||||||
environments/workspace/look/advanced_styling_field_button_border_radius_description: 5677ee84511896ab9c369c0aced4c352
|
environments/workspace/look/advanced_styling_field_button_border_radius_description: 5677ee84511896ab9c369c0aced4c352
|
||||||
environments/workspace/look/advanced_styling_field_button_font_size_description: 59508854b0101a89fab8250f79c0f3ba
|
environments/workspace/look/advanced_styling_field_button_font_size_description: 59508854b0101a89fab8250f79c0f3ba
|
||||||
environments/workspace/look/advanced_styling_field_button_font_weight_description: d3dab571b0f1bc09d645be66c6686a06
|
environments/workspace/look/advanced_styling_field_button_font_weight_description: d3dab571b0f1bc09d645be66c6686a06
|
||||||
@@ -2056,7 +2068,7 @@ checksums:
|
|||||||
environments/workspace/look/advanced_styling_field_indicator_bg_description: 7eb3b54a8b331354ec95c0dc1545c620
|
environments/workspace/look/advanced_styling_field_indicator_bg_description: 7eb3b54a8b331354ec95c0dc1545c620
|
||||||
environments/workspace/look/advanced_styling_field_input_border_radius_description: 0007f1bb572b35d9a3720daeb7a55617
|
environments/workspace/look/advanced_styling_field_input_border_radius_description: 0007f1bb572b35d9a3720daeb7a55617
|
||||||
environments/workspace/look/advanced_styling_field_input_font_size_description: 5311f95dcbd083623e35c98ea5374c3b
|
environments/workspace/look/advanced_styling_field_input_font_size_description: 5311f95dcbd083623e35c98ea5374c3b
|
||||||
environments/workspace/look/advanced_styling_field_input_height_description: e19ec0dc432478def0fd1199ad765e38
|
environments/workspace/look/advanced_styling_field_input_height_description: eff99285b2ce1141c3c9743f7c96f63c
|
||||||
environments/workspace/look/advanced_styling_field_input_padding_x_description: 10e14296468321c13fda77fd1ba58dfd
|
environments/workspace/look/advanced_styling_field_input_padding_x_description: 10e14296468321c13fda77fd1ba58dfd
|
||||||
environments/workspace/look/advanced_styling_field_input_padding_y_description: 98b4aeff2940516d05ea61bdc1211d0d
|
environments/workspace/look/advanced_styling_field_input_padding_y_description: 98b4aeff2940516d05ea61bdc1211d0d
|
||||||
environments/workspace/look/advanced_styling_field_input_placeholder_opacity_description: f55a6700884d24014404e58876121ddf
|
environments/workspace/look/advanced_styling_field_input_placeholder_opacity_description: f55a6700884d24014404e58876121ddf
|
||||||
@@ -2065,6 +2077,8 @@ checksums:
|
|||||||
environments/workspace/look/advanced_styling_field_input_text_description: 460450df24ea0cc902710118a5000feb
|
environments/workspace/look/advanced_styling_field_input_text_description: 460450df24ea0cc902710118a5000feb
|
||||||
environments/workspace/look/advanced_styling_field_option_bg: 0ceaed10d99ed4ad83cb0934ab970174
|
environments/workspace/look/advanced_styling_field_option_bg: 0ceaed10d99ed4ad83cb0934ab970174
|
||||||
environments/workspace/look/advanced_styling_field_option_bg_description: 6cd6ccecbbb9f2f19439d7c682eb67c1
|
environments/workspace/look/advanced_styling_field_option_bg_description: 6cd6ccecbbb9f2f19439d7c682eb67c1
|
||||||
|
environments/workspace/look/advanced_styling_field_option_border: aa478eb148515b6a2637fb144ff72028
|
||||||
|
environments/workspace/look/advanced_styling_field_option_border_description: 8f75b740e8dcb7f6cfeff2e5d5ca7c92
|
||||||
environments/workspace/look/advanced_styling_field_option_border_radius_description: 23f81c25b2681a7c9e2c4f2e7d2e0656
|
environments/workspace/look/advanced_styling_field_option_border_radius_description: 23f81c25b2681a7c9e2c4f2e7d2e0656
|
||||||
environments/workspace/look/advanced_styling_field_option_font_size_description: 5430fd9b08819972f0a613bf3fa659da
|
environments/workspace/look/advanced_styling_field_option_font_size_description: 5430fd9b08819972f0a613bf3fa659da
|
||||||
environments/workspace/look/advanced_styling_field_option_label: 2767a5db32742073a01aac16488e93dc
|
environments/workspace/look/advanced_styling_field_option_label: 2767a5db32742073a01aac16488e93dc
|
||||||
@@ -2119,7 +2133,7 @@ checksums:
|
|||||||
environments/workspace/look/show_powered_by_formbricks: a0e96edadec8ef326423feccc9d06be7
|
environments/workspace/look/show_powered_by_formbricks: a0e96edadec8ef326423feccc9d06be7
|
||||||
environments/workspace/look/styling_updated_successfully: b8b74b50dde95abcd498633e9d0c891f
|
environments/workspace/look/styling_updated_successfully: b8b74b50dde95abcd498633e9d0c891f
|
||||||
environments/workspace/look/suggest_colors: ddc4543b416ab774007b10a3434343cd
|
environments/workspace/look/suggest_colors: ddc4543b416ab774007b10a3434343cd
|
||||||
environments/workspace/look/suggested_colors_applied_please_save: 226fa70af5efc8ffa0a3755909c8163e
|
environments/workspace/look/suggested_colors_applied_please_save: a440b8e29a327822a94d9bbf8c52e2ed
|
||||||
environments/workspace/look/theme: 21fe00b7a518089576fb83c08631107a
|
environments/workspace/look/theme: 21fe00b7a518089576fb83c08631107a
|
||||||
environments/workspace/look/theme_settings_description: 9fc45322818c3774ab4a44ea14d7836e
|
environments/workspace/look/theme_settings_description: 9fc45322818c3774ab4a44ea14d7836e
|
||||||
environments/workspace/tags/add: 87c4a663507f2bcbbf79934af8164e13
|
environments/workspace/tags/add: 87c4a663507f2bcbbf79934af8164e13
|
||||||
@@ -2179,7 +2193,7 @@ checksums:
|
|||||||
s/check_inbox_or_spam: c48ac1f7b76052881bb3b6d10615152d
|
s/check_inbox_or_spam: c48ac1f7b76052881bb3b6d10615152d
|
||||||
s/completed: 98a9cd97b409933edf1991e7d022bea9
|
s/completed: 98a9cd97b409933edf1991e7d022bea9
|
||||||
s/create_your_own: 27976ec69029d6dd52d146a9b5765bc6
|
s/create_your_own: 27976ec69029d6dd52d146a9b5765bc6
|
||||||
s/enter_pin: 1d902362d8063ca1442bebabaab5115b
|
s/enter_pin: 90bccdc2e51ee2550842287d1f02c999
|
||||||
s/just_curious: d5e5c40e97fcfdab563707ab0de10862
|
s/just_curious: d5e5c40e97fcfdab563707ab0de10862
|
||||||
s/link_invalid: bd63a73fa5eecad2dfd0687cfed02114
|
s/link_invalid: bd63a73fa5eecad2dfd0687cfed02114
|
||||||
s/paused: 65ec150837ca033f5a0fb5d4482e0e4b
|
s/paused: 65ec150837ca033f5a0fb5d4482e0e4b
|
||||||
@@ -2236,6 +2250,16 @@ checksums:
|
|||||||
templates/alignment_and_engagement_survey_question_4_headline: e36be56ce8aad1d0ca04939bea4e39b7
|
templates/alignment_and_engagement_survey_question_4_headline: e36be56ce8aad1d0ca04939bea4e39b7
|
||||||
templates/alignment_and_engagement_survey_question_4_placeholder: 37ee9c84f3777b9220d4faec1e1c78ee
|
templates/alignment_and_engagement_survey_question_4_placeholder: 37ee9c84f3777b9220d4faec1e1c78ee
|
||||||
templates/back: f541015a827e37cb3b1234e56bc2aa3c
|
templates/back: f541015a827e37cb3b1234e56bc2aa3c
|
||||||
|
templates/block_1: 5e1b4dce0cb70662441b663507a69454
|
||||||
|
templates/block_10: 09a42e99b34b45700e734730acfe37ed
|
||||||
|
templates/block_2: f50d8aab8b44f168a2ab00526d4f9a2c
|
||||||
|
templates/block_3: 78d84f8e4763a95710543c5368ce8a41
|
||||||
|
templates/block_4: 2c346374f245a6821940c061b855ac69
|
||||||
|
templates/block_5: 975abfc66e8e377478ff691a040dda0b
|
||||||
|
templates/block_6: 2bd10f1edb210243c5ab459c59e02d30
|
||||||
|
templates/block_7: 13f0f680c09c96081e125123ad2f6786
|
||||||
|
templates/block_8: 1be1b18e159e8c8d11d2fb1082ea5d98
|
||||||
|
templates/block_9: 2da3894d05e4415fa043ba18d11d60e2
|
||||||
templates/book_interview: 1cc9c72d1c088b28e5dfa5ec7d7b78c4
|
templates/book_interview: 1cc9c72d1c088b28e5dfa5ec7d7b78c4
|
||||||
templates/build_product_roadmap_description: 6ca163ed3b0095cedcbc11822a0d502a
|
templates/build_product_roadmap_description: 6ca163ed3b0095cedcbc11822a0d502a
|
||||||
templates/build_product_roadmap_name: 8c216b183c3539c0340ce87465a391cc
|
templates/build_product_roadmap_name: 8c216b183c3539c0340ce87465a391cc
|
||||||
@@ -2391,7 +2415,7 @@ checksums:
|
|||||||
templates/csat_question_3_choice_8: 6abbde1174a09d7b9d61de382f7f9677
|
templates/csat_question_3_choice_8: 6abbde1174a09d7b9d61de382f7f9677
|
||||||
templates/csat_question_3_choice_9: 4c3429e68c6fbd9a8808285838054e0c
|
templates/csat_question_3_choice_9: 4c3429e68c6fbd9a8808285838054e0c
|
||||||
templates/csat_question_3_headline: 8c6ffa4d4c0fef480bf22f61dbea5ce6
|
templates/csat_question_3_headline: 8c6ffa4d4c0fef480bf22f61dbea5ce6
|
||||||
templates/csat_question_3_subheader: 8169b8e0ff6958f3d617b397f991f7af
|
templates/csat_question_3_subheader: ed43eb9723166fd6a8d8e44356def97e
|
||||||
templates/csat_question_4_choice_1: 3af1ce39d4f133a26c4272c8245ded07
|
templates/csat_question_4_choice_1: 3af1ce39d4f133a26c4272c8245ded07
|
||||||
templates/csat_question_4_choice_2: 78f2c2b121ffbb4633452f7da4e9c338
|
templates/csat_question_4_choice_2: 78f2c2b121ffbb4633452f7da4e9c338
|
||||||
templates/csat_question_4_choice_3: 315f0d4c1497f69ef252d86e486fc715
|
templates/csat_question_4_choice_3: 315f0d4c1497f69ef252d86e486fc715
|
||||||
@@ -2443,7 +2467,6 @@ checksums:
|
|||||||
templates/csat_survey_question_3_headline: 25974b7f1692cad41908fe305830b6c0
|
templates/csat_survey_question_3_headline: 25974b7f1692cad41908fe305830b6c0
|
||||||
templates/csat_survey_question_3_placeholder: 37ee9c84f3777b9220d4faec1e1c78ee
|
templates/csat_survey_question_3_placeholder: 37ee9c84f3777b9220d4faec1e1c78ee
|
||||||
templates/cta_description: bc94a2ddc965b286a8677b0642696c7e
|
templates/cta_description: bc94a2ddc965b286a8677b0642696c7e
|
||||||
templates/custom_survey_block_1_name: 5e1b4dce0cb70662441b663507a69454
|
|
||||||
templates/custom_survey_description: 0492afdea2ef1bd683eaf48a2bad2caa
|
templates/custom_survey_description: 0492afdea2ef1bd683eaf48a2bad2caa
|
||||||
templates/custom_survey_name: 6fc756927ca9ea22c26368cccd64a67e
|
templates/custom_survey_name: 6fc756927ca9ea22c26368cccd64a67e
|
||||||
templates/custom_survey_question_1_headline: 0abf9d41e0b5c5567c3833fd63048398
|
templates/custom_survey_question_1_headline: 0abf9d41e0b5c5567c3833fd63048398
|
||||||
@@ -2846,6 +2869,9 @@ checksums:
|
|||||||
templates/preview_survey_question_2_choice_2_label: 1af148222f327f28cf0db6513de5989e
|
templates/preview_survey_question_2_choice_2_label: 1af148222f327f28cf0db6513de5989e
|
||||||
templates/preview_survey_question_2_headline: 5cfb173d156555227fbc2c97ad921e72
|
templates/preview_survey_question_2_headline: 5cfb173d156555227fbc2c97ad921e72
|
||||||
templates/preview_survey_question_2_subheader: 2e652d8acd68d072e5a0ae686c4011c0
|
templates/preview_survey_question_2_subheader: 2e652d8acd68d072e5a0ae686c4011c0
|
||||||
|
templates/preview_survey_question_open_text_headline: a9509a47e0456ae98ec3ddac3d6fad2c
|
||||||
|
templates/preview_survey_question_open_text_placeholder: 37ee9c84f3777b9220d4faec1e1c78ee
|
||||||
|
templates/preview_survey_question_open_text_subheader: 3c7bf09f3f17b02bc2fbbbdb347a5830
|
||||||
templates/preview_survey_welcome_card_headline: 8778dc41547a2778d0f9482da989fc00
|
templates/preview_survey_welcome_card_headline: 8778dc41547a2778d0f9482da989fc00
|
||||||
templates/prioritize_features_description: 1eae41fad0e3947f803d8539081e59ec
|
templates/prioritize_features_description: 1eae41fad0e3947f803d8539081e59ec
|
||||||
templates/prioritize_features_name: 4ca59ff1f9c319aaa68c3106d820fd6a
|
templates/prioritize_features_name: 4ca59ff1f9c319aaa68c3106d820fd6a
|
||||||
@@ -2915,7 +2941,7 @@ checksums:
|
|||||||
templates/professional_development_survey_question_2_choice_5: cc3b193ad5efcdd4f088745011d8b914
|
templates/professional_development_survey_question_2_choice_5: cc3b193ad5efcdd4f088745011d8b914
|
||||||
templates/professional_development_survey_question_2_choice_6: 79acaa6cd481262bea4e743a422529d2
|
templates/professional_development_survey_question_2_choice_6: 79acaa6cd481262bea4e743a422529d2
|
||||||
templates/professional_development_survey_question_2_headline: b561b69cd31ac95fbf8238534d5aadfc
|
templates/professional_development_survey_question_2_headline: b561b69cd31ac95fbf8238534d5aadfc
|
||||||
templates/professional_development_survey_question_2_subheader: a660423e16f78ad344493388602ac7a7
|
templates/professional_development_survey_question_2_subheader: ed43eb9723166fd6a8d8e44356def97e
|
||||||
templates/professional_development_survey_question_3_choice_1: ec580fd11a45779b039466f1e35eed2a
|
templates/professional_development_survey_question_3_choice_1: ec580fd11a45779b039466f1e35eed2a
|
||||||
templates/professional_development_survey_question_3_choice_2: 8c708225830b06df2d1141c536f2a0d6
|
templates/professional_development_survey_question_3_choice_2: 8c708225830b06df2d1141c536f2a0d6
|
||||||
templates/professional_development_survey_question_3_headline: 6cdb6730878966a48bab260aa5da9973
|
templates/professional_development_survey_question_3_headline: 6cdb6730878966a48bab260aa5da9973
|
||||||
@@ -3094,3 +3120,14 @@ checksums:
|
|||||||
templates/usability_question_9_headline: 5850229e97ae97698ce90b330ea49682
|
templates/usability_question_9_headline: 5850229e97ae97698ce90b330ea49682
|
||||||
templates/usability_rating_description: 8c4f3818fe830ae544611f816265f1a1
|
templates/usability_rating_description: 8c4f3818fe830ae544611f816265f1a1
|
||||||
templates/usability_score_name: 5cbf1172d24dfcb17d979dff6dfdf7e2
|
templates/usability_score_name: 5cbf1172d24dfcb17d979dff6dfdf7e2
|
||||||
|
workflows/coming_soon_description: 1e0621d287924d84fb539afab7372b23
|
||||||
|
workflows/coming_soon_title: d79be80559c70c828cf20811d2ed5039
|
||||||
|
workflows/follow_up_label: 8cafe669370271035aeac8e8cab0f123
|
||||||
|
workflows/follow_up_placeholder: f680918bec28192282e229c3d4b5e80a
|
||||||
|
workflows/generate_button: b194b6172a49af8374a19dd2cf39cfdc
|
||||||
|
workflows/heading: a98a6b14d3e955f38cc16386df9a4111
|
||||||
|
workflows/placeholder: f5d943582bf25e8734930844e598457b
|
||||||
|
workflows/subheading: ebf5e3b3aeb85e13e843358cc5476f42
|
||||||
|
workflows/submit_button: 7a062f2de02ce60b1d73e510ff1ca094
|
||||||
|
workflows/thank_you_description: 7623c1ba4f059c8d9e68aae3360b20b1
|
||||||
|
workflows/thank_you_title: 07edd8c50685a52c0969d711df26d768
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ export const BREVO_LIST_ID = env.BREVO_LIST_ID;
|
|||||||
export const UNSPLASH_ACCESS_KEY = env.UNSPLASH_ACCESS_KEY;
|
export const UNSPLASH_ACCESS_KEY = env.UNSPLASH_ACCESS_KEY;
|
||||||
export const UNSPLASH_ALLOWED_DOMAINS = ["api.unsplash.com"];
|
export const UNSPLASH_ALLOWED_DOMAINS = ["api.unsplash.com"];
|
||||||
|
|
||||||
export const STRIPE_API_VERSION = "2024-06-20";
|
export const STRIPE_API_VERSION = "2026-02-25.clover";
|
||||||
|
|
||||||
// Maximum number of attribute classes allowed:
|
// Maximum number of attribute classes allowed:
|
||||||
export const MAX_ATTRIBUTE_CLASSES_PER_ENVIRONMENT = 150;
|
export const MAX_ATTRIBUTE_CLASSES_PER_ENVIRONMENT = 150;
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ export const getDisplaysBySurveyIdWithContact = reactCache(
|
|||||||
async (surveyId: string, limit?: number, offset?: number): Promise<TDisplayWithContact[]> => {
|
async (surveyId: string, limit?: number, offset?: number): Promise<TDisplayWithContact[]> => {
|
||||||
validateInputs(
|
validateInputs(
|
||||||
[surveyId, ZId],
|
[surveyId, ZId],
|
||||||
[limit, z.number().int().min(1).optional()],
|
[limit, z.int().min(1).optional()],
|
||||||
[offset, z.number().int().nonnegative().optional()]
|
[offset, z.int().nonnegative().optional()]
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
+10
-14
@@ -14,7 +14,7 @@ export const env = createEnv({
|
|||||||
CRON_SECRET: z.string().optional(),
|
CRON_SECRET: z.string().optional(),
|
||||||
BREVO_API_KEY: z.string().optional(),
|
BREVO_API_KEY: z.string().optional(),
|
||||||
BREVO_LIST_ID: z.string().optional(),
|
BREVO_LIST_ID: z.string().optional(),
|
||||||
DATABASE_URL: z.string().url(),
|
DATABASE_URL: z.url(),
|
||||||
DEBUG: z.enum(["1", "0"]).optional(),
|
DEBUG: z.enum(["1", "0"]).optional(),
|
||||||
AUTH_DEFAULT_TEAM_ID: z.string().optional(),
|
AUTH_DEFAULT_TEAM_ID: z.string().optional(),
|
||||||
AUTH_SKIP_INVITE_FOR_SSO: z.enum(["1", "0"]).optional(),
|
AUTH_SKIP_INVITE_FOR_SSO: z.enum(["1", "0"]).optional(),
|
||||||
@@ -23,7 +23,7 @@ export const env = createEnv({
|
|||||||
EMAIL_VERIFICATION_DISABLED: z.enum(["1", "0"]).optional(),
|
EMAIL_VERIFICATION_DISABLED: z.enum(["1", "0"]).optional(),
|
||||||
ENCRYPTION_KEY: z.string(),
|
ENCRYPTION_KEY: z.string(),
|
||||||
ENTERPRISE_LICENSE_KEY: z.string().optional(),
|
ENTERPRISE_LICENSE_KEY: z.string().optional(),
|
||||||
ENVIRONMENT: z.enum(["production", "staging"]).default("production"),
|
ENVIRONMENT: z.enum(["production", "staging"]).prefault("production"),
|
||||||
GITHUB_ID: z.string().optional(),
|
GITHUB_ID: z.string().optional(),
|
||||||
GITHUB_SECRET: z.string().optional(),
|
GITHUB_SECRET: z.string().optional(),
|
||||||
GOOGLE_CLIENT_ID: z.string().optional(),
|
GOOGLE_CLIENT_ID: z.string().optional(),
|
||||||
@@ -31,21 +31,20 @@ export const env = createEnv({
|
|||||||
GOOGLE_SHEETS_CLIENT_ID: z.string().optional(),
|
GOOGLE_SHEETS_CLIENT_ID: z.string().optional(),
|
||||||
GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(),
|
GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(),
|
||||||
GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(),
|
GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(),
|
||||||
HTTP_PROXY: z.string().url().optional(),
|
HTTP_PROXY: z.url().optional(),
|
||||||
HTTPS_PROXY: z.string().url().optional(),
|
HTTPS_PROXY: z.url().optional(),
|
||||||
IMPRINT_URL: z
|
IMPRINT_URL: z
|
||||||
.string()
|
|
||||||
.url()
|
.url()
|
||||||
.optional()
|
.optional()
|
||||||
.or(z.string().refine((str) => str === "")),
|
.or(z.string().refine((str) => str === "")),
|
||||||
IMPRINT_ADDRESS: z.string().optional(),
|
IMPRINT_ADDRESS: z.string().optional(),
|
||||||
INVITE_DISABLED: z.enum(["1", "0"]).optional(),
|
INVITE_DISABLED: z.enum(["1", "0"]).optional(),
|
||||||
CHATWOOT_WEBSITE_TOKEN: z.string().optional(),
|
CHATWOOT_WEBSITE_TOKEN: z.string().optional(),
|
||||||
CHATWOOT_BASE_URL: z.string().url().optional(),
|
CHATWOOT_BASE_URL: z.url().optional(),
|
||||||
IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(),
|
IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(),
|
||||||
LOG_LEVEL: z.enum(["debug", "info", "warn", "error", "fatal"]).optional(),
|
LOG_LEVEL: z.enum(["debug", "info", "warn", "error", "fatal"]).optional(),
|
||||||
MAIL_FROM: z.string().email().optional(),
|
MAIL_FROM: z.email().optional(),
|
||||||
NEXTAUTH_URL: z.string().url().optional(),
|
NEXTAUTH_URL: z.url().optional(),
|
||||||
NEXTAUTH_SECRET: z.string().optional(),
|
NEXTAUTH_SECRET: z.string().optional(),
|
||||||
MAIL_FROM_NAME: z.string().optional(),
|
MAIL_FROM_NAME: z.string().optional(),
|
||||||
NOTION_OAUTH_CLIENT_ID: z.string().optional(),
|
NOTION_OAUTH_CLIENT_ID: z.string().optional(),
|
||||||
@@ -58,10 +57,9 @@ export const env = createEnv({
|
|||||||
REDIS_URL:
|
REDIS_URL:
|
||||||
process.env.NODE_ENV === "test"
|
process.env.NODE_ENV === "test"
|
||||||
? z.string().optional()
|
? z.string().optional()
|
||||||
: z.string().url("REDIS_URL is required for caching, rate limiting, and audit logging"),
|
: z.url("REDIS_URL is required for caching, rate limiting, and audit logging"),
|
||||||
PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(),
|
PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(),
|
||||||
PRIVACY_URL: z
|
PRIVACY_URL: z
|
||||||
.string()
|
|
||||||
.url()
|
.url()
|
||||||
.optional()
|
.optional()
|
||||||
.or(z.string().refine((str) => str === "")),
|
.or(z.string().refine((str) => str === "")),
|
||||||
@@ -86,7 +84,6 @@ export const env = createEnv({
|
|||||||
STRIPE_SECRET_KEY: z.string().optional(),
|
STRIPE_SECRET_KEY: z.string().optional(),
|
||||||
STRIPE_WEBHOOK_SECRET: z.string().optional(),
|
STRIPE_WEBHOOK_SECRET: z.string().optional(),
|
||||||
PUBLIC_URL: z
|
PUBLIC_URL: z
|
||||||
.string()
|
|
||||||
.url()
|
.url()
|
||||||
.refine(
|
.refine(
|
||||||
(url) => {
|
(url) => {
|
||||||
@@ -98,12 +95,11 @@ export const env = createEnv({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: "PUBLIC_URL must be a valid URL with a proper host (e.g., https://example.com)",
|
error: "PUBLIC_URL must be a valid URL with a proper host (e.g., https://example.com)",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.optional(),
|
.optional(),
|
||||||
TERMS_URL: z
|
TERMS_URL: z
|
||||||
.string()
|
|
||||||
.url()
|
.url()
|
||||||
.optional()
|
.optional()
|
||||||
.or(z.string().refine((str) => str === "")),
|
.or(z.string().refine((str) => str === "")),
|
||||||
@@ -112,7 +108,7 @@ export const env = createEnv({
|
|||||||
RECAPTCHA_SITE_KEY: z.string().optional(),
|
RECAPTCHA_SITE_KEY: z.string().optional(),
|
||||||
RECAPTCHA_SECRET_KEY: z.string().optional(),
|
RECAPTCHA_SECRET_KEY: z.string().optional(),
|
||||||
VERCEL_URL: z.string().optional(),
|
VERCEL_URL: z.string().optional(),
|
||||||
WEBAPP_URL: z.string().url().optional(),
|
WEBAPP_URL: z.url().optional(),
|
||||||
UNSPLASH_ACCESS_KEY: z.string().optional(),
|
UNSPLASH_ACCESS_KEY: z.string().optional(),
|
||||||
|
|
||||||
NODE_ENV: z.enum(["development", "production", "test"]).optional(),
|
NODE_ENV: z.enum(["development", "production", "test"]).optional(),
|
||||||
|
|||||||
@@ -1,44 +1,66 @@
|
|||||||
import { beforeEach, describe, expect, test, vi } from "vitest";
|
import { beforeEach, describe, expect, test, vi } from "vitest";
|
||||||
|
|
||||||
// Mock constants module
|
|
||||||
const envMock = {
|
const envMock = {
|
||||||
env: {
|
WEBAPP_URL: undefined as string | undefined,
|
||||||
WEBAPP_URL: "http://localhost:3000",
|
VERCEL_URL: undefined as string | undefined,
|
||||||
PUBLIC_URL: undefined as string | undefined,
|
PUBLIC_URL: undefined as string | undefined,
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vi.mock("@/lib/env", () => envMock);
|
vi.mock("./env", () => ({
|
||||||
|
env: envMock,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const loadGetPublicDomain = async () => {
|
||||||
|
vi.resetModules();
|
||||||
|
const { getPublicDomain } = await import("./getPublicUrl");
|
||||||
|
return getPublicDomain;
|
||||||
|
};
|
||||||
|
|
||||||
describe("getPublicDomain", () => {
|
describe("getPublicDomain", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
vi.resetModules();
|
envMock.WEBAPP_URL = undefined;
|
||||||
|
envMock.VERCEL_URL = undefined;
|
||||||
|
envMock.PUBLIC_URL = undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should return WEBAPP_URL when PUBLIC_URL is not set", async () => {
|
test("returns trimmed WEBAPP_URL when configured", async () => {
|
||||||
const { getPublicDomain } = await import("./getPublicUrl");
|
envMock.WEBAPP_URL = " https://app.formbricks.com ";
|
||||||
const domain = getPublicDomain();
|
|
||||||
expect(domain).toBe("http://localhost:3000");
|
const getPublicDomain = await loadGetPublicDomain();
|
||||||
|
|
||||||
|
expect(getPublicDomain()).toBe("https://app.formbricks.com");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should return PUBLIC_URL when it is set", async () => {
|
test("falls back to VERCEL_URL when WEBAPP_URL is empty", async () => {
|
||||||
envMock.env.PUBLIC_URL = "https://surveys.example.com";
|
envMock.WEBAPP_URL = " ";
|
||||||
const { getPublicDomain } = await import("./getPublicUrl");
|
envMock.VERCEL_URL = "preview.formbricks.com";
|
||||||
const domain = getPublicDomain();
|
|
||||||
expect(domain).toBe("https://surveys.example.com");
|
const getPublicDomain = await loadGetPublicDomain();
|
||||||
|
|
||||||
|
expect(getPublicDomain()).toBe("https://preview.formbricks.com");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should handle empty string PUBLIC_URL by returning WEBAPP_URL", async () => {
|
test("falls back to localhost when WEBAPP_URL and VERCEL_URL are not set", async () => {
|
||||||
envMock.env.PUBLIC_URL = "";
|
const getPublicDomain = await loadGetPublicDomain();
|
||||||
const { getPublicDomain } = await import("./getPublicUrl");
|
|
||||||
const domain = getPublicDomain();
|
expect(getPublicDomain()).toBe("http://localhost:3000");
|
||||||
expect(domain).toBe("http://localhost:3000");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("should handle undefined PUBLIC_URL by returning WEBAPP_URL", async () => {
|
test("returns PUBLIC_URL when set", async () => {
|
||||||
envMock.env.PUBLIC_URL = undefined;
|
envMock.WEBAPP_URL = "https://app.formbricks.com";
|
||||||
const { getPublicDomain } = await import("./getPublicUrl");
|
envMock.PUBLIC_URL = "https://surveys.formbricks.com";
|
||||||
const domain = getPublicDomain();
|
|
||||||
expect(domain).toBe("http://localhost:3000");
|
const getPublicDomain = await loadGetPublicDomain();
|
||||||
|
|
||||||
|
expect(getPublicDomain()).toBe("https://surveys.formbricks.com");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("falls back to WEBAPP_URL when PUBLIC_URL is empty", async () => {
|
||||||
|
envMock.WEBAPP_URL = "https://app.formbricks.com";
|
||||||
|
envMock.PUBLIC_URL = " ";
|
||||||
|
|
||||||
|
const getPublicDomain = await loadGetPublicDomain();
|
||||||
|
|
||||||
|
expect(getPublicDomain()).toBe("https://app.formbricks.com");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,18 @@
|
|||||||
import "server-only";
|
import "server-only";
|
||||||
import { env } from "./env";
|
import { env } from "./env";
|
||||||
|
|
||||||
const WEBAPP_URL =
|
const configuredWebappUrl = env.WEBAPP_URL?.trim() ?? "";
|
||||||
env.WEBAPP_URL ?? (env.VERCEL_URL ? `https://${env.VERCEL_URL}` : "") ?? "http://localhost:3000";
|
const WEBAPP_URL = (() => {
|
||||||
|
if (configuredWebappUrl !== "") {
|
||||||
|
return configuredWebappUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (env.VERCEL_URL) {
|
||||||
|
return `https://${env.VERCEL_URL}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "http://localhost:3000";
|
||||||
|
})();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the public domain URL
|
* Returns the public domain URL
|
||||||
|
|||||||
@@ -130,84 +130,102 @@ export const appLanguages = [
|
|||||||
code: "de-DE",
|
code: "de-DE",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "German",
|
"en-US": "German",
|
||||||
|
native: "Deutsch",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "en-US",
|
code: "en-US",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "English (US)",
|
"en-US": "English (US)",
|
||||||
|
native: "English (US)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "es-ES",
|
code: "es-ES",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Spanish",
|
"en-US": "Spanish",
|
||||||
|
native: "Español",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "fr-FR",
|
code: "fr-FR",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "French",
|
"en-US": "French",
|
||||||
|
native: "Français",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "hu-HU",
|
code: "hu-HU",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Hungarian",
|
"en-US": "Hungarian",
|
||||||
|
native: "Magyar",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "ja-JP",
|
code: "ja-JP",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Japanese",
|
"en-US": "Japanese",
|
||||||
|
native: "日本語",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "nl-NL",
|
code: "nl-NL",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Dutch",
|
"en-US": "Dutch",
|
||||||
|
native: "Nederlands",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "pt-BR",
|
code: "pt-BR",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Portuguese (Brazil)",
|
"en-US": "Portuguese (Brazil)",
|
||||||
|
native: "Português (Brasil)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "pt-PT",
|
code: "pt-PT",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Portuguese (Portugal)",
|
"en-US": "Portuguese (Portugal)",
|
||||||
|
native: "Português (Portugal)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "ro-RO",
|
code: "ro-RO",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Romanian",
|
"en-US": "Romanian",
|
||||||
|
native: "Română",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "ru-RU",
|
code: "ru-RU",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Russian",
|
"en-US": "Russian",
|
||||||
|
native: "Русский",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "sv-SE",
|
code: "sv-SE",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Swedish",
|
"en-US": "Swedish",
|
||||||
|
native: "Svenska",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "zh-Hans-CN",
|
code: "zh-Hans-CN",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Chinese (Simplified)",
|
"en-US": "Chinese (Simplified)",
|
||||||
|
native: "简体中文",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: "zh-Hant-TW",
|
code: "zh-Hant-TW",
|
||||||
label: {
|
label: {
|
||||||
"en-US": "Chinese (Traditional)",
|
"en-US": "Chinese (Traditional)",
|
||||||
|
native: "繁體中文",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const sortedAppLanguages = [...appLanguages].sort((a, b) =>
|
||||||
|
a.label["en-US"].localeCompare(b.label["en-US"])
|
||||||
|
);
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ export const getResponses = reactCache(
|
|||||||
[limit, ZOptionalNumber],
|
[limit, ZOptionalNumber],
|
||||||
[offset, ZOptionalNumber],
|
[offset, ZOptionalNumber],
|
||||||
[filterCriteria, ZResponseFilterCriteria.optional()],
|
[filterCriteria, ZResponseFilterCriteria.optional()],
|
||||||
[cursor, z.string().cuid2().optional()]
|
[cursor, z.cuid2().optional()]
|
||||||
);
|
);
|
||||||
|
|
||||||
limit = limit ?? RESPONSES_PER_PAGE;
|
limit = limit ?? RESPONSES_PER_PAGE;
|
||||||
@@ -397,7 +397,6 @@ export const getResponseDownloadFile = async (
|
|||||||
"Survey ID",
|
"Survey ID",
|
||||||
"Formbricks ID (internal)",
|
"Formbricks ID (internal)",
|
||||||
"User ID",
|
"User ID",
|
||||||
"Notes",
|
|
||||||
"Tags",
|
"Tags",
|
||||||
...metaDataFields,
|
...metaDataFields,
|
||||||
...elements.flat(),
|
...elements.flat(),
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ export const getSuggestedColors = (brandColor: string = DEFAULT_BRAND_COLOR) =>
|
|||||||
// Options (Radio / Checkbox)
|
// Options (Radio / Checkbox)
|
||||||
"optionBgColor.light": inputBg,
|
"optionBgColor.light": inputBg,
|
||||||
"optionLabelColor.light": questionColor,
|
"optionLabelColor.light": questionColor,
|
||||||
|
"optionBorderColor.light": inputBorder,
|
||||||
|
|
||||||
// Card
|
// Card
|
||||||
"cardBackgroundColor.light": cardBg,
|
"cardBackgroundColor.light": cardBg,
|
||||||
@@ -138,6 +139,7 @@ export const STYLE_DEFAULTS: TProjectStyling = {
|
|||||||
// Options
|
// Options
|
||||||
optionBgColor: { light: _colors["optionBgColor.light"] },
|
optionBgColor: { light: _colors["optionBgColor.light"] },
|
||||||
optionLabelColor: { light: _colors["optionLabelColor.light"] },
|
optionLabelColor: { light: _colors["optionLabelColor.light"] },
|
||||||
|
optionBorderColor: { light: _colors["optionBorderColor.light"] },
|
||||||
optionBorderRadius: 8,
|
optionBorderRadius: 8,
|
||||||
optionPaddingX: 16,
|
optionPaddingX: 16,
|
||||||
optionPaddingY: 16,
|
optionPaddingY: 16,
|
||||||
@@ -169,6 +171,7 @@ export const deriveNewFieldsFromLegacy = (saved: Record<string, unknown>): Recor
|
|||||||
const q = light("questionColor");
|
const q = light("questionColor");
|
||||||
const b = light("brandColor");
|
const b = light("brandColor");
|
||||||
const i = light("inputColor");
|
const i = light("inputColor");
|
||||||
|
const inputBorder = light("inputBorderColor");
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...(q && !saved.elementHeadlineColor && { elementHeadlineColor: { light: q } }),
|
...(q && !saved.elementHeadlineColor && { elementHeadlineColor: { light: q } }),
|
||||||
@@ -179,9 +182,9 @@ export const deriveNewFieldsFromLegacy = (saved: Record<string, unknown>): Recor
|
|||||||
...(b && !saved.buttonBgColor && { buttonBgColor: { light: b } }),
|
...(b && !saved.buttonBgColor && { buttonBgColor: { light: b } }),
|
||||||
...(b && !saved.buttonTextColor && { buttonTextColor: { light: isLight(b) ? "#0f172a" : "#ffffff" } }),
|
...(b && !saved.buttonTextColor && { buttonTextColor: { light: isLight(b) ? "#0f172a" : "#ffffff" } }),
|
||||||
...(i && !saved.optionBgColor && { optionBgColor: { light: i } }),
|
...(i && !saved.optionBgColor && { optionBgColor: { light: i } }),
|
||||||
|
...(inputBorder && !saved.optionBorderColor && { optionBorderColor: { light: inputBorder } }),
|
||||||
...(b && !saved.progressIndicatorBgColor && { progressIndicatorBgColor: { light: b } }),
|
...(b && !saved.progressIndicatorBgColor && { progressIndicatorBgColor: { light: b } }),
|
||||||
...(b &&
|
...(b && !saved.progressTrackBgColor && { progressTrackBgColor: { light: mixColor(b, "#ffffff", 0.8) } }),
|
||||||
!saved.progressTrackBgColor && { progressTrackBgColor: { light: mixColor(b, "#ffffff", 0.8) } }),
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -211,6 +214,7 @@ export const buildStylingFromBrandColor = (brandColor: string = DEFAULT_BRAND_CO
|
|||||||
inputTextColor: { light: colors["inputTextColor.light"] },
|
inputTextColor: { light: colors["inputTextColor.light"] },
|
||||||
optionBgColor: { light: colors["optionBgColor.light"] },
|
optionBgColor: { light: colors["optionBgColor.light"] },
|
||||||
optionLabelColor: { light: colors["optionLabelColor.light"] },
|
optionLabelColor: { light: colors["optionLabelColor.light"] },
|
||||||
|
optionBorderColor: { light: colors["optionBorderColor.light"] },
|
||||||
cardBackgroundColor: { light: colors["cardBackgroundColor.light"] },
|
cardBackgroundColor: { light: colors["cardBackgroundColor.light"] },
|
||||||
cardBorderColor: { light: colors["cardBorderColor.light"] },
|
cardBorderColor: { light: colors["cardBorderColor.light"] },
|
||||||
highlightBorderColor: { light: colors["highlightBorderColor.light"] },
|
highlightBorderColor: { light: colors["highlightBorderColor.light"] },
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {
|
|||||||
getOrganizationByEnvironmentId,
|
getOrganizationByEnvironmentId,
|
||||||
subscribeOrganizationMembersToSurveyResponses,
|
subscribeOrganizationMembersToSurveyResponses,
|
||||||
} from "@/lib/organization/service";
|
} from "@/lib/organization/service";
|
||||||
|
import { TriggerUpdate } from "@/modules/survey/editor/types/survey-trigger";
|
||||||
import { getActionClasses } from "../actionClass/service";
|
import { getActionClasses } from "../actionClass/service";
|
||||||
import { ITEMS_PER_PAGE } from "../constants";
|
import { ITEMS_PER_PAGE } from "../constants";
|
||||||
import { validateInputs } from "../utils/validate";
|
import { validateInputs } from "../utils/validate";
|
||||||
@@ -22,15 +23,6 @@ import {
|
|||||||
validateMediaAndPrepareBlocks,
|
validateMediaAndPrepareBlocks,
|
||||||
} from "./utils";
|
} from "./utils";
|
||||||
|
|
||||||
interface TriggerUpdate {
|
|
||||||
create?: Array<{ actionClassId: string }>;
|
|
||||||
deleteMany?: {
|
|
||||||
actionClassId: {
|
|
||||||
in: string[];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export const selectSurvey = {
|
export const selectSurvey = {
|
||||||
id: true,
|
id: true,
|
||||||
createdAt: true,
|
createdAt: true,
|
||||||
@@ -114,19 +106,32 @@ export const selectSurvey = {
|
|||||||
slug: true,
|
slug: true,
|
||||||
} satisfies Prisma.SurveySelect;
|
} satisfies Prisma.SurveySelect;
|
||||||
|
|
||||||
|
const getTriggerIds = (triggers: TSurvey["triggers"]): string[] | null => {
|
||||||
|
if (!triggers) return null;
|
||||||
|
if (!Array.isArray(triggers)) {
|
||||||
|
throw new InvalidInputError("Invalid trigger id");
|
||||||
|
}
|
||||||
|
|
||||||
|
return triggers.map((trigger) => {
|
||||||
|
const actionClassId = trigger?.actionClass?.id;
|
||||||
|
if (typeof actionClassId !== "string") {
|
||||||
|
throw new InvalidInputError("Invalid trigger id");
|
||||||
|
}
|
||||||
|
return actionClassId;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export const checkTriggersValidity = (triggers: TSurvey["triggers"], actionClasses: ActionClass[]) => {
|
export const checkTriggersValidity = (triggers: TSurvey["triggers"], actionClasses: ActionClass[]) => {
|
||||||
if (!triggers) return;
|
const triggerIds = getTriggerIds(triggers);
|
||||||
|
if (!triggerIds) return;
|
||||||
|
|
||||||
// check if all the triggers are valid
|
// check if all the triggers are valid
|
||||||
triggers.forEach((trigger) => {
|
triggerIds.forEach((triggerId) => {
|
||||||
if (!actionClasses.find((actionClass) => actionClass.id === trigger.actionClass.id)) {
|
if (!actionClasses.find((actionClass) => actionClass.id === triggerId)) {
|
||||||
throw new InvalidInputError("Invalid trigger id");
|
throw new InvalidInputError("Invalid trigger id");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// check if all the triggers are unique
|
|
||||||
const triggerIds = triggers.map((trigger) => trigger.actionClass.id);
|
|
||||||
|
|
||||||
if (new Set(triggerIds).size !== triggerIds.length) {
|
if (new Set(triggerIds).size !== triggerIds.length) {
|
||||||
throw new InvalidInputError("Duplicate trigger id");
|
throw new InvalidInputError("Duplicate trigger id");
|
||||||
}
|
}
|
||||||
@@ -137,36 +142,33 @@ export const handleTriggerUpdates = (
|
|||||||
currentTriggers: TSurvey["triggers"],
|
currentTriggers: TSurvey["triggers"],
|
||||||
actionClasses: ActionClass[]
|
actionClasses: ActionClass[]
|
||||||
) => {
|
) => {
|
||||||
if (!updatedTriggers) return {};
|
const updatedTriggerIds = getTriggerIds(updatedTriggers);
|
||||||
|
if (!updatedTriggerIds) return {};
|
||||||
|
|
||||||
checkTriggersValidity(updatedTriggers, actionClasses);
|
checkTriggersValidity(updatedTriggers, actionClasses);
|
||||||
|
|
||||||
const currentTriggerIds = currentTriggers.map((trigger) => trigger.actionClass.id);
|
const currentTriggerIds = getTriggerIds(currentTriggers) ?? [];
|
||||||
const updatedTriggerIds = updatedTriggers.map((trigger) => trigger.actionClass.id);
|
|
||||||
|
|
||||||
// added triggers are triggers that are not in the current triggers and are there in the new triggers
|
// added triggers are triggers that are not in the current triggers and are there in the new triggers
|
||||||
const addedTriggers = updatedTriggers.filter(
|
const addedTriggerIds = updatedTriggerIds.filter((triggerId) => !currentTriggerIds.includes(triggerId));
|
||||||
(trigger) => !currentTriggerIds.includes(trigger.actionClass.id)
|
|
||||||
);
|
|
||||||
|
|
||||||
// deleted triggers are triggers that are not in the new triggers and are there in the current triggers
|
// deleted triggers are triggers that are not in the new triggers and are there in the current triggers
|
||||||
const deletedTriggers = currentTriggers.filter(
|
const deletedTriggerIds = currentTriggerIds.filter((triggerId) => !updatedTriggerIds.includes(triggerId));
|
||||||
(trigger) => !updatedTriggerIds.includes(trigger.actionClass.id)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Construct the triggers update object
|
// Construct the triggers update object
|
||||||
const triggersUpdate: TriggerUpdate = {};
|
const triggersUpdate: TriggerUpdate = {};
|
||||||
|
|
||||||
if (addedTriggers.length > 0) {
|
if (addedTriggerIds.length > 0) {
|
||||||
triggersUpdate.create = addedTriggers.map((trigger) => ({
|
triggersUpdate.create = addedTriggerIds.map((triggerId) => ({
|
||||||
actionClassId: trigger.actionClass.id,
|
actionClassId: triggerId,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deletedTriggers.length > 0) {
|
if (deletedTriggerIds.length > 0) {
|
||||||
// disconnect the public triggers from the survey
|
// disconnect the public triggers from the survey
|
||||||
triggersUpdate.deleteMany = {
|
triggersUpdate.deleteMany = {
|
||||||
actionClassId: {
|
actionClassId: {
|
||||||
in: deletedTriggers.map((trigger) => trigger.actionClass.id),
|
in: deletedTriggerIds,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -508,6 +510,7 @@ export const updateSurveyInternal = async (
|
|||||||
newFollowUps.length > 0
|
newFollowUps.length > 0
|
||||||
? {
|
? {
|
||||||
data: newFollowUps.map((followUp) => ({
|
data: newFollowUps.map((followUp) => ({
|
||||||
|
id: followUp.id,
|
||||||
name: followUp.name,
|
name: followUp.name,
|
||||||
trigger: followUp.trigger,
|
trigger: followUp.trigger,
|
||||||
action: followUp.action,
|
action: followUp.action,
|
||||||
@@ -599,21 +602,16 @@ export const createSurvey = async (
|
|||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { createdBy, ...restSurveyBody } = parsedSurveyBody;
|
const { createdBy, languages, ...restSurveyBody } = parsedSurveyBody;
|
||||||
|
|
||||||
// empty languages array
|
|
||||||
if (!restSurveyBody.languages?.length) {
|
|
||||||
delete restSurveyBody.languages;
|
|
||||||
}
|
|
||||||
|
|
||||||
const actionClasses = await getActionClasses(parsedEnvironmentId);
|
const actionClasses = await getActionClasses(parsedEnvironmentId);
|
||||||
|
|
||||||
// @ts-expect-error
|
|
||||||
let data: Omit<Prisma.SurveyCreateInput, "environment"> = {
|
let data: Omit<Prisma.SurveyCreateInput, "environment"> = {
|
||||||
...restSurveyBody,
|
...restSurveyBody,
|
||||||
// TODO: Create with attributeFilters
|
// @ts-expect-error - languages would be undefined in case of empty array
|
||||||
|
languages: languages?.length ? languages : undefined,
|
||||||
triggers: restSurveyBody.triggers
|
triggers: restSurveyBody.triggers
|
||||||
? handleTriggerUpdates(restSurveyBody.triggers, [], actionClasses)
|
? // @ts-expect-error - triggers' createdAt and updatedAt are actually dates
|
||||||
|
handleTriggerUpdates(restSurveyBody.triggers, [], actionClasses)
|
||||||
: undefined,
|
: undefined,
|
||||||
attributeFilters: undefined,
|
attributeFilters: undefined,
|
||||||
};
|
};
|
||||||
@@ -782,15 +780,13 @@ export const loadNewSegmentInSurvey = async (surveyId: string, newSegmentId: str
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Fix this, this happens because the survey type "web" is no longer in the zod types but its required in the schema for migration
|
const modifiedSurvey = {
|
||||||
// @ts-expect-error
|
...prismaSurvey,
|
||||||
const modifiedSurvey: TSurvey = {
|
|
||||||
...prismaSurvey, // Properties from prismaSurvey
|
|
||||||
segment: surveySegment,
|
segment: surveySegment,
|
||||||
customHeadScriptsMode: prismaSurvey.customHeadScriptsMode,
|
customHeadScriptsMode: prismaSurvey.customHeadScriptsMode,
|
||||||
};
|
};
|
||||||
|
|
||||||
return modifiedSurvey;
|
return modifiedSurvey as TSurvey;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof Prisma.PrismaClientKnownRequestError) {
|
if (error instanceof Prisma.PrismaClientKnownRequestError) {
|
||||||
throw new DatabaseError(error.message);
|
throw new DatabaseError(error.message);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export const getUser = reactCache(async (id: string): Promise<TUser | null> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getUserByEmail = reactCache(async (email: string): Promise<TUser | null> => {
|
export const getUserByEmail = reactCache(async (email: string): Promise<TUser | null> => {
|
||||||
validateInputs([email, z.string().email()]);
|
validateInputs([email, z.email()]);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const user = await prisma.user.findFirst({
|
const user = await prisma.user.findFirst({
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import cuid2 from "@paralleldrive/cuid2";
|
import * as cuid2 from "@paralleldrive/cuid2";
|
||||||
import { beforeEach, describe, expect, test, vi } from "vitest";
|
import { beforeEach, describe, expect, test, vi } from "vitest";
|
||||||
import * as crypto from "@/lib/crypto";
|
import * as crypto from "@/lib/crypto";
|
||||||
import { env } from "@/lib/env";
|
import { env } from "@/lib/env";
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import cuid2 from "@paralleldrive/cuid2";
|
import { createId } from "@paralleldrive/cuid2";
|
||||||
import { symmetricEncrypt } from "@/lib/crypto";
|
import { symmetricEncrypt } from "@/lib/crypto";
|
||||||
import { env } from "@/lib/env";
|
import { env } from "@/lib/env";
|
||||||
|
|
||||||
// generate encrypted single use id for the survey
|
// generate encrypted single use id for the survey
|
||||||
export const generateSurveySingleUseId = (isEncrypted: boolean): string => {
|
export const generateSurveySingleUseId = (isEncrypted: boolean): string => {
|
||||||
const cuid = cuid2.createId();
|
const cuid = createId();
|
||||||
if (!isEncrypted) {
|
if (!isEncrypted) {
|
||||||
return cuid;
|
return cuid;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,297 @@
|
|||||||
|
import dns from "node:dns";
|
||||||
|
import { afterEach, describe, expect, test, vi } from "vitest";
|
||||||
|
import { validateWebhookUrl } from "./validate-webhook-url";
|
||||||
|
|
||||||
|
vi.mock("node:dns", () => ({
|
||||||
|
default: {
|
||||||
|
resolve: vi.fn(),
|
||||||
|
resolve6: vi.fn(),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
const mockResolve = vi.mocked(dns.resolve);
|
||||||
|
const mockResolve6 = vi.mocked(dns.resolve6);
|
||||||
|
|
||||||
|
type DnsCallback = (err: NodeJS.ErrnoException | null, addresses: string[]) => void;
|
||||||
|
|
||||||
|
const setupDnsResolution = (ipv4: string[] | null, ipv6: string[] | null = null): void => {
|
||||||
|
// dns.resolve/resolve6 have overloaded signatures; we only mock the (hostname, callback) form
|
||||||
|
mockResolve.mockImplementation(((_hostname: string, callback: DnsCallback) => {
|
||||||
|
if (ipv4) {
|
||||||
|
callback(null, ipv4);
|
||||||
|
} else {
|
||||||
|
callback(new Error("ENOTFOUND"), []);
|
||||||
|
}
|
||||||
|
}) as never);
|
||||||
|
|
||||||
|
mockResolve6.mockImplementation(((_hostname: string, callback: DnsCallback) => {
|
||||||
|
if (ipv6) {
|
||||||
|
callback(null, ipv6);
|
||||||
|
} else {
|
||||||
|
callback(new Error("ENOTFOUND"), []);
|
||||||
|
}
|
||||||
|
}) as never);
|
||||||
|
};
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
vi.clearAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("validateWebhookUrl", () => {
|
||||||
|
describe("valid public URLs", () => {
|
||||||
|
test("accepts HTTPS URL resolving to a public IPv4 address", async () => {
|
||||||
|
setupDnsResolution(["93.184.216.34"]);
|
||||||
|
await expect(validateWebhookUrl("https://example.com/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("accepts HTTP URL resolving to a public IPv4 address", async () => {
|
||||||
|
setupDnsResolution(["93.184.216.34"]);
|
||||||
|
await expect(validateWebhookUrl("http://example.com/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("accepts URL with port and path segments", async () => {
|
||||||
|
setupDnsResolution(["93.184.216.34"]);
|
||||||
|
await expect(validateWebhookUrl("https://example.com:8443/api/v1/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("accepts URL resolving to a public IPv6 address", async () => {
|
||||||
|
setupDnsResolution(null, ["2606:2800:220:1:248:1893:25c8:1946"]);
|
||||||
|
await expect(validateWebhookUrl("https://example.com/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("accepts a public IPv4 address as hostname", async () => {
|
||||||
|
await expect(validateWebhookUrl("https://93.184.216.34/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("URL format validation", () => {
|
||||||
|
test("rejects a completely malformed string", async () => {
|
||||||
|
await expect(validateWebhookUrl("not-a-url")).rejects.toThrow("Invalid webhook URL format");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects an empty string", async () => {
|
||||||
|
await expect(validateWebhookUrl("")).rejects.toThrow("Invalid webhook URL format");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("protocol validation", () => {
|
||||||
|
test("rejects FTP protocol", async () => {
|
||||||
|
await expect(validateWebhookUrl("ftp://example.com/file")).rejects.toThrow(
|
||||||
|
"Webhook URL must use HTTPS or HTTP protocol"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects file:// protocol", async () => {
|
||||||
|
await expect(validateWebhookUrl("file:///etc/passwd")).rejects.toThrow(
|
||||||
|
"Webhook URL must use HTTPS or HTTP protocol"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects javascript: protocol", async () => {
|
||||||
|
await expect(validateWebhookUrl("javascript:alert(1)")).rejects.toThrow(
|
||||||
|
"Webhook URL must use HTTPS or HTTP protocol"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("blocked hostname validation", () => {
|
||||||
|
test("rejects localhost", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://localhost/admin")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to localhost or internal services"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects localhost.localdomain", async () => {
|
||||||
|
await expect(validateWebhookUrl("https://localhost.localdomain/path")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to localhost or internal services"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects metadata.google.internal", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://metadata.google.internal/computeMetadata/v1/")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to localhost or internal services"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("private IPv4 literal blocking", () => {
|
||||||
|
test("rejects 127.0.0.1 (loopback)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://127.0.0.1/metadata")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 127.0.0.53 (loopback range)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://127.0.0.53/")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 10.0.0.1 (Class A private)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://10.0.0.1/internal")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 172.16.0.1 (Class B private)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://172.16.0.1/internal")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 172.31.255.255 (Class B private upper bound)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://172.31.255.255/internal")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 192.168.1.1 (Class C private)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://192.168.1.1/internal")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 169.254.169.254 (AWS/GCP/Azure metadata endpoint)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://169.254.169.254/latest/meta-data/")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 0.0.0.0 ('this' network)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://0.0.0.0/")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects 100.64.0.1 (CGNAT / shared address space)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://100.64.0.1/")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("DNS resolution with private IP results", () => {
|
||||||
|
test("rejects hostname resolving to loopback address", async () => {
|
||||||
|
setupDnsResolution(["127.0.0.1"]);
|
||||||
|
await expect(validateWebhookUrl("https://evil.com/steal")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to cloud metadata endpoint IP", async () => {
|
||||||
|
setupDnsResolution(["169.254.169.254"]);
|
||||||
|
await expect(validateWebhookUrl("https://attacker.com/ssrf")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to Class A private network", async () => {
|
||||||
|
setupDnsResolution(["10.0.0.5"]);
|
||||||
|
await expect(validateWebhookUrl("https://internal.service/api")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to Class C private network", async () => {
|
||||||
|
setupDnsResolution(["192.168.0.1"]);
|
||||||
|
await expect(validateWebhookUrl("https://sneaky.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to IPv6 loopback", async () => {
|
||||||
|
setupDnsResolution(null, ["::1"]);
|
||||||
|
await expect(validateWebhookUrl("https://sneaky.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to IPv6 link-local", async () => {
|
||||||
|
setupDnsResolution(null, ["fe80::1"]);
|
||||||
|
await expect(validateWebhookUrl("https://link-local.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to IPv6 unique local address", async () => {
|
||||||
|
setupDnsResolution(null, ["fd12:3456:789a::1"]);
|
||||||
|
await expect(validateWebhookUrl("https://ula.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to IPv4-mapped IPv6 private address (dotted)", async () => {
|
||||||
|
setupDnsResolution(null, ["::ffff:192.168.1.1"]);
|
||||||
|
await expect(validateWebhookUrl("https://mapped.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hostname resolving to IPv4-mapped IPv6 private address (hex-encoded)", async () => {
|
||||||
|
setupDnsResolution(null, ["::ffff:c0a8:0101"]); // 192.168.1.1 in hex
|
||||||
|
await expect(validateWebhookUrl("https://hex-mapped.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hex-encoded IPv4-mapped loopback (::ffff:7f00:0001)", async () => {
|
||||||
|
setupDnsResolution(null, ["::ffff:7f00:0001"]); // 127.0.0.1 in hex
|
||||||
|
await expect(validateWebhookUrl("https://hex-loopback.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects hex-encoded IPv4-mapped metadata endpoint (::ffff:a9fe:a9fe)", async () => {
|
||||||
|
setupDnsResolution(null, ["::ffff:a9fe:a9fe"]); // 169.254.169.254 in hex
|
||||||
|
await expect(validateWebhookUrl("https://hex-metadata.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("accepts hex-encoded IPv4-mapped public address", async () => {
|
||||||
|
setupDnsResolution(null, ["::ffff:5db8:d822"]); // 93.184.216.34 in hex
|
||||||
|
await expect(validateWebhookUrl("https://hex-public.example.com/webhook")).resolves.toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects when any resolved IP is private (mixed public + private)", async () => {
|
||||||
|
setupDnsResolution(["93.184.216.34", "192.168.1.1"]);
|
||||||
|
await expect(validateWebhookUrl("https://dual.example.com/webhook")).rejects.toThrow(
|
||||||
|
"Webhook URL must not point to private or internal IP addresses"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects unresolvable hostname", async () => {
|
||||||
|
setupDnsResolution(null, null);
|
||||||
|
await expect(validateWebhookUrl("https://nonexistent.invalid/path")).rejects.toThrow(
|
||||||
|
"Could not resolve webhook URL hostname"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("rejects with timeout error when DNS resolution hangs", async () => {
|
||||||
|
vi.useFakeTimers();
|
||||||
|
|
||||||
|
mockResolve.mockImplementation((() => {
|
||||||
|
// never calls callback — simulates a hanging DNS server
|
||||||
|
}) as never);
|
||||||
|
|
||||||
|
const promise = validateWebhookUrl("https://slow-dns.example.com/webhook");
|
||||||
|
|
||||||
|
const assertion = expect(promise).rejects.toThrow(
|
||||||
|
"DNS resolution timed out for webhook URL hostname: slow-dns.example.com"
|
||||||
|
);
|
||||||
|
|
||||||
|
await vi.advanceTimersByTimeAsync(3000);
|
||||||
|
await assertion;
|
||||||
|
|
||||||
|
vi.useRealTimers();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("error type", () => {
|
||||||
|
test("throws InvalidInputError (not generic Error)", async () => {
|
||||||
|
await expect(validateWebhookUrl("http://127.0.0.1/")).rejects.toMatchObject({
|
||||||
|
name: "InvalidInputError",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,176 @@
|
|||||||
|
import "server-only";
|
||||||
|
import dns from "node:dns";
|
||||||
|
import { InvalidInputError } from "@formbricks/types/errors";
|
||||||
|
|
||||||
|
const BLOCKED_HOSTNAMES = new Set([
|
||||||
|
"localhost",
|
||||||
|
"localhost.localdomain",
|
||||||
|
"ip6-localhost",
|
||||||
|
"ip6-loopback",
|
||||||
|
"metadata.google.internal",
|
||||||
|
]);
|
||||||
|
|
||||||
|
const PRIVATE_IPV4_PATTERNS: RegExp[] = [
|
||||||
|
/^127\./, // 127.0.0.0/8 – Loopback
|
||||||
|
/^10\./, // 10.0.0.0/8 – Class A private
|
||||||
|
/^172\.(1[6-9]|2\d|3[01])\./, // 172.16.0.0/12 – Class B private
|
||||||
|
/^192\.168\./, // 192.168.0.0/16 – Class C private
|
||||||
|
/^169\.254\./, // 169.254.0.0/16 – Link-local (AWS/GCP/Azure metadata)
|
||||||
|
/^0\./, // 0.0.0.0/8 – "This" network
|
||||||
|
/^100\.(6[4-9]|[7-9]\d|1[0-2]\d)\./, // 100.64.0.0/10 – Shared address space (RFC 6598)
|
||||||
|
/^192\.0\.0\./, // 192.0.0.0/24 – IETF protocol assignments
|
||||||
|
/^192\.0\.2\./, // 192.0.2.0/24 – TEST-NET-1 (documentation)
|
||||||
|
/^198\.51\.100\./, // 198.51.100.0/24 – TEST-NET-2 (documentation)
|
||||||
|
/^203\.0\.113\./, // 203.0.113.0/24 – TEST-NET-3 (documentation)
|
||||||
|
/^198\.1[89]\./, // 198.18.0.0/15 – Benchmarking
|
||||||
|
/^224\./, // 224.0.0.0/4 – Multicast
|
||||||
|
/^240\./, // 240.0.0.0/4 – Reserved for future use
|
||||||
|
/^255\.255\.255\.255$/, // Limited broadcast
|
||||||
|
];
|
||||||
|
|
||||||
|
const PRIVATE_IPV6_PREFIXES = [
|
||||||
|
"::1", // Loopback
|
||||||
|
"fe80:", // Link-local
|
||||||
|
"fc", // Unique local address (ULA, fc00::/7 — covers fc00:: through fdff::)
|
||||||
|
"fd", // Unique local address (ULA, fc00::/7 — covers fc00:: through fdff::)
|
||||||
|
];
|
||||||
|
|
||||||
|
const isPrivateIPv4 = (ip: string): boolean => {
|
||||||
|
return PRIVATE_IPV4_PATTERNS.some((pattern) => pattern.test(ip));
|
||||||
|
};
|
||||||
|
|
||||||
|
const hexMappedToIPv4 = (hexPart: string): string | null => {
|
||||||
|
const groups = hexPart.split(":");
|
||||||
|
if (groups.length !== 2) return null;
|
||||||
|
const high = Number.parseInt(groups[0], 16);
|
||||||
|
const low = Number.parseInt(groups[1], 16);
|
||||||
|
if (Number.isNaN(high) || Number.isNaN(low) || high > 0xffff || low > 0xffff) return null;
|
||||||
|
return `${(high >> 8) & 0xff}.${high & 0xff}.${(low >> 8) & 0xff}.${low & 0xff}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const isIPv4Mapped = (normalized: string): boolean => {
|
||||||
|
if (!normalized.startsWith("::ffff:")) return false;
|
||||||
|
const suffix = normalized.slice(7); // strip "::ffff:"
|
||||||
|
|
||||||
|
if (suffix.includes(".")) {
|
||||||
|
return isPrivateIPv4(suffix);
|
||||||
|
}
|
||||||
|
const dotted = hexMappedToIPv4(suffix);
|
||||||
|
return dotted !== null && isPrivateIPv4(dotted);
|
||||||
|
};
|
||||||
|
|
||||||
|
const isPrivateIPv6 = (ip: string): boolean => {
|
||||||
|
const normalized = ip.toLowerCase();
|
||||||
|
if (normalized === "::") return true;
|
||||||
|
if (isIPv4Mapped(normalized)) return true;
|
||||||
|
return PRIVATE_IPV6_PREFIXES.some((prefix) => normalized.startsWith(prefix));
|
||||||
|
};
|
||||||
|
|
||||||
|
const isPrivateIP = (ip: string): boolean => {
|
||||||
|
return isPrivateIPv4(ip) || isPrivateIPv6(ip);
|
||||||
|
};
|
||||||
|
|
||||||
|
const DNS_TIMEOUT_MS = 3000;
|
||||||
|
|
||||||
|
const resolveHostnameToIPs = (hostname: string): Promise<string[]> => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let settled = false;
|
||||||
|
|
||||||
|
const settle = <T>(fn: (value: T) => void, value: T): void => {
|
||||||
|
if (settled) return;
|
||||||
|
settled = true;
|
||||||
|
clearTimeout(timer);
|
||||||
|
fn(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const timer = setTimeout(() => {
|
||||||
|
settle(reject, new Error(`DNS resolution timed out for hostname: ${hostname}`));
|
||||||
|
}, DNS_TIMEOUT_MS);
|
||||||
|
|
||||||
|
dns.resolve(hostname, (errV4, ipv4Addresses) => {
|
||||||
|
const ipv4 = errV4 ? [] : ipv4Addresses;
|
||||||
|
|
||||||
|
dns.resolve6(hostname, (errV6, ipv6Addresses) => {
|
||||||
|
const ipv6 = errV6 ? [] : ipv6Addresses;
|
||||||
|
const allAddresses = [...ipv4, ...ipv6];
|
||||||
|
|
||||||
|
if (allAddresses.length === 0) {
|
||||||
|
settle(reject, new Error(`DNS resolution failed for hostname: ${hostname}`));
|
||||||
|
} else {
|
||||||
|
settle(resolve, allAddresses);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const stripIPv6Brackets = (hostname: string): string => {
|
||||||
|
if (hostname.startsWith("[") && hostname.endsWith("]")) {
|
||||||
|
return hostname.slice(1, -1);
|
||||||
|
}
|
||||||
|
return hostname;
|
||||||
|
};
|
||||||
|
|
||||||
|
const IPV4_LITERAL = /^\d{1,3}(?:\.\d{1,3}){3}$/;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates a webhook URL to prevent Server-Side Request Forgery (SSRF).
|
||||||
|
*
|
||||||
|
* Checks performed:
|
||||||
|
* 1. URL must be well-formed
|
||||||
|
* 2. Protocol must be HTTPS or HTTP
|
||||||
|
* 3. Hostname must not be a known internal name (localhost, metadata endpoints)
|
||||||
|
* 4. IP literal hostnames are checked directly against private ranges
|
||||||
|
* 5. Domain hostnames are resolved via DNS; all resulting IPs must be public
|
||||||
|
*
|
||||||
|
* @throws {InvalidInputError} when the URL fails any validation check
|
||||||
|
*/
|
||||||
|
export const validateWebhookUrl = async (url: string): Promise<void> => {
|
||||||
|
let parsed: URL;
|
||||||
|
try {
|
||||||
|
parsed = new URL(url);
|
||||||
|
} catch {
|
||||||
|
throw new InvalidInputError("Invalid webhook URL format");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") {
|
||||||
|
throw new InvalidInputError("Webhook URL must use HTTPS or HTTP protocol");
|
||||||
|
}
|
||||||
|
|
||||||
|
const hostname = parsed.hostname;
|
||||||
|
|
||||||
|
if (BLOCKED_HOSTNAMES.has(hostname.toLowerCase())) {
|
||||||
|
throw new InvalidInputError("Webhook URL must not point to localhost or internal services");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Direct IP literal — validate without DNS resolution
|
||||||
|
const isIPv4Literal = IPV4_LITERAL.test(hostname);
|
||||||
|
const isIPv6Literal = hostname.startsWith("[");
|
||||||
|
|
||||||
|
if (isIPv4Literal || isIPv6Literal) {
|
||||||
|
const ip = isIPv6Literal ? stripIPv6Brackets(hostname) : hostname;
|
||||||
|
if (isPrivateIP(ip)) {
|
||||||
|
throw new InvalidInputError("Webhook URL must not point to private or internal IP addresses");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Domain name — resolve DNS and validate every resolved IP
|
||||||
|
let resolvedIPs: string[];
|
||||||
|
try {
|
||||||
|
resolvedIPs = await resolveHostnameToIPs(hostname);
|
||||||
|
} catch (error) {
|
||||||
|
const isTimeout = error instanceof Error && error.message.includes("timed out");
|
||||||
|
throw new InvalidInputError(
|
||||||
|
isTimeout
|
||||||
|
? `DNS resolution timed out for webhook URL hostname: ${hostname}`
|
||||||
|
: `Could not resolve webhook URL hostname: ${hostname}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const ip of resolvedIPs) {
|
||||||
|
if (isPrivateIP(ip)) {
|
||||||
|
throw new InvalidInputError("Webhook URL must not point to private or internal IP addresses");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
+70
-32
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Kopieren",
|
"copy": "Kopieren",
|
||||||
"copy_code": "Code kopieren",
|
"copy_code": "Code kopieren",
|
||||||
"copy_link": "Link kopieren",
|
"copy_link": "Link kopieren",
|
||||||
"count_attributes": "{value, plural, one {{value} Attribut} other {{value} Attribute}}",
|
"count_attributes": "{count, plural, one {{count} Attribut} other {{count} Attribute}}",
|
||||||
"count_contacts": "{value, plural, one {{value} Kontakt} other {{value} Kontakte}}",
|
"count_contacts": "{count, plural, one {{count} Kontakt} other {{count} Kontakte}}",
|
||||||
"count_responses": "{value, plural, one {{value} Antwort} other {{value} Antworten}}",
|
"count_members": "{count, plural, one {{count} Mitglied} other {{count} Mitglieder}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} Frage} other {{count} Fragen}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} Antwort} other {{count} Antworten}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} Auswahl} other {{count} Auswahlen}}",
|
||||||
"create_new_organization": "Neue Organisation erstellen",
|
"create_new_organization": "Neue Organisation erstellen",
|
||||||
"create_segment": "Segment erstellen",
|
"create_segment": "Segment erstellen",
|
||||||
"create_survey": "Umfrage erstellen",
|
"create_survey": "Umfrage erstellen",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "Tage",
|
"days": "Tage",
|
||||||
"default": "Standard",
|
"default": "Standard",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
|
"delete_what": "{deleteWhat} löschen",
|
||||||
"description": "Beschreibung",
|
"description": "Beschreibung",
|
||||||
"dev_env": "Entwicklungsumgebung",
|
"dev_env": "Entwicklungsumgebung",
|
||||||
"development": "Entwicklung",
|
"development": "Entwicklung",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Herunterladen",
|
"download": "Herunterladen",
|
||||||
"draft": "Entwurf",
|
"draft": "Entwurf",
|
||||||
"duplicate": "Duplikat",
|
"duplicate": "Duplikat",
|
||||||
|
"duplicate_copy": "(Kopie)",
|
||||||
|
"duplicate_copy_number": "(Kopie {copyNumber})",
|
||||||
"e_commerce": "E-Commerce",
|
"e_commerce": "E-Commerce",
|
||||||
"edit": "Bearbeiten",
|
"edit": "Bearbeiten",
|
||||||
"email": "E-Mail",
|
"email": "E-Mail",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Darstellung",
|
"look_and_feel": "Darstellung",
|
||||||
"manage": "Verwalten",
|
"manage": "Verwalten",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Mitglied",
|
|
||||||
"members": "Mitglieder",
|
"members": "Mitglieder",
|
||||||
"members_and_teams": "Mitglieder & Teams",
|
"members_and_teams": "Mitglieder & Teams",
|
||||||
"membership_not_found": "Mitgliedschaft nicht gefunden",
|
"membership_not_found": "Mitgliedschaft nicht gefunden",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Nach unten bewegen",
|
"move_down": "Nach unten bewegen",
|
||||||
"move_up": "Nach oben bewegen",
|
"move_up": "Nach oben bewegen",
|
||||||
"multiple_languages": "Mehrsprachigkeit",
|
"multiple_languages": "Mehrsprachigkeit",
|
||||||
|
"my_product": "mein Produkt",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"new": "Neu",
|
"new": "Neu",
|
||||||
"new_version_available": "Formbricks {version} ist da. Jetzt aktualisieren!",
|
"new_version_available": "Formbricks {version} ist da. Jetzt aktualisieren!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Teams auswählen",
|
"select_teams": "Teams auswählen",
|
||||||
"selected": "Ausgewählt",
|
"selected": "Ausgewählt",
|
||||||
"selected_questions": "Ausgewählte Fragen",
|
"selected_questions": "Ausgewählte Fragen",
|
||||||
"selection": "Auswahl",
|
|
||||||
"selections": "Auswahlen",
|
|
||||||
"send_test_email": "Test-E-Mail senden",
|
"send_test_email": "Test-E-Mail senden",
|
||||||
"session_not_found": "Sitzung nicht gefunden",
|
"session_not_found": "Sitzung nicht gefunden",
|
||||||
"settings": "Einstellungen",
|
"settings": "Einstellungen",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Antwortanzahl anzeigen",
|
"show_response_count": "Antwortanzahl anzeigen",
|
||||||
"shown": "Angezeigt",
|
"shown": "Angezeigt",
|
||||||
"size": "Größe",
|
"size": "Größe",
|
||||||
|
"skip": "Überspringen",
|
||||||
"skipped": "Übersprungen",
|
"skipped": "Übersprungen",
|
||||||
"skips": "Übersprungen",
|
"skips": "Übersprungen",
|
||||||
"some_files_failed_to_upload": "Einige Dateien konnten nicht hochgeladen werden",
|
"some_files_failed_to_upload": "Einige Dateien konnten nicht hochgeladen werden",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Website-Umfrage",
|
"website_survey": "Website-Umfrage",
|
||||||
"weeks": "Wochen",
|
"weeks": "Wochen",
|
||||||
"welcome_card": "Willkommenskarte",
|
"welcome_card": "Willkommenskarte",
|
||||||
|
"workflows": "Workflows",
|
||||||
"workspace_configuration": "Projektkonfiguration",
|
"workspace_configuration": "Projektkonfiguration",
|
||||||
"workspace_created_successfully": "Projekt erfolgreich erstellt",
|
"workspace_created_successfully": "Projekt erfolgreich erstellt",
|
||||||
"workspace_creation_description": "Organisieren Sie Umfragen in Projekten für eine bessere Zugriffskontrolle.",
|
"workspace_creation_description": "Organisieren Sie Umfragen in Projekten für eine bessere Zugriffskontrolle.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Wert",
|
"attribute_value": "Wert",
|
||||||
"attribute_value_placeholder": "Attributwert",
|
"attribute_value_placeholder": "Attributwert",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Es konnten {count} neue Attribute nicht erstellt werden, da dies das maximale Limit von {limit} Attributklassen überschreiten würde. Bestehende Attribute wurden erfolgreich aktualisiert.",
|
"attributes_msg_attribute_limit_exceeded": "Es konnten {count} neue Attribute nicht erstellt werden, da dies das maximale Limit von {limit} Attributklassen überschreiten würde. Bestehende Attribute wurden erfolgreich aktualisiert.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (Attribut '{key}' hat dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (Attribut “{key}” hat dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "Die E-Mail existiert bereits für diese Umgebung und wurde nicht aktualisiert.",
|
"attributes_msg_email_already_exists": "Die E-Mail existiert bereits für diese Umgebung und wurde nicht aktualisiert.",
|
||||||
"attributes_msg_email_or_userid_required": "Entweder E-Mail oder userId ist erforderlich. Die bestehenden Werte wurden beibehalten.",
|
"attributes_msg_email_or_userid_required": "Entweder E-Mail oder Benutzer-ID ist erforderlich. Die vorhandenen Werte wurden beibehalten.",
|
||||||
"attributes_msg_new_attribute_created": "Neues Attribut '{key}' mit Typ '{dataType}' erstellt",
|
"attributes_msg_new_attribute_created": "Neues Attribut “{key}” mit Typ “{dataType}” erstellt",
|
||||||
"attributes_msg_userid_already_exists": "Die userId existiert bereits für diese Umgebung und wurde nicht aktualisiert.",
|
"attributes_msg_userid_already_exists": "Die Benutzer-ID existiert bereits für diese Umgebung und wurde nicht aktualisiert.",
|
||||||
"contact_deleted_successfully": "Kontakt erfolgreich gelöscht",
|
"contact_deleted_successfully": "Kontakt erfolgreich gelöscht",
|
||||||
"contact_not_found": "Kein solcher Kontakt gefunden",
|
"contact_not_found": "Kein solcher Kontakt gefunden",
|
||||||
"contacts_table_refresh": "Kontakte aktualisieren",
|
"contacts_table_refresh": "Kontakte aktualisieren",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Datentyp",
|
"data_type": "Datentyp",
|
||||||
"data_type_cannot_be_changed": "Der Datentyp kann nach der Erstellung nicht mehr geändert werden",
|
"data_type_cannot_be_changed": "Der Datentyp kann nach der Erstellung nicht mehr geändert werden",
|
||||||
"data_type_description": "Wähle aus, wie dieses Attribut gespeichert und gefiltert werden soll",
|
"data_type_description": "Wähle aus, wie dieses Attribut gespeichert und gefiltert werden soll",
|
||||||
"date_value_required": "Ein Datumswert ist erforderlich. Verwende die Löschen-Schaltfläche, um dieses Attribut zu entfernen, wenn du kein Datum festlegen möchtest.",
|
"date_value_required": "Datumswert ist erforderlich. Verwende die Löschen-Schaltfläche, um dieses Attribut zu entfernen, wenn du kein Datum festlegen möchtest.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Dadurch wird das ausgewählte Attribut gelöscht. Alle mit diesem Attribut verknüpften Kontaktdaten gehen verloren.} other {Dadurch werden die ausgewählten Attribute gelöscht. Alle mit diesen Attributen verknüpften Kontaktdaten gehen verloren.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Dadurch wird das ausgewählte Attribut gelöscht. Alle mit diesem Attribut verknüpften Kontaktdaten gehen verloren.} other {Dadurch werden die ausgewählten Attribute gelöscht. Alle mit diesen Attributen verknüpften Kontaktdaten gehen verloren.}}",
|
||||||
"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": "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, 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.}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Systemattribute",
|
"system_attributes": "Systemattribute",
|
||||||
"unlock_contacts_description": "Verwalte Kontakte und sende gezielte Umfragen",
|
"unlock_contacts_description": "Verwalte Kontakte und sende gezielte Umfragen",
|
||||||
"unlock_contacts_title": "Kontakte mit einem höheren Plan freischalten",
|
"unlock_contacts_title": "Kontakte mit einem höheren Plan freischalten",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Attribut \"{key}\" ist als \"{dataType}\" definiert, aber die CSV-Datei enthält ungültige Werte: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Attribut “{key}” ist als “{dataType}” typisiert, aber die CSV enthält ungültige Werte: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Doppelte Zuordnungen für folgende Attribute gefunden: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Doppelte Zuordnungen für folgende Attribute gefunden: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "Dateigröße überschreitet das maximale Limit von 800KB",
|
"upload_contacts_error_file_too_large": "Dateigröße überschreitet das maximale Limit von 800KB",
|
||||||
"upload_contacts_error_generic": "Beim Hochladen der Kontakte ist ein Fehler aufgetreten. Bitte versuche es später erneut.",
|
"upload_contacts_error_generic": "Beim Hochladen der Kontakte ist ein Fehler aufgetreten. Bitte versuche es später erneut.",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "Der Lizenzschlüssel ist ungültig. Bitte überprüfe deinen ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "Der Lizenzschlüssel ist ungültig. Bitte überprüfe deinen ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Lizenzprüfung erfolgreich",
|
"recheck_license_success": "Lizenzprüfung erfolgreich",
|
||||||
"recheck_license_unreachable": "Lizenzserver ist nicht erreichbar. Bitte versuche es später erneut.",
|
"recheck_license_unreachable": "Lizenzserver ist nicht erreichbar. Bitte versuche es später erneut.",
|
||||||
"rechecking": "Wird erneut geprüft...",
|
"rechecking": "Wird erneut geprüft…",
|
||||||
"request_30_day_trial_license": "30-Tage-Testlizenz anfordern",
|
"request_30_day_trial_license": "30-Tage-Testlizenz anfordern",
|
||||||
"saml_sso": "SAML-SSO",
|
"saml_sso": "SAML-SSO",
|
||||||
"service_level_agreement": "Service-Level-Vereinbarung",
|
"service_level_agreement": "Service-Level-Vereinbarung",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Hey {userName}",
|
"email_customization_preview_email_heading": "Hey {userName}",
|
||||||
"email_customization_preview_email_text": "Dies ist eine E-Mail-Vorschau, um dir zu zeigen, welches Logo in den E-Mails gerendert wird.",
|
"email_customization_preview_email_text": "Dies ist eine E-Mail-Vorschau, um dir zu zeigen, welches Logo in den E-Mails gerendert wird.",
|
||||||
"error_deleting_organization_please_try_again": "Fehler beim Löschen der Organisation. Bitte versuche es erneut.",
|
"error_deleting_organization_please_try_again": "Fehler beim Löschen der Organisation. Bitte versuche es erneut.",
|
||||||
"from_your_organization": "von deiner Organisation",
|
"from_your_organization": "{memberName} aus Ihrer Organisation",
|
||||||
"invitation_sent_once_more": "Einladung nochmal gesendet.",
|
"invitation_sent_once_more": "Einladung nochmal gesendet.",
|
||||||
"invite_deleted_successfully": "Einladung erfolgreich gelöscht",
|
"invite_deleted_successfully": "Einladung erfolgreich gelöscht",
|
||||||
"invite_expires_on": "Einladung läuft ab am {date}",
|
"invite_expires_on": "Einladung läuft ab am {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Benachrichtigungseinstellungen aktualisiert",
|
"notification_settings_updated": "Benachrichtigungseinstellungen aktualisiert",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Richte eine Benachrichtigung ein, um eine E-Mail bei neuen Antworten zu erhalten",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Richte eine Benachrichtigung ein, um eine E-Mail bei neuen Antworten zu erhalten",
|
||||||
"use_the_integration": "Integration nutzen",
|
"use_the_integration": "Integration nutzen",
|
||||||
"want_to_loop_in_organization_mates": "Willst Du die Organisationskollegen einbeziehen?",
|
"want_to_loop_in_organization_mates": "Möchtest du Organisationsmitglieder einbeziehen?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Du wirst nicht mehr automatisch zu den Umfragen dieser Organisation angemeldet!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Du wirst nicht mehr automatisch zu den Umfragen dieser Organisation angemeldet!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Du wirst keine weiteren E-Mails für Antworten auf diese Umfrage erhalten!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Du wirst keine weiteren E-Mails für Antworten auf diese Umfrage erhalten!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Platzhalter hinzufügen, falls kein Wert zur Verfügung steht.",
|
"add_fallback_placeholder": "Platzhalter hinzufügen, falls kein Wert zur Verfügung steht.",
|
||||||
"add_hidden_field_id": "Verstecktes Feld ID hinzufügen",
|
"add_hidden_field_id": "Verstecktes Feld ID hinzufügen",
|
||||||
"add_highlight_border": "Rahmen hinzufügen",
|
"add_highlight_border": "Rahmen hinzufügen",
|
||||||
|
"add_highlight_border_description": "Gilt nur für In-Product-Umfragen.",
|
||||||
"add_logic": "Logik hinzufügen",
|
"add_logic": "Logik hinzufügen",
|
||||||
"add_none_of_the_above": "Füge \"Keine der oben genannten Optionen\" hinzu",
|
"add_none_of_the_above": "Füge \"Keine der oben genannten Optionen\" hinzu",
|
||||||
"add_option": "Option hinzufügen",
|
"add_option": "Option hinzufügen",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "'Umfrage geschlossen'-Nachricht anpassen",
|
"adjust_survey_closed_message": "'Umfrage geschlossen'-Nachricht anpassen",
|
||||||
"adjust_survey_closed_message_description": "Ändere die Nachricht, die Besucher sehen, wenn die Umfrage geschlossen ist.",
|
"adjust_survey_closed_message_description": "Ändere die Nachricht, die Besucher sehen, wenn die Umfrage geschlossen ist.",
|
||||||
"adjust_the_theme_in_the": "Passe das Thema an in den",
|
"adjust_the_theme_in_the": "Passe das Thema an in den",
|
||||||
|
"all_are_true": "alle sind wahr",
|
||||||
"all_other_answers_will_continue_to": "Alle anderen Antworten werden weiterhin",
|
"all_other_answers_will_continue_to": "Alle anderen Antworten werden weiterhin",
|
||||||
"allow_multi_select": "Mehrfachauswahl erlauben",
|
"allow_multi_select": "Mehrfachauswahl erlauben",
|
||||||
"allow_multiple_files": "Mehrere Dateien zulassen",
|
"allow_multiple_files": "Mehrere Dateien zulassen",
|
||||||
"allow_users_to_select_more_than_one_image": "Erlaube Nutzern, mehr als ein Bild auszuwählen",
|
"allow_users_to_select_more_than_one_image": "Erlaube Nutzern, mehr als ein Bild auszuwählen",
|
||||||
"and_launch_surveys_in_your_website_or_app": "und Umfragen auf deiner Website oder App starten.",
|
"and_launch_surveys_in_your_website_or_app": "und Umfragen auf deiner Website oder App starten.",
|
||||||
"animation": "Animation",
|
"animation": "Animation",
|
||||||
|
"any_is_true": "mindestens eine ist wahr",
|
||||||
"app_survey_description": "Bette eine Umfrage in deine Web-App oder Website ein, um Antworten zu sammeln.",
|
"app_survey_description": "Bette eine Umfrage in deine Web-App oder Website ein, um Antworten zu sammeln.",
|
||||||
"assign": "Zuweisen =",
|
"assign": "Zuweisen =",
|
||||||
"audience": "Publikum",
|
"audience": "Publikum",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Berechnen",
|
"calculate": "Berechnen",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Erfasse eine neue Aktion, um eine Umfrage auszulösen.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Erfasse eine neue Aktion, um eine Umfrage auszulösen.",
|
||||||
"capture_ip_address": "IP-Adresse erfassen",
|
"capture_ip_address": "IP-Adresse erfassen",
|
||||||
"capture_ip_address_description": "Speichern Sie die IP-Adresse des Befragten in den Antwort-Metadaten zur Duplikaterkennung und für Sicherheitszwecke",
|
"capture_ip_address_description": "Speichere die IP-Adresse des Befragten in den Antwort-Metadaten zur Duplikaterkennung und für Sicherheitszwecke",
|
||||||
"capture_new_action": "Neue Aktion erfassen",
|
"capture_new_action": "Neue Aktion erfassen",
|
||||||
"card_arrangement_for_survey_type_derived": "Kartenanordnung für {surveyTypeDerived} Umfragen",
|
"card_arrangement_for_survey_type_derived": "Kartenanordnung für {surveyTypeDerived} Umfragen",
|
||||||
"card_background_color": "Hintergrundfarbe der Karte",
|
"card_background_color": "Hintergrundfarbe der Karte",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Lässig",
|
"casual": "Lässig",
|
||||||
"caution_edit_duplicate": "Duplizieren & bearbeiten",
|
"caution_edit_duplicate": "Duplizieren & bearbeiten",
|
||||||
"caution_edit_published_survey": "Eine veröffentlichte Umfrage bearbeiten?",
|
"caution_edit_published_survey": "Eine veröffentlichte Umfrage bearbeiten?",
|
||||||
"caution_explanation_intro": "Wir verstehen, dass du vielleicht noch Änderungen vornehmen möchtest. Hier erfährst du, was passiert, wenn du das tust:",
|
"caution_explanation_intro": "Wir verstehen, dass du möglicherweise noch Änderungen vornehmen möchtest. Folgendes passiert, wenn du dies tust:",
|
||||||
"caution_explanation_new_responses_separated": "Antworten vor der Änderung werden möglicherweise nicht oder nur teilweise in der Umfragezusammenfassung berücksichtigt.",
|
"caution_explanation_new_responses_separated": "Antworten vor der Änderung werden möglicherweise nicht oder nur teilweise in der Umfragezusammenfassung berücksichtigt.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Alle Daten, einschließlich früherer Antworten, bleiben auf der Umfrageübersichtsseite als Download verfügbar.",
|
"caution_explanation_only_new_responses_in_summary": "Alle Daten, einschließlich früherer Antworten, bleiben auf der Umfrageübersichtsseite als Download verfügbar.",
|
||||||
"caution_explanation_responses_are_safe": "Ältere und neuere Antworten vermischen sich, was zu irreführenden Datensummen führen kann.",
|
"caution_explanation_responses_are_safe": "Ältere und neuere Antworten vermischen sich, was zu irreführenden Datensummen führen kann.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Nachverfolgung aktualisiert und wird gespeichert, sobald du die Umfrage speicherst.",
|
"follow_ups_modal_updated_successfull_toast": "Nachverfolgung aktualisiert und wird gespeichert, sobald du die Umfrage speicherst.",
|
||||||
"follow_ups_new": "Neues Follow-up",
|
"follow_ups_new": "Neues Follow-up",
|
||||||
"follow_ups_upgrade_button_text": "Upgrade, um Follow-ups zu aktivieren",
|
"follow_ups_upgrade_button_text": "Upgrade, um Follow-ups zu aktivieren",
|
||||||
"form_styling": "Umfrage Styling",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK ist nicht verbunden",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK ist nicht verbunden",
|
||||||
"four_points": "4 Punkte",
|
"four_points": "4 Punkte",
|
||||||
"heading": "Überschrift",
|
"heading": "Überschrift",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Option {choiceIndex}",
|
"option_idx": "Option {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Diese Option wird in der Logik der Frage {questionIndex} verwendet. Bitte entferne sie zuerst aus der Logik.",
|
"option_used_in_logic_error": "Diese Option wird in der Logik der Frage {questionIndex} verwendet. Bitte entferne sie zuerst aus der Logik.",
|
||||||
"optional": "Optional",
|
"optional": "Optional",
|
||||||
"options": "Optionen",
|
"options": "Optionen*",
|
||||||
"options_used_in_logic_bulk_error": "Die folgenden Optionen werden in der Logik verwendet: {questionIndexes}. Bitte entferne sie zuerst aus der Logik.",
|
"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.",
|
"override_theme_with_individual_styles_for_this_survey": "Styling für diese Umfrage überschreiben.",
|
||||||
"overwrite_global_waiting_time": "Benutzerdefinierte Abkühlphase festlegen",
|
"overwrite_global_waiting_time": "Benutzerdefinierte Abkühlphase festlegen",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Frage gelöscht.",
|
"question_deleted": "Frage gelöscht.",
|
||||||
"question_duplicated": "Frage dupliziert.",
|
"question_duplicated": "Frage dupliziert.",
|
||||||
"question_id_updated": "Frage-ID aktualisiert",
|
"question_id_updated": "Frage-ID aktualisiert",
|
||||||
|
"question_number": "Frage {number}",
|
||||||
"question_used_in_logic_warning_text": "Elemente aus diesem Block werden in einer Logikregel verwendet. Möchten Sie ihn wirklich löschen?",
|
"question_used_in_logic_warning_text": "Elemente aus diesem Block werden in einer Logikregel verwendet. Möchten Sie ihn wirklich löschen?",
|
||||||
"question_used_in_logic_warning_title": "Logikinkonsistenz",
|
"question_used_in_logic_warning_title": "Logikinkonsistenz",
|
||||||
"question_used_in_quota": "Diese Frage wird in der “{quotaName}” Quote verwendet",
|
"question_used_in_quota": "Diese Frage wird in der “{quotaName}” Quote verwendet",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Antwort Limits, Weiterleitungen und mehr.",
|
"response_limits_redirections_and_more": "Antwort Limits, Weiterleitungen und mehr.",
|
||||||
"response_options": "Antwortoptionen",
|
"response_options": "Antwortoptionen",
|
||||||
"roundness": "Rundheit",
|
"roundness": "Rundheit",
|
||||||
"roundness_description": "Steuert, wie abgerundet die Kartenecken sind.",
|
"roundness_description": "Steuert, wie abgerundet die Ecken sind.",
|
||||||
"row_used_in_logic_error": "Diese Zeile wird in der Logik der Frage {questionIndex} verwendet. Bitte entferne sie zuerst aus der Logik.",
|
"row_used_in_logic_error": "Diese Zeile wird in der Logik der Frage {questionIndex} verwendet. Bitte entferne sie zuerst aus der Logik.",
|
||||||
"rows": "Zeilen",
|
"rows": "Zeilen",
|
||||||
"save_and_close": "Speichern & Schließen",
|
"save_and_close": "Speichern & Schließen",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Diese kostenlose und quelloffene Umfrage wurde geschlossen",
|
"survey_completed_subheading": "Diese kostenlose und quelloffene Umfrage wurde geschlossen",
|
||||||
"survey_display_settings": "Einstellungen zur Anzeige der Umfrage",
|
"survey_display_settings": "Einstellungen zur Anzeige der Umfrage",
|
||||||
"survey_placement": "Platzierung der Umfrage",
|
"survey_placement": "Platzierung der Umfrage",
|
||||||
|
"survey_styling": "Umfrage Styling",
|
||||||
"survey_trigger": "Auslöser der Umfrage",
|
"survey_trigger": "Auslöser der Umfrage",
|
||||||
"switch_multi_language_on_to_get_started": "Aktiviere Mehrsprachigkeit, um loszulegen 👉",
|
"switch_multi_language_on_to_get_started": "Aktiviere Mehrsprachigkeit, um loszulegen 👉",
|
||||||
"target_block_not_found": "Zielblock nicht gefunden",
|
"target_block_not_found": "Zielblock nicht gefunden",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Entspricht Regex-Muster",
|
"pattern": "Entspricht Regex-Muster",
|
||||||
"phone": "Ist gültige Telefonnummer",
|
"phone": "Ist gültige Telefonnummer",
|
||||||
"rank_all_options": "Alle Optionen bewerten",
|
"rank_all_options": "Alle Optionen bewerten",
|
||||||
"select_file_extensions": "Dateierweiterungen auswählen...",
|
"select_file_extensions": "Dateierweiterungen auswählen…",
|
||||||
"select_option": "Option auswählen",
|
"select_option": "Option auswählen",
|
||||||
"start_date": "Startdatum",
|
"start_date": "Startdatum",
|
||||||
"url": "Ist gültige URL"
|
"url": "Ist gültige URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Abkühlphase (umfrageübergreifend)",
|
"waiting_time_across_surveys": "Abkühlphase (umfrageübergreifend)",
|
||||||
"waiting_time_across_surveys_description": "Um Umfragemüdigkeit zu vermeiden, wähle aus, wie diese Umfrage mit der workspace-weiten Abkühlphase interagiert.",
|
"waiting_time_across_surveys_description": "Um Umfragemüdigkeit zu vermeiden, wähle aus, wie diese Umfrage mit der workspace-weiten Abkühlphase interagiert.",
|
||||||
"welcome_message": "Willkommensnachricht",
|
"welcome_message": "Willkommensnachricht",
|
||||||
|
"when": "Wenn",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Ohne Filter können alle deine Nutzer befragt werden.",
|
"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_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.",
|
|
||||||
"your_description_here_recall_information_with": "Deine Beschreibung hier. Informationen abrufen mit @",
|
"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_question_here_recall_information_with": "Deine Frage hier. Informationen abrufen mit @",
|
||||||
"your_web_app": "Deine Web-App",
|
"your_web_app": "Deine Web-App",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Einmalige Links deaktivieren",
|
"disable_single_use_link_modal_button": "Einmalige Links deaktivieren",
|
||||||
"disable_single_use_link_modal_description": "Wenn Sie Einweglinks geteilt haben, können die Teilnehmer nicht mehr auf die Umfrage antworten.",
|
"disable_single_use_link_modal_description": "Wenn Sie Einweglinks geteilt haben, können die Teilnehmer nicht mehr auf die Umfrage antworten.",
|
||||||
"generate_and_download_links": "Links generieren und herunterladen",
|
"generate_and_download_links": "Links generieren und herunterladen",
|
||||||
"generate_links_error": "Einmalige Verlinkungen konnten nicht generiert werden. Bitte arbeiten Sie direkt mit der API.",
|
"generate_links_error": "Einmalige Links konnten nicht generiert werden. Bitte arbeiten Sie direkt mit der API.",
|
||||||
"multi_use_link": "Mehrfach verwendet",
|
"multi_use_link": "Mehrfach verwendet",
|
||||||
"multi_use_link_description": "Sammle mehrere Antworten von anonymen Teilnehmern mit einem Link",
|
"multi_use_link_description": "Sammle mehrere Antworten von anonymen Teilnehmern mit einem Link",
|
||||||
"multi_use_powers_other_channels_description": "Wenn du es deaktivierst, werden auch diese anderen Vertriebskanäle deaktiviert.",
|
"multi_use_powers_other_channels_description": "Wenn du es deaktivierst, werden auch diese anderen Vertriebskanäle deaktiviert.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Filter hinzugefügt für Antworten, bei denen die Antwort auf Frage {questionIdx} {filterComboBoxValue} - {filterValue} ist",
|
"added_filter_for_responses_where_answer_to_question": "Filter hinzugefügt für Antworten, bei denen die Antwort auf Frage {questionIdx} {filterComboBoxValue} - {filterValue} ist.",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filter hinzugefügt für Antworten, bei denen die Frage {questionIdx} übersprungen wurde",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filter hinzugefügt für Antworten, bei denen die Frage {questionIdx} übersprungen wurde",
|
||||||
"aggregated": "Aggregiert",
|
"aggregated": "Aggregiert",
|
||||||
"all_responses_csv": "Alle Antworten (CSV)",
|
"all_responses_csv": "Alle Antworten (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Startet",
|
"starts": "Startet",
|
||||||
"starts_tooltip": "So oft wurde die Umfrage gestartet.",
|
"starts_tooltip": "So oft wurde die Umfrage gestartet.",
|
||||||
"survey_reset_successfully": "Umfrage erfolgreich zurückgesetzt! {responseCount} Antworten und {displayCount} Anzeigen wurden gelöscht.",
|
"survey_reset_successfully": "Umfrage erfolgreich zurückgesetzt! {responseCount} Antworten und {displayCount} Anzeigen wurden gelöscht.",
|
||||||
|
"survey_results": "{surveyName}-Ergebnisse",
|
||||||
"this_month": "Dieser Monat",
|
"this_month": "Dieser Monat",
|
||||||
"this_quarter": "Dieses Quartal",
|
"this_quarter": "Dieses Quartal",
|
||||||
"this_year": "Dieses Jahr",
|
"this_year": "Dieses Jahr",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Füge dem Logo-Container eine Hintergrundfarbe hinzu.",
|
"add_background_color_description": "Füge dem Logo-Container eine Hintergrundfarbe hinzu.",
|
||||||
"advanced_styling_field_border_radius": "Rahmenradius",
|
"advanced_styling_field_border_radius": "Rahmenradius",
|
||||||
"advanced_styling_field_button_bg": "Button-Hintergrund",
|
"advanced_styling_field_button_bg": "Button-Hintergrund",
|
||||||
"advanced_styling_field_button_bg_description": "Füllt den Weiter-/Absenden-Button.",
|
"advanced_styling_field_button_bg_description": "Füllt die Schaltfläche “Weiter” / “Absenden”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Rundet die Button-Ecken ab.",
|
"advanced_styling_field_button_border_radius_description": "Rundet die Button-Ecken ab.",
|
||||||
"advanced_styling_field_button_font_size_description": "Skaliert den Text der Button-Beschriftung.",
|
"advanced_styling_field_button_font_size_description": "Skaliert den Text der Button-Beschriftung.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Macht den Button-Text heller oder fetter.",
|
"advanced_styling_field_button_font_weight_description": "Macht den Button-Text heller oder fetter.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Schriftgröße der Beschreibung",
|
"advanced_styling_field_description_size": "Schriftgröße der Beschreibung",
|
||||||
"advanced_styling_field_description_size_description": "Skaliert den Beschreibungstext.",
|
"advanced_styling_field_description_size_description": "Skaliert den Beschreibungstext.",
|
||||||
"advanced_styling_field_description_weight": "Schriftstärke der Beschreibung",
|
"advanced_styling_field_description_weight": "Schriftstärke der Beschreibung",
|
||||||
"advanced_styling_field_description_weight_description": "Macht den Beschreibungstext heller oder fetter.",
|
"advanced_styling_field_description_weight_description": "Macht den Beschreibungstext leichter oder fetter.",
|
||||||
"advanced_styling_field_font_size": "Schriftgröße",
|
"advanced_styling_field_font_size": "Schriftgröße",
|
||||||
"advanced_styling_field_font_weight": "Schriftstärke",
|
"advanced_styling_field_font_weight": "Schriftstärke",
|
||||||
"advanced_styling_field_headline_color": "Überschriftsfarbe",
|
"advanced_styling_field_headline_color": "Überschriftsfarbe",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "Färbt den gefüllten Teil des Balkens.",
|
"advanced_styling_field_indicator_bg_description": "Färbt den gefüllten Teil des Balkens.",
|
||||||
"advanced_styling_field_input_border_radius_description": "Rundet die Eingabeecken ab.",
|
"advanced_styling_field_input_border_radius_description": "Rundet die Eingabeecken ab.",
|
||||||
"advanced_styling_field_input_font_size_description": "Skaliert den eingegebenen Text in Eingabefeldern.",
|
"advanced_styling_field_input_font_size_description": "Skaliert den eingegebenen Text in Eingabefeldern.",
|
||||||
"advanced_styling_field_input_height_description": "Legt die Mindesthöhe des Eingabefelds fest.",
|
"advanced_styling_field_input_height_description": "Bestimmt die Mindesthöhe des Eingabefelds.",
|
||||||
"advanced_styling_field_input_padding_x_description": "Fügt links und rechts Abstand hinzu.",
|
"advanced_styling_field_input_padding_x_description": "Fügt links und rechts Abstand hinzu.",
|
||||||
"advanced_styling_field_input_padding_y_description": "Fügt oben und unten Abstand hinzu.",
|
"advanced_styling_field_input_padding_y_description": "Fügt oben und unten Abstand hinzu.",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "Blendet den Platzhaltertext aus.",
|
"advanced_styling_field_input_placeholder_opacity_description": "Blendet den Platzhaltertext aus.",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Färbt den eingegebenen Text in Eingabefeldern.",
|
"advanced_styling_field_input_text_description": "Färbt den eingegebenen Text in Eingabefeldern.",
|
||||||
"advanced_styling_field_option_bg": "Hintergrund",
|
"advanced_styling_field_option_bg": "Hintergrund",
|
||||||
"advanced_styling_field_option_bg_description": "Füllt die Optionselemente.",
|
"advanced_styling_field_option_bg_description": "Füllt die Optionselemente.",
|
||||||
|
"advanced_styling_field_option_border": "Rahmenfarbe",
|
||||||
|
"advanced_styling_field_option_border_description": "Umrandet Radio- und Checkbox-Optionen.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Rundet die Ecken der Optionen ab.",
|
"advanced_styling_field_option_border_radius_description": "Rundet die Ecken der Optionen ab.",
|
||||||
"advanced_styling_field_option_font_size_description": "Skaliert den Text der Optionsbeschriftung.",
|
"advanced_styling_field_option_font_size_description": "Skaliert den Text der Optionsbeschriftung.",
|
||||||
"advanced_styling_field_option_label": "Label-Farbe",
|
"advanced_styling_field_option_label": "Label-Farbe",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "\"Powered by Formbricks\"-Signatur anzeigen",
|
"show_powered_by_formbricks": "\"Powered by Formbricks\"-Signatur anzeigen",
|
||||||
"styling_updated_successfully": "Styling erfolgreich aktualisiert",
|
"styling_updated_successfully": "Styling erfolgreich aktualisiert",
|
||||||
"suggest_colors": "Farben vorschlagen",
|
"suggest_colors": "Farben vorschlagen",
|
||||||
"suggested_colors_applied_please_save": "Vorgeschlagene Farben erfolgreich generiert. Drücke \"Speichern\", um die Änderungen zu übernehmen.",
|
"suggested_colors_applied_please_save": "Vorgeschlagene Farben erfolgreich generiert. Drücke “Speichern”, um die Änderungen zu übernehmen.",
|
||||||
"theme": "Theme",
|
"theme": "Theme",
|
||||||
"theme_settings_description": "Erstelle ein Style-Theme für alle Umfragen. Du kannst für jede Umfrage individuelles Styling aktivieren."
|
"theme_settings_description": "Erstelle ein Style-Theme für alle Umfragen. Du kannst für jede Umfrage individuelles Styling aktivieren."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Bitte überprüfe auch deinen Spam-Ordner, falls Du die E-Mail nicht in deinem Posteingang siehst.",
|
"check_inbox_or_spam": "Bitte überprüfe auch deinen Spam-Ordner, falls Du die E-Mail nicht in deinem Posteingang siehst.",
|
||||||
"completed": "Diese kostenlose und quelloffene Umfrage wurde geschlossen.",
|
"completed": "Diese kostenlose und quelloffene Umfrage wurde geschlossen.",
|
||||||
"create_your_own": "Erstelle deine eigene",
|
"create_your_own": "Erstelle deine eigene",
|
||||||
"enter_pin": "Diese Umfrage ist geschützt. Gib unten die PIN ein",
|
"enter_pin": "Diese Umfrage ist geschützt. Gib die PIN unten ein.",
|
||||||
"just_curious": "Einfach neugierig?",
|
"just_curious": "Einfach neugierig?",
|
||||||
"link_invalid": "Diese Umfrage kann nur auf Einladung durchgeführt werden.",
|
"link_invalid": "Diese Umfrage kann nur auf Einladung durchgeführt werden.",
|
||||||
"paused": "Diese Umfrage ist vorübergehend pausiert.",
|
"paused": "Diese Umfrage ist vorübergehend pausiert.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Wie kann das Unternehmen seine Vision und strategische Ausrichtung verbessern?",
|
"alignment_and_engagement_survey_question_4_headline": "Wie kann das Unternehmen seine Vision und strategische Ausrichtung verbessern?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Tippe deine Antwort hier...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Tippe deine Antwort hier...",
|
||||||
"back": "Zurück",
|
"back": "Zurück",
|
||||||
|
"block_1": "Block 1",
|
||||||
|
"block_10": "Block 10",
|
||||||
|
"block_2": "Block 2",
|
||||||
|
"block_3": "Block 3",
|
||||||
|
"block_4": "Block 4",
|
||||||
|
"block_5": "Block 5",
|
||||||
|
"block_6": "Block 6",
|
||||||
|
"block_7": "Block 7",
|
||||||
|
"block_8": "Block 8",
|
||||||
|
"block_9": "Block 9",
|
||||||
"book_interview": "Interview buchen",
|
"book_interview": "Interview buchen",
|
||||||
"build_product_roadmap_description": "Finde die EINE Sache heraus, die deine Nutzer am meisten wollen, und baue sie.",
|
"build_product_roadmap_description": "Finde die EINE Sache heraus, die deine Nutzer am meisten wollen, und baue sie.",
|
||||||
"build_product_roadmap_name": "Produkt Roadmap erstellen",
|
"build_product_roadmap_name": "Produkt Roadmap erstellen",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Schlechte Qualität",
|
"csat_question_3_choice_8": "Schlechte Qualität",
|
||||||
"csat_question_3_choice_9": "Unzuverlässig",
|
"csat_question_3_choice_9": "Unzuverlässig",
|
||||||
"csat_question_3_headline": "Welches der folgenden Wörter würdest Du verwenden, um unser $[projectName] zu beschreiben?",
|
"csat_question_3_headline": "Welches der folgenden Wörter würdest Du verwenden, um unser $[projectName] zu beschreiben?",
|
||||||
"csat_question_3_subheader": "Wähle alle zutreffenden aus:",
|
"csat_question_3_subheader": "Bitte wähle alle zutreffenden Optionen aus:",
|
||||||
"csat_question_4_choice_1": "Extrem gut",
|
"csat_question_4_choice_1": "Extrem gut",
|
||||||
"csat_question_4_choice_2": "Sehr gut",
|
"csat_question_4_choice_2": "Sehr gut",
|
||||||
"csat_question_4_choice_3": "Ziemlich gut",
|
"csat_question_4_choice_3": "Ziemlich gut",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Ugh, sorry! Können wir irgendwas tun, um deine Erfahrung zu verbessern?",
|
"csat_survey_question_3_headline": "Ugh, sorry! Können wir irgendwas tun, um deine Erfahrung zu verbessern?",
|
||||||
"csat_survey_question_3_placeholder": "Tippe deine Antwort hier...",
|
"csat_survey_question_3_placeholder": "Tippe deine Antwort hier...",
|
||||||
"cta_description": "Information anzeigen und Benutzer auffordern, eine bestimmte Aktion auszuführen",
|
"cta_description": "Information anzeigen und Benutzer auffordern, eine bestimmte Aktion auszuführen",
|
||||||
"custom_survey_block_1_name": "Block 1",
|
|
||||||
"custom_survey_description": "Erstelle eine Umfrage ohne Vorlage.",
|
"custom_survey_description": "Erstelle eine Umfrage ohne Vorlage.",
|
||||||
"custom_survey_name": "Eigene Umfrage erstellen",
|
"custom_survey_name": "Eigene Umfrage erstellen",
|
||||||
"custom_survey_question_1_headline": "Was möchtest Du wissen?",
|
"custom_survey_question_1_headline": "Was möchtest Du wissen?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Nein, danke!",
|
"preview_survey_question_2_choice_2_label": "Nein, danke!",
|
||||||
"preview_survey_question_2_headline": "Möchtest Du auf dem Laufenden bleiben?",
|
"preview_survey_question_2_headline": "Möchtest Du auf dem Laufenden bleiben?",
|
||||||
"preview_survey_question_2_subheader": "Dies ist eine Beispielbeschreibung.",
|
"preview_survey_question_2_subheader": "Dies ist eine Beispielbeschreibung.",
|
||||||
|
"preview_survey_question_open_text_headline": "Möchtest Du noch etwas teilen?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Tippe deine Antwort hier...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Dein Feedback hilft uns, besser zu werden.",
|
||||||
"preview_survey_welcome_card_headline": "Willkommen!",
|
"preview_survey_welcome_card_headline": "Willkommen!",
|
||||||
"prioritize_features_description": "Identifiziere die Funktionen, die deine Nutzer am meisten und am wenigsten brauchen.",
|
"prioritize_features_description": "Identifiziere die Funktionen, die deine Nutzer am meisten und am wenigsten brauchen.",
|
||||||
"prioritize_features_name": "Funktionen priorisieren",
|
"prioritize_features_name": "Funktionen priorisieren",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Individuelle Forschung",
|
"professional_development_survey_question_2_choice_5": "Individuelle Forschung",
|
||||||
"professional_development_survey_question_2_choice_6": "Andere",
|
"professional_development_survey_question_2_choice_6": "Andere",
|
||||||
"professional_development_survey_question_2_headline": "Welche Arten von beruflichen Entwicklungsmöglichkeiten denken Sie, wären am wertvollsten für Ihre Weiterentwicklung?",
|
"professional_development_survey_question_2_headline": "Welche Arten von beruflichen Entwicklungsmöglichkeiten denken Sie, wären am wertvollsten für Ihre Weiterentwicklung?",
|
||||||
"professional_development_survey_question_2_subheader": "Bitte wählen Sie alle zutreffenden Optionen aus:",
|
"professional_development_survey_question_2_subheader": "Bitte wähle alle zutreffenden Optionen aus:",
|
||||||
"professional_development_survey_question_3_choice_1": "Ja",
|
"professional_development_survey_question_3_choice_1": "Ja",
|
||||||
"professional_development_survey_question_3_choice_2": "Nein",
|
"professional_development_survey_question_3_choice_2": "Nein",
|
||||||
"professional_development_survey_question_3_headline": "Haben Sie in der Vergangenheit Zeit für Ihre berufliche Weiterentwicklung eingeplant?",
|
"professional_development_survey_question_3_headline": "Haben Sie in der Vergangenheit Zeit für Ihre berufliche Weiterentwicklung eingeplant?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Ich fühlte mich beim Benutzen des Systems sicher.",
|
"usability_question_9_headline": "Ich fühlte mich beim Benutzen des Systems sicher.",
|
||||||
"usability_rating_description": "Bewerte die wahrgenommene Benutzerfreundlichkeit, indem du die Nutzer bittest, ihre Erfahrung mit deinem Produkt mittels eines standardisierten 10-Fragen-Fragebogens zu bewerten.",
|
"usability_rating_description": "Bewerte die wahrgenommene Benutzerfreundlichkeit, indem du die Nutzer bittest, ihre Erfahrung mit deinem Produkt mittels eines standardisierten 10-Fragen-Fragebogens zu bewerten.",
|
||||||
"usability_score_name": "System Usability Score Survey (SUS)"
|
"usability_score_name": "System Usability Score Survey (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Danke, dass du deine Workflow-Idee mit uns geteilt hast! Wir arbeiten gerade an diesem Feature und dein Feedback hilft uns dabei, genau das zu entwickeln, was du brauchst.",
|
||||||
|
"coming_soon_title": "Wir sind fast da!",
|
||||||
|
"follow_up_label": "Gibt es noch etwas, das du hinzufügen möchtest?",
|
||||||
|
"follow_up_placeholder": "Welche konkreten Aufgaben möchten Sie automatisieren? Gibt es Tools oder Integrationen, die Sie einbinden möchten?",
|
||||||
|
"generate_button": "Workflow generieren",
|
||||||
|
"heading": "Welchen Workflow möchtest du erstellen?",
|
||||||
|
"placeholder": "Beschreiben Sie den Workflow, den Sie erstellen möchten…",
|
||||||
|
"subheading": "Generiere deinen Workflow in Sekunden.",
|
||||||
|
"submit_button": "Details hinzufügen",
|
||||||
|
"thank_you_description": "Ihr Feedback hilft uns, die Workflows-Funktion so zu gestalten, wie Sie sie brauchen. Wir halten Sie über unseren Fortschritt auf dem Laufenden.",
|
||||||
|
"thank_you_title": "Danke für dein Feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+71
-33
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Copy",
|
"copy": "Copy",
|
||||||
"copy_code": "Copy code",
|
"copy_code": "Copy code",
|
||||||
"copy_link": "Copy Link",
|
"copy_link": "Copy Link",
|
||||||
"count_attributes": "{value, plural, one {{value} attribute} other {{value} attributes}}",
|
"count_attributes": "{count, plural, one {{count} attribute} other {{count} attributes}}",
|
||||||
"count_contacts": "{value, plural, one {{value} contact} other {{value} contacts}}",
|
"count_contacts": "{count, plural, one {{count} contact} other {{count} contacts}}",
|
||||||
"count_responses": "{value, plural, one {{value} response} other {{value} responses}}",
|
"count_members": "{count, plural, one {{count} member} other {{count} members}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} question} other {{count} questions}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} response} other {{count} responses}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} selection} other {{count} selections}}",
|
||||||
"create_new_organization": "Create new organization",
|
"create_new_organization": "Create new organization",
|
||||||
"create_segment": "Create segment",
|
"create_segment": "Create segment",
|
||||||
"create_survey": "Create survey",
|
"create_survey": "Create survey",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "days",
|
"days": "days",
|
||||||
"default": "Default",
|
"default": "Default",
|
||||||
"delete": "Delete",
|
"delete": "Delete",
|
||||||
|
"delete_what": "Delete {deleteWhat}",
|
||||||
"description": "Description",
|
"description": "Description",
|
||||||
"dev_env": "Dev Environment",
|
"dev_env": "Dev Environment",
|
||||||
"development": "Development",
|
"development": "Development",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Download",
|
"download": "Download",
|
||||||
"draft": "Draft",
|
"draft": "Draft",
|
||||||
"duplicate": "Duplicate",
|
"duplicate": "Duplicate",
|
||||||
|
"duplicate_copy": "(copy)",
|
||||||
|
"duplicate_copy_number": "(copy {copyNumber})",
|
||||||
"e_commerce": "E-Commerce",
|
"e_commerce": "E-Commerce",
|
||||||
"edit": "Edit",
|
"edit": "Edit",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Look & Feel",
|
"look_and_feel": "Look & Feel",
|
||||||
"manage": "Manage",
|
"manage": "Manage",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Member",
|
|
||||||
"members": "Members",
|
"members": "Members",
|
||||||
"members_and_teams": "Members & Teams",
|
"members_and_teams": "Members & Teams",
|
||||||
"membership_not_found": "Membership not found",
|
"membership_not_found": "Membership not found",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Move down",
|
"move_down": "Move down",
|
||||||
"move_up": "Move up",
|
"move_up": "Move up",
|
||||||
"multiple_languages": "Multiple languages",
|
"multiple_languages": "Multiple languages",
|
||||||
|
"my_product": "my Product",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"new": "New",
|
"new": "New",
|
||||||
"new_version_available": "Formbricks {version} is here. Upgrade now!",
|
"new_version_available": "Formbricks {version} is here. Upgrade now!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Select teams",
|
"select_teams": "Select teams",
|
||||||
"selected": "Selected",
|
"selected": "Selected",
|
||||||
"selected_questions": "Selected questions",
|
"selected_questions": "Selected questions",
|
||||||
"selection": "Selection",
|
|
||||||
"selections": "Selections",
|
|
||||||
"send_test_email": "Send test email",
|
"send_test_email": "Send test email",
|
||||||
"session_not_found": "Session not found",
|
"session_not_found": "Session not found",
|
||||||
"settings": "Settings",
|
"settings": "Settings",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Show response count",
|
"show_response_count": "Show response count",
|
||||||
"shown": "Shown",
|
"shown": "Shown",
|
||||||
"size": "Size",
|
"size": "Size",
|
||||||
|
"skip": "Skip",
|
||||||
"skipped": "Skipped",
|
"skipped": "Skipped",
|
||||||
"skips": "Skips",
|
"skips": "Skips",
|
||||||
"some_files_failed_to_upload": "Some files failed to upload",
|
"some_files_failed_to_upload": "Some files failed to upload",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Website Survey",
|
"website_survey": "Website Survey",
|
||||||
"weeks": "weeks",
|
"weeks": "weeks",
|
||||||
"welcome_card": "Welcome card",
|
"welcome_card": "Welcome card",
|
||||||
|
"workflows": "Workflows",
|
||||||
"workspace_configuration": "Workspace Configuration",
|
"workspace_configuration": "Workspace Configuration",
|
||||||
"workspace_created_successfully": "Workspace created successfully",
|
"workspace_created_successfully": "Workspace created successfully",
|
||||||
"workspace_creation_description": "Organize surveys in workspaces for better access control.",
|
"workspace_creation_description": "Organize surveys in workspaces for better access control.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Value",
|
"attribute_value": "Value",
|
||||||
"attribute_value_placeholder": "Attribute Value",
|
"attribute_value_placeholder": "Attribute Value",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Could not create {count} new attribute(s) as it would exceed the maximum limit of {limit} attribute classes. Existing attributes were updated successfully.",
|
"attributes_msg_attribute_limit_exceeded": "Could not create {count} new attribute(s) as it would exceed the maximum limit of {limit} attribute classes. Existing attributes were updated successfully.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (attribute '{key}' has dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (attribute “{key}” has dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "The email already exists for this environment and was not updated.",
|
"attributes_msg_email_already_exists": "The email already exists for this environment and was not updated.",
|
||||||
"attributes_msg_email_or_userid_required": "Either email or userId is required. The existing values were preserved.",
|
"attributes_msg_email_or_userid_required": "Either email or user ID is required. The existing values were preserved.",
|
||||||
"attributes_msg_new_attribute_created": "Created new attribute '{key}' with type '{dataType}'",
|
"attributes_msg_new_attribute_created": "Created new attribute “{key}” with type “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "The userId already exists for this environment and was not updated.",
|
"attributes_msg_userid_already_exists": "The user ID already exists for this environment and was not updated.",
|
||||||
"contact_deleted_successfully": "Contact deleted successfully",
|
"contact_deleted_successfully": "Contact deleted successfully",
|
||||||
"contact_not_found": "No such contact found",
|
"contact_not_found": "No such contact found",
|
||||||
"contacts_table_refresh": "Refresh contacts",
|
"contacts_table_refresh": "Refresh contacts",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Data Type",
|
"data_type": "Data Type",
|
||||||
"data_type_cannot_be_changed": "Data type cannot be changed after creation",
|
"data_type_cannot_be_changed": "Data type cannot be changed after creation",
|
||||||
"data_type_description": "Choose how this attribute should be stored and filtered",
|
"data_type_description": "Choose how this attribute should be stored and filtered",
|
||||||
"date_value_required": "Date value is required. Use the delete button to remove this attribute if you don't want to set a date.",
|
"date_value_required": "Date value is required. Use the delete button to remove this attribute if you do not want to set a date.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {This will delete the selected attribute. Any contact data associated with this attribute will be lost.} other {This will delete the selected attributes. Any contact data associated with these attributes will be lost.}}",
|
"delete_attribute_confirmation": "{value, plural, one {This will delete the selected attribute. Any contact data associated with this attribute will be lost.} other {This will delete the selected attributes. Any contact data associated with these attributes will be lost.}}",
|
||||||
"delete_contact_confirmation": "This will delete all survey responses and contact attributes associated with this contact. Any targeting and personalization based on this contact’s data will be lost.",
|
"delete_contact_confirmation": "This will delete all survey responses and contact attributes associated with this contact. Any targeting and personalization based on this contact’s data will be lost.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {This will delete all survey responses and contact attributes associated with this contact. Any targeting and personalization based on this contact’s data will be lost. If this contact has responses that count towards survey quotas, the quota counts will be reduced but the quota limits will remain unchanged.} other {This will delete all survey responses and contact attributes associated with these contacts. Any targeting and personalization based on these contacts’ data will be lost. If these contacts have responses that count towards survey quotas, the quota counts will be reduced but the quota limits will remain unchanged.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {This will delete all survey responses and contact attributes associated with this contact. Any targeting and personalization based on this contact’s data will be lost. If this contact has responses that count towards survey quotas, the quota counts will be reduced but the quota limits will remain unchanged.} other {This will delete all survey responses and contact attributes associated with these contacts. Any targeting and personalization based on these contacts’ data will be lost. If these contacts have responses that count towards survey quotas, the quota counts will be reduced but the quota limits will remain unchanged.}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "System Attributes",
|
"system_attributes": "System Attributes",
|
||||||
"unlock_contacts_description": "Manage contacts and send out targeted surveys",
|
"unlock_contacts_description": "Manage contacts and send out targeted surveys",
|
||||||
"unlock_contacts_title": "Unlock contacts with a higher plan",
|
"unlock_contacts_title": "Unlock contacts with a higher plan",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Attribute \"{key}\" is typed as \"{dataType}\" but CSV contains invalid values: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Attribute “{key}” is typed as “{dataType}” but CSV contains invalid values: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Duplicate mappings found for the following attributes: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Duplicate mappings found for the following attributes: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "File size exceeds the maximum limit of 800KB",
|
"upload_contacts_error_file_too_large": "File size exceeds the maximum limit of 800KB",
|
||||||
"upload_contacts_error_generic": "An error occurred while uploading the contacts. Please try again later.",
|
"upload_contacts_error_generic": "An error occurred while uploading the contacts. Please try again later.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconnect",
|
"reconnect_button": "Reconnect",
|
||||||
"reconnect_button_description": "Your Google Sheets connection has expired. Please reconnect to continue syncing responses. Your existing spreadsheet links and data will be preserved.",
|
"reconnect_button_description": "Your Google Sheets connection has expired. Please reconnect to continue syncing responses. Your existing spreadsheet links and data will be preserved.",
|
||||||
"reconnect_button_tooltip": "Reconnect the integration to refresh your access. Your existing spreadsheet links and data will be preserved.",
|
"reconnect_button_tooltip": "Reconnect the integration to refresh your access. Your existing spreadsheet links and data will be preserved.",
|
||||||
"spreadsheet_permission_error": "You don't have permission to access this spreadsheet. Please ensure the spreadsheet is shared with your Google account and you have write access to the spreadsheet.",
|
"spreadsheet_permission_error": "You do not have permission to access this spreadsheet. Please ensure the spreadsheet is shared with your Google account and you have write access to the spreadsheet.",
|
||||||
"spreadsheet_url": "Spreadsheet URL",
|
"spreadsheet_url": "Spreadsheet URL",
|
||||||
"token_expired_error": "Google Sheets refresh token has expired or been revoked. Please reconnect the integration."
|
"token_expired_error": "Google Sheets refresh token has expired or been revoked. Please reconnect the integration."
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "Current Plan",
|
"current_plan": "Current Plan",
|
||||||
"current_tier_limit": "Current Tier Limit",
|
"current_tier_limit": "Current Tier Limit",
|
||||||
"custom": "Custom & Scale",
|
"custom": "Custom & Scale",
|
||||||
"custom_contacts_limit": "Custom Contacts Limit",
|
"custom_contacts_limit": "Custom Contact Limit",
|
||||||
"custom_response_limit": "Custom Response Limit",
|
"custom_response_limit": "Custom Response Limit",
|
||||||
"custom_workspace_limit": "Custom Workspace Limit",
|
"custom_workspace_limit": "Custom Workspace Limit",
|
||||||
"email_embedded_surveys": "Email Embedded Surveys",
|
"email_embedded_surveys": "Email Embedded Surveys",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "The license key is invalid. Please verify your ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "The license key is invalid. Please verify your ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "License check successful",
|
"recheck_license_success": "License check successful",
|
||||||
"recheck_license_unreachable": "License server is unreachable. Please try again later.",
|
"recheck_license_unreachable": "License server is unreachable. Please try again later.",
|
||||||
"rechecking": "Rechecking...",
|
"rechecking": "Rechecking…",
|
||||||
"request_30_day_trial_license": "Request 30-day Trial License",
|
"request_30_day_trial_license": "Request 30-day Trial License",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Service Level Agreement",
|
"service_level_agreement": "Service Level Agreement",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Hey {userName}",
|
"email_customization_preview_email_heading": "Hey {userName}",
|
||||||
"email_customization_preview_email_text": "This is an email preview to show you which logo will be rendered in the emails.",
|
"email_customization_preview_email_text": "This is an email preview to show you which logo will be rendered in the emails.",
|
||||||
"error_deleting_organization_please_try_again": "Error deleting organization. Please try again.",
|
"error_deleting_organization_please_try_again": "Error deleting organization. Please try again.",
|
||||||
"from_your_organization": "from your organization",
|
"from_your_organization": "{memberName} from your organization",
|
||||||
"invitation_sent_once_more": "Invitation sent once more.",
|
"invitation_sent_once_more": "Invitation sent once more.",
|
||||||
"invite_deleted_successfully": "Invite deleted successfully",
|
"invite_deleted_successfully": "Invite deleted successfully",
|
||||||
"invite_expires_on": "Invite expires on {date}",
|
"invite_expires_on": "Invite expires on {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Notification settings updated",
|
"notification_settings_updated": "Notification settings updated",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Set up an alert to get an email on new responses",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Set up an alert to get an email on new responses",
|
||||||
"use_the_integration": "Use the integration",
|
"use_the_integration": "Use the integration",
|
||||||
"want_to_loop_in_organization_mates": "Want to loop in organization mates",
|
"want_to_loop_in_organization_mates": "Want to loop in organization mates?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "You will not be auto-subscribed to this organization’s surveys anymore!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "You will not be auto-subscribed to this organization’s surveys anymore!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "You will not receive any more emails for responses on this survey!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "You will not receive any more emails for responses on this survey!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Add a placeholder to show if there is no value to recall.",
|
"add_fallback_placeholder": "Add a placeholder to show if there is no value to recall.",
|
||||||
"add_hidden_field_id": "Add hidden field ID",
|
"add_hidden_field_id": "Add hidden field ID",
|
||||||
"add_highlight_border": "Add highlight border",
|
"add_highlight_border": "Add highlight border",
|
||||||
|
"add_highlight_border_description": "Only applies to in-product surveys.",
|
||||||
"add_logic": "Add logic",
|
"add_logic": "Add logic",
|
||||||
"add_none_of_the_above": "Add “None of the Above”",
|
"add_none_of_the_above": "Add “None of the Above”",
|
||||||
"add_option": "Add option",
|
"add_option": "Add option",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Adjust “Survey Closed” message",
|
"adjust_survey_closed_message": "Adjust “Survey Closed” message",
|
||||||
"adjust_survey_closed_message_description": "Change the message visitors see when the survey is closed.",
|
"adjust_survey_closed_message_description": "Change the message visitors see when the survey is closed.",
|
||||||
"adjust_the_theme_in_the": "Adjust the theme in the",
|
"adjust_the_theme_in_the": "Adjust the theme in the",
|
||||||
|
"all_are_true": "all are true",
|
||||||
"all_other_answers_will_continue_to": "All other answers will continue to",
|
"all_other_answers_will_continue_to": "All other answers will continue to",
|
||||||
"allow_multi_select": "Allow multi-select",
|
"allow_multi_select": "Allow multi-select",
|
||||||
"allow_multiple_files": "Allow multiple files",
|
"allow_multiple_files": "Allow multiple files",
|
||||||
"allow_users_to_select_more_than_one_image": "Allow users to select more than one image",
|
"allow_users_to_select_more_than_one_image": "Allow users to select more than one image",
|
||||||
"and_launch_surveys_in_your_website_or_app": "and launch surveys in your website or app.",
|
"and_launch_surveys_in_your_website_or_app": "and launch surveys in your website or app.",
|
||||||
"animation": "Animation",
|
"animation": "Animation",
|
||||||
|
"any_is_true": "any is true",
|
||||||
"app_survey_description": "Embed a survey in your web app or website to collect responses.",
|
"app_survey_description": "Embed a survey in your web app or website to collect responses.",
|
||||||
"assign": "Assign =",
|
"assign": "Assign =",
|
||||||
"audience": "Audience",
|
"audience": "Audience",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Calculate",
|
"calculate": "Calculate",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Capture a new action to trigger a survey on.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Capture a new action to trigger a survey on.",
|
||||||
"capture_ip_address": "Capture IP address",
|
"capture_ip_address": "Capture IP address",
|
||||||
"capture_ip_address_description": "Store the respondent's IP address in response metadata for duplicate detection and security purposes",
|
"capture_ip_address_description": "Store the respondent’s IP address in response metadata for duplicate detection and security purposes",
|
||||||
"capture_new_action": "Capture new action",
|
"capture_new_action": "Capture new action",
|
||||||
"card_arrangement_for_survey_type_derived": "Card Arrangement for {surveyTypeDerived} Surveys",
|
"card_arrangement_for_survey_type_derived": "Card Arrangement for {surveyTypeDerived} Surveys",
|
||||||
"card_background_color": "Card background color",
|
"card_background_color": "Card background color",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Casual",
|
"casual": "Casual",
|
||||||
"caution_edit_duplicate": "Duplicate & edit",
|
"caution_edit_duplicate": "Duplicate & edit",
|
||||||
"caution_edit_published_survey": "Edit a published survey?",
|
"caution_edit_published_survey": "Edit a published survey?",
|
||||||
"caution_explanation_intro": "We understand you might still want to make changes. Here is what happens if you do: ",
|
"caution_explanation_intro": "We understand you might still want to make changes. Here is what happens if you do:",
|
||||||
"caution_explanation_new_responses_separated": "Responses before the change may not or only partially be included in the survey summary.",
|
"caution_explanation_new_responses_separated": "Responses before the change may not or only partially be included in the survey summary.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "All data, including past responses, remain available as download on the survey summary page.",
|
"caution_explanation_only_new_responses_in_summary": "All data, including past responses, remain available as download on the survey summary page.",
|
||||||
"caution_explanation_responses_are_safe": "Older and newer responses get mixed which can lead to misleading data summaries.",
|
"caution_explanation_responses_are_safe": "Older and newer responses get mixed which can lead to misleading data summaries.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Follow-up updated and will be saved once you save the survey.",
|
"follow_ups_modal_updated_successfull_toast": "Follow-up updated and will be saved once you save the survey.",
|
||||||
"follow_ups_new": "New follow-up",
|
"follow_ups_new": "New follow-up",
|
||||||
"follow_ups_upgrade_button_text": "Upgrade to enable follow-ups",
|
"follow_ups_upgrade_button_text": "Upgrade to enable follow-ups",
|
||||||
"form_styling": "Form styling",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK is not connected",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK is not connected",
|
||||||
"four_points": "4 points",
|
"four_points": "4 points",
|
||||||
"heading": "Heading",
|
"heading": "Heading",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Option {choiceIndex}",
|
"option_idx": "Option {choiceIndex}",
|
||||||
"option_used_in_logic_error": "This option is used in logic of question {questionIndex}. Please remove it from logic first.",
|
"option_used_in_logic_error": "This option is used in logic of question {questionIndex}. Please remove it from logic first.",
|
||||||
"optional": "Optional",
|
"optional": "Optional",
|
||||||
"options": "Options",
|
"options": "Options*",
|
||||||
"options_used_in_logic_bulk_error": "The following options are used in logic: {questionIndexes}. Please remove them from logic first.",
|
"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.",
|
"override_theme_with_individual_styles_for_this_survey": "Override the theme with individual styles for this survey.",
|
||||||
"overwrite_global_waiting_time": "Set custom Cooldown Period",
|
"overwrite_global_waiting_time": "Set custom Cooldown Period",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Question deleted.",
|
"question_deleted": "Question deleted.",
|
||||||
"question_duplicated": "Question duplicated.",
|
"question_duplicated": "Question duplicated.",
|
||||||
"question_id_updated": "Question ID updated",
|
"question_id_updated": "Question ID updated",
|
||||||
|
"question_number": "Question {number}",
|
||||||
"question_used_in_logic_warning_text": "Elements from this block are used in a logic rule, are you sure you want to delete it?",
|
"question_used_in_logic_warning_text": "Elements from this block are used in a logic rule, are you sure you want to delete it?",
|
||||||
"question_used_in_logic_warning_title": "Logic Inconsistency",
|
"question_used_in_logic_warning_title": "Logic Inconsistency",
|
||||||
"question_used_in_quota": "This question is being used in “{quotaName}” quota",
|
"question_used_in_quota": "This question is being used in “{quotaName}” quota",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Response limits, redirections and more.",
|
"response_limits_redirections_and_more": "Response limits, redirections and more.",
|
||||||
"response_options": "Response Options",
|
"response_options": "Response Options",
|
||||||
"roundness": "Roundness",
|
"roundness": "Roundness",
|
||||||
"roundness_description": "Controls how rounded the card corners are.",
|
"roundness_description": "Controls how rounded corners are.",
|
||||||
"row_used_in_logic_error": "This row is used in logic of question {questionIndex}. Please remove it from logic first.",
|
"row_used_in_logic_error": "This row is used in logic of question {questionIndex}. Please remove it from logic first.",
|
||||||
"rows": "Rows",
|
"rows": "Rows",
|
||||||
"save_and_close": "Save & Close",
|
"save_and_close": "Save & Close",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "This free & open-source survey has been closed",
|
"survey_completed_subheading": "This free & open-source survey has been closed",
|
||||||
"survey_display_settings": "Survey Display Settings",
|
"survey_display_settings": "Survey Display Settings",
|
||||||
"survey_placement": "Survey Placement",
|
"survey_placement": "Survey Placement",
|
||||||
|
"survey_styling": "Survey styling",
|
||||||
"survey_trigger": "Survey Trigger",
|
"survey_trigger": "Survey Trigger",
|
||||||
"switch_multi_language_on_to_get_started": "Switch multi-language on to get started 👉",
|
"switch_multi_language_on_to_get_started": "Switch multi-language on to get started 👉",
|
||||||
"target_block_not_found": "Target block not found",
|
"target_block_not_found": "Target block not found",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Matches regex pattern",
|
"pattern": "Matches regex pattern",
|
||||||
"phone": "Is valid phone",
|
"phone": "Is valid phone",
|
||||||
"rank_all_options": "Rank all options",
|
"rank_all_options": "Rank all options",
|
||||||
"select_file_extensions": "Select file extensions...",
|
"select_file_extensions": "Select file extensions…",
|
||||||
"select_option": "Select option",
|
"select_option": "Select option",
|
||||||
"start_date": "Start date",
|
"start_date": "Start date",
|
||||||
"url": "Is valid URL"
|
"url": "Is valid URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Cooldown Period (across surveys)",
|
"waiting_time_across_surveys": "Cooldown Period (across surveys)",
|
||||||
"waiting_time_across_surveys_description": "To prevent survey fatigue, choose how this survey interacts with the workspace-wide Cooldown Period.",
|
"waiting_time_across_surveys_description": "To prevent survey fatigue, choose how this survey interacts with the workspace-wide Cooldown Period.",
|
||||||
"welcome_message": "Welcome message",
|
"welcome_message": "Welcome message",
|
||||||
|
"when": "When",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Without a filter, all of your users can be surveyed.",
|
"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_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.",
|
|
||||||
"your_description_here_recall_information_with": "Your description here. Recall information with @",
|
"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_question_here_recall_information_with": "Your question here. Recall information with @",
|
||||||
"your_web_app": "Your web app",
|
"your_web_app": "Your web app",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Disable single-use links",
|
"disable_single_use_link_modal_button": "Disable single-use links",
|
||||||
"disable_single_use_link_modal_description": "If you shared single-use links, participants will not be able to respond to the survey any longer.",
|
"disable_single_use_link_modal_description": "If you shared single-use links, participants will not be able to respond to the survey any longer.",
|
||||||
"generate_and_download_links": "Generate & download links",
|
"generate_and_download_links": "Generate & download links",
|
||||||
"generate_links_error": "Single use links could not get generated. Please work directly with the API",
|
"generate_links_error": "Single use links could not get generated. Please work directly with the API.",
|
||||||
"multi_use_link": "Multi-use link",
|
"multi_use_link": "Multi-use link",
|
||||||
"multi_use_link_description": "Collect multiple responses from anonymous respondents with one link.",
|
"multi_use_link_description": "Collect multiple responses from anonymous respondents with one link.",
|
||||||
"multi_use_powers_other_channels_description": "If you disable it, these other distribution channels will also get disabled.",
|
"multi_use_powers_other_channels_description": "If you disable it, these other distribution channels will also get disabled.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Added filter for responses where answer to question {questionIdx} is {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Added filter for responses where answer to question {questionIdx} is {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Added filter for responses where answer to question {questionIdx} is skipped",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Added filter for responses where answer to question {questionIdx} is skipped",
|
||||||
"aggregated": "Aggregated",
|
"aggregated": "Aggregated",
|
||||||
"all_responses_csv": "All responses (CSV)",
|
"all_responses_csv": "All responses (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Starts",
|
"starts": "Starts",
|
||||||
"starts_tooltip": "Number of times the survey has been started.",
|
"starts_tooltip": "Number of times the survey has been started.",
|
||||||
"survey_reset_successfully": "Survey reset successfully. {responseCount} responses and {displayCount} displays were deleted.",
|
"survey_reset_successfully": "Survey reset successfully. {responseCount} responses and {displayCount} displays were deleted.",
|
||||||
|
"survey_results": "{surveyName} Results",
|
||||||
"this_month": "This month",
|
"this_month": "This month",
|
||||||
"this_quarter": "This quarter",
|
"this_quarter": "This quarter",
|
||||||
"this_year": "This year",
|
"this_year": "This year",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Add a background color to the logo container.",
|
"add_background_color_description": "Add a background color to the logo container.",
|
||||||
"advanced_styling_field_border_radius": "Border Radius",
|
"advanced_styling_field_border_radius": "Border Radius",
|
||||||
"advanced_styling_field_button_bg": "Button Background",
|
"advanced_styling_field_button_bg": "Button Background",
|
||||||
"advanced_styling_field_button_bg_description": "Fills the Next / Submit button.",
|
"advanced_styling_field_button_bg_description": "Fills the “Next” / “Submit” button.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Rounds the button corners.",
|
"advanced_styling_field_button_border_radius_description": "Rounds the button corners.",
|
||||||
"advanced_styling_field_button_font_size_description": "Scales the button label text.",
|
"advanced_styling_field_button_font_size_description": "Scales the button label text.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Makes button text lighter or bolder.",
|
"advanced_styling_field_button_font_weight_description": "Makes button text lighter or bolder.",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "Colors the filled portion of the bar.",
|
"advanced_styling_field_indicator_bg_description": "Colors the filled portion of the bar.",
|
||||||
"advanced_styling_field_input_border_radius_description": "Rounds the input corners.",
|
"advanced_styling_field_input_border_radius_description": "Rounds the input corners.",
|
||||||
"advanced_styling_field_input_font_size_description": "Scales the typed text in inputs.",
|
"advanced_styling_field_input_font_size_description": "Scales the typed text in inputs.",
|
||||||
"advanced_styling_field_input_height_description": "Controls the minimum height of the input field.",
|
"advanced_styling_field_input_height_description": "Controls the minimum height of the input.",
|
||||||
"advanced_styling_field_input_padding_x_description": "Adds space on the left and right.",
|
"advanced_styling_field_input_padding_x_description": "Adds space on the left and right.",
|
||||||
"advanced_styling_field_input_padding_y_description": "Adds space on the top and bottom.",
|
"advanced_styling_field_input_padding_y_description": "Adds space on the top and bottom.",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "Fades the placeholder hint text.",
|
"advanced_styling_field_input_placeholder_opacity_description": "Fades the placeholder hint text.",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colors the typed text in inputs.",
|
"advanced_styling_field_input_text_description": "Colors the typed text in inputs.",
|
||||||
"advanced_styling_field_option_bg": "Background",
|
"advanced_styling_field_option_bg": "Background",
|
||||||
"advanced_styling_field_option_bg_description": "Fills the option items.",
|
"advanced_styling_field_option_bg_description": "Fills the option items.",
|
||||||
|
"advanced_styling_field_option_border": "Border Color",
|
||||||
|
"advanced_styling_field_option_border_description": "Outlines radio and checkbox options.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Rounds the option corners.",
|
"advanced_styling_field_option_border_radius_description": "Rounds the option corners.",
|
||||||
"advanced_styling_field_option_font_size_description": "Scales the option label text.",
|
"advanced_styling_field_option_font_size_description": "Scales the option label text.",
|
||||||
"advanced_styling_field_option_label": "Label Color",
|
"advanced_styling_field_option_label": "Label Color",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Show “Powered by Formbricks” Signature",
|
"show_powered_by_formbricks": "Show “Powered by Formbricks” Signature",
|
||||||
"styling_updated_successfully": "Styling updated successfully",
|
"styling_updated_successfully": "Styling updated successfully",
|
||||||
"suggest_colors": "Suggest colors",
|
"suggest_colors": "Suggest colors",
|
||||||
"suggested_colors_applied_please_save": "Suggested colors generated successfully. Press \"Save\" to persist the changes.",
|
"suggested_colors_applied_please_save": "Suggested colors generated successfully. Press “Save” to persist the changes.",
|
||||||
"theme": "Theme",
|
"theme": "Theme",
|
||||||
"theme_settings_description": "Create a style theme for all surveys. You can enable custom styling for each survey."
|
"theme_settings_description": "Create a style theme for all surveys. You can enable custom styling for each survey."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Please also check your spam folder if you do not see the email in your inbox.",
|
"check_inbox_or_spam": "Please also check your spam folder if you do not see the email in your inbox.",
|
||||||
"completed": "This survey is closed.",
|
"completed": "This survey is closed.",
|
||||||
"create_your_own": "Create your own open-source survey",
|
"create_your_own": "Create your own open-source survey",
|
||||||
"enter_pin": "This survey is protected. Enter the PIN below",
|
"enter_pin": "This survey is protected. Enter the PIN below.",
|
||||||
"just_curious": "Just curious?",
|
"just_curious": "Just curious?",
|
||||||
"link_invalid": "This survey can only be taken by invitation.",
|
"link_invalid": "This survey can only be taken by invitation.",
|
||||||
"paused": "This survey is temporarily paused.",
|
"paused": "This survey is temporarily paused.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "How can the company improve its vision and strategy alignment?",
|
"alignment_and_engagement_survey_question_4_headline": "How can the company improve its vision and strategy alignment?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Type your answer here…",
|
"alignment_and_engagement_survey_question_4_placeholder": "Type your answer here…",
|
||||||
"back": "Back",
|
"back": "Back",
|
||||||
|
"block_1": "Block 1",
|
||||||
|
"block_10": "Block 10",
|
||||||
|
"block_2": "Block 2",
|
||||||
|
"block_3": "Block 3",
|
||||||
|
"block_4": "Block 4",
|
||||||
|
"block_5": "Block 5",
|
||||||
|
"block_6": "Block 6",
|
||||||
|
"block_7": "Block 7",
|
||||||
|
"block_8": "Block 8",
|
||||||
|
"block_9": "Block 9",
|
||||||
"book_interview": "Book interview",
|
"book_interview": "Book interview",
|
||||||
"build_product_roadmap_description": "Identify the ONE thing your users want the most and build it.",
|
"build_product_roadmap_description": "Identify the ONE thing your users want the most and build it.",
|
||||||
"build_product_roadmap_name": "Build Product Roadmap",
|
"build_product_roadmap_name": "Build Product Roadmap",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Poor quality",
|
"csat_question_3_choice_8": "Poor quality",
|
||||||
"csat_question_3_choice_9": "Unreliable",
|
"csat_question_3_choice_9": "Unreliable",
|
||||||
"csat_question_3_headline": "Which of the following words would you use to describe our $[projectName]?",
|
"csat_question_3_headline": "Which of the following words would you use to describe our $[projectName]?",
|
||||||
"csat_question_3_subheader": "Select all that apply:",
|
"csat_question_3_subheader": "Please select all that apply:",
|
||||||
"csat_question_4_choice_1": "Extremely well",
|
"csat_question_4_choice_1": "Extremely well",
|
||||||
"csat_question_4_choice_2": "Very well",
|
"csat_question_4_choice_2": "Very well",
|
||||||
"csat_question_4_choice_3": "Somewhat well",
|
"csat_question_4_choice_3": "Somewhat well",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Ugh, sorry! Is there anything we can do to improve your experience?",
|
"csat_survey_question_3_headline": "Ugh, sorry! Is there anything we can do to improve your experience?",
|
||||||
"csat_survey_question_3_placeholder": "Type your answer here…",
|
"csat_survey_question_3_placeholder": "Type your answer here…",
|
||||||
"cta_description": "Display information and prompt users to take a specific action",
|
"cta_description": "Display information and prompt users to take a specific action",
|
||||||
"custom_survey_block_1_name": "Block 1",
|
|
||||||
"custom_survey_description": "Create a survey without template.",
|
"custom_survey_description": "Create a survey without template.",
|
||||||
"custom_survey_name": "Start from scratch",
|
"custom_survey_name": "Start from scratch",
|
||||||
"custom_survey_question_1_headline": "What would you like to know?",
|
"custom_survey_question_1_headline": "What would you like to know?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "No, thank you!",
|
"preview_survey_question_2_choice_2_label": "No, thank you!",
|
||||||
"preview_survey_question_2_headline": "Want to stay in the loop?",
|
"preview_survey_question_2_headline": "Want to stay in the loop?",
|
||||||
"preview_survey_question_2_subheader": "This is an example description.",
|
"preview_survey_question_2_subheader": "This is an example description.",
|
||||||
|
"preview_survey_question_open_text_headline": "Anything else you'd like to share?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Type your answer here…",
|
||||||
|
"preview_survey_question_open_text_subheader": "Your feedback helps us improve.",
|
||||||
"preview_survey_welcome_card_headline": "Welcome!",
|
"preview_survey_welcome_card_headline": "Welcome!",
|
||||||
"prioritize_features_description": "Identify features your users need most and least.",
|
"prioritize_features_description": "Identify features your users need most and least.",
|
||||||
"prioritize_features_name": "Prioritize Features",
|
"prioritize_features_name": "Prioritize Features",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Individual research",
|
"professional_development_survey_question_2_choice_5": "Individual research",
|
||||||
"professional_development_survey_question_2_choice_6": "Other",
|
"professional_development_survey_question_2_choice_6": "Other",
|
||||||
"professional_development_survey_question_2_headline": "What types of professional development activities do you think would be most valuable for your growth?",
|
"professional_development_survey_question_2_headline": "What types of professional development activities do you think would be most valuable for your growth?",
|
||||||
"professional_development_survey_question_2_subheader": "Select all that apply",
|
"professional_development_survey_question_2_subheader": "Please select all that apply:",
|
||||||
"professional_development_survey_question_3_choice_1": "Yes",
|
"professional_development_survey_question_3_choice_1": "Yes",
|
||||||
"professional_development_survey_question_3_choice_2": "No",
|
"professional_development_survey_question_3_choice_2": "No",
|
||||||
"professional_development_survey_question_3_headline": "Have you dedicated time to your professional development in the past?",
|
"professional_development_survey_question_3_headline": "Have you dedicated time to your professional development in the past?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "I felt confident while using the system.",
|
"usability_question_9_headline": "I felt confident while using the system.",
|
||||||
"usability_rating_description": "Measure perceived usability by asking users to rate their experience with your product using a standardized 10-question survey.",
|
"usability_rating_description": "Measure perceived usability by asking users to rate their experience with your product using a standardized 10-question survey.",
|
||||||
"usability_score_name": "System Usability Score (SUS)"
|
"usability_score_name": "System Usability Score (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Thank you for sharing your workflow idea with us! We are currently designing this feature and your feedback will help us build exactly what you need.",
|
||||||
|
"coming_soon_title": "We are almost there!",
|
||||||
|
"follow_up_label": "Is there anything else you'd like to add?",
|
||||||
|
"follow_up_placeholder": "What specific tasks would you like to automate? Any tools or integrations you would want included?",
|
||||||
|
"generate_button": "Generate workflow",
|
||||||
|
"heading": "What workflow do you want to create?",
|
||||||
|
"placeholder": "Describe the workflow you want to generate…",
|
||||||
|
"subheading": "Generate your workflow in seconds.",
|
||||||
|
"submit_button": "Add details",
|
||||||
|
"thank_you_description": "Your input helps us build the Workflows feature you actually need. We will keep you posted on our progress.",
|
||||||
|
"thank_you_title": "Thank you for your feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-32
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Copiar",
|
"copy": "Copiar",
|
||||||
"copy_code": "Copiar código",
|
"copy_code": "Copiar código",
|
||||||
"copy_link": "Copiar enlace",
|
"copy_link": "Copiar enlace",
|
||||||
"count_attributes": "{value, plural, one {{value} atributo} other {{value} atributos}}",
|
"count_attributes": "{count, plural, one {{count} atributo} other {{count} atributos}}",
|
||||||
"count_contacts": "{value, plural, one {{value} contacto} other {{value} contactos}}",
|
"count_contacts": "{count, plural, one {{count} contacto} other {{count} contactos}}",
|
||||||
"count_responses": "{value, plural, one {{value} respuesta} other {{value} respuestas}}",
|
"count_members": "{count, plural, one {{count} miembro} other {{count} miembros}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} pregunta} other {{count} preguntas}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} respuesta} other {{count} respuestas}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} selección} other {{count} selecciones}}",
|
||||||
"create_new_organization": "Crear organización nueva",
|
"create_new_organization": "Crear organización nueva",
|
||||||
"create_segment": "Crear segmento",
|
"create_segment": "Crear segmento",
|
||||||
"create_survey": "Crear encuesta",
|
"create_survey": "Crear encuesta",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "días",
|
"days": "días",
|
||||||
"default": "Predeterminado",
|
"default": "Predeterminado",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
|
"delete_what": "Eliminar {deleteWhat}",
|
||||||
"description": "Descripción",
|
"description": "Descripción",
|
||||||
"dev_env": "Entorno de desarrollo",
|
"dev_env": "Entorno de desarrollo",
|
||||||
"development": "Desarrollo",
|
"development": "Desarrollo",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Descargar",
|
"download": "Descargar",
|
||||||
"draft": "Borrador",
|
"draft": "Borrador",
|
||||||
"duplicate": "Duplicar",
|
"duplicate": "Duplicar",
|
||||||
|
"duplicate_copy": "(copia)",
|
||||||
|
"duplicate_copy_number": "(copia {copyNumber})",
|
||||||
"e_commerce": "Comercio electrónico",
|
"e_commerce": "Comercio electrónico",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Apariencia",
|
"look_and_feel": "Apariencia",
|
||||||
"manage": "Gestionar",
|
"manage": "Gestionar",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Miembro",
|
|
||||||
"members": "Miembros",
|
"members": "Miembros",
|
||||||
"members_and_teams": "Miembros y equipos",
|
"members_and_teams": "Miembros y equipos",
|
||||||
"membership_not_found": "Membresía no encontrada",
|
"membership_not_found": "Membresía no encontrada",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Mover hacia abajo",
|
"move_down": "Mover hacia abajo",
|
||||||
"move_up": "Mover hacia arriba",
|
"move_up": "Mover hacia arriba",
|
||||||
"multiple_languages": "Múltiples idiomas",
|
"multiple_languages": "Múltiples idiomas",
|
||||||
|
"my_product": "mi producto",
|
||||||
"name": "Nombre",
|
"name": "Nombre",
|
||||||
"new": "Nuevo",
|
"new": "Nuevo",
|
||||||
"new_version_available": "Formbricks {version} está aquí. ¡Actualiza ahora!",
|
"new_version_available": "Formbricks {version} está aquí. ¡Actualiza ahora!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Seleccionar equipos",
|
"select_teams": "Seleccionar equipos",
|
||||||
"selected": "Seleccionado",
|
"selected": "Seleccionado",
|
||||||
"selected_questions": "Preguntas seleccionadas",
|
"selected_questions": "Preguntas seleccionadas",
|
||||||
"selection": "Selección",
|
|
||||||
"selections": "Selecciones",
|
|
||||||
"send_test_email": "Enviar correo electrónico de prueba",
|
"send_test_email": "Enviar correo electrónico de prueba",
|
||||||
"session_not_found": "Sesión no encontrada",
|
"session_not_found": "Sesión no encontrada",
|
||||||
"settings": "Ajustes",
|
"settings": "Ajustes",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Mostrar recuento de respuestas",
|
"show_response_count": "Mostrar recuento de respuestas",
|
||||||
"shown": "Mostrado",
|
"shown": "Mostrado",
|
||||||
"size": "Tamaño",
|
"size": "Tamaño",
|
||||||
|
"skip": "Omitir",
|
||||||
"skipped": "Omitido",
|
"skipped": "Omitido",
|
||||||
"skips": "Omisiones",
|
"skips": "Omisiones",
|
||||||
"some_files_failed_to_upload": "Algunos archivos no se han podido subir",
|
"some_files_failed_to_upload": "Algunos archivos no se han podido subir",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Encuesta de sitio web",
|
"website_survey": "Encuesta de sitio web",
|
||||||
"weeks": "semanas",
|
"weeks": "semanas",
|
||||||
"welcome_card": "Tarjeta de bienvenida",
|
"welcome_card": "Tarjeta de bienvenida",
|
||||||
|
"workflows": "Flujos de trabajo",
|
||||||
"workspace_configuration": "Configuración del proyecto",
|
"workspace_configuration": "Configuración del proyecto",
|
||||||
"workspace_created_successfully": "Proyecto creado correctamente",
|
"workspace_created_successfully": "Proyecto creado correctamente",
|
||||||
"workspace_creation_description": "Organiza las encuestas en proyectos para un mejor control de acceso.",
|
"workspace_creation_description": "Organiza las encuestas en proyectos para un mejor control de acceso.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Valor",
|
"attribute_value": "Valor",
|
||||||
"attribute_value_placeholder": "Valor del atributo",
|
"attribute_value_placeholder": "Valor del atributo",
|
||||||
"attributes_msg_attribute_limit_exceeded": "No se pudieron crear {count} atributo(s) nuevo(s) ya que se excedería el límite máximo de {limit} clases de atributos. Los atributos existentes se actualizaron correctamente.",
|
"attributes_msg_attribute_limit_exceeded": "No se pudieron crear {count} atributo(s) nuevo(s) ya que se excedería el límite máximo de {limit} clases de atributos. Los atributos existentes se actualizaron correctamente.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (el atributo '{key}' tiene dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (el atributo “{key}” tiene dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "El email ya existe para este entorno y no se actualizó.",
|
"attributes_msg_email_already_exists": "El email ya existe para este entorno y no se actualizó.",
|
||||||
"attributes_msg_email_or_userid_required": "Se requiere email o userId. Se conservaron los valores existentes.",
|
"attributes_msg_email_or_userid_required": "Se requiere el correo electrónico o el ID de usuario. Se conservaron los valores existentes.",
|
||||||
"attributes_msg_new_attribute_created": "Se creó el atributo nuevo '{key}' con tipo '{dataType}'",
|
"attributes_msg_new_attribute_created": "Se creó el atributo nuevo “{key}” con el tipo “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "El userId ya existe para este entorno y no se actualizó.",
|
"attributes_msg_userid_already_exists": "El ID de usuario ya existe para este entorno y no se actualizó.",
|
||||||
"contact_deleted_successfully": "Contacto eliminado correctamente",
|
"contact_deleted_successfully": "Contacto eliminado correctamente",
|
||||||
"contact_not_found": "No se ha encontrado dicho contacto",
|
"contact_not_found": "No se ha encontrado dicho contacto",
|
||||||
"contacts_table_refresh": "Actualizar contactos",
|
"contacts_table_refresh": "Actualizar contactos",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Tipo de dato",
|
"data_type": "Tipo de dato",
|
||||||
"data_type_cannot_be_changed": "El tipo de dato no se puede cambiar después de la creación",
|
"data_type_cannot_be_changed": "El tipo de dato no se puede cambiar después de la creación",
|
||||||
"data_type_description": "Elige cómo debe almacenarse y filtrarse este atributo",
|
"data_type_description": "Elige cómo debe almacenarse y filtrarse este atributo",
|
||||||
"date_value_required": "Se requiere un valor de fecha. Usa el botón de eliminar para quitar este atributo si no quieres establecer una fecha.",
|
"date_value_required": "Se requiere el valor de fecha. Usa el botón de eliminar para quitar este atributo si no deseas establecer una fecha.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Esto eliminará el atributo seleccionado. Se perderán todos los datos de contacto asociados con este atributo.} other {Esto eliminará los atributos seleccionados. Se perderán todos los datos de contacto asociados con estos atributos.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Esto eliminará el atributo seleccionado. Se perderán todos los datos de contacto asociados con este atributo.} other {Esto eliminará los atributos seleccionados. Se perderán todos los datos de contacto asociados con estos atributos.}}",
|
||||||
"delete_contact_confirmation": "Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con este contacto. Cualquier segmentación y personalización basada en los datos de este contacto se perderá.",
|
"delete_contact_confirmation": "Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con este contacto. Cualquier segmentación y personalización basada en los datos de este contacto se perderá.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con este contacto. Cualquier segmentación y personalización basada en los datos de este contacto se perderá. Si este contacto tiene respuestas que cuentan para las cuotas de encuesta, los recuentos de cuota se reducirán pero los límites de cuota permanecerán sin cambios.} other {Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con estos contactos. Cualquier segmentación y personalización basada en los datos de estos contactos se perderá. Si estos contactos tienen respuestas que cuentan para las cuotas de encuesta, los recuentos de cuota se reducirán pero los límites de cuota permanecerán sin cambios.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con este contacto. Cualquier segmentación y personalización basada en los datos de este contacto se perderá. Si este contacto tiene respuestas que cuentan para las cuotas de encuesta, los recuentos de cuota se reducirán pero los límites de cuota permanecerán sin cambios.} other {Esto eliminará todas las respuestas de encuestas y atributos de contacto asociados con estos contactos. Cualquier segmentación y personalización basada en los datos de estos contactos se perderá. Si estos contactos tienen respuestas que cuentan para las cuotas de encuesta, los recuentos de cuota se reducirán pero los límites de cuota permanecerán sin cambios.}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Atributos del sistema",
|
"system_attributes": "Atributos del sistema",
|
||||||
"unlock_contacts_description": "Gestiona contactos y envía encuestas dirigidas",
|
"unlock_contacts_description": "Gestiona contactos y envía encuestas dirigidas",
|
||||||
"unlock_contacts_title": "Desbloquea contactos con un plan superior",
|
"unlock_contacts_title": "Desbloquea contactos con un plan superior",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "El atributo \"{key}\" está tipado como \"{dataType}\" pero el CSV contiene valores no válidos: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "El atributo “{key}” está tipado como “{dataType}” pero el CSV contiene valores no válidos: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Se encontraron mapeos duplicados para los siguientes atributos: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Se encontraron mapeos duplicados para los siguientes atributos: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "El tamaño del archivo supera el límite máximo de 800 KB",
|
"upload_contacts_error_file_too_large": "El tamaño del archivo supera el límite máximo de 800 KB",
|
||||||
"upload_contacts_error_generic": "Se produjo un error al cargar los contactos. Por favor, inténtalo de nuevo más tarde.",
|
"upload_contacts_error_generic": "Se produjo un error al cargar los contactos. Por favor, inténtalo de nuevo más tarde.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconectar",
|
"reconnect_button": "Reconectar",
|
||||||
"reconnect_button_description": "Tu conexión con Google Sheets ha caducado. Reconecta para continuar sincronizando respuestas. Tus enlaces de hojas de cálculo y datos existentes se conservarán.",
|
"reconnect_button_description": "Tu conexión con Google Sheets ha caducado. Reconecta para continuar sincronizando respuestas. Tus enlaces de hojas de cálculo y datos existentes se conservarán.",
|
||||||
"reconnect_button_tooltip": "Reconecta la integración para actualizar tu acceso. Tus enlaces de hojas de cálculo y datos existentes se conservarán.",
|
"reconnect_button_tooltip": "Reconecta la integración para actualizar tu acceso. Tus enlaces de hojas de cálculo y datos existentes se conservarán.",
|
||||||
"spreadsheet_permission_error": "No tienes permiso para acceder a esta hoja de cálculo. Asegúrate de que la hoja de cálculo esté compartida con tu cuenta de Google y de que tengas acceso de escritura a la hoja de cálculo.",
|
"spreadsheet_permission_error": "No tienes permiso para acceder a esta hoja de cálculo. Por favor, asegúrate de que la hoja de cálculo esté compartida con tu cuenta de Google y de que tengas acceso de escritura a la hoja de cálculo.",
|
||||||
"spreadsheet_url": "URL de la hoja de cálculo",
|
"spreadsheet_url": "URL de la hoja de cálculo",
|
||||||
"token_expired_error": "El token de actualización de Google Sheets ha caducado o ha sido revocado. Reconecta la integración."
|
"token_expired_error": "El token de actualización de Google Sheets ha caducado o ha sido revocado. Reconecta la integración."
|
||||||
},
|
},
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "La clave de licencia no es válida. Por favor, verifica tu ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "La clave de licencia no es válida. Por favor, verifica tu ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Comprobación de licencia correcta",
|
"recheck_license_success": "Comprobación de licencia correcta",
|
||||||
"recheck_license_unreachable": "El servidor de licencias no está disponible. Inténtalo de nuevo más tarde.",
|
"recheck_license_unreachable": "El servidor de licencias no está disponible. Inténtalo de nuevo más tarde.",
|
||||||
"rechecking": "Comprobando...",
|
"rechecking": "Volviendo a comprobar…",
|
||||||
"request_30_day_trial_license": "Solicitar licencia de prueba de 30 días",
|
"request_30_day_trial_license": "Solicitar licencia de prueba de 30 días",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Acuerdo de nivel de servicio",
|
"service_level_agreement": "Acuerdo de nivel de servicio",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Hola {userName}",
|
"email_customization_preview_email_heading": "Hola {userName}",
|
||||||
"email_customization_preview_email_text": "Este es un correo electrónico de vista previa para mostrarte qué logotipo se mostrará en los correos electrónicos.",
|
"email_customization_preview_email_text": "Este es un correo electrónico de vista previa para mostrarte qué logotipo se mostrará en los correos electrónicos.",
|
||||||
"error_deleting_organization_please_try_again": "Error al eliminar la organización. Por favor, inténtalo de nuevo.",
|
"error_deleting_organization_please_try_again": "Error al eliminar la organización. Por favor, inténtalo de nuevo.",
|
||||||
"from_your_organization": "de tu organización",
|
"from_your_organization": "{memberName} de tu organización",
|
||||||
"invitation_sent_once_more": "Invitación enviada una vez más.",
|
"invitation_sent_once_more": "Invitación enviada una vez más.",
|
||||||
"invite_deleted_successfully": "Invitación eliminada correctamente",
|
"invite_deleted_successfully": "Invitación eliminada correctamente",
|
||||||
"invite_expires_on": "La invitación expira el {date}",
|
"invite_expires_on": "La invitación expira el {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Configuración de notificaciones actualizada",
|
"notification_settings_updated": "Configuración de notificaciones actualizada",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Configura una alerta para recibir un correo electrónico sobre nuevas respuestas",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Configura una alerta para recibir un correo electrónico sobre nuevas respuestas",
|
||||||
"use_the_integration": "Utiliza la integración",
|
"use_the_integration": "Utiliza la integración",
|
||||||
"want_to_loop_in_organization_mates": "¿Quieres incluir a compañeros de organización?",
|
"want_to_loop_in_organization_mates": "¿Quieres incluir a compañeros de la organización?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "¡Ya no serás suscrito automáticamente a las encuestas de esta organización!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "¡Ya no serás suscrito automáticamente a las encuestas de esta organización!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "¡No recibirás más correos electrónicos por respuestas en esta encuesta!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "¡No recibirás más correos electrónicos por respuestas en esta encuesta!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Añadir un marcador de posición para mostrar si no hay valor que recuperar.",
|
"add_fallback_placeholder": "Añadir un marcador de posición para mostrar si no hay valor que recuperar.",
|
||||||
"add_hidden_field_id": "Añadir ID de campo oculto",
|
"add_hidden_field_id": "Añadir ID de campo oculto",
|
||||||
"add_highlight_border": "Añadir borde destacado",
|
"add_highlight_border": "Añadir borde destacado",
|
||||||
|
"add_highlight_border_description": "Solo se aplica a encuestas dentro del producto.",
|
||||||
"add_logic": "Añadir lógica",
|
"add_logic": "Añadir lógica",
|
||||||
"add_none_of_the_above": "Añadir \"Ninguna de las anteriores\"",
|
"add_none_of_the_above": "Añadir \"Ninguna de las anteriores\"",
|
||||||
"add_option": "Añadir opción",
|
"add_option": "Añadir opción",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Ajustar mensaje 'Encuesta cerrada'",
|
"adjust_survey_closed_message": "Ajustar mensaje 'Encuesta cerrada'",
|
||||||
"adjust_survey_closed_message_description": "Cambiar el mensaje que ven los visitantes cuando la encuesta está cerrada.",
|
"adjust_survey_closed_message_description": "Cambiar el mensaje que ven los visitantes cuando la encuesta está cerrada.",
|
||||||
"adjust_the_theme_in_the": "Ajustar el tema en el",
|
"adjust_the_theme_in_the": "Ajustar el tema en el",
|
||||||
|
"all_are_true": "todas son verdaderas",
|
||||||
"all_other_answers_will_continue_to": "Todas las demás respuestas continuarán",
|
"all_other_answers_will_continue_to": "Todas las demás respuestas continuarán",
|
||||||
"allow_multi_select": "Permitir selección múltiple",
|
"allow_multi_select": "Permitir selección múltiple",
|
||||||
"allow_multiple_files": "Permitir múltiples archivos",
|
"allow_multiple_files": "Permitir múltiples archivos",
|
||||||
"allow_users_to_select_more_than_one_image": "Permitir a los usuarios seleccionar más de una imagen",
|
"allow_users_to_select_more_than_one_image": "Permitir a los usuarios seleccionar más de una imagen",
|
||||||
"and_launch_surveys_in_your_website_or_app": "y lanzar encuestas en tu sitio web o aplicación.",
|
"and_launch_surveys_in_your_website_or_app": "y lanzar encuestas en tu sitio web o aplicación.",
|
||||||
"animation": "Animación",
|
"animation": "Animación",
|
||||||
|
"any_is_true": "alguna es verdadera",
|
||||||
"app_survey_description": "Integra una encuesta en tu aplicación web o sitio web para recopilar respuestas.",
|
"app_survey_description": "Integra una encuesta en tu aplicación web o sitio web para recopilar respuestas.",
|
||||||
"assign": "Asignar =",
|
"assign": "Asignar =",
|
||||||
"audience": "Audiencia",
|
"audience": "Audiencia",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Calcular",
|
"calculate": "Calcular",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Captura una nueva acción para activar una encuesta.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Captura una nueva acción para activar una encuesta.",
|
||||||
"capture_ip_address": "Capturar dirección IP",
|
"capture_ip_address": "Capturar dirección IP",
|
||||||
"capture_ip_address_description": "Almacenar la dirección IP del encuestado en los metadatos de respuesta para la detección de duplicados y fines de seguridad",
|
"capture_ip_address_description": "Almacena la dirección IP del encuestado en los metadatos de respuesta para la detección de duplicados y fines de seguridad",
|
||||||
"capture_new_action": "Capturar nueva acción",
|
"capture_new_action": "Capturar nueva acción",
|
||||||
"card_arrangement_for_survey_type_derived": "Disposición de tarjetas para encuestas de tipo {surveyTypeDerived}",
|
"card_arrangement_for_survey_type_derived": "Disposición de tarjetas para encuestas de tipo {surveyTypeDerived}",
|
||||||
"card_background_color": "Color de fondo de la tarjeta",
|
"card_background_color": "Color de fondo de la tarjeta",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Informal",
|
"casual": "Informal",
|
||||||
"caution_edit_duplicate": "Duplicar y editar",
|
"caution_edit_duplicate": "Duplicar y editar",
|
||||||
"caution_edit_published_survey": "¿Editar una encuesta publicada?",
|
"caution_edit_published_survey": "¿Editar una encuesta publicada?",
|
||||||
"caution_explanation_intro": "Entendemos que quizás aún quieras hacer cambios. Esto es lo que ocurre si lo haces: ",
|
"caution_explanation_intro": "Entendemos que es posible que aún quieras hacer cambios. Esto es lo que sucede si lo haces:",
|
||||||
"caution_explanation_new_responses_separated": "Las respuestas anteriores al cambio pueden no incluirse o incluirse solo parcialmente en el resumen de la encuesta.",
|
"caution_explanation_new_responses_separated": "Las respuestas anteriores al cambio pueden no incluirse o incluirse solo parcialmente en el resumen de la encuesta.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Todos los datos, incluidas las respuestas anteriores, siguen estando disponibles para descargar en la página de resumen de la encuesta.",
|
"caution_explanation_only_new_responses_in_summary": "Todos los datos, incluidas las respuestas anteriores, siguen estando disponibles para descargar en la página de resumen de la encuesta.",
|
||||||
"caution_explanation_responses_are_safe": "Las respuestas antiguas y nuevas se mezclan, lo que puede llevar a resúmenes de datos engañosos.",
|
"caution_explanation_responses_are_safe": "Las respuestas antiguas y nuevas se mezclan, lo que puede llevar a resúmenes de datos engañosos.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Seguimiento actualizado y se guardará cuando guardes la encuesta.",
|
"follow_ups_modal_updated_successfull_toast": "Seguimiento actualizado y se guardará cuando guardes la encuesta.",
|
||||||
"follow_ups_new": "Nuevo seguimiento",
|
"follow_ups_new": "Nuevo seguimiento",
|
||||||
"follow_ups_upgrade_button_text": "Actualiza para habilitar seguimientos",
|
"follow_ups_upgrade_button_text": "Actualiza para habilitar seguimientos",
|
||||||
"form_styling": "Estilo del formulario",
|
|
||||||
"formbricks_sdk_is_not_connected": "El SDK de Formbricks no está conectado",
|
"formbricks_sdk_is_not_connected": "El SDK de Formbricks no está conectado",
|
||||||
"four_points": "4 puntos",
|
"four_points": "4 puntos",
|
||||||
"heading": "Encabezado",
|
"heading": "Encabezado",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Opción {choiceIndex}",
|
"option_idx": "Opción {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Esta opción se utiliza en la lógica de la pregunta {questionIndex}. Por favor, elimínala de la lógica primero.",
|
"option_used_in_logic_error": "Esta opción se utiliza en la lógica de la pregunta {questionIndex}. Por favor, elimínala de la lógica primero.",
|
||||||
"optional": "Opcional",
|
"optional": "Opcional",
|
||||||
"options": "Opciones",
|
"options": "Opciones*",
|
||||||
"options_used_in_logic_bulk_error": "Las siguientes opciones se utilizan en la lógica: {questionIndexes}. Por favor, elimínalas de la lógica primero.",
|
"options_used_in_logic_bulk_error": "Las siguientes opciones se utilizan en la lógica: {questionIndexes}. Por favor, elimínalas de la lógica primero.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Anular el tema con estilos individuales para esta encuesta.",
|
"override_theme_with_individual_styles_for_this_survey": "Anular el tema con estilos individuales para esta encuesta.",
|
||||||
"overwrite_global_waiting_time": "Establecer periodo de espera personalizado",
|
"overwrite_global_waiting_time": "Establecer periodo de espera personalizado",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Pregunta eliminada.",
|
"question_deleted": "Pregunta eliminada.",
|
||||||
"question_duplicated": "Pregunta duplicada.",
|
"question_duplicated": "Pregunta duplicada.",
|
||||||
"question_id_updated": "ID de pregunta actualizado",
|
"question_id_updated": "ID de pregunta actualizado",
|
||||||
|
"question_number": "Pregunta {number}",
|
||||||
"question_used_in_logic_warning_text": "Los elementos de este bloque se usan en una regla de lógica, ¿estás seguro de que quieres eliminarlo?",
|
"question_used_in_logic_warning_text": "Los elementos de este bloque se usan en una regla de lógica, ¿estás seguro de que quieres eliminarlo?",
|
||||||
"question_used_in_logic_warning_title": "Inconsistencia de lógica",
|
"question_used_in_logic_warning_title": "Inconsistencia de lógica",
|
||||||
"question_used_in_quota": "Esta pregunta se está utilizando en la cuota “{quotaName}”",
|
"question_used_in_quota": "Esta pregunta se está utilizando en la cuota “{quotaName}”",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Límites de respuestas, redirecciones y más.",
|
"response_limits_redirections_and_more": "Límites de respuestas, redirecciones y más.",
|
||||||
"response_options": "Opciones de respuesta",
|
"response_options": "Opciones de respuesta",
|
||||||
"roundness": "Redondez",
|
"roundness": "Redondez",
|
||||||
"roundness_description": "Controla qué tan redondeadas están las esquinas de la tarjeta.",
|
"roundness_description": "Controla qué tan redondeadas están las esquinas.",
|
||||||
"row_used_in_logic_error": "Esta fila se utiliza en la lógica de la pregunta {questionIndex}. Por favor, elimínala de la lógica primero.",
|
"row_used_in_logic_error": "Esta fila se utiliza en la lógica de la pregunta {questionIndex}. Por favor, elimínala de la lógica primero.",
|
||||||
"rows": "Filas",
|
"rows": "Filas",
|
||||||
"save_and_close": "Guardar y cerrar",
|
"save_and_close": "Guardar y cerrar",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Esta encuesta gratuita y de código abierto ha sido cerrada",
|
"survey_completed_subheading": "Esta encuesta gratuita y de código abierto ha sido cerrada",
|
||||||
"survey_display_settings": "Ajustes de visualización de la encuesta",
|
"survey_display_settings": "Ajustes de visualización de la encuesta",
|
||||||
"survey_placement": "Ubicación de la encuesta",
|
"survey_placement": "Ubicación de la encuesta",
|
||||||
|
"survey_styling": "Estilo del formulario",
|
||||||
"survey_trigger": "Activador de la encuesta",
|
"survey_trigger": "Activador de la encuesta",
|
||||||
"switch_multi_language_on_to_get_started": "Activa el modo multiidioma para comenzar 👉",
|
"switch_multi_language_on_to_get_started": "Activa el modo multiidioma para comenzar 👉",
|
||||||
"target_block_not_found": "Bloque objetivo no encontrado",
|
"target_block_not_found": "Bloque objetivo no encontrado",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Coincide con el patrón regex",
|
"pattern": "Coincide con el patrón regex",
|
||||||
"phone": "Es un teléfono válido",
|
"phone": "Es un teléfono válido",
|
||||||
"rank_all_options": "Clasificar todas las opciones",
|
"rank_all_options": "Clasificar todas las opciones",
|
||||||
"select_file_extensions": "Selecciona extensiones de archivo...",
|
"select_file_extensions": "Selecciona extensiones de archivo…",
|
||||||
"select_option": "Seleccionar opción",
|
"select_option": "Seleccionar opción",
|
||||||
"start_date": "Fecha de inicio",
|
"start_date": "Fecha de inicio",
|
||||||
"url": "Es una URL válida"
|
"url": "Es una URL válida"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Periodo de espera (entre encuestas)",
|
"waiting_time_across_surveys": "Periodo de espera (entre encuestas)",
|
||||||
"waiting_time_across_surveys_description": "Para evitar la fatiga de encuestas, elige cómo interactúa esta encuesta con el periodo de espera general del espacio de trabajo.",
|
"waiting_time_across_surveys_description": "Para evitar la fatiga de encuestas, elige cómo interactúa esta encuesta con el periodo de espera general del espacio de trabajo.",
|
||||||
"welcome_message": "Mensaje de bienvenida",
|
"welcome_message": "Mensaje de bienvenida",
|
||||||
|
"when": "Cuando",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Sin un filtro, todos tus usuarios pueden ser encuestados.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Sin un filtro, todos tus usuarios pueden ser encuestados.",
|
||||||
"you_have_not_created_a_segment_yet": "Aún no has creado un segmento",
|
"you_have_not_created_a_segment_yet": "Aún no has creado un segmento",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Necesitas tener dos o más idiomas configurados en tu proyecto para trabajar con traducciones.",
|
|
||||||
"your_description_here_recall_information_with": "Tu descripción aquí. Recupera información con @",
|
"your_description_here_recall_information_with": "Tu descripción aquí. Recupera información con @",
|
||||||
"your_question_here_recall_information_with": "Tu pregunta aquí. Recupera información con @",
|
"your_question_here_recall_information_with": "Tu pregunta aquí. Recupera información con @",
|
||||||
"your_web_app": "Tu aplicación web",
|
"your_web_app": "Tu aplicación web",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Desactivar enlaces de uso único",
|
"disable_single_use_link_modal_button": "Desactivar enlaces de uso único",
|
||||||
"disable_single_use_link_modal_description": "Si has compartido enlaces de uso único, los participantes ya no podrán responder a la encuesta.",
|
"disable_single_use_link_modal_description": "Si has compartido enlaces de uso único, los participantes ya no podrán responder a la encuesta.",
|
||||||
"generate_and_download_links": "Generar y descargar enlaces",
|
"generate_and_download_links": "Generar y descargar enlaces",
|
||||||
"generate_links_error": "No se pudieron generar enlaces de uso único. Por favor, trabaja directamente con la API",
|
"generate_links_error": "No se pudieron generar los enlaces de un solo uso. Por favor, trabaja directamente con la API.",
|
||||||
"multi_use_link": "Enlace de uso múltiple",
|
"multi_use_link": "Enlace de uso múltiple",
|
||||||
"multi_use_link_description": "Recopila múltiples respuestas de encuestados anónimos con un solo enlace.",
|
"multi_use_link_description": "Recopila múltiples respuestas de encuestados anónimos con un solo enlace.",
|
||||||
"multi_use_powers_other_channels_description": "Si lo desactivas, estos otros canales de distribución también se desactivarán.",
|
"multi_use_powers_other_channels_description": "Si lo desactivas, estos otros canales de distribución también se desactivarán.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Filtro añadido para respuestas donde la respuesta a la pregunta {questionIdx} es {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Se ha añadido un filtro para las respuestas donde la respuesta a la pregunta {questionIdx} es {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtro añadido para respuestas donde la respuesta a la pregunta {questionIdx} se ha omitido",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtro añadido para respuestas donde la respuesta a la pregunta {questionIdx} se ha omitido",
|
||||||
"aggregated": "Agregado",
|
"aggregated": "Agregado",
|
||||||
"all_responses_csv": "Todas las respuestas (CSV)",
|
"all_responses_csv": "Todas las respuestas (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Inicios",
|
"starts": "Inicios",
|
||||||
"starts_tooltip": "Número de veces que se ha iniciado la encuesta.",
|
"starts_tooltip": "Número de veces que se ha iniciado la encuesta.",
|
||||||
"survey_reset_successfully": "¡Encuesta restablecida correctamente! Se eliminaron {responseCount} respuestas y {displayCount} visualizaciones.",
|
"survey_reset_successfully": "¡Encuesta restablecida correctamente! Se eliminaron {responseCount} respuestas y {displayCount} visualizaciones.",
|
||||||
|
"survey_results": "Resultados de {surveyName}",
|
||||||
"this_month": "Este mes",
|
"this_month": "Este mes",
|
||||||
"this_quarter": "Este trimestre",
|
"this_quarter": "Este trimestre",
|
||||||
"this_year": "Este año",
|
"this_year": "Este año",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Añade un color de fondo al contenedor del logotipo.",
|
"add_background_color_description": "Añade un color de fondo al contenedor del logotipo.",
|
||||||
"advanced_styling_field_border_radius": "Radio del borde",
|
"advanced_styling_field_border_radius": "Radio del borde",
|
||||||
"advanced_styling_field_button_bg": "Fondo del botón",
|
"advanced_styling_field_button_bg": "Fondo del botón",
|
||||||
"advanced_styling_field_button_bg_description": "Rellena el botón siguiente / enviar.",
|
"advanced_styling_field_button_bg_description": "Rellena el botón “Siguiente” / “Enviar”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Redondea las esquinas del botón.",
|
"advanced_styling_field_button_border_radius_description": "Redondea las esquinas del botón.",
|
||||||
"advanced_styling_field_button_font_size_description": "Escala el texto de la etiqueta del botón.",
|
"advanced_styling_field_button_font_size_description": "Escala el texto de la etiqueta del botón.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Hace el texto del botón más ligero o más grueso.",
|
"advanced_styling_field_button_font_weight_description": "Hace el texto del botón más ligero o más grueso.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Tamaño de fuente de la descripción",
|
"advanced_styling_field_description_size": "Tamaño de fuente de la descripción",
|
||||||
"advanced_styling_field_description_size_description": "Escala el texto de la descripción.",
|
"advanced_styling_field_description_size_description": "Escala el texto de la descripción.",
|
||||||
"advanced_styling_field_description_weight": "Grosor de fuente de la descripción",
|
"advanced_styling_field_description_weight": "Grosor de fuente de la descripción",
|
||||||
"advanced_styling_field_description_weight_description": "Hace el texto de la descripción más ligero o más grueso.",
|
"advanced_styling_field_description_weight_description": "Hace que el texto de la descripción sea más claro o más negrita.",
|
||||||
"advanced_styling_field_font_size": "Tamaño de fuente",
|
"advanced_styling_field_font_size": "Tamaño de fuente",
|
||||||
"advanced_styling_field_font_weight": "Grosor de fuente",
|
"advanced_styling_field_font_weight": "Grosor de fuente",
|
||||||
"advanced_styling_field_headline_color": "Color del titular",
|
"advanced_styling_field_headline_color": "Color del titular",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colorea el texto escrito en los campos de entrada.",
|
"advanced_styling_field_input_text_description": "Colorea el texto escrito en los campos de entrada.",
|
||||||
"advanced_styling_field_option_bg": "Fondo",
|
"advanced_styling_field_option_bg": "Fondo",
|
||||||
"advanced_styling_field_option_bg_description": "Rellena los elementos de opción.",
|
"advanced_styling_field_option_bg_description": "Rellena los elementos de opción.",
|
||||||
|
"advanced_styling_field_option_border": "Color del borde",
|
||||||
|
"advanced_styling_field_option_border_description": "Delimita las opciones de radio y casillas de verificación.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Redondea las esquinas de las opciones.",
|
"advanced_styling_field_option_border_radius_description": "Redondea las esquinas de las opciones.",
|
||||||
"advanced_styling_field_option_font_size_description": "Escala el texto de la etiqueta de opción.",
|
"advanced_styling_field_option_font_size_description": "Escala el texto de la etiqueta de opción.",
|
||||||
"advanced_styling_field_option_label": "Color de la etiqueta",
|
"advanced_styling_field_option_label": "Color de la etiqueta",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Mostrar firma 'Powered by Formbricks'",
|
"show_powered_by_formbricks": "Mostrar firma 'Powered by Formbricks'",
|
||||||
"styling_updated_successfully": "Estilo actualizado correctamente",
|
"styling_updated_successfully": "Estilo actualizado correctamente",
|
||||||
"suggest_colors": "Sugerir colores",
|
"suggest_colors": "Sugerir colores",
|
||||||
"suggested_colors_applied_please_save": "Colores sugeridos generados correctamente. Pulsa \"Guardar\" para conservar los cambios.",
|
"suggested_colors_applied_please_save": "Colores sugeridos generados correctamente. Pulsa “Guardar” para conservar los cambios.",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_settings_description": "Crea un tema de estilo para todas las encuestas. Puedes activar el estilo personalizado para cada encuesta."
|
"theme_settings_description": "Crea un tema de estilo para todas las encuestas. Puedes activar el estilo personalizado para cada encuesta."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Por favor, comprueba también tu carpeta de spam si no ves el correo electrónico en tu bandeja de entrada.",
|
"check_inbox_or_spam": "Por favor, comprueba también tu carpeta de spam si no ves el correo electrónico en tu bandeja de entrada.",
|
||||||
"completed": "Esta encuesta está cerrada.",
|
"completed": "Esta encuesta está cerrada.",
|
||||||
"create_your_own": "Crea tu propia encuesta de código abierto",
|
"create_your_own": "Crea tu propia encuesta de código abierto",
|
||||||
"enter_pin": "Esta encuesta está protegida. Introduce el PIN a continuación",
|
"enter_pin": "Esta encuesta está protegida. Introduce el PIN a continuación.",
|
||||||
"just_curious": "¿Solo tienes curiosidad?",
|
"just_curious": "¿Solo tienes curiosidad?",
|
||||||
"link_invalid": "Esta encuesta solo se puede realizar por invitación.",
|
"link_invalid": "Esta encuesta solo se puede realizar por invitación.",
|
||||||
"paused": "Esta encuesta está temporalmente pausada.",
|
"paused": "Esta encuesta está temporalmente pausada.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "¿Cómo puede mejorar la empresa su alineación de visión y estrategia?",
|
"alignment_and_engagement_survey_question_4_headline": "¿Cómo puede mejorar la empresa su alineación de visión y estrategia?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Escribe tu respuesta aquí...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Escribe tu respuesta aquí...",
|
||||||
"back": "Atrás",
|
"back": "Atrás",
|
||||||
|
"block_1": "Bloque 1",
|
||||||
|
"block_10": "Bloque 10",
|
||||||
|
"block_2": "Bloque 2",
|
||||||
|
"block_3": "Bloque 3",
|
||||||
|
"block_4": "Bloque 4",
|
||||||
|
"block_5": "Bloque 5",
|
||||||
|
"block_6": "Bloque 6",
|
||||||
|
"block_7": "Bloque 7",
|
||||||
|
"block_8": "Bloque 8",
|
||||||
|
"block_9": "Bloque 9",
|
||||||
"book_interview": "Reservar entrevista",
|
"book_interview": "Reservar entrevista",
|
||||||
"build_product_roadmap_description": "Identifica lo ÚNICO que tus usuarios desean más y constrúyelo.",
|
"build_product_roadmap_description": "Identifica lo ÚNICO que tus usuarios desean más y constrúyelo.",
|
||||||
"build_product_roadmap_name": "Crear hoja de ruta del producto",
|
"build_product_roadmap_name": "Crear hoja de ruta del producto",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Baja calidad",
|
"csat_question_3_choice_8": "Baja calidad",
|
||||||
"csat_question_3_choice_9": "Poco fiable",
|
"csat_question_3_choice_9": "Poco fiable",
|
||||||
"csat_question_3_headline": "¿Cuáles de las siguientes palabras utilizarías para describir nuestro $[projectName]?",
|
"csat_question_3_headline": "¿Cuáles de las siguientes palabras utilizarías para describir nuestro $[projectName]?",
|
||||||
"csat_question_3_subheader": "Selecciona todas las opciones que correspondan:",
|
"csat_question_3_subheader": "Por favor, selecciona todas las opciones que correspondan:",
|
||||||
"csat_question_4_choice_1": "Extremadamente bien",
|
"csat_question_4_choice_1": "Extremadamente bien",
|
||||||
"csat_question_4_choice_2": "Muy bien",
|
"csat_question_4_choice_2": "Muy bien",
|
||||||
"csat_question_4_choice_3": "Bastante bien",
|
"csat_question_4_choice_3": "Bastante bien",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Vaya, ¡lo sentimos! ¿Hay algo que podamos hacer para mejorar tu experiencia?",
|
"csat_survey_question_3_headline": "Vaya, ¡lo sentimos! ¿Hay algo que podamos hacer para mejorar tu experiencia?",
|
||||||
"csat_survey_question_3_placeholder": "Escribe tu respuesta aquí...",
|
"csat_survey_question_3_placeholder": "Escribe tu respuesta aquí...",
|
||||||
"cta_description": "Muestra información y anima a los usuarios a realizar una acción específica",
|
"cta_description": "Muestra información y anima a los usuarios a realizar una acción específica",
|
||||||
"custom_survey_block_1_name": "Bloque 1",
|
|
||||||
"custom_survey_description": "Crea una encuesta sin plantilla.",
|
"custom_survey_description": "Crea una encuesta sin plantilla.",
|
||||||
"custom_survey_name": "Empezar desde cero",
|
"custom_survey_name": "Empezar desde cero",
|
||||||
"custom_survey_question_1_headline": "¿Qué te gustaría saber?",
|
"custom_survey_question_1_headline": "¿Qué te gustaría saber?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "¡No, gracias!",
|
"preview_survey_question_2_choice_2_label": "¡No, gracias!",
|
||||||
"preview_survey_question_2_headline": "¿Quieres estar al tanto?",
|
"preview_survey_question_2_headline": "¿Quieres estar al tanto?",
|
||||||
"preview_survey_question_2_subheader": "Esta es una descripción de ejemplo.",
|
"preview_survey_question_2_subheader": "Esta es una descripción de ejemplo.",
|
||||||
|
"preview_survey_question_open_text_headline": "¿Hay algo más que te gustaría compartir?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Escribe tu respuesta aquí...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Tus comentarios nos ayudan a mejorar.",
|
||||||
"preview_survey_welcome_card_headline": "¡Bienvenido!",
|
"preview_survey_welcome_card_headline": "¡Bienvenido!",
|
||||||
"prioritize_features_description": "Identifica las funciones que tus usuarios necesitan más y menos.",
|
"prioritize_features_description": "Identifica las funciones que tus usuarios necesitan más y menos.",
|
||||||
"prioritize_features_name": "Priorizar funciones",
|
"prioritize_features_name": "Priorizar funciones",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Investigación individual",
|
"professional_development_survey_question_2_choice_5": "Investigación individual",
|
||||||
"professional_development_survey_question_2_choice_6": "Otros",
|
"professional_development_survey_question_2_choice_6": "Otros",
|
||||||
"professional_development_survey_question_2_headline": "¿Qué tipos de actividades de desarrollo profesional crees que serían más valiosas para tu crecimiento?",
|
"professional_development_survey_question_2_headline": "¿Qué tipos de actividades de desarrollo profesional crees que serían más valiosas para tu crecimiento?",
|
||||||
"professional_development_survey_question_2_subheader": "Selecciona todas las que correspondan",
|
"professional_development_survey_question_2_subheader": "Por favor, selecciona todas las opciones que correspondan:",
|
||||||
"professional_development_survey_question_3_choice_1": "Sí",
|
"professional_development_survey_question_3_choice_1": "Sí",
|
||||||
"professional_development_survey_question_3_choice_2": "No",
|
"professional_development_survey_question_3_choice_2": "No",
|
||||||
"professional_development_survey_question_3_headline": "¿Has dedicado tiempo a tu desarrollo profesional en el pasado?",
|
"professional_development_survey_question_3_headline": "¿Has dedicado tiempo a tu desarrollo profesional en el pasado?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Me sentí seguro mientras usaba el sistema.",
|
"usability_question_9_headline": "Me sentí seguro mientras usaba el sistema.",
|
||||||
"usability_rating_description": "Mide la usabilidad percibida pidiendo a los usuarios que valoren su experiencia con tu producto mediante una encuesta estandarizada de 10 preguntas.",
|
"usability_rating_description": "Mide la usabilidad percibida pidiendo a los usuarios que valoren su experiencia con tu producto mediante una encuesta estandarizada de 10 preguntas.",
|
||||||
"usability_score_name": "Puntuación de usabilidad del sistema (SUS)"
|
"usability_score_name": "Puntuación de usabilidad del sistema (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "¡Gracias por compartir tu idea de flujo de trabajo con nosotros! Actualmente estamos diseñando esta funcionalidad y tus comentarios nos ayudarán a construir exactamente lo que necesitas.",
|
||||||
|
"coming_soon_title": "¡Ya casi estamos!",
|
||||||
|
"follow_up_label": "¿Hay algo más que te gustaría añadir?",
|
||||||
|
"follow_up_placeholder": "¿Qué tareas específicas te gustaría automatizar? ¿Alguna herramienta o integración que quieras incluir?",
|
||||||
|
"generate_button": "Generar flujo de trabajo",
|
||||||
|
"heading": "¿Qué flujo de trabajo quieres crear?",
|
||||||
|
"placeholder": "Describe el flujo de trabajo que quieres generar…",
|
||||||
|
"subheading": "Genera tu flujo de trabajo en segundos.",
|
||||||
|
"submit_button": "Añadir detalles",
|
||||||
|
"thank_you_description": "Tu aportación nos ayuda a construir la funcionalidad de Flujos de trabajo que realmente necesitas. Te mantendremos informado sobre nuestro progreso.",
|
||||||
|
"thank_you_title": "¡Gracias por tus comentarios!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-33
@@ -112,7 +112,6 @@
|
|||||||
"link_expired_description": "Le lien que vous avez utilisé n'est plus valide."
|
"link_expired_description": "Le lien que vous avez utilisé n'est plus valide."
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"Filter": "Filtrer",
|
|
||||||
"accepted": "Accepté",
|
"accepted": "Accepté",
|
||||||
"account": "Compte",
|
"account": "Compte",
|
||||||
"account_settings": "Paramètres du compte",
|
"account_settings": "Paramètres du compte",
|
||||||
@@ -176,9 +175,12 @@
|
|||||||
"copy": "Copier",
|
"copy": "Copier",
|
||||||
"copy_code": "Copier le code",
|
"copy_code": "Copier le code",
|
||||||
"copy_link": "Copier le lien",
|
"copy_link": "Copier le lien",
|
||||||
"count_attributes": "{value, plural, one {{value} attribut} other {{value} attributs}}",
|
"count_attributes": "{count, plural, one {{count} attribut} other {{count} attributs}}",
|
||||||
"count_contacts": "{value, plural, one {# contact} other {# contacts} }",
|
"count_contacts": "{count, plural, one {{count} contact} other {{count} contacts}}",
|
||||||
"count_responses": "{value, plural, other {# réponses}}",
|
"count_members": "{count, plural, one {{count} membre} other {{count} membres}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} question} other {{count} questions}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} réponse} other {{count} réponses}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} sélection} other {{count} sélections}}",
|
||||||
"create_new_organization": "Créer une nouvelle organisation",
|
"create_new_organization": "Créer une nouvelle organisation",
|
||||||
"create_segment": "Créer un segment",
|
"create_segment": "Créer un segment",
|
||||||
"create_survey": "Créer un sondage",
|
"create_survey": "Créer un sondage",
|
||||||
@@ -192,6 +194,7 @@
|
|||||||
"days": "jours",
|
"days": "jours",
|
||||||
"default": "Par défaut",
|
"default": "Par défaut",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
|
"delete_what": "Supprimer {deleteWhat}",
|
||||||
"description": "Description",
|
"description": "Description",
|
||||||
"dev_env": "Environnement de développement",
|
"dev_env": "Environnement de développement",
|
||||||
"development": "Développement",
|
"development": "Développement",
|
||||||
@@ -207,6 +210,8 @@
|
|||||||
"download": "Télécharger",
|
"download": "Télécharger",
|
||||||
"draft": "Brouillon",
|
"draft": "Brouillon",
|
||||||
"duplicate": "Dupliquer",
|
"duplicate": "Dupliquer",
|
||||||
|
"duplicate_copy": "(copie)",
|
||||||
|
"duplicate_copy_number": "(copie {copyNumber})",
|
||||||
"e_commerce": "E-commerce",
|
"e_commerce": "E-commerce",
|
||||||
"edit": "Modifier",
|
"edit": "Modifier",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -274,7 +279,6 @@
|
|||||||
"look_and_feel": "Apparence",
|
"look_and_feel": "Apparence",
|
||||||
"manage": "Gérer",
|
"manage": "Gérer",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Membre",
|
|
||||||
"members": "Membres",
|
"members": "Membres",
|
||||||
"members_and_teams": "Membres & Équipes",
|
"members_and_teams": "Membres & Équipes",
|
||||||
"membership_not_found": "Abonnement non trouvé",
|
"membership_not_found": "Abonnement non trouvé",
|
||||||
@@ -286,6 +290,7 @@
|
|||||||
"move_down": "Déplacer vers le bas",
|
"move_down": "Déplacer vers le bas",
|
||||||
"move_up": "Déplacer vers le haut",
|
"move_up": "Déplacer vers le haut",
|
||||||
"multiple_languages": "Plusieurs langues",
|
"multiple_languages": "Plusieurs langues",
|
||||||
|
"my_product": "mon produit",
|
||||||
"name": "Nom",
|
"name": "Nom",
|
||||||
"new": "Nouveau",
|
"new": "Nouveau",
|
||||||
"new_version_available": "Formbricks {version} est là. Mettez à jour maintenant !",
|
"new_version_available": "Formbricks {version} est là. Mettez à jour maintenant !",
|
||||||
@@ -381,8 +386,6 @@
|
|||||||
"select_teams": "Sélectionner les équipes",
|
"select_teams": "Sélectionner les équipes",
|
||||||
"selected": "Sélectionné",
|
"selected": "Sélectionné",
|
||||||
"selected_questions": "Questions sélectionnées",
|
"selected_questions": "Questions sélectionnées",
|
||||||
"selection": "Sélection",
|
|
||||||
"selections": "Sélections",
|
|
||||||
"send_test_email": "Envoyer un e-mail de test",
|
"send_test_email": "Envoyer un e-mail de test",
|
||||||
"session_not_found": "Session non trouvée",
|
"session_not_found": "Session non trouvée",
|
||||||
"settings": "Paramètres",
|
"settings": "Paramètres",
|
||||||
@@ -391,6 +394,7 @@
|
|||||||
"show_response_count": "Afficher le nombre de réponses",
|
"show_response_count": "Afficher le nombre de réponses",
|
||||||
"shown": "Montré",
|
"shown": "Montré",
|
||||||
"size": "Taille",
|
"size": "Taille",
|
||||||
|
"skip": "Ignorer",
|
||||||
"skipped": "Passé",
|
"skipped": "Passé",
|
||||||
"skips": "Sauter",
|
"skips": "Sauter",
|
||||||
"some_files_failed_to_upload": "Certains fichiers n'ont pas pu être téléchargés",
|
"some_files_failed_to_upload": "Certains fichiers n'ont pas pu être téléchargés",
|
||||||
@@ -460,6 +464,7 @@
|
|||||||
"website_survey": "Sondage de site web",
|
"website_survey": "Sondage de site web",
|
||||||
"weeks": "semaines",
|
"weeks": "semaines",
|
||||||
"welcome_card": "Carte de bienvenue",
|
"welcome_card": "Carte de bienvenue",
|
||||||
|
"workflows": "Workflows",
|
||||||
"workspace_configuration": "Configuration du projet",
|
"workspace_configuration": "Configuration du projet",
|
||||||
"workspace_created_successfully": "Projet créé avec succès",
|
"workspace_created_successfully": "Projet créé avec succès",
|
||||||
"workspace_creation_description": "Organisez les enquêtes dans des projets pour un meilleur contrôle d'accès.",
|
"workspace_creation_description": "Organisez les enquêtes dans des projets pour un meilleur contrôle d'accès.",
|
||||||
@@ -642,10 +647,10 @@
|
|||||||
"attribute_value": "Valeur",
|
"attribute_value": "Valeur",
|
||||||
"attribute_value_placeholder": "Valeur d'attribut",
|
"attribute_value_placeholder": "Valeur d'attribut",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Impossible de créer {count, plural, one {# nouvel attribut} other {# nouveaux attributs}} car cela dépasserait la limite maximale de {limit} classes d'attributs. Les attributs existants ont été mis à jour avec succès.",
|
"attributes_msg_attribute_limit_exceeded": "Impossible de créer {count, plural, one {# nouvel attribut} other {# nouveaux attributs}} car cela dépasserait la limite maximale de {limit} classes d'attributs. Les attributs existants ont été mis à jour avec succès.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (l'attribut « {key} » a le type de données : {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (l'attribut “{key}” a le type de données : {dataType})",
|
||||||
"attributes_msg_email_already_exists": "L'adresse e-mail existe déjà pour cet environnement et n'a pas été mise à jour.",
|
"attributes_msg_email_already_exists": "L'adresse e-mail existe déjà pour cet environnement et n'a pas été mise à jour.",
|
||||||
"attributes_msg_email_or_userid_required": "L'adresse e-mail ou l'identifiant utilisateur est requis. Les valeurs existantes ont été conservées.",
|
"attributes_msg_email_or_userid_required": "L'e-mail ou l'identifiant utilisateur est requis. Les valeurs existantes ont été conservées.",
|
||||||
"attributes_msg_new_attribute_created": "Nouvel attribut « {key} » créé avec le type « {dataType} »",
|
"attributes_msg_new_attribute_created": "Nouvel attribut “{key}” créé avec le type “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "L'identifiant utilisateur existe déjà pour cet environnement et n'a pas été mis à jour.",
|
"attributes_msg_userid_already_exists": "L'identifiant utilisateur existe déjà pour cet environnement et n'a pas été mis à jour.",
|
||||||
"contact_deleted_successfully": "Contact supprimé avec succès",
|
"contact_deleted_successfully": "Contact supprimé avec succès",
|
||||||
"contact_not_found": "Aucun contact trouvé",
|
"contact_not_found": "Aucun contact trouvé",
|
||||||
@@ -658,7 +663,7 @@
|
|||||||
"data_type": "Type de données",
|
"data_type": "Type de données",
|
||||||
"data_type_cannot_be_changed": "Le type de données ne peut pas être modifié après la création",
|
"data_type_cannot_be_changed": "Le type de données ne peut pas être modifié après la création",
|
||||||
"data_type_description": "Choisis comment cet attribut doit être stocké et filtré",
|
"data_type_description": "Choisis comment cet attribut doit être stocké et filtré",
|
||||||
"date_value_required": "Une valeur de date est requise. Utilise le bouton supprimer pour retirer cet attribut si tu ne veux pas définir de date.",
|
"date_value_required": "La valeur de date est requise. Utilisez le bouton de suppression pour retirer cet attribut si vous ne souhaitez pas définir de date.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Cela supprimera l'attribut sélectionné. Toutes les données de contact associées à cet attribut seront perdues.} other {Cela supprimera les attributs sélectionnés. Toutes les données de contact associées à ces attributs seront perdues.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Cela supprimera l'attribut sélectionné. Toutes les données de contact associées à cet attribut seront perdues.} other {Cela supprimera les attributs sélectionnés. Toutes les données de contact associées à ces attributs seront perdues.}}",
|
||||||
"delete_contact_confirmation": "Cela supprimera toutes les réponses aux enquêtes et les attributs de contact associés à ce contact. Toute la personnalisation et le ciblage basés sur les données de ce contact seront perdus.",
|
"delete_contact_confirmation": "Cela supprimera toutes les réponses aux enquêtes et les attributs de contact associés à ce contact. Toute la personnalisation et le ciblage basés sur les données de ce contact seront perdus.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, other {Cela supprimera toutes les réponses aux enquêtes et les attributs de contact associés à ce contact. Toute la personnalisation et le ciblage basés sur les données de ce contact seront perdus. Si ce contact a des réponses qui comptent dans les quotas de l'enquête, les comptes de quotas seront réduits mais les limites de quota resteront inchangées.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, other {Cela supprimera toutes les réponses aux enquêtes et les attributs de contact associés à ce contact. Toute la personnalisation et le ciblage basés sur les données de ce contact seront perdus. Si ce contact a des réponses qui comptent dans les quotas de l'enquête, les comptes de quotas seront réduits mais les limites de quota resteront inchangées.}}",
|
||||||
@@ -694,7 +699,7 @@
|
|||||||
"system_attributes": "Attributs système",
|
"system_attributes": "Attributs système",
|
||||||
"unlock_contacts_description": "Gérer les contacts et envoyer des enquêtes ciblées",
|
"unlock_contacts_description": "Gérer les contacts et envoyer des enquêtes ciblées",
|
||||||
"unlock_contacts_title": "Débloquez des contacts avec un plan supérieur.",
|
"unlock_contacts_title": "Débloquez des contacts avec un plan supérieur.",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "L'attribut « {key} » est de type « {dataType} » mais le CSV contient des valeurs invalides : {values}",
|
"upload_contacts_error_attribute_type_mismatch": "L'attribut “{key}” est de type “{dataType}” mais le CSV contient des valeurs invalides : {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Mappages en double trouvés pour les attributs suivants : {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Mappages en double trouvés pour les attributs suivants : {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "La taille du fichier dépasse la limite maximale de 800 Ko",
|
"upload_contacts_error_file_too_large": "La taille du fichier dépasse la limite maximale de 800 Ko",
|
||||||
"upload_contacts_error_generic": "Une erreur s'est produite lors de l'importation des contacts. Veuillez réessayer plus tard.",
|
"upload_contacts_error_generic": "Une erreur s'est produite lors de l'importation des contacts. Veuillez réessayer plus tard.",
|
||||||
@@ -765,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconnecter",
|
"reconnect_button": "Reconnecter",
|
||||||
"reconnect_button_description": "Votre connexion Google Sheets a expiré. Veuillez vous reconnecter pour continuer à synchroniser les réponses. Vos liens de feuilles de calcul et données existants seront préservés.",
|
"reconnect_button_description": "Votre connexion Google Sheets a expiré. Veuillez vous reconnecter pour continuer à synchroniser les réponses. Vos liens de feuilles de calcul et données existants seront préservés.",
|
||||||
"reconnect_button_tooltip": "Reconnectez l'intégration pour actualiser votre accès. Vos liens de feuilles de calcul et données existants seront préservés.",
|
"reconnect_button_tooltip": "Reconnectez l'intégration pour actualiser votre accès. Vos liens de feuilles de calcul et données existants seront préservés.",
|
||||||
"spreadsheet_permission_error": "Vous n'avez pas la permission d'accéder à cette feuille de calcul. Veuillez vous assurer que la feuille de calcul est partagée avec votre compte Google et que vous disposez d'un accès en écriture.",
|
"spreadsheet_permission_error": "Vous n'avez pas l'autorisation d'accéder à cette feuille de calcul. Veuillez vous assurer que la feuille de calcul est partagée avec votre compte Google et que vous disposez d'un accès en écriture.",
|
||||||
"spreadsheet_url": "URL de la feuille de calcul",
|
"spreadsheet_url": "URL de la feuille de calcul",
|
||||||
"token_expired_error": "Le jeton d'actualisation Google Sheets a expiré ou a été révoqué. Veuillez reconnecter l'intégration."
|
"token_expired_error": "Le jeton d'actualisation Google Sheets a expiré ou a été révoqué. Veuillez reconnecter l'intégration."
|
||||||
},
|
},
|
||||||
@@ -976,7 +981,7 @@
|
|||||||
"current_plan": "Forfait actuel",
|
"current_plan": "Forfait actuel",
|
||||||
"current_tier_limit": "Limite de niveau actuel",
|
"current_tier_limit": "Limite de niveau actuel",
|
||||||
"custom": "Personnalisé et Échelle",
|
"custom": "Personnalisé et Échelle",
|
||||||
"custom_contacts_limit": "Personnalisation du nombre de contacts",
|
"custom_contacts_limit": "Limite de contacts personnalisée",
|
||||||
"custom_response_limit": "Personnalisation des réponses",
|
"custom_response_limit": "Personnalisation des réponses",
|
||||||
"custom_workspace_limit": "Limite de projets personnalisée",
|
"custom_workspace_limit": "Limite de projets personnalisée",
|
||||||
"email_embedded_surveys": "Sondages intégrés à des e-mails",
|
"email_embedded_surveys": "Sondages intégrés à des e-mails",
|
||||||
@@ -1054,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "La clé de licence est invalide. Veuillez vérifier votre ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "La clé de licence est invalide. Veuillez vérifier votre ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Vérification de la licence réussie",
|
"recheck_license_success": "Vérification de la licence réussie",
|
||||||
"recheck_license_unreachable": "Le serveur de licences est inaccessible. Veuillez réessayer plus tard.",
|
"recheck_license_unreachable": "Le serveur de licences est inaccessible. Veuillez réessayer plus tard.",
|
||||||
"rechecking": "Revérification en cours...",
|
"rechecking": "Revérification en cours…",
|
||||||
"request_30_day_trial_license": "Demander une licence d'essai de 30 jours",
|
"request_30_day_trial_license": "Demander une licence d'essai de 30 jours",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Accord de niveau de service",
|
"service_level_agreement": "Accord de niveau de service",
|
||||||
@@ -1082,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Salut {userName}",
|
"email_customization_preview_email_heading": "Salut {userName}",
|
||||||
"email_customization_preview_email_text": "Cette est une prévisualisation d'e-mail pour vous montrer quel logo sera rendu dans les e-mails.",
|
"email_customization_preview_email_text": "Cette est une prévisualisation d'e-mail pour vous montrer quel logo sera rendu dans les e-mails.",
|
||||||
"error_deleting_organization_please_try_again": "Erreur lors de la suppression de l'organisation. Veuillez réessayer.",
|
"error_deleting_organization_please_try_again": "Erreur lors de la suppression de l'organisation. Veuillez réessayer.",
|
||||||
"from_your_organization": "de votre organisation",
|
"from_your_organization": "{memberName} de votre organisation",
|
||||||
"invitation_sent_once_more": "Invitation envoyée une fois de plus.",
|
"invitation_sent_once_more": "Invitation envoyée une fois de plus.",
|
||||||
"invite_deleted_successfully": "Invitation supprimée avec succès",
|
"invite_deleted_successfully": "Invitation supprimée avec succès",
|
||||||
"invite_expires_on": "L'invitation expire le {date}",
|
"invite_expires_on": "L'invitation expire le {date}",
|
||||||
@@ -1131,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Paramètres de notification mis à jour",
|
"notification_settings_updated": "Paramètres de notification mis à jour",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Vous pouvez configurer une alerte afin d'être informé par e-mail en cas de nouvelles réponses.",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Vous pouvez configurer une alerte afin d'être informé par e-mail en cas de nouvelles réponses.",
|
||||||
"use_the_integration": "Utilisez l'intégration",
|
"use_the_integration": "Utilisez l'intégration",
|
||||||
"want_to_loop_in_organization_mates": "Voulez-vous inclure des collègues de l'organisation ?",
|
"want_to_loop_in_organization_mates": "Souhaitez-vous inclure des membres de l'organisation ?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Vous ne serez plus automatiquement abonné aux enquêtes de cette organisation !",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Vous ne serez plus automatiquement abonné aux enquêtes de cette organisation !",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Vous ne recevrez plus d'e-mails concernant les réponses à cette enquête !"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Vous ne recevrez plus d'e-mails concernant les réponses à cette enquête !"
|
||||||
},
|
},
|
||||||
@@ -1247,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Ajouter un espace réservé à afficher s'il n'y a pas de valeur à rappeler.",
|
"add_fallback_placeholder": "Ajouter un espace réservé à afficher s'il n'y a pas de valeur à rappeler.",
|
||||||
"add_hidden_field_id": "Ajouter un champ caché ID",
|
"add_hidden_field_id": "Ajouter un champ caché ID",
|
||||||
"add_highlight_border": "Ajouter une bordure de surlignage",
|
"add_highlight_border": "Ajouter une bordure de surlignage",
|
||||||
|
"add_highlight_border_description": "S'applique uniquement aux sondages intégrés au produit.",
|
||||||
"add_logic": "Ajouter de la logique",
|
"add_logic": "Ajouter de la logique",
|
||||||
"add_none_of_the_above": "Ajouter \"Aucun des éléments ci-dessus\"",
|
"add_none_of_the_above": "Ajouter \"Aucun des éléments ci-dessus\"",
|
||||||
"add_option": "Ajouter une option",
|
"add_option": "Ajouter une option",
|
||||||
@@ -1263,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Ajuster le message \"Sondage fermé\"",
|
"adjust_survey_closed_message": "Ajuster le message \"Sondage fermé\"",
|
||||||
"adjust_survey_closed_message_description": "Modifiez le message que les visiteurs voient lorsque l'enquête est fermée.",
|
"adjust_survey_closed_message_description": "Modifiez le message que les visiteurs voient lorsque l'enquête est fermée.",
|
||||||
"adjust_the_theme_in_the": "Ajustez le thème dans le",
|
"adjust_the_theme_in_the": "Ajustez le thème dans le",
|
||||||
|
"all_are_true": "toutes sont vraies",
|
||||||
"all_other_answers_will_continue_to": "Toutes les autres réponses continueront à",
|
"all_other_answers_will_continue_to": "Toutes les autres réponses continueront à",
|
||||||
"allow_multi_select": "Autoriser la sélection multiple",
|
"allow_multi_select": "Autoriser la sélection multiple",
|
||||||
"allow_multiple_files": "Autoriser plusieurs fichiers",
|
"allow_multiple_files": "Autoriser plusieurs fichiers",
|
||||||
"allow_users_to_select_more_than_one_image": "Permettre aux utilisateurs de sélectionner plusieurs images",
|
"allow_users_to_select_more_than_one_image": "Permettre aux utilisateurs de sélectionner plusieurs images",
|
||||||
"and_launch_surveys_in_your_website_or_app": "et lancez des enquêtes sur votre site web ou votre application.",
|
"and_launch_surveys_in_your_website_or_app": "et lancez des enquêtes sur votre site web ou votre application.",
|
||||||
"animation": "Animation",
|
"animation": "Animation",
|
||||||
|
"any_is_true": "au moins une est vraie",
|
||||||
"app_survey_description": "Intégrez une enquête dans votre application web ou votre site web pour collecter des réponses.",
|
"app_survey_description": "Intégrez une enquête dans votre application web ou votre site web pour collecter des réponses.",
|
||||||
"assign": "Attribuer =",
|
"assign": "Attribuer =",
|
||||||
"audience": "Public",
|
"audience": "Public",
|
||||||
@@ -1299,7 +1307,7 @@
|
|||||||
"calculate": "Calculer",
|
"calculate": "Calculer",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Capturez une nouvelle action pour déclencher une enquête.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Capturez une nouvelle action pour déclencher une enquête.",
|
||||||
"capture_ip_address": "Capturer l'adresse IP",
|
"capture_ip_address": "Capturer l'adresse IP",
|
||||||
"capture_ip_address_description": "Stocker l'adresse IP du répondant dans les métadonnées de réponse à des fins de détection des doublons et de sécurité",
|
"capture_ip_address_description": "Enregistrer l'adresse IP du répondant dans les métadonnées de réponse à des fins de détection des doublons et de sécurité",
|
||||||
"capture_new_action": "Capturer une nouvelle action",
|
"capture_new_action": "Capturer une nouvelle action",
|
||||||
"card_arrangement_for_survey_type_derived": "Disposition des cartes pour les enquêtes {surveyTypeDerived}",
|
"card_arrangement_for_survey_type_derived": "Disposition des cartes pour les enquêtes {surveyTypeDerived}",
|
||||||
"card_background_color": "Couleur de fond de la carte",
|
"card_background_color": "Couleur de fond de la carte",
|
||||||
@@ -1310,7 +1318,7 @@
|
|||||||
"casual": "Décontracté",
|
"casual": "Décontracté",
|
||||||
"caution_edit_duplicate": "Dupliquer et modifier",
|
"caution_edit_duplicate": "Dupliquer et modifier",
|
||||||
"caution_edit_published_survey": "Modifier un sondage publié ?",
|
"caution_edit_published_survey": "Modifier un sondage publié ?",
|
||||||
"caution_explanation_intro": "Nous comprenons que vous souhaitiez encore apporter des modifications. Voici ce qui se passe si vous le faites : ",
|
"caution_explanation_intro": "Nous comprenons que vous souhaitiez peut-être encore apporter des modifications. Voici ce qui se passe si vous le faites :",
|
||||||
"caution_explanation_new_responses_separated": "Les réponses avant le changement peuvent ne pas être ou ne faire partie que partiellement du résumé de l'enquête.",
|
"caution_explanation_new_responses_separated": "Les réponses avant le changement peuvent ne pas être ou ne faire partie que partiellement du résumé de l'enquête.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Toutes les données, y compris les réponses passées, restent disponibles en téléchargement sur la page de résumé de l'enquête.",
|
"caution_explanation_only_new_responses_in_summary": "Toutes les données, y compris les réponses passées, restent disponibles en téléchargement sur la page de résumé de l'enquête.",
|
||||||
"caution_explanation_responses_are_safe": "Les réponses anciennes et nouvelles se mélangent, ce qui peut entraîner des résumés de données trompeurs.",
|
"caution_explanation_responses_are_safe": "Les réponses anciennes et nouvelles se mélangent, ce qui peut entraîner des résumés de données trompeurs.",
|
||||||
@@ -1445,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "\"Suivi mis à jour et sera enregistré une fois que vous sauvegarderez le sondage.\"",
|
"follow_ups_modal_updated_successfull_toast": "\"Suivi mis à jour et sera enregistré une fois que vous sauvegarderez le sondage.\"",
|
||||||
"follow_ups_new": "Nouveau suivi",
|
"follow_ups_new": "Nouveau suivi",
|
||||||
"follow_ups_upgrade_button_text": "Passez à la version supérieure pour activer les relances",
|
"follow_ups_upgrade_button_text": "Passez à la version supérieure pour activer les relances",
|
||||||
"form_styling": "Style de formulaire",
|
|
||||||
"formbricks_sdk_is_not_connected": "Le SDK Formbricks n'est pas connecté",
|
"formbricks_sdk_is_not_connected": "Le SDK Formbricks n'est pas connecté",
|
||||||
"four_points": "4 points",
|
"four_points": "4 points",
|
||||||
"heading": "En-tête",
|
"heading": "En-tête",
|
||||||
@@ -1535,7 +1542,7 @@
|
|||||||
"option_idx": "Option {choiceIndex}",
|
"option_idx": "Option {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Cette option est utilisée dans la logique de la question {questionIndex}. Veuillez d'abord la supprimer de la logique.",
|
"option_used_in_logic_error": "Cette option est utilisée dans la logique de la question {questionIndex}. Veuillez d'abord la supprimer de la logique.",
|
||||||
"optional": "Optionnel",
|
"optional": "Optionnel",
|
||||||
"options": "Options",
|
"options": "Options*",
|
||||||
"options_used_in_logic_bulk_error": "Les options suivantes sont utilisées dans la logique : {questionIndexes}. Veuillez d'abord les supprimer de la logique.",
|
"options_used_in_logic_bulk_error": "Les options suivantes sont utilisées dans la logique : {questionIndexes}. Veuillez d'abord les supprimer de la logique.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Override the theme with individual styles for this survey.",
|
"override_theme_with_individual_styles_for_this_survey": "Override the theme with individual styles for this survey.",
|
||||||
"overwrite_global_waiting_time": "Définir une période de refroidissement personnalisée",
|
"overwrite_global_waiting_time": "Définir une période de refroidissement personnalisée",
|
||||||
@@ -1560,6 +1567,7 @@
|
|||||||
"question_deleted": "Question supprimée.",
|
"question_deleted": "Question supprimée.",
|
||||||
"question_duplicated": "Question dupliquée.",
|
"question_duplicated": "Question dupliquée.",
|
||||||
"question_id_updated": "ID de la question mis à jour",
|
"question_id_updated": "ID de la question mis à jour",
|
||||||
|
"question_number": "Question {number}",
|
||||||
"question_used_in_logic_warning_text": "Des éléments de ce bloc sont utilisés dans une règle logique, êtes-vous sûr de vouloir le supprimer ?",
|
"question_used_in_logic_warning_text": "Des éléments de ce bloc sont utilisés dans une règle logique, êtes-vous sûr de vouloir le supprimer ?",
|
||||||
"question_used_in_logic_warning_title": "Incohérence de logique",
|
"question_used_in_logic_warning_title": "Incohérence de logique",
|
||||||
"question_used_in_quota": "Cette question est utilisée dans le quota “{quotaName}”",
|
"question_used_in_quota": "Cette question est utilisée dans le quota “{quotaName}”",
|
||||||
@@ -1618,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Limites de réponse, redirections et plus.",
|
"response_limits_redirections_and_more": "Limites de réponse, redirections et plus.",
|
||||||
"response_options": "Options de réponse",
|
"response_options": "Options de réponse",
|
||||||
"roundness": "Rondeur",
|
"roundness": "Rondeur",
|
||||||
"roundness_description": "Contrôle l'arrondi des coins de la carte.",
|
"roundness_description": "Contrôle l'arrondi des coins.",
|
||||||
"row_used_in_logic_error": "Cette ligne est utilisée dans la logique de la question {questionIndex}. Veuillez d'abord la supprimer de la logique.",
|
"row_used_in_logic_error": "Cette ligne est utilisée dans la logique de la question {questionIndex}. Veuillez d'abord la supprimer de la logique.",
|
||||||
"rows": "Lignes",
|
"rows": "Lignes",
|
||||||
"save_and_close": "Enregistrer et fermer",
|
"save_and_close": "Enregistrer et fermer",
|
||||||
@@ -1664,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Cette enquête gratuite et open-source a été fermée",
|
"survey_completed_subheading": "Cette enquête gratuite et open-source a été fermée",
|
||||||
"survey_display_settings": "Paramètres d'affichage de l'enquête",
|
"survey_display_settings": "Paramètres d'affichage de l'enquête",
|
||||||
"survey_placement": "Placement de l'enquête",
|
"survey_placement": "Placement de l'enquête",
|
||||||
|
"survey_styling": "Style de formulaire",
|
||||||
"survey_trigger": "Déclencheur d'enquête",
|
"survey_trigger": "Déclencheur d'enquête",
|
||||||
"switch_multi_language_on_to_get_started": "Activez le mode multilingue pour commencer 👉",
|
"switch_multi_language_on_to_get_started": "Activez le mode multilingue pour commencer 👉",
|
||||||
"target_block_not_found": "Bloc cible non trouvé",
|
"target_block_not_found": "Bloc cible non trouvé",
|
||||||
@@ -1726,7 +1735,7 @@
|
|||||||
"pattern": "Correspond au modèle d'expression régulière",
|
"pattern": "Correspond au modèle d'expression régulière",
|
||||||
"phone": "Est un numéro de téléphone valide",
|
"phone": "Est un numéro de téléphone valide",
|
||||||
"rank_all_options": "Classer toutes les options",
|
"rank_all_options": "Classer toutes les options",
|
||||||
"select_file_extensions": "Sélectionner les extensions de fichier...",
|
"select_file_extensions": "Sélectionner les extensions de fichier…",
|
||||||
"select_option": "Sélectionner une option",
|
"select_option": "Sélectionner une option",
|
||||||
"start_date": "Date de début",
|
"start_date": "Date de début",
|
||||||
"url": "Est une URL valide"
|
"url": "Est une URL valide"
|
||||||
@@ -1752,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Période de refroidissement (entre les sondages)",
|
"waiting_time_across_surveys": "Période de refroidissement (entre les sondages)",
|
||||||
"waiting_time_across_surveys_description": "Pour éviter la fatigue liée aux sondages, choisissez comment ce sondage interagit avec la période de refroidissement globale de l'espace de travail.",
|
"waiting_time_across_surveys_description": "Pour éviter la fatigue liée aux sondages, choisissez comment ce sondage interagit avec la période de refroidissement globale de l'espace de travail.",
|
||||||
"welcome_message": "Message de bienvenue",
|
"welcome_message": "Message de bienvenue",
|
||||||
|
"when": "Quand",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Sans filtre, tous vos utilisateurs peuvent être sondés.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Sans filtre, tous vos utilisateurs peuvent être sondés.",
|
||||||
"you_have_not_created_a_segment_yet": "Tu n'as pas encore créé de segment.",
|
"you_have_not_created_a_segment_yet": "Tu n'as pas encore créé de segment.",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Vous devez avoir deux langues ou plus configurées dans votre espace de travail pour travailler avec les traductions.",
|
|
||||||
"your_description_here_recall_information_with": "Votre description ici. Rappelez-vous des informations avec @",
|
"your_description_here_recall_information_with": "Votre description ici. Rappelez-vous des informations avec @",
|
||||||
"your_question_here_recall_information_with": "Votre question ici. Rappelez-vous des informations avec @",
|
"your_question_here_recall_information_with": "Votre question ici. Rappelez-vous des informations avec @",
|
||||||
"your_web_app": "Votre application web",
|
"your_web_app": "Votre application web",
|
||||||
@@ -1824,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Désactiver les liens à usage unique",
|
"disable_single_use_link_modal_button": "Désactiver les liens à usage unique",
|
||||||
"disable_single_use_link_modal_description": "Si vous avez partagé des liens à usage unique, les participants ne pourront plus répondre au sondage.",
|
"disable_single_use_link_modal_description": "Si vous avez partagé des liens à usage unique, les participants ne pourront plus répondre au sondage.",
|
||||||
"generate_and_download_links": "Générer et télécharger les liens",
|
"generate_and_download_links": "Générer et télécharger les liens",
|
||||||
"generate_links_error": "Les liens à usage unique n'ont pas pu être générés. Veuillez travailler directement avec l'API",
|
"generate_links_error": "Impossible de générer les liens à usage unique. Veuillez travailler directement avec l’API.",
|
||||||
"multi_use_link": "Lien multi-usage",
|
"multi_use_link": "Lien multi-usage",
|
||||||
"multi_use_link_description": "Recueillir plusieurs réponses de répondants anonymes avec un seul lien.",
|
"multi_use_link_description": "Recueillir plusieurs réponses de répondants anonymes avec un seul lien.",
|
||||||
"multi_use_powers_other_channels_description": "Si vous le désactivez, ces autres canaux de distribution seront également désactivés.",
|
"multi_use_powers_other_channels_description": "Si vous le désactivez, ces autres canaux de distribution seront également désactivés.",
|
||||||
@@ -1935,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Filtre ajouté pour les réponses où la réponse à la question '{'questionIdx'}' est '{'filterComboBoxValue'}' - '{'filterValue'}' ",
|
"added_filter_for_responses_where_answer_to_question": "Filtre ajouté pour les réponses où la réponse à la question {questionIdx} est {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtre ajouté pour les réponses où la réponse à la question '{'questionIdx'}' est ignorée",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtre ajouté pour les réponses où la réponse à la question '{'questionIdx'}' est ignorée",
|
||||||
"aggregated": "Agrégé",
|
"aggregated": "Agrégé",
|
||||||
"all_responses_csv": "Tous les réponses (CSV)",
|
"all_responses_csv": "Tous les réponses (CSV)",
|
||||||
@@ -2028,6 +2037,7 @@
|
|||||||
"starts": "Commence",
|
"starts": "Commence",
|
||||||
"starts_tooltip": "Nombre de fois que l'enquête a été commencée.",
|
"starts_tooltip": "Nombre de fois que l'enquête a été commencée.",
|
||||||
"survey_reset_successfully": "Réinitialisation du sondage réussie ! {responseCount} réponses et {displayCount} affichages ont été supprimés.",
|
"survey_reset_successfully": "Réinitialisation du sondage réussie ! {responseCount} réponses et {displayCount} affichages ont été supprimés.",
|
||||||
|
"survey_results": "Résultats de {surveyName}",
|
||||||
"this_month": "Ce mois-ci",
|
"this_month": "Ce mois-ci",
|
||||||
"this_quarter": "Ce trimestre",
|
"this_quarter": "Ce trimestre",
|
||||||
"this_year": "Cette année",
|
"this_year": "Cette année",
|
||||||
@@ -2147,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Ajoutez une couleur d'arrière-plan au conteneur du logo.",
|
"add_background_color_description": "Ajoutez une couleur d'arrière-plan au conteneur du logo.",
|
||||||
"advanced_styling_field_border_radius": "Rayon de bordure",
|
"advanced_styling_field_border_radius": "Rayon de bordure",
|
||||||
"advanced_styling_field_button_bg": "Arrière-plan du bouton",
|
"advanced_styling_field_button_bg": "Arrière-plan du bouton",
|
||||||
"advanced_styling_field_button_bg_description": "Remplit le bouton Suivant / Envoyer.",
|
"advanced_styling_field_button_bg_description": "Remplit le bouton “Suivant” / “Envoyer”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Arrondit les coins du bouton.",
|
"advanced_styling_field_button_border_radius_description": "Arrondit les coins du bouton.",
|
||||||
"advanced_styling_field_button_font_size_description": "Ajuste la taille du texte du libellé du bouton.",
|
"advanced_styling_field_button_font_size_description": "Ajuste la taille du texte du libellé du bouton.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Rend le texte du bouton plus léger ou plus gras.",
|
"advanced_styling_field_button_font_weight_description": "Rend le texte du bouton plus léger ou plus gras.",
|
||||||
@@ -2161,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Taille de police de la description",
|
"advanced_styling_field_description_size": "Taille de police de la description",
|
||||||
"advanced_styling_field_description_size_description": "Ajuste la taille du texte de description.",
|
"advanced_styling_field_description_size_description": "Ajuste la taille du texte de description.",
|
||||||
"advanced_styling_field_description_weight": "Graisse de police de la description",
|
"advanced_styling_field_description_weight": "Graisse de police de la description",
|
||||||
"advanced_styling_field_description_weight_description": "Rend le texte de description plus léger ou plus gras.",
|
"advanced_styling_field_description_weight_description": "Rend le texte de la description plus léger ou plus gras.",
|
||||||
"advanced_styling_field_font_size": "Taille de police",
|
"advanced_styling_field_font_size": "Taille de police",
|
||||||
"advanced_styling_field_font_weight": "Graisse de police",
|
"advanced_styling_field_font_weight": "Graisse de police",
|
||||||
"advanced_styling_field_headline_color": "Couleur du titre",
|
"advanced_styling_field_headline_color": "Couleur du titre",
|
||||||
@@ -2184,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colore le texte saisi dans les champs.",
|
"advanced_styling_field_input_text_description": "Colore le texte saisi dans les champs.",
|
||||||
"advanced_styling_field_option_bg": "Arrière-plan",
|
"advanced_styling_field_option_bg": "Arrière-plan",
|
||||||
"advanced_styling_field_option_bg_description": "Remplit les éléments d'option.",
|
"advanced_styling_field_option_bg_description": "Remplit les éléments d'option.",
|
||||||
|
"advanced_styling_field_option_border": "Couleur de bordure",
|
||||||
|
"advanced_styling_field_option_border_description": "Contours des options de boutons radio et de cases à cocher.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Arrondit les coins des options.",
|
"advanced_styling_field_option_border_radius_description": "Arrondit les coins des options.",
|
||||||
"advanced_styling_field_option_font_size_description": "Ajuste la taille du texte des libellés d'option.",
|
"advanced_styling_field_option_font_size_description": "Ajuste la taille du texte des libellés d'option.",
|
||||||
"advanced_styling_field_option_label": "Couleur de l'étiquette",
|
"advanced_styling_field_option_label": "Couleur de l'étiquette",
|
||||||
@@ -2238,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Afficher la signature « Propulsé par Formbricks »",
|
"show_powered_by_formbricks": "Afficher la signature « Propulsé par Formbricks »",
|
||||||
"styling_updated_successfully": "Style mis à jour avec succès",
|
"styling_updated_successfully": "Style mis à jour avec succès",
|
||||||
"suggest_colors": "Suggérer des couleurs",
|
"suggest_colors": "Suggérer des couleurs",
|
||||||
"suggested_colors_applied_please_save": "Couleurs suggérées générées avec succès. Appuyez sur « Enregistrer » pour conserver les modifications.",
|
"suggested_colors_applied_please_save": "Couleurs suggérées générées avec succès. Appuyez sur “Enregistrer” pour conserver les modifications.",
|
||||||
"theme": "Thème",
|
"theme": "Thème",
|
||||||
"theme_settings_description": "Créez un thème de style pour toutes les enquêtes. Vous pouvez activer un style personnalisé pour chaque enquête."
|
"theme_settings_description": "Créez un thème de style pour toutes les enquêtes. Vous pouvez activer un style personnalisé pour chaque enquête."
|
||||||
},
|
},
|
||||||
@@ -2322,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Veuillez également vérifier votre dossier de spam si vous ne voyez pas l'e-mail dans votre boîte de réception.",
|
"check_inbox_or_spam": "Veuillez également vérifier votre dossier de spam si vous ne voyez pas l'e-mail dans votre boîte de réception.",
|
||||||
"completed": "Cette enquête gratuite et open-source a été fermée.",
|
"completed": "Cette enquête gratuite et open-source a été fermée.",
|
||||||
"create_your_own": "Créez le vôtre",
|
"create_your_own": "Créez le vôtre",
|
||||||
"enter_pin": "Ce sondage est protégé. Entrez le code PIN ci-dessous",
|
"enter_pin": "Ce sondage est protégé. Entrez le code PIN ci-dessous.",
|
||||||
"just_curious": "Juste curieux ?",
|
"just_curious": "Juste curieux ?",
|
||||||
"link_invalid": "Cette enquête ne peut être réalisée que sur invitation.",
|
"link_invalid": "Cette enquête ne peut être réalisée que sur invitation.",
|
||||||
"paused": "Cette enquête gratuite et open-source est temporairement suspendue.",
|
"paused": "Cette enquête gratuite et open-source est temporairement suspendue.",
|
||||||
@@ -2393,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Comment l'entreprise peut-elle améliorer l'alignement de sa vision et de sa stratégie ?",
|
"alignment_and_engagement_survey_question_4_headline": "Comment l'entreprise peut-elle améliorer l'alignement de sa vision et de sa stratégie ?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Entrez votre réponse ici...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Entrez votre réponse ici...",
|
||||||
"back": "Retour",
|
"back": "Retour",
|
||||||
|
"block_1": "Bloc 1",
|
||||||
|
"block_10": "Bloc 10",
|
||||||
|
"block_2": "Bloc 2",
|
||||||
|
"block_3": "Bloc 3",
|
||||||
|
"block_4": "Bloc 4",
|
||||||
|
"block_5": "Bloc 5",
|
||||||
|
"block_6": "Bloc 6",
|
||||||
|
"block_7": "Bloc 7",
|
||||||
|
"block_8": "Bloc 8",
|
||||||
|
"block_9": "Bloc 9",
|
||||||
"book_interview": "Réserver un entretien",
|
"book_interview": "Réserver un entretien",
|
||||||
"build_product_roadmap_description": "Identifiez la chose UNIQUE que vos utilisateurs désirent le plus et construisez-la.",
|
"build_product_roadmap_description": "Identifiez la chose UNIQUE que vos utilisateurs désirent le plus et construisez-la.",
|
||||||
"build_product_roadmap_name": "Élaborer la feuille de route du produit",
|
"build_product_roadmap_name": "Élaborer la feuille de route du produit",
|
||||||
@@ -2548,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Qualité médiocre",
|
"csat_question_3_choice_8": "Qualité médiocre",
|
||||||
"csat_question_3_choice_9": "Peu fiable",
|
"csat_question_3_choice_9": "Peu fiable",
|
||||||
"csat_question_3_headline": "Lequel des mots suivants utiliseriez-vous pour décrire notre $[projectName] ?",
|
"csat_question_3_headline": "Lequel des mots suivants utiliseriez-vous pour décrire notre $[projectName] ?",
|
||||||
"csat_question_3_subheader": "Sélectionnez tout ce qui s'applique :",
|
"csat_question_3_subheader": "Veuillez sélectionner tout ce qui s'applique :",
|
||||||
"csat_question_4_choice_1": "Extrêmement bien",
|
"csat_question_4_choice_1": "Extrêmement bien",
|
||||||
"csat_question_4_choice_2": "Très bien",
|
"csat_question_4_choice_2": "Très bien",
|
||||||
"csat_question_4_choice_3": "Plutôt bien",
|
"csat_question_4_choice_3": "Plutôt bien",
|
||||||
@@ -2600,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Ah, désolé ! Y a-t-il quelque chose que nous puissions faire pour améliorer votre expérience ?",
|
"csat_survey_question_3_headline": "Ah, désolé ! Y a-t-il quelque chose que nous puissions faire pour améliorer votre expérience ?",
|
||||||
"csat_survey_question_3_placeholder": "Entrez votre réponse ici...",
|
"csat_survey_question_3_placeholder": "Entrez votre réponse ici...",
|
||||||
"cta_description": "Afficher des informations et inciter les utilisateurs à effectuer une action spécifique",
|
"cta_description": "Afficher des informations et inciter les utilisateurs à effectuer une action spécifique",
|
||||||
"custom_survey_block_1_name": "Bloc 1",
|
|
||||||
"custom_survey_description": "Créez une enquête sans utiliser de modèle.",
|
"custom_survey_description": "Créez une enquête sans utiliser de modèle.",
|
||||||
"custom_survey_name": "Tout créer moi-même",
|
"custom_survey_name": "Tout créer moi-même",
|
||||||
"custom_survey_question_1_headline": "Que voudriez-vous savoir ?",
|
"custom_survey_question_1_headline": "Que voudriez-vous savoir ?",
|
||||||
@@ -3003,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Non, merci !",
|
"preview_survey_question_2_choice_2_label": "Non, merci !",
|
||||||
"preview_survey_question_2_headline": "Souhaitez-vous être informé ?",
|
"preview_survey_question_2_headline": "Souhaitez-vous être informé ?",
|
||||||
"preview_survey_question_2_subheader": "Ceci est un exemple de description.",
|
"preview_survey_question_2_subheader": "Ceci est un exemple de description.",
|
||||||
|
"preview_survey_question_open_text_headline": "Autre chose que vous aimeriez partager ?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Entrez votre réponse ici...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Vos commentaires nous aident à nous améliorer.",
|
||||||
"preview_survey_welcome_card_headline": "Bienvenue !",
|
"preview_survey_welcome_card_headline": "Bienvenue !",
|
||||||
"prioritize_features_description": "Identifiez les fonctionnalités dont vos utilisateurs ont le plus et le moins besoin.",
|
"prioritize_features_description": "Identifiez les fonctionnalités dont vos utilisateurs ont le plus et le moins besoin.",
|
||||||
"prioritize_features_name": "Prioriser les fonctionnalités",
|
"prioritize_features_name": "Prioriser les fonctionnalités",
|
||||||
@@ -3072,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Recherche individuelle",
|
"professional_development_survey_question_2_choice_5": "Recherche individuelle",
|
||||||
"professional_development_survey_question_2_choice_6": "Autre",
|
"professional_development_survey_question_2_choice_6": "Autre",
|
||||||
"professional_development_survey_question_2_headline": "Quels types d'activités de développement professionnel pensez-vous être les plus précieuses pour votre croissance ?",
|
"professional_development_survey_question_2_headline": "Quels types d'activités de développement professionnel pensez-vous être les plus précieuses pour votre croissance ?",
|
||||||
"professional_development_survey_question_2_subheader": "Sélectionnez tout ce qui s'applique",
|
"professional_development_survey_question_2_subheader": "Veuillez sélectionner tout ce qui s'applique :",
|
||||||
"professional_development_survey_question_3_choice_1": "Oui",
|
"professional_development_survey_question_3_choice_1": "Oui",
|
||||||
"professional_development_survey_question_3_choice_2": "Non",
|
"professional_development_survey_question_3_choice_2": "Non",
|
||||||
"professional_development_survey_question_3_headline": "Avez-vous consacré du temps à votre développement professionnel dans le passé ?",
|
"professional_development_survey_question_3_headline": "Avez-vous consacré du temps à votre développement professionnel dans le passé ?",
|
||||||
@@ -3251,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Je me suis senti confiant en utilisant le système.",
|
"usability_question_9_headline": "Je me suis senti confiant en utilisant le système.",
|
||||||
"usability_rating_description": "Mesurez la convivialité perçue en demandant aux utilisateurs d'évaluer leur expérience avec votre produit via un sondage standardisé de 10 questions.",
|
"usability_rating_description": "Mesurez la convivialité perçue en demandant aux utilisateurs d'évaluer leur expérience avec votre produit via un sondage standardisé de 10 questions.",
|
||||||
"usability_score_name": "Score d'Utilisabilité du Système (SUS)"
|
"usability_score_name": "Score d'Utilisabilité du Système (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Merci d'avoir partagé votre idée de workflow avec nous ! Nous concevons actuellement cette fonctionnalité et vos retours nous aideront à créer exactement ce dont vous avez besoin.",
|
||||||
|
"coming_soon_title": "Nous y sommes presque !",
|
||||||
|
"follow_up_label": "Y a-t-il autre chose que vous aimeriez ajouter ?",
|
||||||
|
"follow_up_placeholder": "Quelles tâches spécifiques souhaitez-vous automatiser ? Y a-t-il des outils ou intégrations que vous aimeriez inclure ?",
|
||||||
|
"generate_button": "Générer le workflow",
|
||||||
|
"heading": "Quel workflow souhaitez-vous créer ?",
|
||||||
|
"placeholder": "Décrivez le processus que vous souhaitez générer…",
|
||||||
|
"subheading": "Générez votre workflow en quelques secondes.",
|
||||||
|
"submit_button": "Ajouter des détails",
|
||||||
|
"thank_you_description": "Vos retours nous aident à construire la fonctionnalité Workflows dont vous avez réellement besoin. Nous vous tiendrons informé(e) de notre avancement.",
|
||||||
|
"thank_you_title": "Merci pour vos retours !"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+118
-80
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Másolás",
|
"copy": "Másolás",
|
||||||
"copy_code": "Kód másolása",
|
"copy_code": "Kód másolása",
|
||||||
"copy_link": "Hivatkozás másolása",
|
"copy_link": "Hivatkozás másolása",
|
||||||
"count_attributes": "{value, plural, one {{value} attribútum} other {{value} attribútum}}",
|
"count_attributes": "{count, plural, one {{count} attribútum} other {{count} attribútum}}",
|
||||||
"count_contacts": "{value, plural, one {{value} partner} other {{value} partner}}",
|
"count_contacts": "{count, plural, one {{count} partner} other {{count} partner}}",
|
||||||
"count_responses": "{value, plural, one {{value} válasz} other {{value} válasz}}",
|
"count_members": "{count, plural, one {{count} tag} other {{count} tag}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} kérdés} other {{count} kérdés}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} válasz} other {{count} válasz}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} kiválasztás} other {{count} kiválasztás}}",
|
||||||
"create_new_organization": "Új szervezet létrehozása",
|
"create_new_organization": "Új szervezet létrehozása",
|
||||||
"create_segment": "Szakasz létrehozása",
|
"create_segment": "Szakasz létrehozása",
|
||||||
"create_survey": "Kérdőív létrehozása",
|
"create_survey": "Kérdőív létrehozása",
|
||||||
@@ -188,9 +191,10 @@
|
|||||||
"customer_success": "Ügyfélsiker",
|
"customer_success": "Ügyfélsiker",
|
||||||
"dark_overlay": "Sötét rávetítés",
|
"dark_overlay": "Sötét rávetítés",
|
||||||
"date": "Dátum",
|
"date": "Dátum",
|
||||||
"days": "napok",
|
"days": "nap",
|
||||||
"default": "Alapértelmezett",
|
"default": "Alapértelmezett",
|
||||||
"delete": "Törlés",
|
"delete": "Törlés",
|
||||||
|
"delete_what": "{deleteWhat} törlése",
|
||||||
"description": "Leírás",
|
"description": "Leírás",
|
||||||
"dev_env": "Fejlesztői környezet",
|
"dev_env": "Fejlesztői környezet",
|
||||||
"development": "Fejlesztés",
|
"development": "Fejlesztés",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Letöltés",
|
"download": "Letöltés",
|
||||||
"draft": "Piszkozat",
|
"draft": "Piszkozat",
|
||||||
"duplicate": "Kettőzés",
|
"duplicate": "Kettőzés",
|
||||||
|
"duplicate_copy": "(másolat)",
|
||||||
|
"duplicate_copy_number": "({copyNumber}. másolat)",
|
||||||
"e_commerce": "E-kereskedelem",
|
"e_commerce": "E-kereskedelem",
|
||||||
"edit": "Szerkesztés",
|
"edit": "Szerkesztés",
|
||||||
"email": "E-mail",
|
"email": "E-mail",
|
||||||
@@ -218,7 +224,7 @@
|
|||||||
"error": "Hiba",
|
"error": "Hiba",
|
||||||
"error_component_description": "Ez az erőforrás nem létezik, vagy nem rendelkezik a hozzáféréshez szükséges jogosultságokkal.",
|
"error_component_description": "Ez az erőforrás nem létezik, vagy nem rendelkezik a hozzáféréshez szükséges jogosultságokkal.",
|
||||||
"error_component_title": "Hiba az erőforrások betöltésekor",
|
"error_component_title": "Hiba az erőforrások betöltésekor",
|
||||||
"error_loading_data": "Hiba az adatok betöltése során",
|
"error_loading_data": "Hiba az adatok betöltésekor",
|
||||||
"error_rate_limit_description": "A kérések legnagyobb száma elérve. Próbálja meg később újra.",
|
"error_rate_limit_description": "A kérések legnagyobb száma elérve. Próbálja meg később újra.",
|
||||||
"error_rate_limit_title": "A sebességkorlát elérve",
|
"error_rate_limit_title": "A sebességkorlát elérve",
|
||||||
"expand_rows": "Sorok kinyitása",
|
"expand_rows": "Sorok kinyitása",
|
||||||
@@ -240,11 +246,11 @@
|
|||||||
"hidden_field": "Rejtett mező",
|
"hidden_field": "Rejtett mező",
|
||||||
"hidden_fields": "Rejtett mezők",
|
"hidden_fields": "Rejtett mezők",
|
||||||
"hide_column": "Oszlop elrejtése",
|
"hide_column": "Oszlop elrejtése",
|
||||||
"id": "ID",
|
"id": "Azonosító",
|
||||||
"image": "Kép",
|
"image": "Kép",
|
||||||
"images": "Képek",
|
"images": "Képek",
|
||||||
"import": "Importálás",
|
"import": "Importálás",
|
||||||
"impressions": "Benyomások",
|
"impressions": "Megtekintések",
|
||||||
"imprint": "Impresszum",
|
"imprint": "Impresszum",
|
||||||
"in_progress": "Folyamatban",
|
"in_progress": "Folyamatban",
|
||||||
"inactive_surveys": "Inaktív kérdőívek",
|
"inactive_surveys": "Inaktív kérdőívek",
|
||||||
@@ -263,9 +269,9 @@
|
|||||||
"license_expired": "A licenc lejárt",
|
"license_expired": "A licenc lejárt",
|
||||||
"light_overlay": "Világos rávetítés",
|
"light_overlay": "Világos rávetítés",
|
||||||
"limits_reached": "Korlátok elérve",
|
"limits_reached": "Korlátok elérve",
|
||||||
"link": "Összekapcsolás",
|
"link": "Hivatkozás",
|
||||||
"link_survey": "Kérdőív összekapcsolása",
|
"link_survey": "Hivatkozás-kérdőív",
|
||||||
"link_surveys": "Kérdőívek összekapcsolása",
|
"link_surveys": "Hivatkozás-kérdőívek",
|
||||||
"load_more": "Továbbiak betöltése",
|
"load_more": "Továbbiak betöltése",
|
||||||
"loading": "Betöltés",
|
"loading": "Betöltés",
|
||||||
"logo": "Logó",
|
"logo": "Logó",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Megjelenés",
|
"look_and_feel": "Megjelenés",
|
||||||
"manage": "Kezelés",
|
"manage": "Kezelés",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Tag",
|
|
||||||
"members": "Tagok",
|
"members": "Tagok",
|
||||||
"members_and_teams": "Tagok és csapatok",
|
"members_and_teams": "Tagok és csapatok",
|
||||||
"membership_not_found": "A tagság nem található",
|
"membership_not_found": "A tagság nem található",
|
||||||
@@ -281,10 +286,11 @@
|
|||||||
"mobile_overlay_app_works_best_on_desktop": "A Formbricks nagyobb képernyőn működik a legjobban. A kérdőívek kezeléséhez vagy összeállításához váltson másik eszközre.",
|
"mobile_overlay_app_works_best_on_desktop": "A Formbricks nagyobb képernyőn működik a legjobban. A kérdőívek kezeléséhez vagy összeállításához váltson másik eszközre.",
|
||||||
"mobile_overlay_surveys_look_good": "Ne aggódjon – a kérdőívei minden eszközön és képernyőméretnél remekül néznek ki!",
|
"mobile_overlay_surveys_look_good": "Ne aggódjon – a kérdőívei minden eszközön és képernyőméretnél remekül néznek ki!",
|
||||||
"mobile_overlay_title": "Hoppá, apró képernyő észlelve!",
|
"mobile_overlay_title": "Hoppá, apró képernyő észlelve!",
|
||||||
"months": "hónapok",
|
"months": "hónap",
|
||||||
"move_down": "Mozgatás le",
|
"move_down": "Mozgatás le",
|
||||||
"move_up": "Mozgatás fel",
|
"move_up": "Mozgatás fel",
|
||||||
"multiple_languages": "Több nyelv",
|
"multiple_languages": "Több nyelv",
|
||||||
|
"my_product": "saját termék",
|
||||||
"name": "Név",
|
"name": "Név",
|
||||||
"new": "Új",
|
"new": "Új",
|
||||||
"new_version_available": "A Formbricks {version} megérkezett. Frissítsen most!",
|
"new_version_available": "A Formbricks {version} megérkezett. Frissítsen most!",
|
||||||
@@ -318,7 +324,7 @@
|
|||||||
"organization_settings": "Szervezet beállításai",
|
"organization_settings": "Szervezet beállításai",
|
||||||
"organization_teams_not_found": "A szervezeti csapatok nem találhatók",
|
"organization_teams_not_found": "A szervezeti csapatok nem találhatók",
|
||||||
"other": "Egyéb",
|
"other": "Egyéb",
|
||||||
"others": "Egyebek",
|
"others": "Mások",
|
||||||
"overlay_color": "Rávetítés színe",
|
"overlay_color": "Rávetítés színe",
|
||||||
"overview": "Áttekintés",
|
"overview": "Áttekintés",
|
||||||
"password": "Jelszó",
|
"password": "Jelszó",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Csapatok kiválasztása",
|
"select_teams": "Csapatok kiválasztása",
|
||||||
"selected": "Kiválasztva",
|
"selected": "Kiválasztva",
|
||||||
"selected_questions": "Kiválasztott kérdések",
|
"selected_questions": "Kiválasztott kérdések",
|
||||||
"selection": "Kiválasztás",
|
|
||||||
"selections": "Kiválasztások",
|
|
||||||
"send_test_email": "Teszt e-mail küldése",
|
"send_test_email": "Teszt e-mail küldése",
|
||||||
"session_not_found": "A munkamenet nem található",
|
"session_not_found": "A munkamenet nem található",
|
||||||
"settings": "Beállítások",
|
"settings": "Beállítások",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Válaszok számának megjelenítése",
|
"show_response_count": "Válaszok számának megjelenítése",
|
||||||
"shown": "Megjelenítve",
|
"shown": "Megjelenítve",
|
||||||
"size": "Méret",
|
"size": "Méret",
|
||||||
|
"skip": "Kihagyás",
|
||||||
"skipped": "Kihagyva",
|
"skipped": "Kihagyva",
|
||||||
"skips": "Kihagyja",
|
"skips": "Kihagyja",
|
||||||
"some_files_failed_to_upload": "Néhány fájlt nem sikerült feltölteni",
|
"some_files_failed_to_upload": "Néhány fájlt nem sikerült feltölteni",
|
||||||
@@ -457,8 +462,9 @@
|
|||||||
"website_and_app_connection": "Webhely és alkalmazáskapcsolódás",
|
"website_and_app_connection": "Webhely és alkalmazáskapcsolódás",
|
||||||
"website_app_survey": "Webhely és alkalmazás-kérdőív",
|
"website_app_survey": "Webhely és alkalmazás-kérdőív",
|
||||||
"website_survey": "Webhely kérdőív",
|
"website_survey": "Webhely kérdőív",
|
||||||
"weeks": "hetek",
|
"weeks": "hét",
|
||||||
"welcome_card": "Üdvözlő kártya",
|
"welcome_card": "Üdvözlő kártya",
|
||||||
|
"workflows": "Munkafolyamatok",
|
||||||
"workspace_configuration": "Munkaterület beállítása",
|
"workspace_configuration": "Munkaterület beállítása",
|
||||||
"workspace_created_successfully": "A munkaterület sikeresen létrehozva",
|
"workspace_created_successfully": "A munkaterület sikeresen létrehozva",
|
||||||
"workspace_creation_description": "Kérdőívek munkaterületekre szervezése a jobb hozzáférés-vezérlés érdekében.",
|
"workspace_creation_description": "Kérdőívek munkaterületekre szervezése a jobb hozzáférés-vezérlés érdekében.",
|
||||||
@@ -468,7 +474,7 @@
|
|||||||
"workspace_not_found": "A munkaterület nem található",
|
"workspace_not_found": "A munkaterület nem található",
|
||||||
"workspace_permission_not_found": "A munkaterület-jogosultság nem található",
|
"workspace_permission_not_found": "A munkaterület-jogosultság nem található",
|
||||||
"workspaces": "Munkaterületek",
|
"workspaces": "Munkaterületek",
|
||||||
"years": "évek",
|
"years": "év",
|
||||||
"you": "Ön",
|
"you": "Ön",
|
||||||
"you_are_downgraded_to_the_community_edition": "Visszaváltott a közösségi kiadásra.",
|
"you_are_downgraded_to_the_community_edition": "Visszaváltott a közösségi kiadásra.",
|
||||||
"you_are_not_authorized_to_perform_this_action": "Nincs felhatalmazva ennek a műveletnek a végrehajtásához.",
|
"you_are_not_authorized_to_perform_this_action": "Nincs felhatalmazva ennek a műveletnek a végrehajtásához.",
|
||||||
@@ -640,12 +646,12 @@
|
|||||||
"attribute_updated_successfully": "Az attribútum sikeresen frissítve",
|
"attribute_updated_successfully": "Az attribútum sikeresen frissítve",
|
||||||
"attribute_value": "Érték",
|
"attribute_value": "Érték",
|
||||||
"attribute_value_placeholder": "Attribútum értéke",
|
"attribute_value_placeholder": "Attribútum értéke",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Nem sikerült létrehozni {count} új attribútumot, mivel az meghaladná a maximális {limit} attribútumosztály-korlátot. A meglévő attribútumok sikeresen frissítve lettek.",
|
"attributes_msg_attribute_limit_exceeded": "Nem sikerült létrehozni {count} új attribútumot, mivel túllépte volna a(z) {limit} attribútumosztályból álló legnagyobb korlátot. A meglévő attribútumok sikeresen frissítve lettek.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (a(z) '{key}' attribútum adattípusa: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (a(z) “{key}” attribútum a következő adattípussal rendelkezik: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "Az e-mail cím már létezik ebben a környezetben, és nem lett frissítve.",
|
"attributes_msg_email_already_exists": "Az e-mail-cím már létezik ennél a környezetnél, és nem lett frissítve.",
|
||||||
"attributes_msg_email_or_userid_required": "E-mail cím vagy felhasználói azonosító megadása kötelező. A meglévő értékek megmaradtak.",
|
"attributes_msg_email_or_userid_required": "Vagy e-mail-cím, vagy felhasználó-azonosító szükséges. A meglévő értékek megmaradtak.",
|
||||||
"attributes_msg_new_attribute_created": "Új '{key}' attribútum létrehozva '{dataType}' típussal",
|
"attributes_msg_new_attribute_created": "Az új „{dataType}” típusú „{key}” attribútum létrehozva",
|
||||||
"attributes_msg_userid_already_exists": "A felhasználói azonosító már létezik ebben a környezetben, és nem lett frissítve.",
|
"attributes_msg_userid_already_exists": "A felhasználó-azonosító már létezik ennél a környezetnél, és nem lett frissítve.",
|
||||||
"contact_deleted_successfully": "A partner sikeresen törölve",
|
"contact_deleted_successfully": "A partner sikeresen törölve",
|
||||||
"contact_not_found": "Nem található ilyen partner",
|
"contact_not_found": "Nem található ilyen partner",
|
||||||
"contacts_table_refresh": "Partnerek frissítése",
|
"contacts_table_refresh": "Partnerek frissítése",
|
||||||
@@ -655,9 +661,9 @@
|
|||||||
"create_new_attribute_description": "Új attribútum létrehozása szakaszolási célokhoz.",
|
"create_new_attribute_description": "Új attribútum létrehozása szakaszolási célokhoz.",
|
||||||
"custom_attributes": "Egyéni attribútumok",
|
"custom_attributes": "Egyéni attribútumok",
|
||||||
"data_type": "Adattípus",
|
"data_type": "Adattípus",
|
||||||
"data_type_cannot_be_changed": "Az adattípus létrehozás után nem módosítható",
|
"data_type_cannot_be_changed": "Az adattípust nem lehet megváltoztatni a létrehozás után",
|
||||||
"data_type_description": "Válaszd ki, hogyan legyen tárolva és szűrve ez az attribútum",
|
"data_type_description": "Annak kiválasztása, hogy ezt az attribútumot hogyan kell tárolni és szűrni",
|
||||||
"date_value_required": "Dátum érték megadása kötelező. Használd a törlés gombot az attribútum eltávolításához, ha nem szeretnél dátumot megadni.",
|
"date_value_required": "Dátumérték szükséges. Használja a törlés gombot az attribútum eltávolításához, ha nem szeretne dátumot beállítani.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Ez törölni fogja a kiválasztott attribútumot. Az ehhez az attribútumhoz hozzárendelt összes partneradat el fog veszni.} other {Ez törölni fogja a kiválasztott attribútumokat. Az ezekhez az attribútumokhoz hozzárendelt összes partneradat el fog veszni.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Ez törölni fogja a kiválasztott attribútumot. Az ehhez az attribútumhoz hozzárendelt összes partneradat el fog veszni.} other {Ez törölni fogja a kiválasztott attribútumokat. Az ezekhez az attribútumokhoz hozzárendelt összes partneradat el fog veszni.}}",
|
||||||
"delete_contact_confirmation": "Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni.",
|
"delete_contact_confirmation": "Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ez a partner olyan válaszokkal rendelkezik, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.} other {Ez törölni fogja az ezekhez a partnerekhez tartozó összes kérdőívválaszt és partnerattribútumot. A partnerek adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ezek a partnerek olyan válaszokkal rendelkeznek, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {Ez törölni fogja az ehhez a partnerhez tartozó összes kérdőívválaszt és partnerattribútumot. A partner adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ez a partner olyan válaszokkal rendelkezik, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.} other {Ez törölni fogja az ezekhez a partnerekhez tartozó összes kérdőívválaszt és partnerattribútumot. A partnerek adatain alapuló bármilyen célzás és személyre szabás el fog veszni. Ha ezek a partnerek olyan válaszokkal rendelkeznek, amelyek a kérdőívkvótákba beletartoznak, akkor a kvóta számlálója csökkentve lesz, de a kvóta korlátai változatlanok maradnak.}}",
|
||||||
@@ -670,15 +676,15 @@
|
|||||||
"edit_attributes_success": "A partner attribútumai sikeresen frissítve",
|
"edit_attributes_success": "A partner attribútumai sikeresen frissítve",
|
||||||
"generate_personal_link": "Személyes hivatkozás előállítása",
|
"generate_personal_link": "Személyes hivatkozás előállítása",
|
||||||
"generate_personal_link_description": "Válasszon egy közzétett kérdőívet, hogy személyre szabott hivatkozást állítson elő ehhez a partnerhez.",
|
"generate_personal_link_description": "Válasszon egy közzétett kérdőívet, hogy személyre szabott hivatkozást állítson elő ehhez a partnerhez.",
|
||||||
"invalid_csv_column_names": "Érvénytelen CSV oszlopnév(nevek): {columns}. Az új attribútumokká váló oszlopnevek csak kisbetűket, számokat és aláhúzásjeleket tartalmazhatnak, és betűvel kell kezdődniük.",
|
"invalid_csv_column_names": "Érvénytelen CSV-oszlopnevek: {columns}. Az új attribútumokká váló oszlopnevek csak ékezet nélküli kisbetűket, számokat és aláhúzásjeleket tartalmazhatnak, valamint betűvel kell kezdődniük.",
|
||||||
"invalid_date_format": "Érvénytelen dátumformátum. Kérlek, adj meg egy érvényes dátumot.",
|
"invalid_date_format": "Érvénytelen dátumformátum. Használjon érvényes dátumot.",
|
||||||
"invalid_number_format": "Érvénytelen számformátum. Kérlek, adj meg egy érvényes számot.",
|
"invalid_number_format": "Érvénytelen számformátum. Adjon meg érvényes számot.",
|
||||||
"no_activity_yet": "Még nincs aktivitás",
|
"no_activity_yet": "Még nincs tevékenység",
|
||||||
"no_published_link_surveys_available": "Nem érhetők el közzétett hivatkozás-kérdőívek. Először tegyen közzé egy hivatkozás-kérdőívet.",
|
"no_published_link_surveys_available": "Nem érhetők el közzétett hivatkozás-kérdőívek. Először tegyen közzé egy hivatkozás-kérdőívet.",
|
||||||
"no_published_surveys": "Nincsenek közzétett kérdőívek",
|
"no_published_surveys": "Nincsenek közzétett kérdőívek",
|
||||||
"no_responses_found": "Nem találhatók válaszok",
|
"no_responses_found": "Nem találhatók válaszok",
|
||||||
"not_provided": "Nincs megadva",
|
"not_provided": "Nincs megadva",
|
||||||
"number_value_required": "Szám érték megadása kötelező. Használd a törlés gombot az attribútum eltávolításához.",
|
"number_value_required": "Számérték szükséges. Használja a törlés gombot az attribútum eltávolításához.",
|
||||||
"personal_link_generated": "A személyes hivatkozás sikeresen előállítva",
|
"personal_link_generated": "A személyes hivatkozás sikeresen előállítva",
|
||||||
"personal_link_generated_but_clipboard_failed": "A személyes hivatkozás előállítva, de nem sikerült a vágólapra másolni: {url}",
|
"personal_link_generated_but_clipboard_failed": "A személyes hivatkozás előállítva, de nem sikerült a vágólapra másolni: {url}",
|
||||||
"personal_survey_link": "Személyes kérdőív-hivatkozás",
|
"personal_survey_link": "Személyes kérdőív-hivatkozás",
|
||||||
@@ -687,24 +693,24 @@
|
|||||||
"search_contact": "Partner keresése",
|
"search_contact": "Partner keresése",
|
||||||
"select_a_survey": "Kérdőív kiválasztása",
|
"select_a_survey": "Kérdőív kiválasztása",
|
||||||
"select_attribute": "Attribútum kiválasztása",
|
"select_attribute": "Attribútum kiválasztása",
|
||||||
"select_attribute_key": "Attribútum kulcs kiválasztása",
|
"select_attribute_key": "Attribútum kulcsának kiválasztása",
|
||||||
"survey_viewed": "Kérdőív megtekintve",
|
"survey_viewed": "Kérdőív megtekintve",
|
||||||
"survey_viewed_at": "Megtekintve",
|
"survey_viewed_at": "Megtekintve ekkor:",
|
||||||
"system_attributes": "Rendszer attribútumok",
|
"system_attributes": "Rendszerattribútumok",
|
||||||
"unlock_contacts_description": "Partnerek kezelése és célzott kérdőívek kiküldése",
|
"unlock_contacts_description": "Partnerek kezelése és célzott kérdőívek kiküldése",
|
||||||
"unlock_contacts_title": "Partnerek feloldása egy magasabb csomaggal",
|
"unlock_contacts_title": "Partnerek feloldása egy magasabb csomaggal",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "A(z) \"{key}\" attribútum típusa \"{dataType}\", de a CSV érvénytelen értékeket tartalmaz: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "A(z) „{key}” attribútum „{dataType}” típusként van megadva, de a CSV érvénytelen értékeket tartalmaz: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Duplikált leképezések találhatók a következő attribútumokhoz: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Kettőzött leképezések találhatók a következő attribútumoknál: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "A fájl mérete meghaladja a maximális 800KB-os limitet",
|
"upload_contacts_error_file_too_large": "A fájlméret túllépi a 800 KB-os legnagyobb méretet",
|
||||||
"upload_contacts_error_generic": "Hiba történt a kapcsolatok feltöltése során. Kérjük, próbáld újra később.",
|
"upload_contacts_error_generic": "Hiba történt a partnerek feltöltése során. Próbálja meg később újra.",
|
||||||
"upload_contacts_error_invalid_file_type": "Kérjük, tölts fel egy CSV fájlt",
|
"upload_contacts_error_invalid_file_type": "Töltsön fel egy CSV-fájlt",
|
||||||
"upload_contacts_error_no_valid_contacts": "A feltöltött CSV fájl nem tartalmaz érvényes kapcsolatokat, kérjük, nézd meg a minta CSV fájlt a helyes formátumhoz.",
|
"upload_contacts_error_no_valid_contacts": "A feltöltött CSV-fájl nem tartalmaz egyetlen érvényes partnert sem. Nézze meg a példa CSV-fájlt a helyes formátumért.",
|
||||||
"upload_contacts_modal_attribute_header": "Formbricks attribútum",
|
"upload_contacts_modal_attribute_header": "Formbricks-attribútum",
|
||||||
"upload_contacts_modal_attributes_description": "A CSV-ben lévő oszlopok leképezése a Formbricksben lévő attribútumokra.",
|
"upload_contacts_modal_attributes_description": "A CSV-ben lévő oszlopok leképezése a Formbricksben lévő attribútumokra.",
|
||||||
"upload_contacts_modal_attributes_new": "Új attribútum",
|
"upload_contacts_modal_attributes_new": "Új attribútum",
|
||||||
"upload_contacts_modal_attributes_search_or_add": "Attribútum keresése vagy hozzáadása",
|
"upload_contacts_modal_attributes_search_or_add": "Attribútum keresése vagy hozzáadása",
|
||||||
"upload_contacts_modal_attributes_title": "Attribútumok",
|
"upload_contacts_modal_attributes_title": "Attribútumok",
|
||||||
"upload_contacts_modal_csv_column_header": "CSV oszlop",
|
"upload_contacts_modal_csv_column_header": "CSV-oszlop",
|
||||||
"upload_contacts_modal_description": "CSV feltöltése a partnerek attribútumokkal együtt történő gyors importálásához",
|
"upload_contacts_modal_description": "CSV feltöltése a partnerek attribútumokkal együtt történő gyors importálásához",
|
||||||
"upload_contacts_modal_download_example_csv": "Példa CSV letöltése",
|
"upload_contacts_modal_download_example_csv": "Példa CSV letöltése",
|
||||||
"upload_contacts_modal_duplicates_description": "Hogyan kell kezelnünk, ha egy partner már szerepel a partnerek között?",
|
"upload_contacts_modal_duplicates_description": "Hogyan kell kezelnünk, ha egy partner már szerepel a partnerek között?",
|
||||||
@@ -762,11 +768,11 @@
|
|||||||
"link_new_sheet": "Új táblázat összekapcsolása",
|
"link_new_sheet": "Új táblázat összekapcsolása",
|
||||||
"no_integrations_yet": "A Google Táblázatok integrációi itt fognak megjelenni, amint hozzáadja azokat. ⏲️",
|
"no_integrations_yet": "A Google Táblázatok integrációi itt fognak megjelenni, amint hozzáadja azokat. ⏲️",
|
||||||
"reconnect_button": "Újrakapcsolódás",
|
"reconnect_button": "Újrakapcsolódás",
|
||||||
"reconnect_button_description": "A Google Táblázatok kapcsolata lejárt. Kérjük, csatlakozzon újra a válaszok szinkronizálásának folytatásához. A meglévő táblázathivatkozások és adatok megmaradnak.",
|
"reconnect_button_description": "A Google Táblázatok kapcsolata lejárt. Kapcsolódjon újra a válaszok szinkronizálásának folytatásához. A meglévő táblázatok hivatkozásai és adatai megmaradnak.",
|
||||||
"reconnect_button_tooltip": "Csatlakoztassa újra az integrációt a hozzáférés frissítéséhez. A meglévő táblázathivatkozások és adatok megmaradnak.",
|
"reconnect_button_tooltip": "Csatlakoztassa újra az integrációt a hozzáférés frissítéséhez. A meglévő táblázatok hivatkozásai és adatai megmaradnak.",
|
||||||
"spreadsheet_permission_error": "Nincs jogosultsága a táblázat eléréséhez. Kérjük, győződjön meg arról, hogy a táblázat meg van osztva a Google-fiókjával, és írási jogosultsággal rendelkezik a táblázathoz.",
|
"spreadsheet_permission_error": "Nincs jogosultsága hozzáférni ehhez a táblázathoz. Győződjön meg arról, hogy a táblázat meg van-e osztva a Google-fiókjával, és rendelkezik-e írási hozzáféréssel a táblázathoz.",
|
||||||
"spreadsheet_url": "Táblázat URL-e",
|
"spreadsheet_url": "Táblázat URL-e",
|
||||||
"token_expired_error": "A Google Táblázatok frissítési tokenje lejárt vagy visszavonásra került. Kérjük, csatlakoztassa újra az integrációt."
|
"token_expired_error": "A Google Táblázatok frissítési tokenje lejárt vagy visszavonásra került. Csatlakoztassa újra az integrációt."
|
||||||
},
|
},
|
||||||
"include_created_at": "Létrehozva felvétele",
|
"include_created_at": "Létrehozva felvétele",
|
||||||
"include_hidden_fields": "Rejtett mezők felvétele",
|
"include_hidden_fields": "Rejtett mezők felvétele",
|
||||||
@@ -895,35 +901,35 @@
|
|||||||
"operator_ends_with": "ezzel végződik",
|
"operator_ends_with": "ezzel végződik",
|
||||||
"operator_is_after": "ez után",
|
"operator_is_after": "ez után",
|
||||||
"operator_is_before": "ez előtt",
|
"operator_is_before": "ez előtt",
|
||||||
"operator_is_between": "között",
|
"operator_is_between": "ezek között",
|
||||||
"operator_is_newer_than": "újabb mint",
|
"operator_is_newer_than": "újabb mint",
|
||||||
"operator_is_not_set": "nincs beállítva",
|
"operator_is_not_set": "nincs beállítva",
|
||||||
"operator_is_older_than": "régebbi mint",
|
"operator_is_older_than": "régebbi mint",
|
||||||
"operator_is_same_day": "ugyanazon a napon",
|
"operator_is_same_day": "ugyanaz a nap",
|
||||||
"operator_is_set": "beállítva",
|
"operator_is_set": "be van állítva",
|
||||||
"operator_starts_with": "ezzel kezdődik",
|
"operator_starts_with": "ezzel kezdődik",
|
||||||
"operator_title_contains": "Tartalmazza",
|
"operator_title_contains": "Tartalmazza",
|
||||||
"operator_title_does_not_contain": "Nem tartalmazza",
|
"operator_title_does_not_contain": "Nem tartalmazza",
|
||||||
"operator_title_ends_with": "Ezzel végződik",
|
"operator_title_ends_with": "Ezzel végződik",
|
||||||
"operator_title_equals": "Egyenlő",
|
"operator_title_equals": "Egyenlő",
|
||||||
"operator_title_greater_equal": "Nagyobb vagy egyenlő",
|
"operator_title_greater_equal": "Nagyobb mint vagy egyenlő",
|
||||||
"operator_title_greater_than": "Nagyobb mint",
|
"operator_title_greater_than": "Nagyobb mint",
|
||||||
"operator_title_is_after": "Ez után",
|
"operator_title_is_after": "Ez után",
|
||||||
"operator_title_is_before": "Ez előtt",
|
"operator_title_is_before": "Ez előtt",
|
||||||
"operator_title_is_between": "Között",
|
"operator_title_is_between": "Ezek között",
|
||||||
"operator_title_is_newer_than": "Újabb mint",
|
"operator_title_is_newer_than": "Újabb mint",
|
||||||
"operator_title_is_not_set": "Nincs beállítva",
|
"operator_title_is_not_set": "Nincs beállítva",
|
||||||
"operator_title_is_older_than": "Régebbi mint",
|
"operator_title_is_older_than": "Régebbi mint",
|
||||||
"operator_title_is_same_day": "Ugyanazon a napon",
|
"operator_title_is_same_day": "Ugyanaz a nap",
|
||||||
"operator_title_is_set": "Beállítva",
|
"operator_title_is_set": "Beállítva",
|
||||||
"operator_title_less_equal": "Kisebb vagy egyenlő",
|
"operator_title_less_equal": "Kisebb mint vagy egyenlő",
|
||||||
"operator_title_less_than": "Kisebb mint",
|
"operator_title_less_than": "Kisebb mint",
|
||||||
"operator_title_not_equals": "Nem egyenlő",
|
"operator_title_not_equals": "Nem egyenlő ezzel",
|
||||||
"operator_title_starts_with": "Ezzel kezdődik",
|
"operator_title_starts_with": "Ezzel kezdődik",
|
||||||
"operator_title_user_is_in": "A felhasználó benne van",
|
"operator_title_user_is_in": "Felhasználó ebben",
|
||||||
"operator_title_user_is_not_in": "A felhasználó nincs benne",
|
"operator_title_user_is_not_in": "Felhasználó nem ebben",
|
||||||
"operator_user_is_in": "A felhasználó benne van",
|
"operator_user_is_in": "Felhasználó ebben",
|
||||||
"operator_user_is_not_in": "A felhasználó nincs benne",
|
"operator_user_is_not_in": "Felhasználó nem ebben",
|
||||||
"person_and_attributes": "Személy és attribútumok",
|
"person_and_attributes": "Személy és attribútumok",
|
||||||
"phone": "Telefon",
|
"phone": "Telefon",
|
||||||
"please_remove_the_segment_from_these_surveys_in_order_to_delete_it": "Távolítsa el a szakaszt ezekből a kérdőívekből, hogy törölhesse azt.",
|
"please_remove_the_segment_from_these_surveys_in_order_to_delete_it": "Távolítsa el a szakaszt ezekből a kérdőívekből, hogy törölhesse azt.",
|
||||||
@@ -947,7 +953,7 @@
|
|||||||
"unlock_segments_title": "Szakaszok feloldása egy magasabb csomaggal",
|
"unlock_segments_title": "Szakaszok feloldása egy magasabb csomaggal",
|
||||||
"user_targeting_is_currently_only_available_when": "A felhasználók megcélzása jelenleg csak akkor érhető el, ha",
|
"user_targeting_is_currently_only_available_when": "A felhasználók megcélzása jelenleg csak akkor érhető el, ha",
|
||||||
"value_cannot_be_empty": "Az érték nem lehet üres.",
|
"value_cannot_be_empty": "Az érték nem lehet üres.",
|
||||||
"value_must_be_a_number": "Az értékének számnak kell lennie.",
|
"value_must_be_a_number": "Az értéknek számnak kell lennie.",
|
||||||
"value_must_be_positive": "Az értéknek pozitív számnak kell lennie.",
|
"value_must_be_positive": "Az értéknek pozitív számnak kell lennie.",
|
||||||
"view_filters": "Szűrők megtekintése",
|
"view_filters": "Szűrők megtekintése",
|
||||||
"where": "Ahol",
|
"where": "Ahol",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Helló {userName}",
|
"email_customization_preview_email_heading": "Helló {userName}",
|
||||||
"email_customization_preview_email_text": "Ez egy e-mail előnézet, amely azt mutatja meg, hogy melyik logó fog megjelenni az e-mailekben.",
|
"email_customization_preview_email_text": "Ez egy e-mail előnézet, amely azt mutatja meg, hogy melyik logó fog megjelenni az e-mailekben.",
|
||||||
"error_deleting_organization_please_try_again": "Hiba a szervezet törlésekor. Próbálja meg újra.",
|
"error_deleting_organization_please_try_again": "Hiba a szervezet törlésekor. Próbálja meg újra.",
|
||||||
"from_your_organization": "a szervezetétől",
|
"from_your_organization": "{memberName} a szervezetéből",
|
||||||
"invitation_sent_once_more": "A meghívó még egyszer elküldve.",
|
"invitation_sent_once_more": "A meghívó még egyszer elküldve.",
|
||||||
"invite_deleted_successfully": "A meghívó sikeresen törölve",
|
"invite_deleted_successfully": "A meghívó sikeresen törölve",
|
||||||
"invite_expires_on": "A meghívó lejár ekkor: {date}",
|
"invite_expires_on": "A meghívó lejár ekkor: {date}",
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Helykitöltő hozzáadása annak megjelenítéshez, hogy nincs visszahívandó érték.",
|
"add_fallback_placeholder": "Helykitöltő hozzáadása annak megjelenítéshez, hogy nincs visszahívandó érték.",
|
||||||
"add_hidden_field_id": "Rejtett mezőazonosító hozzáadása",
|
"add_hidden_field_id": "Rejtett mezőazonosító hozzáadása",
|
||||||
"add_highlight_border": "Kiemelési szegély hozzáadása",
|
"add_highlight_border": "Kiemelési szegély hozzáadása",
|
||||||
|
"add_highlight_border_description": "Csak terméken belüli kérdőívekre vonatkozik.",
|
||||||
"add_logic": "Logika hozzáadása",
|
"add_logic": "Logika hozzáadása",
|
||||||
"add_none_of_the_above": "„A fentiek közül egyik sem” hozzáadása",
|
"add_none_of_the_above": "„A fentiek közül egyik sem” hozzáadása",
|
||||||
"add_option": "Lehetőség hozzáadása",
|
"add_option": "Lehetőség hozzáadása",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "A „Kérdőív lezárva” üzenet módosítása",
|
"adjust_survey_closed_message": "A „Kérdőív lezárva” üzenet módosítása",
|
||||||
"adjust_survey_closed_message_description": "Annak az üzenetnek a megváltoztatása, amelyet a látogatók akkor látnak, amikor a kérdőív lezárul.",
|
"adjust_survey_closed_message_description": "Annak az üzenetnek a megváltoztatása, amelyet a látogatók akkor látnak, amikor a kérdőív lezárul.",
|
||||||
"adjust_the_theme_in_the": "A téma beállítása ebben:",
|
"adjust_the_theme_in_the": "A téma beállítása ebben:",
|
||||||
|
"all_are_true": "az összes igaz",
|
||||||
"all_other_answers_will_continue_to": "Az összes többi válasz továbbra is",
|
"all_other_answers_will_continue_to": "Az összes többi válasz továbbra is",
|
||||||
"allow_multi_select": "Több választás engedélyezése",
|
"allow_multi_select": "Több választás engedélyezése",
|
||||||
"allow_multiple_files": "Több fájl engedélyezése",
|
"allow_multiple_files": "Több fájl engedélyezése",
|
||||||
"allow_users_to_select_more_than_one_image": "Lehetővé tétel a felhasználóknak, hogy egynél több képet válasszanak ki",
|
"allow_users_to_select_more_than_one_image": "Lehetővé tétel a felhasználóknak, hogy egynél több képet válasszanak ki",
|
||||||
"and_launch_surveys_in_your_website_or_app": "és kérdőívek indítása a webhelyén vagy az alkalmazásában.",
|
"and_launch_surveys_in_your_website_or_app": "és kérdőívek indítása a webhelyén vagy az alkalmazásában.",
|
||||||
"animation": "Animáció",
|
"animation": "Animáció",
|
||||||
|
"any_is_true": "bármelyik igaz",
|
||||||
"app_survey_description": "Egy kérdőív beágyazása a webalkalmazásába vagy webhelyére a válaszok gyűjtéséhez.",
|
"app_survey_description": "Egy kérdőív beágyazása a webalkalmazásába vagy webhelyére a válaszok gyűjtéséhez.",
|
||||||
"assign": "= hozzárendelése",
|
"assign": "= hozzárendelése",
|
||||||
"audience": "Közönség",
|
"audience": "Közönség",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Alkalmi",
|
"casual": "Alkalmi",
|
||||||
"caution_edit_duplicate": "Kettőzés és szerkesztés",
|
"caution_edit_duplicate": "Kettőzés és szerkesztés",
|
||||||
"caution_edit_published_survey": "Szerkeszt egy közzétett kérdőívet?",
|
"caution_edit_published_survey": "Szerkeszt egy közzétett kérdőívet?",
|
||||||
"caution_explanation_intro": "Megértjük, hogy esetleg még változtatásokat szeretne végrehajtani. Ez történik, ha megteszi: ",
|
"caution_explanation_intro": "Megértjük, hogy esetleg még változtatásokat szeretne végrehajtani. Ez történik, ha megteszi:",
|
||||||
"caution_explanation_new_responses_separated": "A változtatás előtti válaszok nem vagy csak részben kerülhetnek be a kérdőív összegzésébe.",
|
"caution_explanation_new_responses_separated": "A változtatás előtti válaszok nem vagy csak részben kerülhetnek be a kérdőív összegzésébe.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Az összes adat, beleértve a korábbi válaszokat is, továbbra is elérhetők maradnak letölthető formában a kérdőív összegző oldalán.",
|
"caution_explanation_only_new_responses_in_summary": "Az összes adat, beleértve a korábbi válaszokat is, továbbra is elérhetők maradnak letölthető formában a kérdőív összegző oldalán.",
|
||||||
"caution_explanation_responses_are_safe": "A régebbi és az újabb válaszok összekeverednek, ami félrevezető adatösszegzésekhez vezethet.",
|
"caution_explanation_responses_are_safe": "A régebbi és az újabb válaszok összekeverednek, ami félrevezető adatösszegzésekhez vezethet.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "A követés frissítve, és akkor lesz elmentve, ha elmenti a kérdőívet.",
|
"follow_ups_modal_updated_successfull_toast": "A követés frissítve, és akkor lesz elmentve, ha elmenti a kérdőívet.",
|
||||||
"follow_ups_new": "Új követés",
|
"follow_ups_new": "Új követés",
|
||||||
"follow_ups_upgrade_button_text": "Magasabb csomagra váltás a követések engedélyezéséhez",
|
"follow_ups_upgrade_button_text": "Magasabb csomagra váltás a követések engedélyezéséhez",
|
||||||
"form_styling": "Űrlap stílusának beállítása",
|
|
||||||
"formbricks_sdk_is_not_connected": "A Formbricks SDK nincs csatlakoztatva",
|
"formbricks_sdk_is_not_connected": "A Formbricks SDK nincs csatlakoztatva",
|
||||||
"four_points": "4 pont",
|
"four_points": "4 pont",
|
||||||
"heading": "Címsor",
|
"heading": "Címsor",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "{choiceIndex}. lehetőség",
|
"option_idx": "{choiceIndex}. lehetőség",
|
||||||
"option_used_in_logic_error": "Ez a lehetőség használatban van a(z) {questionIndex}. kérdés logikájában. Először távolítsa el a logikából.",
|
"option_used_in_logic_error": "Ez a lehetőség használatban van a(z) {questionIndex}. kérdés logikájában. Először távolítsa el a logikából.",
|
||||||
"optional": "Választható",
|
"optional": "Választható",
|
||||||
"options": "Beállítások",
|
"options": "Beállítások*",
|
||||||
"options_used_in_logic_bulk_error": "A következő lehetőségek használatban vannak a logikában: {questionIndexes}. Először távolítsa el azokat a logikából.",
|
"options_used_in_logic_bulk_error": "A következő lehetőségek használatban vannak a logikában: {questionIndexes}. Először távolítsa el azokat a logikából.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "A téma felülírása egyéni stílusokkal ennél a kérdőívnél.",
|
"override_theme_with_individual_styles_for_this_survey": "A téma felülírása egyéni stílusokkal ennél a kérdőívnél.",
|
||||||
"overwrite_global_waiting_time": "Egyéni várakozási időszak beállítása",
|
"overwrite_global_waiting_time": "Egyéni várakozási időszak beállítása",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Kérdés törölve.",
|
"question_deleted": "Kérdés törölve.",
|
||||||
"question_duplicated": "Kérdés megkettőzve.",
|
"question_duplicated": "Kérdés megkettőzve.",
|
||||||
"question_id_updated": "Kérdésazonosító frissítve",
|
"question_id_updated": "Kérdésazonosító frissítve",
|
||||||
|
"question_number": "{number}. kérdés",
|
||||||
"question_used_in_logic_warning_text": "Ezen blokkból származó elemek egy logikai szabályban vannak használva, biztosan törölni szeretné?",
|
"question_used_in_logic_warning_text": "Ezen blokkból származó elemek egy logikai szabályban vannak használva, biztosan törölni szeretné?",
|
||||||
"question_used_in_logic_warning_title": "Logikai következetlenség",
|
"question_used_in_logic_warning_title": "Logikai következetlenség",
|
||||||
"question_used_in_quota": "Ez a kérdés használatban van a(z) „{quotaName}” kvótában",
|
"question_used_in_quota": "Ez a kérdés használatban van a(z) „{quotaName}” kvótában",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Válaszkorlátok, átirányítások és egyebek.",
|
"response_limits_redirections_and_more": "Válaszkorlátok, átirányítások és egyebek.",
|
||||||
"response_options": "Válasz beállításai",
|
"response_options": "Válasz beállításai",
|
||||||
"roundness": "Kerekesség",
|
"roundness": "Kerekesség",
|
||||||
"roundness_description": "Annak vezérlése, hogy a kártya sarkai mennyire legyenek lekerekítve.",
|
"roundness_description": "Annak vezérlése, hogy a sarkok mennyire legyenek lekerekítve.",
|
||||||
"row_used_in_logic_error": "Ez a sor használatban van a(z) {questionIndex}. kérdés logikájában. Először távolítsa el a logikából.",
|
"row_used_in_logic_error": "Ez a sor használatban van a(z) {questionIndex}. kérdés logikájában. Először távolítsa el a logikából.",
|
||||||
"rows": "Sorok",
|
"rows": "Sorok",
|
||||||
"save_and_close": "Mentés és bezárás",
|
"save_and_close": "Mentés és bezárás",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Ez a szabad és nyílt forráskódú kérdőív le lett zárva",
|
"survey_completed_subheading": "Ez a szabad és nyílt forráskódú kérdőív le lett zárva",
|
||||||
"survey_display_settings": "Kérdőív megjelenítésének beállításai",
|
"survey_display_settings": "Kérdőív megjelenítésének beállításai",
|
||||||
"survey_placement": "Kérdőív elhelyezése",
|
"survey_placement": "Kérdőív elhelyezése",
|
||||||
|
"survey_styling": "Kérdőív stílusának beállítása",
|
||||||
"survey_trigger": "Kérdőív aktiválója",
|
"survey_trigger": "Kérdőív aktiválója",
|
||||||
"switch_multi_language_on_to_get_started": "Kapcsolja be a többnyelvűséget a kezdéshez 👉",
|
"switch_multi_language_on_to_get_started": "Kapcsolja be a többnyelvűséget a kezdéshez 👉",
|
||||||
"target_block_not_found": "A célblokk nem található",
|
"target_block_not_found": "A célblokk nem található",
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Várakozási időszak (kérdőívek között)",
|
"waiting_time_across_surveys": "Várakozási időszak (kérdőívek között)",
|
||||||
"waiting_time_across_surveys_description": "A kérdőívekbe való belefáradás megakadályozásához válassza ki, hogy ez a kérdőív hogyan lép kölcsönhatásba a munkaterület-szintű várakozási időszakkal.",
|
"waiting_time_across_surveys_description": "A kérdőívekbe való belefáradás megakadályozásához válassza ki, hogy ez a kérdőív hogyan lép kölcsönhatásba a munkaterület-szintű várakozási időszakkal.",
|
||||||
"welcome_message": "Üdvözlő üzenet",
|
"welcome_message": "Üdvözlő üzenet",
|
||||||
|
"when": "Amikor",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Szűrő nélkül az összes felhasználója megkérdezhető.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Szűrő nélkül az összes felhasználója megkérdezhető.",
|
||||||
"you_have_not_created_a_segment_yet": "Még nem hozott létre szakaszt",
|
"you_have_not_created_a_segment_yet": "Még nem hozott létre szakaszt",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Be kell állítania kettő vagy több nyelvet a munkaterületen a fordításokkal való munkához.",
|
|
||||||
"your_description_here_recall_information_with": "Ide jön a leírás. Információk visszahívása a @ karakterrel.",
|
"your_description_here_recall_information_with": "Ide jön a leírás. Információk visszahívása a @ karakterrel.",
|
||||||
"your_question_here_recall_information_with": "Ide jön a kérdés. Információk visszahívása a @ karakterrel.",
|
"your_question_here_recall_information_with": "Ide jön a kérdés. Információk visszahívása a @ karakterrel.",
|
||||||
"your_web_app": "Saját webalkalmazás",
|
"your_web_app": "Saját webalkalmazás",
|
||||||
@@ -1808,7 +1818,7 @@
|
|||||||
"this_response_is_in_progress": "Ez a válasz folyamatban van.",
|
"this_response_is_in_progress": "Ez a válasz folyamatban van.",
|
||||||
"zip_post_code": "Irányítószám"
|
"zip_post_code": "Irányítószám"
|
||||||
},
|
},
|
||||||
"search_by_survey_name": "Keresés kérőívnév alapján",
|
"search_by_survey_name": "Keresés kérdőívnév alapján",
|
||||||
"share": {
|
"share": {
|
||||||
"anonymous_links": {
|
"anonymous_links": {
|
||||||
"custom_single_use_id_description": "Ha nem titkosítja az egyszer használatos azonosítókat, akkor a „suid=…” bármilyen értéke működik egy válasznál.",
|
"custom_single_use_id_description": "Ha nem titkosítja az egyszer használatos azonosítókat, akkor a „suid=…” bármilyen értéke működik egy válasznál.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Szűrő hozzáadva azokhoz a válaszokhoz, ahol a(z) {questionIdx}. kérdésre adott válasz {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Szűrő hozzáadva azokhoz a válaszokhoz, ahol a(z) {questionIdx}. kérdésre adott válasz {filterComboBoxValue} – {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Szűrő hozzáadva azokhoz a válaszokhoz, ahol a(z) {questionIdx}. kérdésre adott válasz kihagyva",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Szűrő hozzáadva azokhoz a válaszokhoz, ahol a(z) {questionIdx}. kérdésre adott válasz kihagyva",
|
||||||
"aggregated": "Összesített",
|
"aggregated": "Összesített",
|
||||||
"all_responses_csv": "Összes válasz (CSV)",
|
"all_responses_csv": "Összes válasz (CSV)",
|
||||||
@@ -1960,8 +1970,8 @@
|
|||||||
"filtered_responses_csv": "Szűrt válaszok (CSV)",
|
"filtered_responses_csv": "Szűrt válaszok (CSV)",
|
||||||
"filtered_responses_excel": "Szűrt válaszok (Excel)",
|
"filtered_responses_excel": "Szűrt válaszok (Excel)",
|
||||||
"generating_qr_code": "QR-kód előállítása",
|
"generating_qr_code": "QR-kód előállítása",
|
||||||
"impressions": "Benyomások",
|
"impressions": "Megtekintések",
|
||||||
"impressions_identified_only": "Csak az azonosított kapcsolatok megjelenítései láthatók",
|
"impressions_identified_only": "Csak azonosított partnerektől származó megtekintések megjelenítése",
|
||||||
"impressions_tooltip": "A kérdőív megtekintési alkalmainak száma.",
|
"impressions_tooltip": "A kérdőív megtekintési alkalmainak száma.",
|
||||||
"in_app": {
|
"in_app": {
|
||||||
"connection_description": "A kérdőív a webhelye azon felhasználóinak lesz megjelenítve, akik megfelelnek az alább felsorolt feltételeknek",
|
"connection_description": "A kérdőív a webhelye azon felhasználóinak lesz megjelenítve, akik megfelelnek az alább felsorolt feltételeknek",
|
||||||
@@ -2004,7 +2014,7 @@
|
|||||||
"last_quarter": "Elmúlt negyedév",
|
"last_quarter": "Elmúlt negyedév",
|
||||||
"last_year": "Elmúlt év",
|
"last_year": "Elmúlt év",
|
||||||
"limit": "Korlát",
|
"limit": "Korlát",
|
||||||
"no_identified_impressions": "Nincsenek megjelenítések azonosított kapcsolatoktól",
|
"no_identified_impressions": "Nincsenek azonosított partnerektől származó megtekintések",
|
||||||
"no_responses_found": "Nem találhatók válaszok",
|
"no_responses_found": "Nem találhatók válaszok",
|
||||||
"other_values_found": "Más értékek találhatók",
|
"other_values_found": "Más értékek találhatók",
|
||||||
"overall": "Összesen",
|
"overall": "Összesen",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Elkezdések",
|
"starts": "Elkezdések",
|
||||||
"starts_tooltip": "A kérdőív elkezdési alkalmainak száma.",
|
"starts_tooltip": "A kérdőív elkezdési alkalmainak száma.",
|
||||||
"survey_reset_successfully": "A kérdőív sikeresen visszaállítva. {responseCount} válasz és {displayCount} megjelenítés lett törölve.",
|
"survey_reset_successfully": "A kérdőív sikeresen visszaállítva. {responseCount} válasz és {displayCount} megjelenítés lett törölve.",
|
||||||
|
"survey_results": "{surveyName} eredményei",
|
||||||
"this_month": "Ez a hónap",
|
"this_month": "Ez a hónap",
|
||||||
"this_quarter": "Ez a negyedév",
|
"this_quarter": "Ez a negyedév",
|
||||||
"this_year": "Ez az év",
|
"this_year": "Ez az év",
|
||||||
@@ -2169,12 +2180,12 @@
|
|||||||
"advanced_styling_field_headline_size_description": "Átméretezi a címsor szövegét.",
|
"advanced_styling_field_headline_size_description": "Átméretezi a címsor szövegét.",
|
||||||
"advanced_styling_field_headline_weight": "Címsor betűvastagsága",
|
"advanced_styling_field_headline_weight": "Címsor betűvastagsága",
|
||||||
"advanced_styling_field_headline_weight_description": "Vékonyabbá vagy vastagabbá teszi a címsor szövegét.",
|
"advanced_styling_field_headline_weight_description": "Vékonyabbá vagy vastagabbá teszi a címsor szövegét.",
|
||||||
"advanced_styling_field_height": "Minimális magasság",
|
"advanced_styling_field_height": "Legkisebb magasság",
|
||||||
"advanced_styling_field_indicator_bg": "Jelző háttere",
|
"advanced_styling_field_indicator_bg": "Jelző háttere",
|
||||||
"advanced_styling_field_indicator_bg_description": "Kiszínezi a sáv kitöltött részét.",
|
"advanced_styling_field_indicator_bg_description": "Kiszínezi a sáv kitöltött részét.",
|
||||||
"advanced_styling_field_input_border_radius_description": "Lekerekíti a beviteli mező sarkait.",
|
"advanced_styling_field_input_border_radius_description": "Lekerekíti a beviteli mező sarkait.",
|
||||||
"advanced_styling_field_input_font_size_description": "Átméretezi a beviteli mezőkbe beírt szöveget.",
|
"advanced_styling_field_input_font_size_description": "Átméretezi a beviteli mezőkbe beírt szöveget.",
|
||||||
"advanced_styling_field_input_height_description": "A beviteli mező minimális magasságát szabályozza.",
|
"advanced_styling_field_input_height_description": "A beviteli mező legkisebb magasságát vezérli.",
|
||||||
"advanced_styling_field_input_padding_x_description": "Térközt ad hozzá balra és jobbra.",
|
"advanced_styling_field_input_padding_x_description": "Térközt ad hozzá balra és jobbra.",
|
||||||
"advanced_styling_field_input_padding_y_description": "Térközt ad hozzá fent és lent.",
|
"advanced_styling_field_input_padding_y_description": "Térközt ad hozzá fent és lent.",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "Elhalványítja a helykitöltő súgószöveget.",
|
"advanced_styling_field_input_placeholder_opacity_description": "Elhalványítja a helykitöltő súgószöveget.",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Kiszínezi a beviteli mezőkbe beírt szöveget.",
|
"advanced_styling_field_input_text_description": "Kiszínezi a beviteli mezőkbe beírt szöveget.",
|
||||||
"advanced_styling_field_option_bg": "Háttér",
|
"advanced_styling_field_option_bg": "Háttér",
|
||||||
"advanced_styling_field_option_bg_description": "Kitölti a választási lehetőség elemeit.",
|
"advanced_styling_field_option_bg_description": "Kitölti a választási lehetőség elemeit.",
|
||||||
|
"advanced_styling_field_option_border": "Szegély színe",
|
||||||
|
"advanced_styling_field_option_border_description": "Körberajzolja a rádiógomb és a jelölőnégyzet lehetőségeit.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Lekerekíti a választási lehetőség sarkait.",
|
"advanced_styling_field_option_border_radius_description": "Lekerekíti a választási lehetőség sarkait.",
|
||||||
"advanced_styling_field_option_font_size_description": "Átméretezi a választási lehetőség címkéjének szövegét.",
|
"advanced_styling_field_option_font_size_description": "Átméretezi a választási lehetőség címkéjének szövegét.",
|
||||||
"advanced_styling_field_option_label": "Címke színe",
|
"advanced_styling_field_option_label": "Címke színe",
|
||||||
@@ -2220,7 +2233,7 @@
|
|||||||
"formbricks_branding_settings_description": "Nagyra értékeljük a támogatását, de megértjük, ha kikapcsolja.",
|
"formbricks_branding_settings_description": "Nagyra értékeljük a támogatását, de megértjük, ha kikapcsolja.",
|
||||||
"formbricks_branding_shown": "A Formbricks márkajel megjelenik.",
|
"formbricks_branding_shown": "A Formbricks márkajel megjelenik.",
|
||||||
"generate_theme_btn": "Előállítás",
|
"generate_theme_btn": "Előállítás",
|
||||||
"generate_theme_confirmation": "Szeretne hozzáillő színtémát létrehozni a márkajel színei alapján? Ez felülírja a jelenlegi színbeállításokat.",
|
"generate_theme_confirmation": "Szeretne hozzáillő színtémát előállítani a márkajel színei alapján? Ez felülírja a jelenlegi színbeállításokat.",
|
||||||
"generate_theme_header": "Előállítja a színtémát?",
|
"generate_theme_header": "Előállítja a színtémát?",
|
||||||
"logo_removed_successfully": "A logó sikeresen eltávolítva",
|
"logo_removed_successfully": "A logó sikeresen eltávolítva",
|
||||||
"logo_settings_description": "Vállalati logo feltöltése a kérdőívek és hivatkozások előnézeteinek márkaépítéséhez.",
|
"logo_settings_description": "Vállalati logo feltöltése a kérdőívek és hivatkozások előnézeteinek márkaépítéséhez.",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Az „A gépházban: Formbricks” aláírás megjelenítése",
|
"show_powered_by_formbricks": "Az „A gépházban: Formbricks” aláírás megjelenítése",
|
||||||
"styling_updated_successfully": "A stílus sikeresen frissítve",
|
"styling_updated_successfully": "A stílus sikeresen frissítve",
|
||||||
"suggest_colors": "Színek ajánlása",
|
"suggest_colors": "Színek ajánlása",
|
||||||
"suggested_colors_applied_please_save": "A javasolt színek sikeresen generálva. Nyomd meg a \"Mentés\" gombot a változtatások véglegesítéséhez.",
|
"suggested_colors_applied_please_save": "Az ajánlott színek sikeresen előállítva. Nyomja meg a „Mentés” gombot a változtatások mentéséhez.",
|
||||||
"theme": "Téma",
|
"theme": "Téma",
|
||||||
"theme_settings_description": "Stílustéma létrehozása az összes kérdőívhez. Egyéni stílust engedélyezhet minden egyes kérdőívhez."
|
"theme_settings_description": "Stílustéma létrehozása az összes kérdőívhez. Egyéni stílust engedélyezhet minden egyes kérdőívhez."
|
||||||
},
|
},
|
||||||
@@ -2299,7 +2312,7 @@
|
|||||||
"mode": {
|
"mode": {
|
||||||
"formbricks_cx": "Formbricks CX",
|
"formbricks_cx": "Formbricks CX",
|
||||||
"formbricks_cx_description": "Kérdőívek és jelentések annak megértéséhez, hogy mire van szükségük az ügyfeleknek.",
|
"formbricks_cx_description": "Kérdőívek és jelentések annak megértéséhez, hogy mire van szükségük az ügyfeleknek.",
|
||||||
"formbricks_surveys": "Formbricks kérőívek",
|
"formbricks_surveys": "Formbricks kérdőívek",
|
||||||
"formbricks_surveys_description": "Többcélú kérdőíves platform web-, alkalmazás- és e-mail-kérdőívekhez.",
|
"formbricks_surveys_description": "Többcélú kérdőíves platform web-, alkalmazás- és e-mail-kérdőívekhez.",
|
||||||
"what_are_you_here_for": "Miért van itt?"
|
"what_are_you_here_for": "Miért van itt?"
|
||||||
},
|
},
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Hogyan tudná javítani a vállalat a jövőképe és stratégiája összehangolását?",
|
"alignment_and_engagement_survey_question_4_headline": "Hogyan tudná javítani a vállalat a jövőképe és stratégiája összehangolását?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Írja be ide a válaszát…",
|
"alignment_and_engagement_survey_question_4_placeholder": "Írja be ide a válaszát…",
|
||||||
"back": "Vissza",
|
"back": "Vissza",
|
||||||
|
"block_1": "1. blokk",
|
||||||
|
"block_10": "10. blokk",
|
||||||
|
"block_2": "2. blokk",
|
||||||
|
"block_3": "3. blokk",
|
||||||
|
"block_4": "4. blokk",
|
||||||
|
"block_5": "5. blokk",
|
||||||
|
"block_6": "6. blokk",
|
||||||
|
"block_7": "7. blokk",
|
||||||
|
"block_8": "8. blokk",
|
||||||
|
"block_9": "9. blokk",
|
||||||
"book_interview": "Interjú foglalása",
|
"book_interview": "Interjú foglalása",
|
||||||
"build_product_roadmap_description": "A felhasználók által leginkább igényelt EGY dolog azonosítása és összeállítása.",
|
"build_product_roadmap_description": "A felhasználók által leginkább igényelt EGY dolog azonosítása és összeállítása.",
|
||||||
"build_product_roadmap_name": "Termékútiterv összeállítása",
|
"build_product_roadmap_name": "Termékútiterv összeállítása",
|
||||||
@@ -2455,7 +2478,7 @@
|
|||||||
"career_development_survey_question_6_choice_2": "Igazgató",
|
"career_development_survey_question_6_choice_2": "Igazgató",
|
||||||
"career_development_survey_question_6_choice_3": "Vezető igazgató",
|
"career_development_survey_question_6_choice_3": "Vezető igazgató",
|
||||||
"career_development_survey_question_6_choice_4": "Alelnök",
|
"career_development_survey_question_6_choice_4": "Alelnök",
|
||||||
"career_development_survey_question_6_choice_5": "Igazgató",
|
"career_development_survey_question_6_choice_5": "Ügyvezető",
|
||||||
"career_development_survey_question_6_choice_6": "Egyéb",
|
"career_development_survey_question_6_choice_6": "Egyéb",
|
||||||
"career_development_survey_question_6_headline": "Az alábbiak közül melyik írja le legjobban a jelenlegi munkája szintjét?",
|
"career_development_survey_question_6_headline": "Az alábbiak közül melyik írja le legjobban a jelenlegi munkája szintjét?",
|
||||||
"career_development_survey_question_6_subheader": "Válassza ki a következő lehetőségek egyikét:",
|
"career_development_survey_question_6_subheader": "Válassza ki a következő lehetőségek egyikét:",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Jaj, bocsánat! Tehetünk valamit, amivel javíthatnánk az élményén?",
|
"csat_survey_question_3_headline": "Jaj, bocsánat! Tehetünk valamit, amivel javíthatnánk az élményén?",
|
||||||
"csat_survey_question_3_placeholder": "Írja be ide a válaszát…",
|
"csat_survey_question_3_placeholder": "Írja be ide a válaszát…",
|
||||||
"cta_description": "Információk megjelenítése és a felhasználók felkérése egy bizonyos művelet elvégzésére",
|
"cta_description": "Információk megjelenítése és a felhasználók felkérése egy bizonyos művelet elvégzésére",
|
||||||
"custom_survey_block_1_name": "1. blokk",
|
|
||||||
"custom_survey_description": "Kérdőív létrehozása sablon nélkül.",
|
"custom_survey_description": "Kérdőív létrehozása sablon nélkül.",
|
||||||
"custom_survey_name": "Kezdés a semmiből",
|
"custom_survey_name": "Kezdés a semmiből",
|
||||||
"custom_survey_question_1_headline": "Mit szeretne tudni?",
|
"custom_survey_question_1_headline": "Mit szeretne tudni?",
|
||||||
@@ -2968,7 +2990,7 @@
|
|||||||
"onboarding_segmentation": "Beléptetés szakaszolása",
|
"onboarding_segmentation": "Beléptetés szakaszolása",
|
||||||
"onboarding_segmentation_description": "További információk azzal kapcsolatban, hogy kik regisztráltak a termékére és miért.",
|
"onboarding_segmentation_description": "További információk azzal kapcsolatban, hogy kik regisztráltak a termékére és miért.",
|
||||||
"onboarding_segmentation_question_1_choice_1": "Alapító",
|
"onboarding_segmentation_question_1_choice_1": "Alapító",
|
||||||
"onboarding_segmentation_question_1_choice_2": "Igazgató",
|
"onboarding_segmentation_question_1_choice_2": "Ügyvezető",
|
||||||
"onboarding_segmentation_question_1_choice_3": "Termékmenedzser",
|
"onboarding_segmentation_question_1_choice_3": "Termékmenedzser",
|
||||||
"onboarding_segmentation_question_1_choice_4": "Terméktulajdonos",
|
"onboarding_segmentation_question_1_choice_4": "Terméktulajdonos",
|
||||||
"onboarding_segmentation_question_1_choice_5": "Szoftvermérnök",
|
"onboarding_segmentation_question_1_choice_5": "Szoftvermérnök",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Nem, köszönöm!",
|
"preview_survey_question_2_choice_2_label": "Nem, köszönöm!",
|
||||||
"preview_survey_question_2_headline": "Szeretne naprakész maradni?",
|
"preview_survey_question_2_headline": "Szeretne naprakész maradni?",
|
||||||
"preview_survey_question_2_subheader": "Ez egy példa a leírásra.",
|
"preview_survey_question_2_subheader": "Ez egy példa a leírásra.",
|
||||||
|
"preview_survey_question_open_text_headline": "Bármi egyéb, amit meg szeretne osztani?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Írja be ide a válaszát…",
|
||||||
|
"preview_survey_question_open_text_subheader": "A visszajelzése segít nekünk fejlődni.",
|
||||||
"preview_survey_welcome_card_headline": "Üdvözöljük!",
|
"preview_survey_welcome_card_headline": "Üdvözöljük!",
|
||||||
"prioritize_features_description": "A felhasználóknak leginkább és legkevésbé szükséges funkciók azonosítása.",
|
"prioritize_features_description": "A felhasználóknak leginkább és legkevésbé szükséges funkciók azonosítása.",
|
||||||
"prioritize_features_name": "Funkciók rangsorolása",
|
"prioritize_features_name": "Funkciók rangsorolása",
|
||||||
@@ -3036,7 +3061,7 @@
|
|||||||
"product_market_fit_superhuman_question_2_headline": "Mennyire lenne csalódott, ha többé nem használhatná a(z) $[projectName] projektet?",
|
"product_market_fit_superhuman_question_2_headline": "Mennyire lenne csalódott, ha többé nem használhatná a(z) $[projectName] projektet?",
|
||||||
"product_market_fit_superhuman_question_2_subheader": "Válassza ki a következő lehetőségek egyikét:",
|
"product_market_fit_superhuman_question_2_subheader": "Válassza ki a következő lehetőségek egyikét:",
|
||||||
"product_market_fit_superhuman_question_3_choice_1": "Alapító",
|
"product_market_fit_superhuman_question_3_choice_1": "Alapító",
|
||||||
"product_market_fit_superhuman_question_3_choice_2": "Igazgató",
|
"product_market_fit_superhuman_question_3_choice_2": "Ügyvezető",
|
||||||
"product_market_fit_superhuman_question_3_choice_3": "Termékmenedzser",
|
"product_market_fit_superhuman_question_3_choice_3": "Termékmenedzser",
|
||||||
"product_market_fit_superhuman_question_3_choice_4": "Terméktulajdonos",
|
"product_market_fit_superhuman_question_3_choice_4": "Terméktulajdonos",
|
||||||
"product_market_fit_superhuman_question_3_choice_5": "Szoftvermérnök",
|
"product_market_fit_superhuman_question_3_choice_5": "Szoftvermérnök",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Egyéni kutatás",
|
"professional_development_survey_question_2_choice_5": "Egyéni kutatás",
|
||||||
"professional_development_survey_question_2_choice_6": "Egyéb",
|
"professional_development_survey_question_2_choice_6": "Egyéb",
|
||||||
"professional_development_survey_question_2_headline": "Mit gondol, milyen típusú szakmai fejlődési tevékenységek lennének a legértékesebbek a fejlődéséhez?",
|
"professional_development_survey_question_2_headline": "Mit gondol, milyen típusú szakmai fejlődési tevékenységek lennének a legértékesebbek a fejlődéséhez?",
|
||||||
"professional_development_survey_question_2_subheader": "Válassza ki az összes megfelelőt",
|
"professional_development_survey_question_2_subheader": "Válassza ki az összes megfelelőt:",
|
||||||
"professional_development_survey_question_3_choice_1": "Igen",
|
"professional_development_survey_question_3_choice_1": "Igen",
|
||||||
"professional_development_survey_question_3_choice_2": "Nem",
|
"professional_development_survey_question_3_choice_2": "Nem",
|
||||||
"professional_development_survey_question_3_headline": "Fordított időt a szakmai fejlődésére a múltban?",
|
"professional_development_survey_question_3_headline": "Fordított időt a szakmai fejlődésére a múltban?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Magabiztosnak éreztem magam a rendszer használata során.",
|
"usability_question_9_headline": "Magabiztosnak éreztem magam a rendszer használata során.",
|
||||||
"usability_rating_description": "Az érzékelt használhatóság mérése arra kérve a felhasználókat, hogy értékeljék a termékkel kapcsolatos tapasztalataikat egy szabványosított, 10 kérdésből álló kérdőív használatával.",
|
"usability_rating_description": "Az érzékelt használhatóság mérése arra kérve a felhasználókat, hogy értékeljék a termékkel kapcsolatos tapasztalataikat egy szabványosított, 10 kérdésből álló kérdőív használatával.",
|
||||||
"usability_score_name": "Rendszer-használhatósági pontszám (SUS)"
|
"usability_score_name": "Rendszer-használhatósági pontszám (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Köszönjük, hogy megosztotta velünk a munkafolyamatra vonatkozó ötletét! Jelenleg a funkció kialakításán dolgozunk, és a visszajelzése segít nekünk abban, hogy pontosan azt alkossuk meg, amire szüksége van.",
|
||||||
|
"coming_soon_title": "Már majdnem kész vagyunk!",
|
||||||
|
"follow_up_label": "Van még bármi egyéb, amit hozzá szeretne fűzni?",
|
||||||
|
"follow_up_placeholder": "Milyen konkrét feladatokat szeretne automatizálni? Vannak olyan eszközök vagy integrációk, amelyeket szívesen látna a rendszerben?",
|
||||||
|
"generate_button": "Munkafolyamat előállítása",
|
||||||
|
"heading": "Milyen munkafolyamatot szeretne létrehozni?",
|
||||||
|
"placeholder": "Mutassa be az előállítani kívánt munkafolyamatot…",
|
||||||
|
"subheading": "Munkafolyamat előállítása másodpercek alatt.",
|
||||||
|
"submit_button": "Részletek hozzáadása",
|
||||||
|
"thank_you_description": "A visszajelzése segít nekünk abban, hogy olyan Munkafolyamatok funkciót alakítsunk ki, amelyre valóban szüksége van. Folyamatosan tájékoztatni fogjuk Önt a fejlesztés előrehaladásáról.",
|
||||||
|
"thank_you_title": "Köszönjük a visszajelzését!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+67
-29
@@ -175,9 +175,12 @@
|
|||||||
"copy": "コピー",
|
"copy": "コピー",
|
||||||
"copy_code": "コードをコピー",
|
"copy_code": "コードをコピー",
|
||||||
"copy_link": "リンクをコピー",
|
"copy_link": "リンクをコピー",
|
||||||
"count_attributes": "{value, plural, other {{value}個の属性}}",
|
"count_attributes": "{count, plural, other {{count} 件の属性}}",
|
||||||
"count_contacts": "{count, plural, other {# 件の連絡先}}",
|
"count_contacts": "{count, plural, other {{count} 件の連絡先}}",
|
||||||
"count_responses": "{count, plural, other {# 件の回答}}",
|
"count_members": "{count, plural, other {{count} 名のメンバー}}",
|
||||||
|
"count_questions": "{count, plural, other {# 件の質問}}",
|
||||||
|
"count_responses": "{count, plural, other {{count} 件の回答}}",
|
||||||
|
"count_selections": "{count, plural, other {{count} 件の選択}}",
|
||||||
"create_new_organization": "新しい組織を作成",
|
"create_new_organization": "新しい組織を作成",
|
||||||
"create_segment": "セグメントを作成",
|
"create_segment": "セグメントを作成",
|
||||||
"create_survey": "フォームを作成",
|
"create_survey": "フォームを作成",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "日",
|
"days": "日",
|
||||||
"default": "デフォルト",
|
"default": "デフォルト",
|
||||||
"delete": "削除",
|
"delete": "削除",
|
||||||
|
"delete_what": "{deleteWhat}を削除",
|
||||||
"description": "説明",
|
"description": "説明",
|
||||||
"dev_env": "開発環境",
|
"dev_env": "開発環境",
|
||||||
"development": "開発",
|
"development": "開発",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "ダウンロード",
|
"download": "ダウンロード",
|
||||||
"draft": "下書き",
|
"draft": "下書き",
|
||||||
"duplicate": "複製",
|
"duplicate": "複製",
|
||||||
|
"duplicate_copy": "(コピー)",
|
||||||
|
"duplicate_copy_number": "(コピー {copyNumber})",
|
||||||
"e_commerce": "Eコマース",
|
"e_commerce": "Eコマース",
|
||||||
"edit": "編集",
|
"edit": "編集",
|
||||||
"email": "メールアドレス",
|
"email": "メールアドレス",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "デザイン",
|
"look_and_feel": "デザイン",
|
||||||
"manage": "管理",
|
"manage": "管理",
|
||||||
"marketing": "マーケティング",
|
"marketing": "マーケティング",
|
||||||
"member": "メンバー",
|
|
||||||
"members": "メンバー",
|
"members": "メンバー",
|
||||||
"members_and_teams": "メンバー&チーム",
|
"members_and_teams": "メンバー&チーム",
|
||||||
"membership_not_found": "メンバーシップが見つかりません",
|
"membership_not_found": "メンバーシップが見つかりません",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "下に移動",
|
"move_down": "下に移動",
|
||||||
"move_up": "上に移動",
|
"move_up": "上に移動",
|
||||||
"multiple_languages": "多言語",
|
"multiple_languages": "多言語",
|
||||||
|
"my_product": "マイプロダクト",
|
||||||
"name": "名前",
|
"name": "名前",
|
||||||
"new": "新規",
|
"new": "新規",
|
||||||
"new_version_available": "Formbricks {version} が利用可能です。今すぐアップグレード!",
|
"new_version_available": "Formbricks {version} が利用可能です。今すぐアップグレード!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "チームを選択",
|
"select_teams": "チームを選択",
|
||||||
"selected": "選択済み",
|
"selected": "選択済み",
|
||||||
"selected_questions": "選択した質問",
|
"selected_questions": "選択した質問",
|
||||||
"selection": "選択",
|
|
||||||
"selections": "選択",
|
|
||||||
"send_test_email": "テストメールを送信",
|
"send_test_email": "テストメールを送信",
|
||||||
"session_not_found": "セッションが見つかりません",
|
"session_not_found": "セッションが見つかりません",
|
||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "回答数を表示",
|
"show_response_count": "回答数を表示",
|
||||||
"shown": "表示済み",
|
"shown": "表示済み",
|
||||||
"size": "サイズ",
|
"size": "サイズ",
|
||||||
|
"skip": "スキップ",
|
||||||
"skipped": "スキップ済み",
|
"skipped": "スキップ済み",
|
||||||
"skips": "スキップ数",
|
"skips": "スキップ数",
|
||||||
"some_files_failed_to_upload": "一部のファイルのアップロードに失敗しました",
|
"some_files_failed_to_upload": "一部のファイルのアップロードに失敗しました",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "ウェブサイトフォーム",
|
"website_survey": "ウェブサイトフォーム",
|
||||||
"weeks": "週間",
|
"weeks": "週間",
|
||||||
"welcome_card": "ウェルカムカード",
|
"welcome_card": "ウェルカムカード",
|
||||||
|
"workflows": "ワークフロー",
|
||||||
"workspace_configuration": "ワークスペース設定",
|
"workspace_configuration": "ワークスペース設定",
|
||||||
"workspace_created_successfully": "ワークスペースが正常に作成されました",
|
"workspace_created_successfully": "ワークスペースが正常に作成されました",
|
||||||
"workspace_creation_description": "アクセス制御を改善するために、フォームをワークスペースで整理します。",
|
"workspace_creation_description": "アクセス制御を改善するために、フォームをワークスペースで整理します。",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "値",
|
"attribute_value": "値",
|
||||||
"attribute_value_placeholder": "属性値",
|
"attribute_value_placeholder": "属性値",
|
||||||
"attributes_msg_attribute_limit_exceeded": "最大制限の{limit}個の属性クラスを超えるため、{count}個の新しい属性を作成できませんでした。既存の属性は正常に更新されました。",
|
"attributes_msg_attribute_limit_exceeded": "最大制限の{limit}個の属性クラスを超えるため、{count}個の新しい属性を作成できませんでした。既存の属性は正常に更新されました。",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error}(属性'{key}'のデータ型: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error}(属性“{key}”のデータ型:{dataType})",
|
||||||
"attributes_msg_email_already_exists": "このメールアドレスはこの環境に既に存在するため、更新されませんでした。",
|
"attributes_msg_email_already_exists": "このメールアドレスはこの環境に既に存在するため、更新されませんでした。",
|
||||||
"attributes_msg_email_or_userid_required": "メールアドレスまたはユーザーIDのいずれかが必要です。既存の値は保持されました。",
|
"attributes_msg_email_or_userid_required": "メールアドレスまたはユーザーIDのいずれかが必要です。既存の値は保持されました。",
|
||||||
"attributes_msg_new_attribute_created": "新しい属性'{key}'をタイプ'{dataType}'で作成しました",
|
"attributes_msg_new_attribute_created": "新しい属性“{key}”を型“{dataType}”で作成しました",
|
||||||
"attributes_msg_userid_already_exists": "このユーザーIDはこの環境に既に存在するため、更新されませんでした。",
|
"attributes_msg_userid_already_exists": "この環境にはすでにユーザーIDが存在するため、更新されませんでした。",
|
||||||
"contact_deleted_successfully": "連絡先を正常に削除しました",
|
"contact_deleted_successfully": "連絡先を正常に削除しました",
|
||||||
"contact_not_found": "そのような連絡先は見つかりません",
|
"contact_not_found": "そのような連絡先は見つかりません",
|
||||||
"contacts_table_refresh": "連絡先を更新",
|
"contacts_table_refresh": "連絡先を更新",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "データ型",
|
"data_type": "データ型",
|
||||||
"data_type_cannot_be_changed": "データ型は作成後に変更できません",
|
"data_type_cannot_be_changed": "データ型は作成後に変更できません",
|
||||||
"data_type_description": "この属性の保存方法とフィルタリング方法を選択してください",
|
"data_type_description": "この属性の保存方法とフィルタリング方法を選択してください",
|
||||||
"date_value_required": "日付の値が必要です。日付を設定したくない場合は、削除ボタンを使用してこの属性を削除してください。",
|
"date_value_required": "日付の値が必要です。日付を設定しない場合は、削除ボタンを使用してこの属性を削除してください。",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {選択した属性を削除します。この属性に関連付けられたすべてのコンタクトデータは失われます。} other {選択した属性を削除します。これらの属性に関連付けられたすべてのコンタクトデータは失われます。}}",
|
"delete_attribute_confirmation": "{value, plural, one {選択した属性を削除します。この属性に関連付けられたすべてのコンタクトデータは失われます。} other {選択した属性を削除します。これらの属性に関連付けられたすべてのコンタクトデータは失われます。}}",
|
||||||
"delete_contact_confirmation": "これにより、この連絡先に関連付けられているすべてのフォーム回答と連絡先属性が削除されます。この連絡先のデータに基づいたターゲティングとパーソナライゼーションはすべて失われます。",
|
"delete_contact_confirmation": "これにより、この連絡先に関連付けられているすべてのフォーム回答と連絡先属性が削除されます。この連絡先のデータに基づいたターゲティングとパーソナライゼーションはすべて失われます。",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {これにより この連絡先に関連するすべてのアンケート応答と連絡先属性が削除されます。この連絡先のデータに基づくターゲティングとパーソナライゼーションが失われます。この連絡先がアンケートの割当量を考慮した回答を持っている場合、割当量カウントは減少しますが、割当量の制限は変更されません。} other {これにより これらの連絡先に関連するすべてのアンケート応答と連絡先属性が削除されます。これらの連絡先のデータに基づくターゲティングとパーソナライゼーションが失われます。これらの連絡先がアンケートの割当量を考慮した回答を持っている場合、割当量カウントは減少しますが、割当量の制限は変更されません。}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {これにより この連絡先に関連するすべてのアンケート応答と連絡先属性が削除されます。この連絡先のデータに基づくターゲティングとパーソナライゼーションが失われます。この連絡先がアンケートの割当量を考慮した回答を持っている場合、割当量カウントは減少しますが、割当量の制限は変更されません。} other {これにより これらの連絡先に関連するすべてのアンケート応答と連絡先属性が削除されます。これらの連絡先のデータに基づくターゲティングとパーソナライゼーションが失われます。これらの連絡先がアンケートの割当量を考慮した回答を持っている場合、割当量カウントは減少しますが、割当量の制限は変更されません。}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "システム属性",
|
"system_attributes": "システム属性",
|
||||||
"unlock_contacts_description": "連絡先を管理し、特定のフォームを送信します",
|
"unlock_contacts_description": "連絡先を管理し、特定のフォームを送信します",
|
||||||
"unlock_contacts_title": "上位プランで連絡先をアンロック",
|
"unlock_contacts_title": "上位プランで連絡先をアンロック",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "属性「{key}」は「{dataType}」として型付けされていますが、CSVに無効な値が含まれています:{values}",
|
"upload_contacts_error_attribute_type_mismatch": "属性“{key}”は“{dataType}”型ですが、CSVに無効な値が含まれています:{values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "次の属性に重複したマッピングが見つかりました:{attributes}",
|
"upload_contacts_error_duplicate_mappings": "次の属性に重複したマッピングが見つかりました:{attributes}",
|
||||||
"upload_contacts_error_file_too_large": "ファイルサイズが最大制限の800KBを超えています",
|
"upload_contacts_error_file_too_large": "ファイルサイズが最大制限の800KBを超えています",
|
||||||
"upload_contacts_error_generic": "連絡先のアップロード中にエラーが発生しました。後でもう一度お試しください。",
|
"upload_contacts_error_generic": "連絡先のアップロード中にエラーが発生しました。後でもう一度お試しください。",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "ライセンスキーが無効です。ENTERPRISE_LICENSE_KEYを確認してください。",
|
"recheck_license_invalid": "ライセンスキーが無効です。ENTERPRISE_LICENSE_KEYを確認してください。",
|
||||||
"recheck_license_success": "ライセンスの確認に成功しました",
|
"recheck_license_success": "ライセンスの確認に成功しました",
|
||||||
"recheck_license_unreachable": "ライセンスサーバーに接続できません。後ほど再度お試しください。",
|
"recheck_license_unreachable": "ライセンスサーバーに接続できません。後ほど再度お試しください。",
|
||||||
"rechecking": "再確認中...",
|
"rechecking": "再確認中…",
|
||||||
"request_30_day_trial_license": "30日間トライアルライセンスをリクエスト",
|
"request_30_day_trial_license": "30日間トライアルライセンスをリクエスト",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "サービスレベル契約",
|
"service_level_agreement": "サービスレベル契約",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "こんにちは、{userName}さん",
|
"email_customization_preview_email_heading": "こんにちは、{userName}さん",
|
||||||
"email_customization_preview_email_text": "これは、メールに表示されるロゴを確認するためのプレビューメールです。",
|
"email_customization_preview_email_text": "これは、メールに表示されるロゴを確認するためのプレビューメールです。",
|
||||||
"error_deleting_organization_please_try_again": "組織の削除中にエラーが発生しました。もう一度お試しください。",
|
"error_deleting_organization_please_try_again": "組織の削除中にエラーが発生しました。もう一度お試しください。",
|
||||||
"from_your_organization": "あなたの組織から",
|
"from_your_organization": "組織から{memberName}を削除",
|
||||||
"invitation_sent_once_more": "招待状を再度送信しました。",
|
"invitation_sent_once_more": "招待状を再度送信しました。",
|
||||||
"invite_deleted_successfully": "招待を正常に削除しました",
|
"invite_deleted_successfully": "招待を正常に削除しました",
|
||||||
"invite_expires_on": "招待は{date}に期限切れ",
|
"invite_expires_on": "招待は{date}に期限切れ",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "通知設定を更新しました",
|
"notification_settings_updated": "通知設定を更新しました",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "新しい回答が届いたときにメールを受け取るようにアラートを設定します",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "新しい回答が届いたときにメールを受け取るようにアラートを設定します",
|
||||||
"use_the_integration": "連携を使用する",
|
"use_the_integration": "連携を使用する",
|
||||||
"want_to_loop_in_organization_mates": "組織の仲間も巻き込みたいですか",
|
"want_to_loop_in_organization_mates": "組織のメンバーを含めますか?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "この組織のフォームには、自動で購読されなくなります!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "この組織のフォームには、自動で購読されなくなります!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "このフォームの回答に関するメールは、今後一切受け取れなくなります!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "このフォームの回答に関するメールは、今後一切受け取れなくなります!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "質問がスキップされた場合に表示するプレースホルダーを追加:",
|
"add_fallback_placeholder": "質問がスキップされた場合に表示するプレースホルダーを追加:",
|
||||||
"add_hidden_field_id": "非表示フィールドIDを追加",
|
"add_hidden_field_id": "非表示フィールドIDを追加",
|
||||||
"add_highlight_border": "ハイライトボーダーを追加",
|
"add_highlight_border": "ハイライトボーダーを追加",
|
||||||
|
"add_highlight_border_description": "プロダクト内サーベイにのみ適用されます。",
|
||||||
"add_logic": "ロジックを追加",
|
"add_logic": "ロジックを追加",
|
||||||
"add_none_of_the_above": "\"いずれも該当しません\" を追加",
|
"add_none_of_the_above": "\"いずれも該当しません\" を追加",
|
||||||
"add_option": "オプションを追加",
|
"add_option": "オプションを追加",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "「フォームはクローズしました」メッセージを調整",
|
"adjust_survey_closed_message": "「フォームはクローズしました」メッセージを調整",
|
||||||
"adjust_survey_closed_message_description": "フォームがクローズしたときに訪問者が見るメッセージを変更します。",
|
"adjust_survey_closed_message_description": "フォームがクローズしたときに訪問者が見るメッセージを変更します。",
|
||||||
"adjust_the_theme_in_the": "テーマを",
|
"adjust_the_theme_in_the": "テーマを",
|
||||||
|
"all_are_true": "すべてが真である",
|
||||||
"all_other_answers_will_continue_to": "他のすべての回答は引き続き",
|
"all_other_answers_will_continue_to": "他のすべての回答は引き続き",
|
||||||
"allow_multi_select": "複数選択を許可",
|
"allow_multi_select": "複数選択を許可",
|
||||||
"allow_multiple_files": "複数のファイルを許可",
|
"allow_multiple_files": "複数のファイルを許可",
|
||||||
"allow_users_to_select_more_than_one_image": "ユーザーが複数の画像を選択できるようにする",
|
"allow_users_to_select_more_than_one_image": "ユーザーが複数の画像を選択できるようにする",
|
||||||
"and_launch_surveys_in_your_website_or_app": "ウェブサイトやアプリでフォームを公開できます。",
|
"and_launch_surveys_in_your_website_or_app": "ウェブサイトやアプリでフォームを公開できます。",
|
||||||
"animation": "アニメーション",
|
"animation": "アニメーション",
|
||||||
|
"any_is_true": "いずれかが真",
|
||||||
"app_survey_description": "回答を収集するために、ウェブアプリまたはウェブサイトにフォームを埋め込みます。",
|
"app_survey_description": "回答を収集するために、ウェブアプリまたはウェブサイトにフォームを埋め込みます。",
|
||||||
"assign": "割り当て =",
|
"assign": "割り当て =",
|
||||||
"audience": "オーディエンス",
|
"audience": "オーディエンス",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "カジュアル",
|
"casual": "カジュアル",
|
||||||
"caution_edit_duplicate": "複製して編集",
|
"caution_edit_duplicate": "複製して編集",
|
||||||
"caution_edit_published_survey": "公開済みのフォームを編集しますか?",
|
"caution_edit_published_survey": "公開済みのフォームを編集しますか?",
|
||||||
"caution_explanation_intro": "変更を加えたい場合があることは理解しています。以下に変更した場合に起こることです: ",
|
"caution_explanation_intro": "変更を加えたい場合もあることは理解しています。変更を行うと次のようになります:",
|
||||||
"caution_explanation_new_responses_separated": "変更前の回答は、フォームの概要に含まれないか、部分的にしか含まれない場合があります。",
|
"caution_explanation_new_responses_separated": "変更前の回答は、フォームの概要に含まれないか、部分的にしか含まれない場合があります。",
|
||||||
"caution_explanation_only_new_responses_in_summary": "過去の回答を含むすべてのデータは、フォームの概要ページでダウンロード可能です。",
|
"caution_explanation_only_new_responses_in_summary": "過去の回答を含むすべてのデータは、フォームの概要ページでダウンロード可能です。",
|
||||||
"caution_explanation_responses_are_safe": "古い回答と新しい回答が混ざり、データの概要が誤解を招く可能性があります。",
|
"caution_explanation_responses_are_safe": "古い回答と新しい回答が混ざり、データの概要が誤解を招く可能性があります。",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "フォローアップ が 更新され、 アンケートを 保存すると保存されます。",
|
"follow_ups_modal_updated_successfull_toast": "フォローアップ が 更新され、 アンケートを 保存すると保存されます。",
|
||||||
"follow_ups_new": "新しいフォローアップ",
|
"follow_ups_new": "新しいフォローアップ",
|
||||||
"follow_ups_upgrade_button_text": "フォローアップを有効にするためにアップグレード",
|
"follow_ups_upgrade_button_text": "フォローアップを有効にするためにアップグレード",
|
||||||
"form_styling": "フォームのスタイル",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDKが接続されていません",
|
"formbricks_sdk_is_not_connected": "Formbricks SDKが接続されていません",
|
||||||
"four_points": "4点",
|
"four_points": "4点",
|
||||||
"heading": "見出し",
|
"heading": "見出し",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "オプション {choiceIndex}",
|
"option_idx": "オプション {choiceIndex}",
|
||||||
"option_used_in_logic_error": "このオプションは質問 {questionIndex} のロジックで使用されています。まず、ロジックから削除してください。",
|
"option_used_in_logic_error": "このオプションは質問 {questionIndex} のロジックで使用されています。まず、ロジックから削除してください。",
|
||||||
"optional": "オプション",
|
"optional": "オプション",
|
||||||
"options": "オプション",
|
"options": "オプション*",
|
||||||
"options_used_in_logic_bulk_error": "以下のオプションはロジックで使用されています:{questionIndexes}。まず、ロジックから削除してください。",
|
"options_used_in_logic_bulk_error": "以下のオプションはロジックで使用されています:{questionIndexes}。まず、ロジックから削除してください。",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "このフォームの個別のスタイルでテーマを上書きします。",
|
"override_theme_with_individual_styles_for_this_survey": "このフォームの個別のスタイルでテーマを上書きします。",
|
||||||
"overwrite_global_waiting_time": "カスタムクールダウン期間を設定",
|
"overwrite_global_waiting_time": "カスタムクールダウン期間を設定",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "質問を削除しました。",
|
"question_deleted": "質問を削除しました。",
|
||||||
"question_duplicated": "質問を複製しました。",
|
"question_duplicated": "質問を複製しました。",
|
||||||
"question_id_updated": "質問IDを更新しました",
|
"question_id_updated": "質問IDを更新しました",
|
||||||
|
"question_number": "質問 {number}",
|
||||||
"question_used_in_logic_warning_text": "このブロックの要素はロジックルールで使用されていますが、本当に削除しますか?",
|
"question_used_in_logic_warning_text": "このブロックの要素はロジックルールで使用されていますが、本当に削除しますか?",
|
||||||
"question_used_in_logic_warning_title": "ロジックの不整合",
|
"question_used_in_logic_warning_title": "ロジックの不整合",
|
||||||
"question_used_in_quota": "この質問は“{quotaName}”クォータで使用されています",
|
"question_used_in_quota": "この質問は“{quotaName}”クォータで使用されています",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "回答数の上限、リダイレクトなど。",
|
"response_limits_redirections_and_more": "回答数の上限、リダイレクトなど。",
|
||||||
"response_options": "回答オプション",
|
"response_options": "回答オプション",
|
||||||
"roundness": "丸み",
|
"roundness": "丸み",
|
||||||
"roundness_description": "カードの角の丸みを調整します。",
|
"roundness_description": "角の丸みを調整します。",
|
||||||
"row_used_in_logic_error": "この行は質問 {questionIndex} のロジックで使用されています。まず、ロジックから削除してください。",
|
"row_used_in_logic_error": "この行は質問 {questionIndex} のロジックで使用されています。まず、ロジックから削除してください。",
|
||||||
"rows": "行",
|
"rows": "行",
|
||||||
"save_and_close": "保存して閉じる",
|
"save_and_close": "保存して閉じる",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "この無料のオープンソースフォームは閉鎖されました",
|
"survey_completed_subheading": "この無料のオープンソースフォームは閉鎖されました",
|
||||||
"survey_display_settings": "フォーム表示設定",
|
"survey_display_settings": "フォーム表示設定",
|
||||||
"survey_placement": "フォームの配置",
|
"survey_placement": "フォームの配置",
|
||||||
|
"survey_styling": "フォームのスタイル",
|
||||||
"survey_trigger": "フォームのトリガー",
|
"survey_trigger": "フォームのトリガー",
|
||||||
"switch_multi_language_on_to_get_started": "多言語機能をオンにして開始 👉",
|
"switch_multi_language_on_to_get_started": "多言語機能をオンにして開始 👉",
|
||||||
"target_block_not_found": "対象ブロックが見つかりません",
|
"target_block_not_found": "対象ブロックが見つかりません",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "正規表現パターンに一致する",
|
"pattern": "正規表現パターンに一致する",
|
||||||
"phone": "有効な電話番号である",
|
"phone": "有効な電話番号である",
|
||||||
"rank_all_options": "すべてのオプションをランク付け",
|
"rank_all_options": "すべてのオプションをランク付け",
|
||||||
"select_file_extensions": "ファイル拡張子を選択...",
|
"select_file_extensions": "ファイル拡張子を選択…",
|
||||||
"select_option": "オプションを選択",
|
"select_option": "オプションを選択",
|
||||||
"start_date": "開始日",
|
"start_date": "開始日",
|
||||||
"url": "有効なURLである"
|
"url": "有効なURLである"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "クールダウン期間(アンケート全体)",
|
"waiting_time_across_surveys": "クールダウン期間(アンケート全体)",
|
||||||
"waiting_time_across_surveys_description": "アンケート疲れを防ぐため、このアンケートがワークスペース全体のクールダウン期間とどのように連動するかを選択してください。",
|
"waiting_time_across_surveys_description": "アンケート疲れを防ぐため、このアンケートがワークスペース全体のクールダウン期間とどのように連動するかを選択してください。",
|
||||||
"welcome_message": "ウェルカムメッセージ",
|
"welcome_message": "ウェルカムメッセージ",
|
||||||
|
"when": "条件",
|
||||||
"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": "翻訳を使用するには、ワークスペースに2つ以上の言語を設定する必要があります。",
|
|
||||||
"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": "あなたのウェブアプリ",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "単一使用リンクを無効にする",
|
"disable_single_use_link_modal_button": "単一使用リンクを無効にする",
|
||||||
"disable_single_use_link_modal_description": "単一使用リンクを共有した場合、参加者はフォームに回答できなくなります。",
|
"disable_single_use_link_modal_description": "単一使用リンクを共有した場合、参加者はフォームに回答できなくなります。",
|
||||||
"generate_and_download_links": "リンクを生成&ダウンロード",
|
"generate_and_download_links": "リンクを生成&ダウンロード",
|
||||||
"generate_links_error": "単一使用リンクを生成できませんでした。APIを直接使用してください",
|
"generate_links_error": "1回限りのリンクを生成できませんでした。APIを直接ご利用ください。",
|
||||||
"multi_use_link": "複数使用リンク",
|
"multi_use_link": "複数使用リンク",
|
||||||
"multi_use_link_description": "1つのリンクで匿名の回答者から複数の回答を収集します。",
|
"multi_use_link_description": "1つのリンクで匿名の回答者から複数の回答を収集します。",
|
||||||
"multi_use_powers_other_channels_description": "無効にすると、これらの他の配布チャネルも無効になります。",
|
"multi_use_powers_other_channels_description": "無効にすると、これらの他の配布チャネルも無効になります。",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "質問 {questionIdx} の回答が {filterComboBoxValue} - {filterValue} である回答のフィルターを追加しました",
|
"added_filter_for_responses_where_answer_to_question": "質問{questionIdx}の答えが{filterComboBoxValue} - {filterValue}の回答にフィルターを追加しました",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "質問 {questionIdx} の回答がスキップされた回答のフィルターを追加しました",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "質問 {questionIdx} の回答がスキップされた回答のフィルターを追加しました",
|
||||||
"aggregated": "集計済み",
|
"aggregated": "集計済み",
|
||||||
"all_responses_csv": "すべての回答 (CSV)",
|
"all_responses_csv": "すべての回答 (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "開始",
|
"starts": "開始",
|
||||||
"starts_tooltip": "フォームが開始された回数。",
|
"starts_tooltip": "フォームが開始された回数。",
|
||||||
"survey_reset_successfully": "フォームを正常にリセットしました!{responseCount} 件の回答と {displayCount} 件の表示が削除されました。",
|
"survey_reset_successfully": "フォームを正常にリセットしました!{responseCount} 件の回答と {displayCount} 件の表示が削除されました。",
|
||||||
|
"survey_results": "{surveyName}の結果",
|
||||||
"this_month": "今月",
|
"this_month": "今月",
|
||||||
"this_quarter": "今四半期",
|
"this_quarter": "今四半期",
|
||||||
"this_year": "今年",
|
"this_year": "今年",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "ロゴコンテナに背景色を追加します。",
|
"add_background_color_description": "ロゴコンテナに背景色を追加します。",
|
||||||
"advanced_styling_field_border_radius": "境界線の丸み",
|
"advanced_styling_field_border_radius": "境界線の丸み",
|
||||||
"advanced_styling_field_button_bg": "ボタンの背景",
|
"advanced_styling_field_button_bg": "ボタンの背景",
|
||||||
"advanced_styling_field_button_bg_description": "次へ/送信ボタンを塗りつぶします。",
|
"advanced_styling_field_button_bg_description": "“次へ” / “送信”ボタンを塗りつぶします。",
|
||||||
"advanced_styling_field_button_border_radius_description": "ボタンの角を丸めます。",
|
"advanced_styling_field_button_border_radius_description": "ボタンの角を丸めます。",
|
||||||
"advanced_styling_field_button_font_size_description": "ボタンラベルのテキストサイズを調整します。",
|
"advanced_styling_field_button_font_size_description": "ボタンラベルのテキストサイズを調整します。",
|
||||||
"advanced_styling_field_button_font_weight_description": "ボタンテキストを細くまたは太くします。",
|
"advanced_styling_field_button_font_weight_description": "ボタンテキストを細くまたは太くします。",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "説明文のフォントサイズ",
|
"advanced_styling_field_description_size": "説明文のフォントサイズ",
|
||||||
"advanced_styling_field_description_size_description": "説明テキストのサイズを調整します。",
|
"advanced_styling_field_description_size_description": "説明テキストのサイズを調整します。",
|
||||||
"advanced_styling_field_description_weight": "説明文のフォントの太さ",
|
"advanced_styling_field_description_weight": "説明文のフォントの太さ",
|
||||||
"advanced_styling_field_description_weight_description": "説明テキストを細くまたは太くします。",
|
"advanced_styling_field_description_weight_description": "説明文の太さを細くしたり太くしたりします。",
|
||||||
"advanced_styling_field_font_size": "フォントサイズ",
|
"advanced_styling_field_font_size": "フォントサイズ",
|
||||||
"advanced_styling_field_font_weight": "フォントの太さ",
|
"advanced_styling_field_font_weight": "フォントの太さ",
|
||||||
"advanced_styling_field_headline_color": "見出しの色",
|
"advanced_styling_field_headline_color": "見出しの色",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "バーの塗りつぶし部分に色を付けます。",
|
"advanced_styling_field_indicator_bg_description": "バーの塗りつぶし部分に色を付けます。",
|
||||||
"advanced_styling_field_input_border_radius_description": "入力フィールドの角を丸めます。",
|
"advanced_styling_field_input_border_radius_description": "入力フィールドの角を丸めます。",
|
||||||
"advanced_styling_field_input_font_size_description": "入力フィールド内の入力テキストのサイズを調整します。",
|
"advanced_styling_field_input_font_size_description": "入力フィールド内の入力テキストのサイズを調整します。",
|
||||||
"advanced_styling_field_input_height_description": "入力フィールドの最小の高さを制御します。",
|
"advanced_styling_field_input_height_description": "入力欄の最小高さを調整します。",
|
||||||
"advanced_styling_field_input_padding_x_description": "左右にスペースを追加します。",
|
"advanced_styling_field_input_padding_x_description": "左右にスペースを追加します。",
|
||||||
"advanced_styling_field_input_padding_y_description": "上下にスペースを追加します。",
|
"advanced_styling_field_input_padding_y_description": "上下にスペースを追加します。",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "プレースホルダーのヒントテキストを薄くします。",
|
"advanced_styling_field_input_placeholder_opacity_description": "プレースホルダーのヒントテキストを薄くします。",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "入力フィールドに入力されたテキストの色を設定します。",
|
"advanced_styling_field_input_text_description": "入力フィールドに入力されたテキストの色を設定します。",
|
||||||
"advanced_styling_field_option_bg": "背景",
|
"advanced_styling_field_option_bg": "背景",
|
||||||
"advanced_styling_field_option_bg_description": "オプション項目を塗りつぶします。",
|
"advanced_styling_field_option_bg_description": "オプション項目を塗りつぶします。",
|
||||||
|
"advanced_styling_field_option_border": "枠線の色",
|
||||||
|
"advanced_styling_field_option_border_description": "ラジオボタンとチェックボックスの選択肢の輪郭を設定します。",
|
||||||
"advanced_styling_field_option_border_radius_description": "オプションの角を丸くします。",
|
"advanced_styling_field_option_border_radius_description": "オプションの角を丸くします。",
|
||||||
"advanced_styling_field_option_font_size_description": "オプションラベルのテキストサイズを調整します。",
|
"advanced_styling_field_option_font_size_description": "オプションラベルのテキストサイズを調整します。",
|
||||||
"advanced_styling_field_option_label": "ラベルの色",
|
"advanced_styling_field_option_label": "ラベルの色",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "「Powered by Formbricks」署名を表示",
|
"show_powered_by_formbricks": "「Powered by Formbricks」署名を表示",
|
||||||
"styling_updated_successfully": "スタイルを正常に更新しました",
|
"styling_updated_successfully": "スタイルを正常に更新しました",
|
||||||
"suggest_colors": "カラーを提案",
|
"suggest_colors": "カラーを提案",
|
||||||
"suggested_colors_applied_please_save": "推奨カラーが正常に生成されました。変更を保存するには「保存」を押してください。",
|
"suggested_colors_applied_please_save": "推奨カラーが正常に生成されました。変更を保存するには“保存”を押してください。",
|
||||||
"theme": "テーマ",
|
"theme": "テーマ",
|
||||||
"theme_settings_description": "すべてのアンケート用のスタイルテーマを作成します。各アンケートでカスタムスタイルを有効にできます。"
|
"theme_settings_description": "すべてのアンケート用のスタイルテーマを作成します。各アンケートでカスタムスタイルを有効にできます。"
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "受信トレイにメールがない場合は、迷惑メールフォルダも確認してください。",
|
"check_inbox_or_spam": "受信トレイにメールがない場合は、迷惑メールフォルダも確認してください。",
|
||||||
"completed": "このフォームはクローズしました。",
|
"completed": "このフォームはクローズしました。",
|
||||||
"create_your_own": "独自のオープンソースフォームを作成",
|
"create_your_own": "独自のオープンソースフォームを作成",
|
||||||
"enter_pin": "このフォームは保護されています。以下にPINを入力してください",
|
"enter_pin": "このアンケートは保護されています。以下にPINを入力してください。",
|
||||||
"just_curious": "ただ興味があるだけですか?",
|
"just_curious": "ただ興味があるだけですか?",
|
||||||
"link_invalid": "このフォームは招待によってのみ回答できます。",
|
"link_invalid": "このフォームは招待によってのみ回答できます。",
|
||||||
"paused": "このフォームは一時的に一時停止されています。",
|
"paused": "このフォームは一時的に一時停止されています。",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "会社はビジョンと戦略の整合性をどのように改善できますか?",
|
"alignment_and_engagement_survey_question_4_headline": "会社はビジョンと戦略の整合性をどのように改善できますか?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "ここに回答を入力してください...",
|
"alignment_and_engagement_survey_question_4_placeholder": "ここに回答を入力してください...",
|
||||||
"back": "戻る",
|
"back": "戻る",
|
||||||
|
"block_1": "ブロック 1",
|
||||||
|
"block_10": "ブロック 10",
|
||||||
|
"block_2": "ブロック 2",
|
||||||
|
"block_3": "ブロック 3",
|
||||||
|
"block_4": "ブロック 4",
|
||||||
|
"block_5": "ブロック 5",
|
||||||
|
"block_6": "ブロック 6",
|
||||||
|
"block_7": "ブロック 7",
|
||||||
|
"block_8": "ブロック 8",
|
||||||
|
"block_9": "ブロック 9",
|
||||||
"book_interview": "面談を予約する",
|
"book_interview": "面談を予約する",
|
||||||
"build_product_roadmap_description": "ユーザーが最も望んでいる「たった一つ」のものを特定し、構築する。",
|
"build_product_roadmap_description": "ユーザーが最も望んでいる「たった一つ」のものを特定し、構築する。",
|
||||||
"build_product_roadmap_name": "製品ロードマップの構築",
|
"build_product_roadmap_name": "製品ロードマップの構築",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "申し訳ありません!体験を改善するために何かできることはありますか?",
|
"csat_survey_question_3_headline": "申し訳ありません!体験を改善するために何かできることはありますか?",
|
||||||
"csat_survey_question_3_placeholder": "ここに回答を入力してください...",
|
"csat_survey_question_3_placeholder": "ここに回答を入力してください...",
|
||||||
"cta_description": "情報を表示し、特定の行動を促す",
|
"cta_description": "情報を表示し、特定の行動を促す",
|
||||||
"custom_survey_block_1_name": "ブロック1",
|
|
||||||
"custom_survey_description": "テンプレートを使わずにアンケートを作成する。",
|
"custom_survey_description": "テンプレートを使わずにアンケートを作成する。",
|
||||||
"custom_survey_name": "最初から始める",
|
"custom_survey_name": "最初から始める",
|
||||||
"custom_survey_question_1_headline": "何を知りたいですか?",
|
"custom_survey_question_1_headline": "何を知りたいですか?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "いいえ、結構です!",
|
"preview_survey_question_2_choice_2_label": "いいえ、結構です!",
|
||||||
"preview_survey_question_2_headline": "最新情報を知りたいですか?",
|
"preview_survey_question_2_headline": "最新情報を知りたいですか?",
|
||||||
"preview_survey_question_2_subheader": "これは説明の例です。",
|
"preview_survey_question_2_subheader": "これは説明の例です。",
|
||||||
|
"preview_survey_question_open_text_headline": "他に共有したいことはありますか?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "ここに回答を入力してください...",
|
||||||
|
"preview_survey_question_open_text_subheader": "あなたのフィードバックは、私たちの改善に役立ちます。",
|
||||||
"preview_survey_welcome_card_headline": "ようこそ!",
|
"preview_survey_welcome_card_headline": "ようこそ!",
|
||||||
"prioritize_features_description": "ユーザーが最も必要とする機能と最も必要としない機能を特定する。",
|
"prioritize_features_description": "ユーザーが最も必要とする機能と最も必要としない機能を特定する。",
|
||||||
"prioritize_features_name": "機能の優先順位付け",
|
"prioritize_features_name": "機能の優先順位付け",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "個人研究",
|
"professional_development_survey_question_2_choice_5": "個人研究",
|
||||||
"professional_development_survey_question_2_choice_6": "その他",
|
"professional_development_survey_question_2_choice_6": "その他",
|
||||||
"professional_development_survey_question_2_headline": "あなたの成長にとって最も価値があると思う専門能力開発活動の種類は何ですか?",
|
"professional_development_survey_question_2_headline": "あなたの成長にとって最も価値があると思う専門能力開発活動の種類は何ですか?",
|
||||||
"professional_development_survey_question_2_subheader": "当てはまるものをすべて選択してください",
|
"professional_development_survey_question_2_subheader": "当てはまるものをすべて選択してください:",
|
||||||
"professional_development_survey_question_3_choice_1": "はい",
|
"professional_development_survey_question_3_choice_1": "はい",
|
||||||
"professional_development_survey_question_3_choice_2": "いいえ",
|
"professional_development_survey_question_3_choice_2": "いいえ",
|
||||||
"professional_development_survey_question_3_headline": "過去に専門能力開発のために時間を割きましたか?",
|
"professional_development_survey_question_3_headline": "過去に専門能力開発のために時間を割きましたか?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "システムを使っている間、自信がありました。",
|
"usability_question_9_headline": "システムを使っている間、自信がありました。",
|
||||||
"usability_rating_description": "標準化された10の質問アンケートを使用して、製品に対するユーザーの体験を評価し、知覚された使いやすさを測定する。",
|
"usability_rating_description": "標準化された10の質問アンケートを使用して、製品に対するユーザーの体験を評価し、知覚された使いやすさを測定する。",
|
||||||
"usability_score_name": "システムユーザビリティスコア(SUS)"
|
"usability_score_name": "システムユーザビリティスコア(SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "ワークフローのアイデアを共有していただきありがとうございます!現在この機能を設計中で、あなたのフィードバックは私たちが必要とされる機能を構築するのに役立ちます。",
|
||||||
|
"coming_soon_title": "もうすぐ完成です!",
|
||||||
|
"follow_up_label": "他に追加したいことはありますか?",
|
||||||
|
"follow_up_placeholder": "自動化したい具体的な作業や使用したいツール・連携があればご記入ください。",
|
||||||
|
"generate_button": "ワークフローを生成",
|
||||||
|
"heading": "どのようなワークフローを作成しますか?",
|
||||||
|
"placeholder": "作成したいワークフローについて説明してください…",
|
||||||
|
"subheading": "数秒でワークフローを生成します。",
|
||||||
|
"submit_button": "詳細を追加",
|
||||||
|
"thank_you_description": "ご入力いただいた内容は、より実用的なWorkflows機能の開発に役立てます。進捗は順次ご案内します。",
|
||||||
|
"thank_you_title": "フィードバックありがとうございます!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+69
-31
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Kopiëren",
|
"copy": "Kopiëren",
|
||||||
"copy_code": "Kopieer code",
|
"copy_code": "Kopieer code",
|
||||||
"copy_link": "Kopieer link",
|
"copy_link": "Kopieer link",
|
||||||
"count_attributes": "{value, plural, one {{value} attribuut} other {{value} attributen}}",
|
"count_attributes": "{count, plural, one {{count} attribuut} other {{count} attributen}}",
|
||||||
"count_contacts": "{value, plural, one {{value} contact} other {{value} contacten}}",
|
"count_contacts": "{count, plural, one {{count} contact} other {{count} contacten}}",
|
||||||
"count_responses": "{value, plural, one {{value} reactie} other {{value} reacties}}",
|
"count_members": "{count, plural, one {{count} lid} other {{count} leden}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} vraag} other {{count} vragen}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} reactie} other {{count} reacties}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} selectie} other {{count} selecties}}",
|
||||||
"create_new_organization": "Creëer een nieuwe organisatie",
|
"create_new_organization": "Creëer een nieuwe organisatie",
|
||||||
"create_segment": "Segment maken",
|
"create_segment": "Segment maken",
|
||||||
"create_survey": "Enquête maken",
|
"create_survey": "Enquête maken",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "dagen",
|
"days": "dagen",
|
||||||
"default": "Standaard",
|
"default": "Standaard",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
|
"delete_what": "Verwijder {deleteWhat}",
|
||||||
"description": "Beschrijving",
|
"description": "Beschrijving",
|
||||||
"dev_env": "Ontwikkelomgeving",
|
"dev_env": "Ontwikkelomgeving",
|
||||||
"development": "Ontwikkeling",
|
"development": "Ontwikkeling",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Downloaden",
|
"download": "Downloaden",
|
||||||
"draft": "Voorlopige versie",
|
"draft": "Voorlopige versie",
|
||||||
"duplicate": "Duplicaat",
|
"duplicate": "Duplicaat",
|
||||||
|
"duplicate_copy": "(kopie)",
|
||||||
|
"duplicate_copy_number": "(kopie {copyNumber})",
|
||||||
"e_commerce": "E-commerce",
|
"e_commerce": "E-commerce",
|
||||||
"edit": "Bewerking",
|
"edit": "Bewerking",
|
||||||
"email": "E-mail",
|
"email": "E-mail",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Kijk & voel",
|
"look_and_feel": "Kijk & voel",
|
||||||
"manage": "Beheren",
|
"manage": "Beheren",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Lid",
|
|
||||||
"members": "Leden",
|
"members": "Leden",
|
||||||
"members_and_teams": "Leden & teams",
|
"members_and_teams": "Leden & teams",
|
||||||
"membership_not_found": "Lidmaatschap niet gevonden",
|
"membership_not_found": "Lidmaatschap niet gevonden",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Ga naar beneden",
|
"move_down": "Ga naar beneden",
|
||||||
"move_up": "Ga omhoog",
|
"move_up": "Ga omhoog",
|
||||||
"multiple_languages": "Meerdere talen",
|
"multiple_languages": "Meerdere talen",
|
||||||
|
"my_product": "mijn product",
|
||||||
"name": "Naam",
|
"name": "Naam",
|
||||||
"new": "Nieuw",
|
"new": "Nieuw",
|
||||||
"new_version_available": "Formbricks {version} is hier. Upgrade nu!",
|
"new_version_available": "Formbricks {version} is hier. Upgrade nu!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Selecteer teams",
|
"select_teams": "Selecteer teams",
|
||||||
"selected": "Gekozen",
|
"selected": "Gekozen",
|
||||||
"selected_questions": "Geselecteerde vragen",
|
"selected_questions": "Geselecteerde vragen",
|
||||||
"selection": "Selectie",
|
|
||||||
"selections": "Selecties",
|
|
||||||
"send_test_email": "Test-e-mail verzenden",
|
"send_test_email": "Test-e-mail verzenden",
|
||||||
"session_not_found": "Sessie niet gevonden",
|
"session_not_found": "Sessie niet gevonden",
|
||||||
"settings": "Instellingen",
|
"settings": "Instellingen",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Toon het aantal reacties",
|
"show_response_count": "Toon het aantal reacties",
|
||||||
"shown": "Getoond",
|
"shown": "Getoond",
|
||||||
"size": "Maat",
|
"size": "Maat",
|
||||||
|
"skip": "Overslaan",
|
||||||
"skipped": "Overgeslagen",
|
"skipped": "Overgeslagen",
|
||||||
"skips": "Overslaan",
|
"skips": "Overslaan",
|
||||||
"some_files_failed_to_upload": "Sommige bestanden konden niet worden geüpload",
|
"some_files_failed_to_upload": "Sommige bestanden konden niet worden geüpload",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Website-enquête",
|
"website_survey": "Website-enquête",
|
||||||
"weeks": "weken",
|
"weeks": "weken",
|
||||||
"welcome_card": "Welkomstkaart",
|
"welcome_card": "Welkomstkaart",
|
||||||
|
"workflows": "Workflows",
|
||||||
"workspace_configuration": "Werkruimte-configuratie",
|
"workspace_configuration": "Werkruimte-configuratie",
|
||||||
"workspace_created_successfully": "Project succesvol aangemaakt",
|
"workspace_created_successfully": "Project succesvol aangemaakt",
|
||||||
"workspace_creation_description": "Organiseer enquêtes in werkruimtes voor beter toegangsbeheer.",
|
"workspace_creation_description": "Organiseer enquêtes in werkruimtes voor beter toegangsbeheer.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Waarde",
|
"attribute_value": "Waarde",
|
||||||
"attribute_value_placeholder": "Attribuutwaarde",
|
"attribute_value_placeholder": "Attribuutwaarde",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Kon {count} nieuwe attribu(u)t(en) niet aanmaken omdat dit de maximale limiet van {limit} attribuutklassen zou overschrijden. Bestaande attributen zijn succesvol bijgewerkt.",
|
"attributes_msg_attribute_limit_exceeded": "Kon {count} nieuwe attribu(u)t(en) niet aanmaken omdat dit de maximale limiet van {limit} attribuutklassen zou overschrijden. Bestaande attributen zijn succesvol bijgewerkt.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (attribuut '{key}' heeft dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (attribuut “{key}” heeft dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "Het e-mailadres bestaat al voor deze omgeving en is niet bijgewerkt.",
|
"attributes_msg_email_already_exists": "Het e-mailadres bestaat al voor deze omgeving en is niet bijgewerkt.",
|
||||||
"attributes_msg_email_or_userid_required": "E-mailadres of userId is vereist. De bestaande waarden zijn behouden.",
|
"attributes_msg_email_or_userid_required": "E-mail of gebruikers-ID is vereist. De bestaande waarden zijn behouden.",
|
||||||
"attributes_msg_new_attribute_created": "Nieuw attribuut '{key}' aangemaakt met type '{dataType}'",
|
"attributes_msg_new_attribute_created": "Nieuw attribuut “{key}” aangemaakt met type “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "De userId bestaat al voor deze omgeving en is niet bijgewerkt.",
|
"attributes_msg_userid_already_exists": "De gebruikers-ID bestaat al voor deze omgeving en is niet bijgewerkt.",
|
||||||
"contact_deleted_successfully": "Contact succesvol verwijderd",
|
"contact_deleted_successfully": "Contact succesvol verwijderd",
|
||||||
"contact_not_found": "Er is geen dergelijk contact gevonden",
|
"contact_not_found": "Er is geen dergelijk contact gevonden",
|
||||||
"contacts_table_refresh": "Vernieuw contacten",
|
"contacts_table_refresh": "Vernieuw contacten",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Systeemkenmerken",
|
"system_attributes": "Systeemkenmerken",
|
||||||
"unlock_contacts_description": "Beheer contacten en verstuur gerichte enquêtes",
|
"unlock_contacts_description": "Beheer contacten en verstuur gerichte enquêtes",
|
||||||
"unlock_contacts_title": "Ontgrendel contacten met een hoger abonnement",
|
"unlock_contacts_title": "Ontgrendel contacten met een hoger abonnement",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Attribuut \"{key}\" is getypeerd als \"{dataType}\" maar CSV bevat ongeldige waarden: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Attribuut “{key}” is getypeerd als “{dataType}” maar CSV bevat ongeldige waarden: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Dubbele koppelingen gevonden voor de volgende attributen: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Dubbele koppelingen gevonden voor de volgende attributen: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "Bestandsgrootte overschrijdt de maximale limiet van 800KB",
|
"upload_contacts_error_file_too_large": "Bestandsgrootte overschrijdt de maximale limiet van 800KB",
|
||||||
"upload_contacts_error_generic": "Er is een fout opgetreden bij het uploaden van de contacten. Probeer het later opnieuw.",
|
"upload_contacts_error_generic": "Er is een fout opgetreden bij het uploaden van de contacten. Probeer het later opnieuw.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Maak opnieuw verbinding",
|
"reconnect_button": "Maak opnieuw verbinding",
|
||||||
"reconnect_button_description": "Je Google Sheets-verbinding is verlopen. Maak opnieuw verbinding om door te gaan met het synchroniseren van antwoorden. Je bestaande spreadsheetlinks en gegevens blijven behouden.",
|
"reconnect_button_description": "Je Google Sheets-verbinding is verlopen. Maak opnieuw verbinding om door te gaan met het synchroniseren van antwoorden. Je bestaande spreadsheetlinks en gegevens blijven behouden.",
|
||||||
"reconnect_button_tooltip": "Maak opnieuw verbinding met de integratie om je toegang te vernieuwen. Je bestaande spreadsheetlinks en gegevens blijven behouden.",
|
"reconnect_button_tooltip": "Maak opnieuw verbinding met de integratie om je toegang te vernieuwen. Je bestaande spreadsheetlinks en gegevens blijven behouden.",
|
||||||
"spreadsheet_permission_error": "Je hebt geen toestemming om deze spreadsheet te openen. Zorg ervoor dat de spreadsheet is gedeeld met je Google-account en dat je schrijftoegang hebt tot de spreadsheet.",
|
"spreadsheet_permission_error": "Je hebt geen toegang tot dit spreadsheet. Zorg ervoor dat het spreadsheet is gedeeld met je Google-account en dat je schrijftoegang hebt tot het spreadsheet.",
|
||||||
"spreadsheet_url": "Spreadsheet-URL",
|
"spreadsheet_url": "Spreadsheet-URL",
|
||||||
"token_expired_error": "Het vernieuwingstoken van Google Sheets is verlopen of ingetrokken. Maak opnieuw verbinding met de integratie."
|
"token_expired_error": "Het vernieuwingstoken van Google Sheets is verlopen of ingetrokken. Maak opnieuw verbinding met de integratie."
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "Huidig abonnement",
|
"current_plan": "Huidig abonnement",
|
||||||
"current_tier_limit": "Huidige niveaulimiet",
|
"current_tier_limit": "Huidige niveaulimiet",
|
||||||
"custom": "Aangepast en schaal",
|
"custom": "Aangepast en schaal",
|
||||||
"custom_contacts_limit": "Aangepaste contactlimiet",
|
"custom_contacts_limit": "Aangepaste contactenlimiet",
|
||||||
"custom_response_limit": "Aangepaste reactielimiet",
|
"custom_response_limit": "Aangepaste reactielimiet",
|
||||||
"custom_workspace_limit": "Aangepaste werkruimtelimiet",
|
"custom_workspace_limit": "Aangepaste werkruimtelimiet",
|
||||||
"email_embedded_surveys": "Ingebedde enquêtes per e-mail",
|
"email_embedded_surveys": "Ingebedde enquêtes per e-mail",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "De licentiesleutel is ongeldig. Controleer je ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "De licentiesleutel is ongeldig. Controleer je ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Licentiecontrole geslaagd",
|
"recheck_license_success": "Licentiecontrole geslaagd",
|
||||||
"recheck_license_unreachable": "Licentieserver is niet bereikbaar. Probeer het later opnieuw.",
|
"recheck_license_unreachable": "Licentieserver is niet bereikbaar. Probeer het later opnieuw.",
|
||||||
"rechecking": "Opnieuw controleren...",
|
"rechecking": "Opnieuw controleren…",
|
||||||
"request_30_day_trial_license": "Vraag een proeflicentie van 30 dagen aan",
|
"request_30_day_trial_license": "Vraag een proeflicentie van 30 dagen aan",
|
||||||
"saml_sso": "SAML-SSO",
|
"saml_sso": "SAML-SSO",
|
||||||
"service_level_agreement": "Service Level Overeenkomst",
|
"service_level_agreement": "Service Level Overeenkomst",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Hé {userName}",
|
"email_customization_preview_email_heading": "Hé {userName}",
|
||||||
"email_customization_preview_email_text": "Dit is een e-mailvoorbeeld om u te laten zien welk logo in de e-mails wordt weergegeven.",
|
"email_customization_preview_email_text": "Dit is een e-mailvoorbeeld om u te laten zien welk logo in de e-mails wordt weergegeven.",
|
||||||
"error_deleting_organization_please_try_again": "Fout bij verwijderen van organisatie. Probeer het opnieuw.",
|
"error_deleting_organization_please_try_again": "Fout bij verwijderen van organisatie. Probeer het opnieuw.",
|
||||||
"from_your_organization": "vanuit uw organisatie",
|
"from_your_organization": "{memberName} uit je organisatie",
|
||||||
"invitation_sent_once_more": "Uitnodiging nogmaals verzonden.",
|
"invitation_sent_once_more": "Uitnodiging nogmaals verzonden.",
|
||||||
"invite_deleted_successfully": "Uitnodiging succesvol verwijderd",
|
"invite_deleted_successfully": "Uitnodiging succesvol verwijderd",
|
||||||
"invite_expires_on": "Uitnodiging verloopt op {date}",
|
"invite_expires_on": "Uitnodiging verloopt op {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Meldingsinstellingen bijgewerkt",
|
"notification_settings_updated": "Meldingsinstellingen bijgewerkt",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Stel een waarschuwing in om een e-mail te ontvangen bij nieuwe reacties",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Stel een waarschuwing in om een e-mail te ontvangen bij nieuwe reacties",
|
||||||
"use_the_integration": "Gebruik de integratie",
|
"use_the_integration": "Gebruik de integratie",
|
||||||
"want_to_loop_in_organization_mates": "Ik wil organisatiegenoten inschakelen",
|
"want_to_loop_in_organization_mates": "Wil je organisatiegenoten op de hoogte brengen?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "U wordt niet meer automatisch ingeschreven voor de enquêtes van deze organisatie!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "U wordt niet meer automatisch ingeschreven voor de enquêtes van deze organisatie!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "U ontvangt geen e-mails meer voor reacties op deze enquête!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "U ontvangt geen e-mails meer voor reacties op deze enquête!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Voeg een tijdelijke aanduiding toe om aan te geven of er geen waarde is om te onthouden.",
|
"add_fallback_placeholder": "Voeg een tijdelijke aanduiding toe om aan te geven of er geen waarde is om te onthouden.",
|
||||||
"add_hidden_field_id": "Voeg een verborgen veld-ID toe",
|
"add_hidden_field_id": "Voeg een verborgen veld-ID toe",
|
||||||
"add_highlight_border": "Markeerrand toevoegen",
|
"add_highlight_border": "Markeerrand toevoegen",
|
||||||
|
"add_highlight_border_description": "Geldt alleen voor in-product enquêtes.",
|
||||||
"add_logic": "Voeg logica toe",
|
"add_logic": "Voeg logica toe",
|
||||||
"add_none_of_the_above": "Voeg 'Geen van bovenstaande' toe",
|
"add_none_of_the_above": "Voeg 'Geen van bovenstaande' toe",
|
||||||
"add_option": "Optie toevoegen",
|
"add_option": "Optie toevoegen",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Pas het bericht 'Enquête gesloten' aan",
|
"adjust_survey_closed_message": "Pas het bericht 'Enquête gesloten' aan",
|
||||||
"adjust_survey_closed_message_description": "Wijzig het bericht dat bezoekers zien wanneer de enquête wordt gesloten.",
|
"adjust_survey_closed_message_description": "Wijzig het bericht dat bezoekers zien wanneer de enquête wordt gesloten.",
|
||||||
"adjust_the_theme_in_the": "Pas het thema aan in de",
|
"adjust_the_theme_in_the": "Pas het thema aan in de",
|
||||||
|
"all_are_true": "alle zijn waar",
|
||||||
"all_other_answers_will_continue_to": "Alle andere antwoorden blijven hetzelfde",
|
"all_other_answers_will_continue_to": "Alle andere antwoorden blijven hetzelfde",
|
||||||
"allow_multi_select": "Multi-select toestaan",
|
"allow_multi_select": "Multi-select toestaan",
|
||||||
"allow_multiple_files": "Meerdere bestanden toestaan",
|
"allow_multiple_files": "Meerdere bestanden toestaan",
|
||||||
"allow_users_to_select_more_than_one_image": "Sta gebruikers toe meer dan één afbeelding te selecteren",
|
"allow_users_to_select_more_than_one_image": "Sta gebruikers toe meer dan één afbeelding te selecteren",
|
||||||
"and_launch_surveys_in_your_website_or_app": "en start enquêtes op uw website of app.",
|
"and_launch_surveys_in_your_website_or_app": "en start enquêtes op uw website of app.",
|
||||||
"animation": "Animatie",
|
"animation": "Animatie",
|
||||||
|
"any_is_true": "een is waar",
|
||||||
"app_survey_description": "Sluit een enquête in uw web-app of website in om reacties te verzamelen.",
|
"app_survey_description": "Sluit een enquête in uw web-app of website in om reacties te verzamelen.",
|
||||||
"assign": "Toewijzen =",
|
"assign": "Toewijzen =",
|
||||||
"audience": "Publiek",
|
"audience": "Publiek",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Berekenen",
|
"calculate": "Berekenen",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Leg een nieuwe actie vast om een enquête over te activeren.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Leg een nieuwe actie vast om een enquête over te activeren.",
|
||||||
"capture_ip_address": "IP-adres vastleggen",
|
"capture_ip_address": "IP-adres vastleggen",
|
||||||
"capture_ip_address_description": "Sla het IP-adres van de respondent op in de metadata van het antwoord voor detectie van duplicaten en beveiligingsdoeleinden",
|
"capture_ip_address_description": "Bewaar het IP-adres van de respondent in de metadata van het antwoord voor duplicaatdetectie en beveiligingsdoeleinden",
|
||||||
"capture_new_action": "Leg nieuwe actie vast",
|
"capture_new_action": "Leg nieuwe actie vast",
|
||||||
"card_arrangement_for_survey_type_derived": "Kaartarrangement voor {surveyTypeDerived} enquêtes",
|
"card_arrangement_for_survey_type_derived": "Kaartarrangement voor {surveyTypeDerived} enquêtes",
|
||||||
"card_background_color": "Achtergrondkleur van de kaart",
|
"card_background_color": "Achtergrondkleur van de kaart",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Casual",
|
"casual": "Casual",
|
||||||
"caution_edit_duplicate": "Dupliceren en bewerken",
|
"caution_edit_duplicate": "Dupliceren en bewerken",
|
||||||
"caution_edit_published_survey": "Een gepubliceerde enquête bewerken?",
|
"caution_edit_published_survey": "Een gepubliceerde enquête bewerken?",
|
||||||
"caution_explanation_intro": "We begrijpen dat u misschien nog wijzigingen wilt aanbrengen. Dit is wat er gebeurt als je dat doet:",
|
"caution_explanation_intro": "We begrijpen dat je mogelijk nog wijzigingen wilt aanbrengen. Dit gebeurt er als je dat doet:",
|
||||||
"caution_explanation_new_responses_separated": "Reacties van vóór de wijziging zijn mogelijk niet of slechts gedeeltelijk opgenomen in de onderzoekssamenvatting.",
|
"caution_explanation_new_responses_separated": "Reacties van vóór de wijziging zijn mogelijk niet of slechts gedeeltelijk opgenomen in de onderzoekssamenvatting.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Alle gegevens, inclusief eerdere antwoorden, blijven beschikbaar als download op de overzichtspagina van de enquête.",
|
"caution_explanation_only_new_responses_in_summary": "Alle gegevens, inclusief eerdere antwoorden, blijven beschikbaar als download op de overzichtspagina van de enquête.",
|
||||||
"caution_explanation_responses_are_safe": "Oudere en nieuwere antwoorden lopen door elkaar heen, wat kan leiden tot misleidende gegevenssamenvattingen.",
|
"caution_explanation_responses_are_safe": "Oudere en nieuwere antwoorden lopen door elkaar heen, wat kan leiden tot misleidende gegevenssamenvattingen.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Follow-up bijgewerkt en wordt opgeslagen zodra u de enquête opslaat.",
|
"follow_ups_modal_updated_successfull_toast": "Follow-up bijgewerkt en wordt opgeslagen zodra u de enquête opslaat.",
|
||||||
"follow_ups_new": "Nieuw vervolg",
|
"follow_ups_new": "Nieuw vervolg",
|
||||||
"follow_ups_upgrade_button_text": "Upgrade om follow-ups mogelijk te maken",
|
"follow_ups_upgrade_button_text": "Upgrade om follow-ups mogelijk te maken",
|
||||||
"form_styling": "Vorm styling",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK is niet verbonden",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK is niet verbonden",
|
||||||
"four_points": "4 punten",
|
"four_points": "4 punten",
|
||||||
"heading": "Rubriek",
|
"heading": "Rubriek",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Optie {choiceIndex}",
|
"option_idx": "Optie {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Deze optie wordt gebruikt in de logica van vraag {questionIndex}. Verwijder het eerst uit de logica.",
|
"option_used_in_logic_error": "Deze optie wordt gebruikt in de logica van vraag {questionIndex}. Verwijder het eerst uit de logica.",
|
||||||
"optional": "Optioneel",
|
"optional": "Optioneel",
|
||||||
"options": "Opties",
|
"options": "Opties*",
|
||||||
"options_used_in_logic_bulk_error": "De volgende opties worden gebruikt in logica: {questionIndexes}. Verwijder ze eerst uit de logica.",
|
"options_used_in_logic_bulk_error": "De volgende opties worden gebruikt in logica: {questionIndexes}. Verwijder ze eerst uit de logica.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Overschrijf het thema met individuele stijlen voor deze enquête.",
|
"override_theme_with_individual_styles_for_this_survey": "Overschrijf het thema met individuele stijlen voor deze enquête.",
|
||||||
"overwrite_global_waiting_time": "Aangepaste afkoelperiode instellen",
|
"overwrite_global_waiting_time": "Aangepaste afkoelperiode instellen",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Vraag verwijderd.",
|
"question_deleted": "Vraag verwijderd.",
|
||||||
"question_duplicated": "Vraag dubbel gesteld.",
|
"question_duplicated": "Vraag dubbel gesteld.",
|
||||||
"question_id_updated": "Vraag-ID bijgewerkt",
|
"question_id_updated": "Vraag-ID bijgewerkt",
|
||||||
|
"question_number": "Vraag {number}",
|
||||||
"question_used_in_logic_warning_text": "Elementen uit dit blok worden gebruikt in een logische regel, weet je zeker dat je het wilt verwijderen?",
|
"question_used_in_logic_warning_text": "Elementen uit dit blok worden gebruikt in een logische regel, weet je zeker dat je het wilt verwijderen?",
|
||||||
"question_used_in_logic_warning_title": "Logica-inconsistentie",
|
"question_used_in_logic_warning_title": "Logica-inconsistentie",
|
||||||
"question_used_in_quota": "Deze vraag wordt gebruikt in het quotum “{quotaName}”",
|
"question_used_in_quota": "Deze vraag wordt gebruikt in het quotum “{quotaName}”",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Reactielimieten, omleidingen en meer.",
|
"response_limits_redirections_and_more": "Reactielimieten, omleidingen en meer.",
|
||||||
"response_options": "Reactieopties",
|
"response_options": "Reactieopties",
|
||||||
"roundness": "Rondheid",
|
"roundness": "Rondheid",
|
||||||
"roundness_description": "Bepaalt hoe afgerond de kaarthoeken zijn.",
|
"roundness_description": "Bepaalt hoe afgerond de hoeken zijn.",
|
||||||
"row_used_in_logic_error": "Deze rij wordt gebruikt in de logica van vraag {questionIndex}. Verwijder het eerst uit de logica.",
|
"row_used_in_logic_error": "Deze rij wordt gebruikt in de logica van vraag {questionIndex}. Verwijder het eerst uit de logica.",
|
||||||
"rows": "Rijen",
|
"rows": "Rijen",
|
||||||
"save_and_close": "Opslaan en sluiten",
|
"save_and_close": "Opslaan en sluiten",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Deze gratis en open source-enquête is gesloten",
|
"survey_completed_subheading": "Deze gratis en open source-enquête is gesloten",
|
||||||
"survey_display_settings": "Enquêteweergave-instellingen",
|
"survey_display_settings": "Enquêteweergave-instellingen",
|
||||||
"survey_placement": "Enquête plaatsing",
|
"survey_placement": "Enquête plaatsing",
|
||||||
|
"survey_styling": "Vorm styling",
|
||||||
"survey_trigger": "Enquêtetrigger",
|
"survey_trigger": "Enquêtetrigger",
|
||||||
"switch_multi_language_on_to_get_started": "Schakel meertaligheid in om te beginnen 👉",
|
"switch_multi_language_on_to_get_started": "Schakel meertaligheid in om te beginnen 👉",
|
||||||
"target_block_not_found": "Doelblok niet gevonden",
|
"target_block_not_found": "Doelblok niet gevonden",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Komt overeen met regex-patroon",
|
"pattern": "Komt overeen met regex-patroon",
|
||||||
"phone": "Is geldig telefoonnummer",
|
"phone": "Is geldig telefoonnummer",
|
||||||
"rank_all_options": "Rangschik alle opties",
|
"rank_all_options": "Rangschik alle opties",
|
||||||
"select_file_extensions": "Selecteer bestandsextensies...",
|
"select_file_extensions": "Selecteer bestandsextensies…",
|
||||||
"select_option": "Optie selecteren",
|
"select_option": "Optie selecteren",
|
||||||
"start_date": "Startdatum",
|
"start_date": "Startdatum",
|
||||||
"url": "Is geldige URL"
|
"url": "Is geldige URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Afkoelperiode (voor alle enquêtes)",
|
"waiting_time_across_surveys": "Afkoelperiode (voor alle enquêtes)",
|
||||||
"waiting_time_across_surveys_description": "Om enquêtemoeheid te voorkomen, kies hoe deze enquête omgaat met de workspace-brede afkoelperiode.",
|
"waiting_time_across_surveys_description": "Om enquêtemoeheid te voorkomen, kies hoe deze enquête omgaat met de workspace-brede afkoelperiode.",
|
||||||
"welcome_message": "Welkomstbericht",
|
"welcome_message": "Welkomstbericht",
|
||||||
|
"when": "Wanneer",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Zonder filter kunnen al uw gebruikers worden bevraagd.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Zonder filter kunnen al uw gebruikers worden bevraagd.",
|
||||||
"you_have_not_created_a_segment_yet": "U heeft nog geen segment aangemaakt",
|
"you_have_not_created_a_segment_yet": "U heeft nog geen segment aangemaakt",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Je moet twee of meer talen hebben ingesteld in je werkruimte om met vertalingen te kunnen werken.",
|
|
||||||
"your_description_here_recall_information_with": "Uw beschrijving hier. Roep informatie op met @",
|
"your_description_here_recall_information_with": "Uw beschrijving hier. Roep informatie op met @",
|
||||||
"your_question_here_recall_information_with": "Uw vraag hier. Roep informatie op met @",
|
"your_question_here_recall_information_with": "Uw vraag hier. Roep informatie op met @",
|
||||||
"your_web_app": "Uw web-app",
|
"your_web_app": "Uw web-app",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Schakel links voor eenmalig gebruik uit",
|
"disable_single_use_link_modal_button": "Schakel links voor eenmalig gebruik uit",
|
||||||
"disable_single_use_link_modal_description": "Als u links voor eenmalig gebruik hebt gedeeld, kunnen deelnemers niet langer op de enquête reageren.",
|
"disable_single_use_link_modal_description": "Als u links voor eenmalig gebruik hebt gedeeld, kunnen deelnemers niet langer op de enquête reageren.",
|
||||||
"generate_and_download_links": "Genereer en download links",
|
"generate_and_download_links": "Genereer en download links",
|
||||||
"generate_links_error": "Er konden geen links voor eenmalig gebruik worden gegenereerd. Werk rechtstreeks met de API",
|
"generate_links_error": "Eenmalige links konden niet worden gegenereerd. Werk alstublieft direct met de API.",
|
||||||
"multi_use_link": "Multifunctionele koppeling",
|
"multi_use_link": "Multifunctionele koppeling",
|
||||||
"multi_use_link_description": "Verzamel meerdere reacties van anonieme respondenten met één link.",
|
"multi_use_link_description": "Verzamel meerdere reacties van anonieme respondenten met één link.",
|
||||||
"multi_use_powers_other_channels_description": "Als u dit uitschakelt, worden deze andere distributiekanalen ook uitgeschakeld.",
|
"multi_use_powers_other_channels_description": "Als u dit uitschakelt, worden deze andere distributiekanalen ook uitgeschakeld.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Filter toegevoegd voor antwoorden waarbij het antwoord op vraag {questionIdx} {filterComboBoxValue} - {filterValue} is",
|
"added_filter_for_responses_where_answer_to_question": "Filter toegevoegd voor reacties waar het antwoord op vraag {questionIdx} {filterComboBoxValue} - {filterValue} is",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filter toegevoegd voor antwoorden waarbij het antwoord op vraag {questionIdx} wordt overgeslagen",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filter toegevoegd voor antwoorden waarbij het antwoord op vraag {questionIdx} wordt overgeslagen",
|
||||||
"aggregated": "Geaggregeerd",
|
"aggregated": "Geaggregeerd",
|
||||||
"all_responses_csv": "Alle reacties (CSV)",
|
"all_responses_csv": "Alle reacties (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Begint",
|
"starts": "Begint",
|
||||||
"starts_tooltip": "Aantal keren dat de enquête is gestart.",
|
"starts_tooltip": "Aantal keren dat de enquête is gestart.",
|
||||||
"survey_reset_successfully": "Enquête opnieuw ingesteld! {responseCount} reacties en {displayCount} displays zijn verwijderd.",
|
"survey_reset_successfully": "Enquête opnieuw ingesteld! {responseCount} reacties en {displayCount} displays zijn verwijderd.",
|
||||||
|
"survey_results": "Resultaten van {surveyName}",
|
||||||
"this_month": "Deze maand",
|
"this_month": "Deze maand",
|
||||||
"this_quarter": "Dit kwartaal",
|
"this_quarter": "Dit kwartaal",
|
||||||
"this_year": "Dit jaar",
|
"this_year": "Dit jaar",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Voeg een achtergrondkleur toe aan de logocontainer.",
|
"add_background_color_description": "Voeg een achtergrondkleur toe aan de logocontainer.",
|
||||||
"advanced_styling_field_border_radius": "Hoekradius",
|
"advanced_styling_field_border_radius": "Hoekradius",
|
||||||
"advanced_styling_field_button_bg": "Knopachtergrond",
|
"advanced_styling_field_button_bg": "Knopachtergrond",
|
||||||
"advanced_styling_field_button_bg_description": "Vult de volgende/verzend-knop.",
|
"advanced_styling_field_button_bg_description": "Vult de “Volgende” / “Verzenden” knop.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Rondt de knophoeken af.",
|
"advanced_styling_field_button_border_radius_description": "Rondt de knophoeken af.",
|
||||||
"advanced_styling_field_button_font_size_description": "Schaalt de tekst van het knoplabel.",
|
"advanced_styling_field_button_font_size_description": "Schaalt de tekst van het knoplabel.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Maakt knoptekst lichter of vetter.",
|
"advanced_styling_field_button_font_weight_description": "Maakt knoptekst lichter of vetter.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Lettergrootte beschrijving",
|
"advanced_styling_field_description_size": "Lettergrootte beschrijving",
|
||||||
"advanced_styling_field_description_size_description": "Schaalt de beschrijvingstekst.",
|
"advanced_styling_field_description_size_description": "Schaalt de beschrijvingstekst.",
|
||||||
"advanced_styling_field_description_weight": "Letterdikte beschrijving",
|
"advanced_styling_field_description_weight": "Letterdikte beschrijving",
|
||||||
"advanced_styling_field_description_weight_description": "Maakt beschrijvingstekst lichter of vetter.",
|
"advanced_styling_field_description_weight_description": "Maakt de beschrijvingstekst lichter of vetter.",
|
||||||
"advanced_styling_field_font_size": "Lettergrootte",
|
"advanced_styling_field_font_size": "Lettergrootte",
|
||||||
"advanced_styling_field_font_weight": "Letterdikte",
|
"advanced_styling_field_font_weight": "Letterdikte",
|
||||||
"advanced_styling_field_headline_color": "Kopkleur",
|
"advanced_styling_field_headline_color": "Kopkleur",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Kleurt de getypte tekst in invoervelden.",
|
"advanced_styling_field_input_text_description": "Kleurt de getypte tekst in invoervelden.",
|
||||||
"advanced_styling_field_option_bg": "Achtergrond",
|
"advanced_styling_field_option_bg": "Achtergrond",
|
||||||
"advanced_styling_field_option_bg_description": "Vult de optie-items.",
|
"advanced_styling_field_option_bg_description": "Vult de optie-items.",
|
||||||
|
"advanced_styling_field_option_border": "Randkleur",
|
||||||
|
"advanced_styling_field_option_border_description": "Omlijnt radio- en checkboxopties.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Rondt de hoeken van opties af.",
|
"advanced_styling_field_option_border_radius_description": "Rondt de hoeken van opties af.",
|
||||||
"advanced_styling_field_option_font_size_description": "Schaalt de tekst van optielabels.",
|
"advanced_styling_field_option_font_size_description": "Schaalt de tekst van optielabels.",
|
||||||
"advanced_styling_field_option_label": "Labelkleur",
|
"advanced_styling_field_option_label": "Labelkleur",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Toon 'Powered by Formbricks' handtekening",
|
"show_powered_by_formbricks": "Toon 'Powered by Formbricks' handtekening",
|
||||||
"styling_updated_successfully": "Styling succesvol bijgewerkt",
|
"styling_updated_successfully": "Styling succesvol bijgewerkt",
|
||||||
"suggest_colors": "Kleuren voorstellen",
|
"suggest_colors": "Kleuren voorstellen",
|
||||||
"suggested_colors_applied_please_save": "Voorgestelde kleuren succesvol gegenereerd. Druk op \"Opslaan\" om de wijzigingen te behouden.",
|
"suggested_colors_applied_please_save": "Voorgestelde kleuren succesvol gegenereerd. Druk op “Opslaan” om de wijzigingen te behouden.",
|
||||||
"theme": "Thema",
|
"theme": "Thema",
|
||||||
"theme_settings_description": "Maak een stijlthema voor alle enquêtes. Je kunt aangepaste styling inschakelen voor elke enquête."
|
"theme_settings_description": "Maak een stijlthema voor alle enquêtes. Je kunt aangepaste styling inschakelen voor elke enquête."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Controleer ook uw spammap als u de e-mail niet in uw inbox ziet.",
|
"check_inbox_or_spam": "Controleer ook uw spammap als u de e-mail niet in uw inbox ziet.",
|
||||||
"completed": "Deze enquête is gesloten.",
|
"completed": "Deze enquête is gesloten.",
|
||||||
"create_your_own": "Creëer uw eigen open source-enquête",
|
"create_your_own": "Creëer uw eigen open source-enquête",
|
||||||
"enter_pin": "Deze enquête is beveiligd. Voer hieronder de pincode in",
|
"enter_pin": "Deze enquête is beveiligd. Voer hieronder de pincode in.",
|
||||||
"just_curious": "Gewoon nieuwsgierig?",
|
"just_curious": "Gewoon nieuwsgierig?",
|
||||||
"link_invalid": "Aan deze enquête kan alleen op uitnodiging worden deelgenomen.",
|
"link_invalid": "Aan deze enquête kan alleen op uitnodiging worden deelgenomen.",
|
||||||
"paused": "Deze enquête is tijdelijk onderbroken.",
|
"paused": "Deze enquête is tijdelijk onderbroken.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Hoe kan het bedrijf de afstemming van zijn visie en strategie verbeteren?",
|
"alignment_and_engagement_survey_question_4_headline": "Hoe kan het bedrijf de afstemming van zijn visie en strategie verbeteren?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Typ hier uw antwoord...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Typ hier uw antwoord...",
|
||||||
"back": "Rug",
|
"back": "Rug",
|
||||||
|
"block_1": "Blok 1",
|
||||||
|
"block_10": "Blok 10",
|
||||||
|
"block_2": "Blok 2",
|
||||||
|
"block_3": "Blok 3",
|
||||||
|
"block_4": "Blok 4",
|
||||||
|
"block_5": "Blok 5",
|
||||||
|
"block_6": "Blok 6",
|
||||||
|
"block_7": "Blok 7",
|
||||||
|
"block_8": "Blok 8",
|
||||||
|
"block_9": "Blok 9",
|
||||||
"book_interview": "Boek interview",
|
"book_interview": "Boek interview",
|
||||||
"build_product_roadmap_description": "Identificeer het ENE wat uw gebruikers het liefst willen en bouw het.",
|
"build_product_roadmap_description": "Identificeer het ENE wat uw gebruikers het liefst willen en bouw het.",
|
||||||
"build_product_roadmap_name": "Productroadmap opstellen",
|
"build_product_roadmap_name": "Productroadmap opstellen",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Euh, sorry! Kunnen we iets doen om uw ervaring te verbeteren?",
|
"csat_survey_question_3_headline": "Euh, sorry! Kunnen we iets doen om uw ervaring te verbeteren?",
|
||||||
"csat_survey_question_3_placeholder": "Typ hier uw antwoord...",
|
"csat_survey_question_3_placeholder": "Typ hier uw antwoord...",
|
||||||
"cta_description": "Geef informatie weer en vraag gebruikers om een specifieke actie te ondernemen",
|
"cta_description": "Geef informatie weer en vraag gebruikers om een specifieke actie te ondernemen",
|
||||||
"custom_survey_block_1_name": "Blok 1",
|
|
||||||
"custom_survey_description": "Maak een enquête zonder sjabloon.",
|
"custom_survey_description": "Maak een enquête zonder sjabloon.",
|
||||||
"custom_survey_name": "Begin helemaal opnieuw",
|
"custom_survey_name": "Begin helemaal opnieuw",
|
||||||
"custom_survey_question_1_headline": "Wat zou je willen weten?",
|
"custom_survey_question_1_headline": "Wat zou je willen weten?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Nee, dank je!",
|
"preview_survey_question_2_choice_2_label": "Nee, dank je!",
|
||||||
"preview_survey_question_2_headline": "Wil je op de hoogte blijven?",
|
"preview_survey_question_2_headline": "Wil je op de hoogte blijven?",
|
||||||
"preview_survey_question_2_subheader": "Dit is een voorbeeldbeschrijving.",
|
"preview_survey_question_2_subheader": "Dit is een voorbeeldbeschrijving.",
|
||||||
|
"preview_survey_question_open_text_headline": "Wil je nog iets delen?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Typ hier je antwoord...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Je feedback helpt ons verbeteren.",
|
||||||
"preview_survey_welcome_card_headline": "Welkom!",
|
"preview_survey_welcome_card_headline": "Welkom!",
|
||||||
"prioritize_features_description": "Identificeer functies die uw gebruikers het meest en het minst nodig hebben.",
|
"prioritize_features_description": "Identificeer functies die uw gebruikers het meest en het minst nodig hebben.",
|
||||||
"prioritize_features_name": "Geef prioriteit aan functies",
|
"prioritize_features_name": "Geef prioriteit aan functies",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Individueel onderzoek",
|
"professional_development_survey_question_2_choice_5": "Individueel onderzoek",
|
||||||
"professional_development_survey_question_2_choice_6": "Ander",
|
"professional_development_survey_question_2_choice_6": "Ander",
|
||||||
"professional_development_survey_question_2_headline": "Welke soorten professionele ontwikkelingsactiviteiten zouden volgens u het meest waardevol zijn voor uw groei?",
|
"professional_development_survey_question_2_headline": "Welke soorten professionele ontwikkelingsactiviteiten zouden volgens u het meest waardevol zijn voor uw groei?",
|
||||||
"professional_development_survey_question_2_subheader": "Selecteer alles wat van toepassing is",
|
"professional_development_survey_question_2_subheader": "Selecteer alles wat van toepassing is:",
|
||||||
"professional_development_survey_question_3_choice_1": "Ja",
|
"professional_development_survey_question_3_choice_1": "Ja",
|
||||||
"professional_development_survey_question_3_choice_2": "Nee",
|
"professional_development_survey_question_3_choice_2": "Nee",
|
||||||
"professional_development_survey_question_3_headline": "Heeft u in het verleden tijd besteed aan uw professionele ontwikkeling?",
|
"professional_development_survey_question_3_headline": "Heeft u in het verleden tijd besteed aan uw professionele ontwikkeling?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Ik voelde me zelfverzekerd tijdens het gebruik van het systeem.",
|
"usability_question_9_headline": "Ik voelde me zelfverzekerd tijdens het gebruik van het systeem.",
|
||||||
"usability_rating_description": "Meet de waargenomen bruikbaarheid door gebruikers te vragen hun ervaring met uw product te beoordelen met behulp van een gestandaardiseerde enquête met tien vragen.",
|
"usability_rating_description": "Meet de waargenomen bruikbaarheid door gebruikers te vragen hun ervaring met uw product te beoordelen met behulp van een gestandaardiseerde enquête met tien vragen.",
|
||||||
"usability_score_name": "Systeembruikbaarheidsscore (SUS)"
|
"usability_score_name": "Systeembruikbaarheidsscore (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Bedankt voor het delen van je workflow-idee met ons! We zijn momenteel bezig met het ontwerpen van deze functie en jouw feedback helpt ons om precies te bouwen wat je nodig hebt.",
|
||||||
|
"coming_soon_title": "We zijn er bijna!",
|
||||||
|
"follow_up_label": "Is er nog iets dat je wilt toevoegen?",
|
||||||
|
"follow_up_placeholder": "Welke specifieke taken wil je automatiseren? Zijn er tools of integraties die je wilt meenemen?",
|
||||||
|
"generate_button": "Genereer workflow",
|
||||||
|
"heading": "Welke workflow wil je maken?",
|
||||||
|
"placeholder": "Beschrijf de workflow die je wilt genereren…",
|
||||||
|
"subheading": "Genereer je workflow in enkele seconden.",
|
||||||
|
"submit_button": "Voeg details toe",
|
||||||
|
"thank_you_description": "Jouw input helpt ons om de Workflows-functie te bouwen die jij echt nodig hebt. We houden je op de hoogte van onze voortgang.",
|
||||||
|
"thank_you_title": "Bedankt voor je feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-32
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Copiar",
|
"copy": "Copiar",
|
||||||
"copy_code": "Copiar código",
|
"copy_code": "Copiar código",
|
||||||
"copy_link": "Copiar Link",
|
"copy_link": "Copiar Link",
|
||||||
"count_attributes": "{value, plural, one {{value} atributo} other {{value} atributos}}",
|
"count_attributes": "{count, plural, one {{count} atributo} other {{count} atributos}}",
|
||||||
"count_contacts": "{value, plural, one {# contato} other {# contatos} }",
|
"count_contacts": "{count, plural, one {{count} contato} other {{count} contatos}}",
|
||||||
"count_responses": "{value, plural, other {# respostas}}",
|
"count_members": "{count, plural, one {{count} membro} other {{count} membros}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} pergunta} other {{count} perguntas}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} resposta} other {{count} respostas}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} seleção} other {{count} seleções}}",
|
||||||
"create_new_organization": "Criar nova organização",
|
"create_new_organization": "Criar nova organização",
|
||||||
"create_segment": "Criar segmento",
|
"create_segment": "Criar segmento",
|
||||||
"create_survey": "Criar pesquisa",
|
"create_survey": "Criar pesquisa",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "dias",
|
"days": "dias",
|
||||||
"default": "Padrão",
|
"default": "Padrão",
|
||||||
"delete": "Apagar",
|
"delete": "Apagar",
|
||||||
|
"delete_what": "Excluir {deleteWhat}",
|
||||||
"description": "Descrição",
|
"description": "Descrição",
|
||||||
"dev_env": "Ambiente de Desenvolvimento",
|
"dev_env": "Ambiente de Desenvolvimento",
|
||||||
"development": "Desenvolvimento",
|
"development": "Desenvolvimento",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "baixar",
|
"download": "baixar",
|
||||||
"draft": "Rascunho",
|
"draft": "Rascunho",
|
||||||
"duplicate": "Duplicar",
|
"duplicate": "Duplicar",
|
||||||
|
"duplicate_copy": "(cópia)",
|
||||||
|
"duplicate_copy_number": "(cópia {copyNumber})",
|
||||||
"e_commerce": "comércio eletrônico",
|
"e_commerce": "comércio eletrônico",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Aparência e Experiência",
|
"look_and_feel": "Aparência e Experiência",
|
||||||
"manage": "gerenciar",
|
"manage": "gerenciar",
|
||||||
"marketing": "marketing",
|
"marketing": "marketing",
|
||||||
"member": "Membros",
|
|
||||||
"members": "Membros",
|
"members": "Membros",
|
||||||
"members_and_teams": "Membros e equipes",
|
"members_and_teams": "Membros e equipes",
|
||||||
"membership_not_found": "Assinatura não encontrada",
|
"membership_not_found": "Assinatura não encontrada",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Descer",
|
"move_down": "Descer",
|
||||||
"move_up": "Subir",
|
"move_up": "Subir",
|
||||||
"multiple_languages": "Vários idiomas",
|
"multiple_languages": "Vários idiomas",
|
||||||
|
"my_product": "meu produto",
|
||||||
"name": "Nome",
|
"name": "Nome",
|
||||||
"new": "Novo",
|
"new": "Novo",
|
||||||
"new_version_available": "Formbricks {version} chegou. Atualize agora!",
|
"new_version_available": "Formbricks {version} chegou. Atualize agora!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Selecionar times",
|
"select_teams": "Selecionar times",
|
||||||
"selected": "Selecionado",
|
"selected": "Selecionado",
|
||||||
"selected_questions": "Perguntas selecionadas",
|
"selected_questions": "Perguntas selecionadas",
|
||||||
"selection": "seleção",
|
|
||||||
"selections": "seleções",
|
|
||||||
"send_test_email": "Enviar e-mail de teste",
|
"send_test_email": "Enviar e-mail de teste",
|
||||||
"session_not_found": "Sessão não encontrada",
|
"session_not_found": "Sessão não encontrada",
|
||||||
"settings": "Configurações",
|
"settings": "Configurações",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Mostrar contagem de respostas",
|
"show_response_count": "Mostrar contagem de respostas",
|
||||||
"shown": "mostrado",
|
"shown": "mostrado",
|
||||||
"size": "Tamanho",
|
"size": "Tamanho",
|
||||||
|
"skip": "Pular",
|
||||||
"skipped": "Pulou",
|
"skipped": "Pulou",
|
||||||
"skips": "Pula",
|
"skips": "Pula",
|
||||||
"some_files_failed_to_upload": "Alguns arquivos falharam ao enviar",
|
"some_files_failed_to_upload": "Alguns arquivos falharam ao enviar",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Pesquisa de Site",
|
"website_survey": "Pesquisa de Site",
|
||||||
"weeks": "semanas",
|
"weeks": "semanas",
|
||||||
"welcome_card": "Cartão de boas-vindas",
|
"welcome_card": "Cartão de boas-vindas",
|
||||||
|
"workflows": "Fluxos de trabalho",
|
||||||
"workspace_configuration": "Configuração do projeto",
|
"workspace_configuration": "Configuração do projeto",
|
||||||
"workspace_created_successfully": "Projeto criado com sucesso",
|
"workspace_created_successfully": "Projeto criado com sucesso",
|
||||||
"workspace_creation_description": "Organize pesquisas em projetos para melhor controle de acesso.",
|
"workspace_creation_description": "Organize pesquisas em projetos para melhor controle de acesso.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Valor",
|
"attribute_value": "Valor",
|
||||||
"attribute_value_placeholder": "Valor do atributo",
|
"attribute_value_placeholder": "Valor do atributo",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Não foi possível criar {count} novo(s) atributo(s), pois excederia o limite máximo de {limit} classes de atributos. Os atributos existentes foram atualizados com sucesso.",
|
"attributes_msg_attribute_limit_exceeded": "Não foi possível criar {count} novo(s) atributo(s), pois excederia o limite máximo de {limit} classes de atributos. Os atributos existentes foram atualizados com sucesso.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (atributo '{key}' tem dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (o atributo “{key}” tem dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "O e-mail já existe para este ambiente e não foi atualizado.",
|
"attributes_msg_email_already_exists": "O e-mail já existe para este ambiente e não foi atualizado.",
|
||||||
"attributes_msg_email_or_userid_required": "E-mail ou userId é obrigatório. Os valores existentes foram preservados.",
|
"attributes_msg_email_or_userid_required": "E-mail ou ID de usuário é obrigatório. Os valores existentes foram preservados.",
|
||||||
"attributes_msg_new_attribute_created": "Novo atributo '{key}' criado com tipo '{dataType}'",
|
"attributes_msg_new_attribute_created": "Novo atributo “{key}” criado com tipo “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "O userId já existe para este ambiente e não foi atualizado.",
|
"attributes_msg_userid_already_exists": "O ID de usuário já existe para este ambiente e não foi atualizado.",
|
||||||
"contact_deleted_successfully": "Contato excluído com sucesso",
|
"contact_deleted_successfully": "Contato excluído com sucesso",
|
||||||
"contact_not_found": "Nenhum contato encontrado",
|
"contact_not_found": "Nenhum contato encontrado",
|
||||||
"contacts_table_refresh": "Atualizar contatos",
|
"contacts_table_refresh": "Atualizar contatos",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Atributos do sistema",
|
"system_attributes": "Atributos do sistema",
|
||||||
"unlock_contacts_description": "Gerencie contatos e envie pesquisas direcionadas",
|
"unlock_contacts_description": "Gerencie contatos e envie pesquisas direcionadas",
|
||||||
"unlock_contacts_title": "Desbloqueie contatos com um plano superior",
|
"unlock_contacts_title": "Desbloqueie contatos com um plano superior",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "O atributo \"{key}\" está tipado como \"{dataType}\", mas o CSV contém valores inválidos: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "O atributo “{key}” está tipado como “{dataType}”, mas o CSV contém valores inválidos: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Mapeamentos duplicados encontrados para os seguintes atributos: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Mapeamentos duplicados encontrados para os seguintes atributos: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "O tamanho do arquivo excede o limite máximo de 800KB",
|
"upload_contacts_error_file_too_large": "O tamanho do arquivo excede o limite máximo de 800KB",
|
||||||
"upload_contacts_error_generic": "Ocorreu um erro ao fazer upload dos contatos. Por favor, tente novamente mais tarde.",
|
"upload_contacts_error_generic": "Ocorreu um erro ao fazer upload dos contatos. Por favor, tente novamente mais tarde.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconectar",
|
"reconnect_button": "Reconectar",
|
||||||
"reconnect_button_description": "Sua conexão com o Google Sheets expirou. Reconecte para continuar sincronizando respostas. Seus links de planilhas e dados existentes serão preservados.",
|
"reconnect_button_description": "Sua conexão com o Google Sheets expirou. Reconecte para continuar sincronizando respostas. Seus links de planilhas e dados existentes serão preservados.",
|
||||||
"reconnect_button_tooltip": "Reconecte a integração para atualizar seu acesso. Seus links de planilhas e dados existentes serão preservados.",
|
"reconnect_button_tooltip": "Reconecte a integração para atualizar seu acesso. Seus links de planilhas e dados existentes serão preservados.",
|
||||||
"spreadsheet_permission_error": "Você não tem permissão para acessar esta planilha. Certifique-se de que a planilha está compartilhada com sua conta do Google e que você tem acesso de escrita à planilha.",
|
"spreadsheet_permission_error": "Você não tem permissão para acessar esta planilha. Certifique-se de que a planilha está compartilhada com sua conta do Google e que você tem acesso de gravação à planilha.",
|
||||||
"spreadsheet_url": "URL da planilha",
|
"spreadsheet_url": "URL da planilha",
|
||||||
"token_expired_error": "O token de atualização do Google Sheets expirou ou foi revogado. Reconecte a integração."
|
"token_expired_error": "O token de atualização do Google Sheets expirou ou foi revogado. Reconecte a integração."
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "Plano Atual",
|
"current_plan": "Plano Atual",
|
||||||
"current_tier_limit": "Limite Atual de Nível",
|
"current_tier_limit": "Limite Atual de Nível",
|
||||||
"custom": "Personalizado e Escala",
|
"custom": "Personalizado e Escala",
|
||||||
"custom_contacts_limit": "Limite de Contatos Personalizado",
|
"custom_contacts_limit": "Limite personalizado de contatos",
|
||||||
"custom_response_limit": "Limite de Resposta Personalizado",
|
"custom_response_limit": "Limite de Resposta Personalizado",
|
||||||
"custom_workspace_limit": "Limite personalizado de projetos",
|
"custom_workspace_limit": "Limite personalizado de projetos",
|
||||||
"email_embedded_surveys": "Pesquisas Incorporadas no Email",
|
"email_embedded_surveys": "Pesquisas Incorporadas no Email",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "A chave de licença é inválida. Verifique sua ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "A chave de licença é inválida. Verifique sua ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Verificação da licença bem-sucedida",
|
"recheck_license_success": "Verificação da licença bem-sucedida",
|
||||||
"recheck_license_unreachable": "Servidor de licenças inacessível. Por favor, tente novamente mais tarde.",
|
"recheck_license_unreachable": "Servidor de licenças inacessível. Por favor, tente novamente mais tarde.",
|
||||||
"rechecking": "Verificando novamente...",
|
"rechecking": "Verificando novamente…",
|
||||||
"request_30_day_trial_license": "Pedir Licença de Teste de 30 Dias",
|
"request_30_day_trial_license": "Pedir Licença de Teste de 30 Dias",
|
||||||
"saml_sso": "SSO SAML",
|
"saml_sso": "SSO SAML",
|
||||||
"service_level_agreement": "Acordo de Nível de Serviço",
|
"service_level_agreement": "Acordo de Nível de Serviço",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Oi {userName}",
|
"email_customization_preview_email_heading": "Oi {userName}",
|
||||||
"email_customization_preview_email_text": "Esta é uma pré-visualização de e-mail para mostrar qual logo será renderizado nos e-mails.",
|
"email_customization_preview_email_text": "Esta é uma pré-visualização de e-mail para mostrar qual logo será renderizado nos e-mails.",
|
||||||
"error_deleting_organization_please_try_again": "Erro ao deletar a organização. Por favor, tente novamente.",
|
"error_deleting_organization_please_try_again": "Erro ao deletar a organização. Por favor, tente novamente.",
|
||||||
"from_your_organization": "da sua organização",
|
"from_your_organization": "{memberName} da sua organização",
|
||||||
"invitation_sent_once_more": "Convite enviado de novo.",
|
"invitation_sent_once_more": "Convite enviado de novo.",
|
||||||
"invite_deleted_successfully": "Convite deletado com sucesso",
|
"invite_deleted_successfully": "Convite deletado com sucesso",
|
||||||
"invite_expires_on": "O convite expira em {date}",
|
"invite_expires_on": "O convite expira em {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Configurações de notificação atualizadas",
|
"notification_settings_updated": "Configurações de notificação atualizadas",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Configura um alerta pra receber um e-mail com novas respostas",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Configura um alerta pra receber um e-mail com novas respostas",
|
||||||
"use_the_integration": "Use a integração",
|
"use_the_integration": "Use a integração",
|
||||||
"want_to_loop_in_organization_mates": "Quero incluir os colegas da organização",
|
"want_to_loop_in_organization_mates": "Quer incluir colegas da organização?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Você não vai ser mais inscrito automaticamente nas pesquisas dessa organização!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Você não vai ser mais inscrito automaticamente nas pesquisas dessa organização!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Você não vai receber mais e-mails sobre respostas dessa pesquisa!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Você não vai receber mais e-mails sobre respostas dessa pesquisa!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Adicionar um texto padrão para mostrar se a pergunta for ignorada:",
|
"add_fallback_placeholder": "Adicionar um texto padrão para mostrar se a pergunta for ignorada:",
|
||||||
"add_hidden_field_id": "Adicionar campo oculto ID",
|
"add_hidden_field_id": "Adicionar campo oculto ID",
|
||||||
"add_highlight_border": "Adicionar borda de destaque",
|
"add_highlight_border": "Adicionar borda de destaque",
|
||||||
|
"add_highlight_border_description": "Aplica-se apenas a pesquisas no produto.",
|
||||||
"add_logic": "Adicionar lógica",
|
"add_logic": "Adicionar lógica",
|
||||||
"add_none_of_the_above": "Adicionar \"Nenhuma das opções acima\"",
|
"add_none_of_the_above": "Adicionar \"Nenhuma das opções acima\"",
|
||||||
"add_option": "Adicionar opção",
|
"add_option": "Adicionar opção",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Ajustar mensagem 'Pesquisa Encerrada''",
|
"adjust_survey_closed_message": "Ajustar mensagem 'Pesquisa Encerrada''",
|
||||||
"adjust_survey_closed_message_description": "Mude a mensagem que os visitantes veem quando a pesquisa está fechada.",
|
"adjust_survey_closed_message_description": "Mude a mensagem que os visitantes veem quando a pesquisa está fechada.",
|
||||||
"adjust_the_theme_in_the": "Ajuste o tema no",
|
"adjust_the_theme_in_the": "Ajuste o tema no",
|
||||||
|
"all_are_true": "todas são verdadeiras",
|
||||||
"all_other_answers_will_continue_to": "Todas as outras respostas continuarão a",
|
"all_other_answers_will_continue_to": "Todas as outras respostas continuarão a",
|
||||||
"allow_multi_select": "Permitir seleção múltipla",
|
"allow_multi_select": "Permitir seleção múltipla",
|
||||||
"allow_multiple_files": "Permitir vários arquivos",
|
"allow_multiple_files": "Permitir vários arquivos",
|
||||||
"allow_users_to_select_more_than_one_image": "Permitir que os usuários selecionem mais de uma imagem",
|
"allow_users_to_select_more_than_one_image": "Permitir que os usuários selecionem mais de uma imagem",
|
||||||
"and_launch_surveys_in_your_website_or_app": "e lançar pesquisas no seu site ou app.",
|
"and_launch_surveys_in_your_website_or_app": "e lançar pesquisas no seu site ou app.",
|
||||||
"animation": "animação",
|
"animation": "animação",
|
||||||
|
"any_is_true": "qualquer uma é verdadeira",
|
||||||
"app_survey_description": "Embuta uma pesquisa no seu app ou site para coletar respostas.",
|
"app_survey_description": "Embuta uma pesquisa no seu app ou site para coletar respostas.",
|
||||||
"assign": "atribuir =",
|
"assign": "atribuir =",
|
||||||
"audience": "Público",
|
"audience": "Público",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Calcular",
|
"calculate": "Calcular",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Captura uma nova ação pra disparar uma pesquisa.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Captura uma nova ação pra disparar uma pesquisa.",
|
||||||
"capture_ip_address": "Capturar endereço IP",
|
"capture_ip_address": "Capturar endereço IP",
|
||||||
"capture_ip_address_description": "Armazenar o endereço IP do respondente nos metadados da resposta para fins de detecção de duplicatas e segurança",
|
"capture_ip_address_description": "Armazena o endereço IP do respondente nos metadados da resposta para fins de detecção de duplicatas e segurança",
|
||||||
"capture_new_action": "Capturar nova ação",
|
"capture_new_action": "Capturar nova ação",
|
||||||
"card_arrangement_for_survey_type_derived": "Arranjo de Cartões para Pesquisas {surveyTypeDerived}",
|
"card_arrangement_for_survey_type_derived": "Arranjo de Cartões para Pesquisas {surveyTypeDerived}",
|
||||||
"card_background_color": "Cor de fundo do cartão",
|
"card_background_color": "Cor de fundo do cartão",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Casual",
|
"casual": "Casual",
|
||||||
"caution_edit_duplicate": "Duplicar e editar",
|
"caution_edit_duplicate": "Duplicar e editar",
|
||||||
"caution_edit_published_survey": "Editar uma pesquisa publicada?",
|
"caution_edit_published_survey": "Editar uma pesquisa publicada?",
|
||||||
"caution_explanation_intro": "Entendemos que você ainda pode querer fazer alterações. Aqui está o que acontece se você fizer:",
|
"caution_explanation_intro": "Entendemos que você ainda pode querer fazer alterações. Veja o que acontece se você fizer:",
|
||||||
"caution_explanation_new_responses_separated": "Respostas antes da mudança podem não ser ou apenas parcialmente incluídas no resumo da pesquisa.",
|
"caution_explanation_new_responses_separated": "Respostas antes da mudança podem não ser ou apenas parcialmente incluídas no resumo da pesquisa.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Todos os dados, incluindo respostas anteriores, permanecem disponíveis para download na página de resumo da pesquisa.",
|
"caution_explanation_only_new_responses_in_summary": "Todos os dados, incluindo respostas anteriores, permanecem disponíveis para download na página de resumo da pesquisa.",
|
||||||
"caution_explanation_responses_are_safe": "Respostas antigas e novas são misturadas, o que pode levar a resumos de dados enganosos.",
|
"caution_explanation_responses_are_safe": "Respostas antigas e novas são misturadas, o que pode levar a resumos de dados enganosos.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Acompanhamento atualizado e será salvo assim que você salvar a pesquisa.",
|
"follow_ups_modal_updated_successfull_toast": "Acompanhamento atualizado e será salvo assim que você salvar a pesquisa.",
|
||||||
"follow_ups_new": "Novo acompanhamento",
|
"follow_ups_new": "Novo acompanhamento",
|
||||||
"follow_ups_upgrade_button_text": "Atualize para habilitar os Acompanhamentos",
|
"follow_ups_upgrade_button_text": "Atualize para habilitar os Acompanhamentos",
|
||||||
"form_styling": "Estilização de Formulários",
|
|
||||||
"formbricks_sdk_is_not_connected": "O SDK do Formbricks não está conectado",
|
"formbricks_sdk_is_not_connected": "O SDK do Formbricks não está conectado",
|
||||||
"four_points": "4 pontos",
|
"four_points": "4 pontos",
|
||||||
"heading": "Título",
|
"heading": "Título",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Opção {choiceIndex}",
|
"option_idx": "Opção {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Esta opção é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
"option_used_in_logic_error": "Esta opção é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
||||||
"optional": "Opcional",
|
"optional": "Opcional",
|
||||||
"options": "Opções",
|
"options": "Opções*",
|
||||||
"options_used_in_logic_bulk_error": "As seguintes opções são usadas na lógica: {questionIndexes}. Por favor, remova-as da lógica primeiro.",
|
"options_used_in_logic_bulk_error": "As seguintes opções são usadas na lógica: {questionIndexes}. Por favor, remova-as da lógica primeiro.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Substitua o tema com estilos individuais para essa pesquisa.",
|
"override_theme_with_individual_styles_for_this_survey": "Substitua o tema com estilos individuais para essa pesquisa.",
|
||||||
"overwrite_global_waiting_time": "Definir período de espera personalizado",
|
"overwrite_global_waiting_time": "Definir período de espera personalizado",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Pergunta deletada.",
|
"question_deleted": "Pergunta deletada.",
|
||||||
"question_duplicated": "Pergunta duplicada.",
|
"question_duplicated": "Pergunta duplicada.",
|
||||||
"question_id_updated": "ID da pergunta atualizado",
|
"question_id_updated": "ID da pergunta atualizado",
|
||||||
|
"question_number": "Pergunta {number}",
|
||||||
"question_used_in_logic_warning_text": "Elementos deste bloco são usados em uma regra de lógica, tem certeza de que deseja excluí-lo?",
|
"question_used_in_logic_warning_text": "Elementos deste bloco são usados em uma regra de lógica, tem certeza de que deseja excluí-lo?",
|
||||||
"question_used_in_logic_warning_title": "Inconsistência de lógica",
|
"question_used_in_logic_warning_title": "Inconsistência de lógica",
|
||||||
"question_used_in_quota": "Esta pergunta está sendo usada na cota \"{quotaName}\"",
|
"question_used_in_quota": "Esta pergunta está sendo usada na cota \"{quotaName}\"",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Limites de resposta, redirecionamentos e mais.",
|
"response_limits_redirections_and_more": "Limites de resposta, redirecionamentos e mais.",
|
||||||
"response_options": "Opções de Resposta",
|
"response_options": "Opções de Resposta",
|
||||||
"roundness": "Circularidade",
|
"roundness": "Circularidade",
|
||||||
"roundness_description": "Controla o arredondamento dos cantos do cartão.",
|
"roundness_description": "Controla o arredondamento dos cantos.",
|
||||||
"row_used_in_logic_error": "Esta linha é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
"row_used_in_logic_error": "Esta linha é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
||||||
"rows": "linhas",
|
"rows": "linhas",
|
||||||
"save_and_close": "Salvar e Fechar",
|
"save_and_close": "Salvar e Fechar",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Essa pesquisa gratuita e de código aberto foi encerrada",
|
"survey_completed_subheading": "Essa pesquisa gratuita e de código aberto foi encerrada",
|
||||||
"survey_display_settings": "Configurações de Exibição da Pesquisa",
|
"survey_display_settings": "Configurações de Exibição da Pesquisa",
|
||||||
"survey_placement": "Posicionamento da Pesquisa",
|
"survey_placement": "Posicionamento da Pesquisa",
|
||||||
|
"survey_styling": "Estilização de Formulários",
|
||||||
"survey_trigger": "Gatilho de Pesquisa",
|
"survey_trigger": "Gatilho de Pesquisa",
|
||||||
"switch_multi_language_on_to_get_started": "Ative o modo multilíngue para começar 👉",
|
"switch_multi_language_on_to_get_started": "Ative o modo multilíngue para começar 👉",
|
||||||
"target_block_not_found": "Bloco de destino não encontrado",
|
"target_block_not_found": "Bloco de destino não encontrado",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Corresponde ao padrão regex",
|
"pattern": "Corresponde ao padrão regex",
|
||||||
"phone": "É um telefone válido",
|
"phone": "É um telefone válido",
|
||||||
"rank_all_options": "Classificar todas as opções",
|
"rank_all_options": "Classificar todas as opções",
|
||||||
"select_file_extensions": "Selecionar extensões de arquivo...",
|
"select_file_extensions": "Selecione extensões de arquivo…",
|
||||||
"select_option": "Selecionar opção",
|
"select_option": "Selecionar opção",
|
||||||
"start_date": "Data inicial",
|
"start_date": "Data inicial",
|
||||||
"url": "É uma URL válida"
|
"url": "É uma URL válida"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Período de espera (entre pesquisas)",
|
"waiting_time_across_surveys": "Período de espera (entre pesquisas)",
|
||||||
"waiting_time_across_surveys_description": "Para evitar fadiga de pesquisas, escolha como esta pesquisa interage com o período de espera geral do workspace.",
|
"waiting_time_across_surveys_description": "Para evitar fadiga de pesquisas, escolha como esta pesquisa interage com o período de espera geral do workspace.",
|
||||||
"welcome_message": "Mensagem de boas-vindas",
|
"welcome_message": "Mensagem de boas-vindas",
|
||||||
|
"when": "Quando",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Sem um filtro, todos os seus usuários podem ser pesquisados.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Sem um filtro, todos os seus usuários podem ser pesquisados.",
|
||||||
"you_have_not_created_a_segment_yet": "Você ainda não criou um segmento.",
|
"you_have_not_created_a_segment_yet": "Você ainda não criou um segmento.",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Você precisa ter dois ou mais idiomas configurados em seu espaço de trabalho para trabalhar com traduções.",
|
|
||||||
"your_description_here_recall_information_with": "Sua descrição aqui. Lembre-se de informações com @",
|
"your_description_here_recall_information_with": "Sua descrição aqui. Lembre-se de informações com @",
|
||||||
"your_question_here_recall_information_with": "Sua pergunta aqui. Lembre-se de informações com @",
|
"your_question_here_recall_information_with": "Sua pergunta aqui. Lembre-se de informações com @",
|
||||||
"your_web_app": "Sua aplicação web",
|
"your_web_app": "Sua aplicação web",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Desativar links de uso único",
|
"disable_single_use_link_modal_button": "Desativar links de uso único",
|
||||||
"disable_single_use_link_modal_description": "Se você compartilhou links de uso único, os participantes não poderão mais responder à pesquisa.",
|
"disable_single_use_link_modal_description": "Se você compartilhou links de uso único, os participantes não poderão mais responder à pesquisa.",
|
||||||
"generate_and_download_links": "Gerar & baixar links",
|
"generate_and_download_links": "Gerar & baixar links",
|
||||||
"generate_links_error": "Não foi possível gerar links de uso único. Por favor, trabalhe diretamente com a API",
|
"generate_links_error": "Não foi possível gerar links de uso único. Por favor, trabalhe diretamente com a API.",
|
||||||
"multi_use_link": "Link de uso múltiplo",
|
"multi_use_link": "Link de uso múltiplo",
|
||||||
"multi_use_link_description": "Coletar múltiplas respostas de respondentes anônimos com um link.",
|
"multi_use_link_description": "Coletar múltiplas respostas de respondentes anônimos com um link.",
|
||||||
"multi_use_powers_other_channels_description": "Se você desativar, esses outros canais de distribuição também serão desativados",
|
"multi_use_powers_other_channels_description": "Se você desativar, esses outros canais de distribuição também serão desativados",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} é {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Filtro adicionado para respostas onde a resposta da pergunta {questionIdx} é {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} foi pulada",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} foi pulada",
|
||||||
"aggregated": "Agregado",
|
"aggregated": "Agregado",
|
||||||
"all_responses_csv": "Todas as respostas (CSV)",
|
"all_responses_csv": "Todas as respostas (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "começa",
|
"starts": "começa",
|
||||||
"starts_tooltip": "Número de vezes que a pesquisa foi iniciada.",
|
"starts_tooltip": "Número de vezes que a pesquisa foi iniciada.",
|
||||||
"survey_reset_successfully": "Pesquisa redefinida com sucesso! {responseCount} respostas e {displayCount} exibições foram deletadas.",
|
"survey_reset_successfully": "Pesquisa redefinida com sucesso! {responseCount} respostas e {displayCount} exibições foram deletadas.",
|
||||||
|
"survey_results": "Resultados de {surveyName}",
|
||||||
"this_month": "Este mês",
|
"this_month": "Este mês",
|
||||||
"this_quarter": "Este trimestre",
|
"this_quarter": "Este trimestre",
|
||||||
"this_year": "Este ano",
|
"this_year": "Este ano",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Adicione uma cor de fundo ao container do logo.",
|
"add_background_color_description": "Adicione uma cor de fundo ao container do logo.",
|
||||||
"advanced_styling_field_border_radius": "Raio da borda",
|
"advanced_styling_field_border_radius": "Raio da borda",
|
||||||
"advanced_styling_field_button_bg": "Fundo do botão",
|
"advanced_styling_field_button_bg": "Fundo do botão",
|
||||||
"advanced_styling_field_button_bg_description": "Preenche o botão Próximo / Enviar.",
|
"advanced_styling_field_button_bg_description": "Preenche o botão “Próximo” / “Enviar”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Arredonda os cantos do botão.",
|
"advanced_styling_field_button_border_radius_description": "Arredonda os cantos do botão.",
|
||||||
"advanced_styling_field_button_font_size_description": "Ajusta o tamanho do texto do rótulo do botão.",
|
"advanced_styling_field_button_font_size_description": "Ajusta o tamanho do texto do rótulo do botão.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Torna o texto do botão mais leve ou mais negrito.",
|
"advanced_styling_field_button_font_weight_description": "Torna o texto do botão mais leve ou mais negrito.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Tamanho da fonte da descrição",
|
"advanced_styling_field_description_size": "Tamanho da fonte da descrição",
|
||||||
"advanced_styling_field_description_size_description": "Ajusta o tamanho do texto da descrição.",
|
"advanced_styling_field_description_size_description": "Ajusta o tamanho do texto da descrição.",
|
||||||
"advanced_styling_field_description_weight": "Peso da fonte da descrição",
|
"advanced_styling_field_description_weight": "Peso da fonte da descrição",
|
||||||
"advanced_styling_field_description_weight_description": "Torna o texto da descrição mais leve ou mais negrito.",
|
"advanced_styling_field_description_weight_description": "Deixa o texto da descrição mais claro ou mais negrito.",
|
||||||
"advanced_styling_field_font_size": "Tamanho da fonte",
|
"advanced_styling_field_font_size": "Tamanho da fonte",
|
||||||
"advanced_styling_field_font_weight": "Peso da fonte",
|
"advanced_styling_field_font_weight": "Peso da fonte",
|
||||||
"advanced_styling_field_headline_color": "Cor do título",
|
"advanced_styling_field_headline_color": "Cor do título",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colore o texto digitado nos campos de entrada.",
|
"advanced_styling_field_input_text_description": "Colore o texto digitado nos campos de entrada.",
|
||||||
"advanced_styling_field_option_bg": "Fundo",
|
"advanced_styling_field_option_bg": "Fundo",
|
||||||
"advanced_styling_field_option_bg_description": "Preenche os itens de opção.",
|
"advanced_styling_field_option_bg_description": "Preenche os itens de opção.",
|
||||||
|
"advanced_styling_field_option_border": "Cor da borda",
|
||||||
|
"advanced_styling_field_option_border_description": "Contorna as opções de botões de rádio e caixas de seleção.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Arredonda os cantos das opções.",
|
"advanced_styling_field_option_border_radius_description": "Arredonda os cantos das opções.",
|
||||||
"advanced_styling_field_option_font_size_description": "Ajusta o tamanho do texto do rótulo da opção.",
|
"advanced_styling_field_option_font_size_description": "Ajusta o tamanho do texto do rótulo da opção.",
|
||||||
"advanced_styling_field_option_label": "Cor do rótulo",
|
"advanced_styling_field_option_label": "Cor do rótulo",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Mostrar assinatura 'Powered by Formbricks'",
|
"show_powered_by_formbricks": "Mostrar assinatura 'Powered by Formbricks'",
|
||||||
"styling_updated_successfully": "Estilo atualizado com sucesso",
|
"styling_updated_successfully": "Estilo atualizado com sucesso",
|
||||||
"suggest_colors": "Sugerir cores",
|
"suggest_colors": "Sugerir cores",
|
||||||
"suggested_colors_applied_please_save": "Cores sugeridas geradas com sucesso. Pressione \"Salvar\" para manter as alterações.",
|
"suggested_colors_applied_please_save": "Cores sugeridas geradas com sucesso. Pressione “Salvar” para persistir as alterações.",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_settings_description": "Crie um tema de estilo para todas as pesquisas. Você pode ativar estilo personalizado para cada pesquisa."
|
"theme_settings_description": "Crie um tema de estilo para todas as pesquisas. Você pode ativar estilo personalizado para cada pesquisa."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Por favor, dá uma olhada na sua pasta de spam se você não encontrar o e-mail na sua caixa de entrada.",
|
"check_inbox_or_spam": "Por favor, dá uma olhada na sua pasta de spam se você não encontrar o e-mail na sua caixa de entrada.",
|
||||||
"completed": "Essa pesquisa gratuita e de código aberto foi encerrada.",
|
"completed": "Essa pesquisa gratuita e de código aberto foi encerrada.",
|
||||||
"create_your_own": "Crie o seu próprio",
|
"create_your_own": "Crie o seu próprio",
|
||||||
"enter_pin": "Essa pesquisa está protegida. Insira o PIN abaixo",
|
"enter_pin": "Esta pesquisa está protegida. Digite o PIN abaixo.",
|
||||||
"just_curious": "Só curioso?",
|
"just_curious": "Só curioso?",
|
||||||
"link_invalid": "Essa pesquisa só pode ser respondida por convite.",
|
"link_invalid": "Essa pesquisa só pode ser respondida por convite.",
|
||||||
"paused": "Essa pesquisa gratuita e de código aberto está temporariamente pausada.",
|
"paused": "Essa pesquisa gratuita e de código aberto está temporariamente pausada.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Como a empresa pode melhorar sua visão e direcionamento estratégico?",
|
"alignment_and_engagement_survey_question_4_headline": "Como a empresa pode melhorar sua visão e direcionamento estratégico?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Digite sua resposta aqui...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Digite sua resposta aqui...",
|
||||||
"back": "voltar",
|
"back": "voltar",
|
||||||
|
"block_1": "Bloco 1",
|
||||||
|
"block_10": "Bloco 10",
|
||||||
|
"block_2": "Bloco 2",
|
||||||
|
"block_3": "Bloco 3",
|
||||||
|
"block_4": "Bloco 4",
|
||||||
|
"block_5": "Bloco 5",
|
||||||
|
"block_6": "Bloco 6",
|
||||||
|
"block_7": "Bloco 7",
|
||||||
|
"block_8": "Bloco 8",
|
||||||
|
"block_9": "Bloco 9",
|
||||||
"book_interview": "Marcar entrevista",
|
"book_interview": "Marcar entrevista",
|
||||||
"build_product_roadmap_description": "Identifique a ÚNICA coisa que seus usuários mais querem e construa isso.",
|
"build_product_roadmap_description": "Identifique a ÚNICA coisa que seus usuários mais querem e construa isso.",
|
||||||
"build_product_roadmap_name": "Construir Roteiro do Produto",
|
"build_product_roadmap_name": "Construir Roteiro do Produto",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Qualidade ruim",
|
"csat_question_3_choice_8": "Qualidade ruim",
|
||||||
"csat_question_3_choice_9": "pouco confiável",
|
"csat_question_3_choice_9": "pouco confiável",
|
||||||
"csat_question_3_headline": "Qual dessas palavras você usaria para descrever nosso $[projectName]?",
|
"csat_question_3_headline": "Qual dessas palavras você usaria para descrever nosso $[projectName]?",
|
||||||
"csat_question_3_subheader": "Selecione todas as opções que se aplicam:",
|
"csat_question_3_subheader": "Por favor, selecione todas as opções que se aplicam:",
|
||||||
"csat_question_4_choice_1": "Muito bem mesmo",
|
"csat_question_4_choice_1": "Muito bem mesmo",
|
||||||
"csat_question_4_choice_2": "Muito bem",
|
"csat_question_4_choice_2": "Muito bem",
|
||||||
"csat_question_4_choice_3": "Mais ou menos bem",
|
"csat_question_4_choice_3": "Mais ou menos bem",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Ah, foi mal! Tem algo que a gente possa fazer pra melhorar sua experiência?",
|
"csat_survey_question_3_headline": "Ah, foi mal! Tem algo que a gente possa fazer pra melhorar sua experiência?",
|
||||||
"csat_survey_question_3_placeholder": "Digite sua resposta aqui...",
|
"csat_survey_question_3_placeholder": "Digite sua resposta aqui...",
|
||||||
"cta_description": "Mostrar informações e pedir para os usuários tomarem uma ação específica",
|
"cta_description": "Mostrar informações e pedir para os usuários tomarem uma ação específica",
|
||||||
"custom_survey_block_1_name": "Bloco 1",
|
|
||||||
"custom_survey_description": "Crie uma pesquisa sem modelo.",
|
"custom_survey_description": "Crie uma pesquisa sem modelo.",
|
||||||
"custom_survey_name": "Começar do zero",
|
"custom_survey_name": "Começar do zero",
|
||||||
"custom_survey_question_1_headline": "O que você gostaria de saber?",
|
"custom_survey_question_1_headline": "O que você gostaria de saber?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Não, obrigado!",
|
"preview_survey_question_2_choice_2_label": "Não, obrigado!",
|
||||||
"preview_survey_question_2_headline": "Quer ficar por dentro?",
|
"preview_survey_question_2_headline": "Quer ficar por dentro?",
|
||||||
"preview_survey_question_2_subheader": "Este é um exemplo de descrição.",
|
"preview_survey_question_2_subheader": "Este é um exemplo de descrição.",
|
||||||
|
"preview_survey_question_open_text_headline": "Tem mais alguma coisa que você gostaria de compartilhar?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Digite sua resposta aqui...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Seu feedback nos ajuda a melhorar.",
|
||||||
"preview_survey_welcome_card_headline": "Bem-vindo!",
|
"preview_survey_welcome_card_headline": "Bem-vindo!",
|
||||||
"prioritize_features_description": "Identifique os recursos que seus usuários mais e menos precisam.",
|
"prioritize_features_description": "Identifique os recursos que seus usuários mais e menos precisam.",
|
||||||
"prioritize_features_name": "Priorizar Funcionalidades",
|
"prioritize_features_name": "Priorizar Funcionalidades",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Pesquisa individual",
|
"professional_development_survey_question_2_choice_5": "Pesquisa individual",
|
||||||
"professional_development_survey_question_2_choice_6": "Outro",
|
"professional_development_survey_question_2_choice_6": "Outro",
|
||||||
"professional_development_survey_question_2_headline": "Quais tipos de atividades de desenvolvimento profissional você acha que seriam mais valiosas para o seu crescimento?",
|
"professional_development_survey_question_2_headline": "Quais tipos de atividades de desenvolvimento profissional você acha que seriam mais valiosas para o seu crescimento?",
|
||||||
"professional_development_survey_question_2_subheader": "Selecione todas as que se aplicam",
|
"professional_development_survey_question_2_subheader": "Por favor, selecione todas as opções que se aplicam:",
|
||||||
"professional_development_survey_question_3_choice_1": "Sim",
|
"professional_development_survey_question_3_choice_1": "Sim",
|
||||||
"professional_development_survey_question_3_choice_2": "Não",
|
"professional_development_survey_question_3_choice_2": "Não",
|
||||||
"professional_development_survey_question_3_headline": "Você dedicou tempo para o seu desenvolvimento profissional no passado?",
|
"professional_development_survey_question_3_headline": "Você dedicou tempo para o seu desenvolvimento profissional no passado?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Me senti confiante ao usar o sistema.",
|
"usability_question_9_headline": "Me senti confiante ao usar o sistema.",
|
||||||
"usability_rating_description": "Meça a usabilidade percebida perguntando aos usuários para avaliar sua experiência com seu produto usando uma pesquisa padronizada de 10 perguntas.",
|
"usability_rating_description": "Meça a usabilidade percebida perguntando aos usuários para avaliar sua experiência com seu produto usando uma pesquisa padronizada de 10 perguntas.",
|
||||||
"usability_score_name": "Pontuação de Usabilidade do Sistema (SUS)"
|
"usability_score_name": "Pontuação de Usabilidade do Sistema (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Obrigado por compartilhar sua ideia de fluxo de trabalho conosco! Estamos atualmente projetando este recurso e seu feedback nos ajudará a construir exatamente o que você precisa.",
|
||||||
|
"coming_soon_title": "Estamos quase lá!",
|
||||||
|
"follow_up_label": "Há algo mais que você gostaria de adicionar?",
|
||||||
|
"follow_up_placeholder": "Quais tarefas específicas você gostaria de automatizar? Alguma ferramenta ou integração que gostaria de incluir?",
|
||||||
|
"generate_button": "Gerar fluxo de trabalho",
|
||||||
|
"heading": "Qual fluxo de trabalho você quer criar?",
|
||||||
|
"placeholder": "Descreva o fluxo de trabalho que você quer gerar…",
|
||||||
|
"subheading": "Gere seu fluxo de trabalho em segundos.",
|
||||||
|
"submit_button": "Adicionar detalhes",
|
||||||
|
"thank_you_description": "Sua contribuição nos ajuda a construir a funcionalidade de Fluxos de Trabalho que você realmente precisa. Manteremos você informado sobre nosso progresso.",
|
||||||
|
"thank_you_title": "Obrigado pelo seu feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-32
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Copiar",
|
"copy": "Copiar",
|
||||||
"copy_code": "Copiar código",
|
"copy_code": "Copiar código",
|
||||||
"copy_link": "Copiar Link",
|
"copy_link": "Copiar Link",
|
||||||
"count_attributes": "{value, plural, one {{value} atributo} other {{value} atributos}}",
|
"count_attributes": "{count, plural, one {{count} atributo} other {{count} atributos}}",
|
||||||
"count_contacts": "{value, plural, one {# contacto} other {# contactos} }",
|
"count_contacts": "{count, plural, one {{count} contacto} other {{count} contactos}}",
|
||||||
"count_responses": "{value, plural, other {# respostas}}",
|
"count_members": "{count, plural, one {{count} membro} other {{count} membros}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} pergunta} other {{count} perguntas}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} resposta} other {{count} respostas}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} selecção} other {{count} selecções}}",
|
||||||
"create_new_organization": "Criar nova organização",
|
"create_new_organization": "Criar nova organização",
|
||||||
"create_segment": "Criar segmento",
|
"create_segment": "Criar segmento",
|
||||||
"create_survey": "Criar inquérito",
|
"create_survey": "Criar inquérito",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "dias",
|
"days": "dias",
|
||||||
"default": "Padrão",
|
"default": "Padrão",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
|
"delete_what": "Eliminar {deleteWhat}",
|
||||||
"description": "Descrição",
|
"description": "Descrição",
|
||||||
"dev_env": "Ambiente de Desenvolvimento",
|
"dev_env": "Ambiente de Desenvolvimento",
|
||||||
"development": "Desenvolvimento",
|
"development": "Desenvolvimento",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Transferir",
|
"download": "Transferir",
|
||||||
"draft": "Rascunho",
|
"draft": "Rascunho",
|
||||||
"duplicate": "Duplicar",
|
"duplicate": "Duplicar",
|
||||||
|
"duplicate_copy": "(cópia)",
|
||||||
|
"duplicate_copy_number": "(cópia {copyNumber})",
|
||||||
"e_commerce": "Comércio Eletrónico",
|
"e_commerce": "Comércio Eletrónico",
|
||||||
"edit": "Editar",
|
"edit": "Editar",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Aparência e Sensação",
|
"look_and_feel": "Aparência e Sensação",
|
||||||
"manage": "Gerir",
|
"manage": "Gerir",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Membro",
|
|
||||||
"members": "Membros",
|
"members": "Membros",
|
||||||
"members_and_teams": "Membros e equipas",
|
"members_and_teams": "Membros e equipas",
|
||||||
"membership_not_found": "Associação não encontrada",
|
"membership_not_found": "Associação não encontrada",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Mover para baixo",
|
"move_down": "Mover para baixo",
|
||||||
"move_up": "Mover para cima",
|
"move_up": "Mover para cima",
|
||||||
"multiple_languages": "Várias línguas",
|
"multiple_languages": "Várias línguas",
|
||||||
|
"my_product": "o meu produto",
|
||||||
"name": "Nome",
|
"name": "Nome",
|
||||||
"new": "Novo",
|
"new": "Novo",
|
||||||
"new_version_available": "Formbricks {version} está aqui. Atualize agora!",
|
"new_version_available": "Formbricks {version} está aqui. Atualize agora!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Selecionar equipas",
|
"select_teams": "Selecionar equipas",
|
||||||
"selected": "Selecionado",
|
"selected": "Selecionado",
|
||||||
"selected_questions": "Perguntas selecionadas",
|
"selected_questions": "Perguntas selecionadas",
|
||||||
"selection": "Seleção",
|
|
||||||
"selections": "Seleções",
|
|
||||||
"send_test_email": "Enviar email de teste",
|
"send_test_email": "Enviar email de teste",
|
||||||
"session_not_found": "Sessão não encontrada",
|
"session_not_found": "Sessão não encontrada",
|
||||||
"settings": "Configurações",
|
"settings": "Configurações",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Mostrar contagem de respostas",
|
"show_response_count": "Mostrar contagem de respostas",
|
||||||
"shown": "Mostrado",
|
"shown": "Mostrado",
|
||||||
"size": "Tamanho",
|
"size": "Tamanho",
|
||||||
|
"skip": "Saltar",
|
||||||
"skipped": "Ignorado",
|
"skipped": "Ignorado",
|
||||||
"skips": "Saltos",
|
"skips": "Saltos",
|
||||||
"some_files_failed_to_upload": "Alguns ficheiros falharam ao carregar",
|
"some_files_failed_to_upload": "Alguns ficheiros falharam ao carregar",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Inquérito do Website",
|
"website_survey": "Inquérito do Website",
|
||||||
"weeks": "semanas",
|
"weeks": "semanas",
|
||||||
"welcome_card": "Cartão de boas-vindas",
|
"welcome_card": "Cartão de boas-vindas",
|
||||||
|
"workflows": "Fluxos de trabalho",
|
||||||
"workspace_configuration": "Configuração do projeto",
|
"workspace_configuration": "Configuração do projeto",
|
||||||
"workspace_created_successfully": "Projeto criado com sucesso",
|
"workspace_created_successfully": "Projeto criado com sucesso",
|
||||||
"workspace_creation_description": "Organize inquéritos em projetos para melhor controlo de acesso.",
|
"workspace_creation_description": "Organize inquéritos em projetos para melhor controlo de acesso.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Valor",
|
"attribute_value": "Valor",
|
||||||
"attribute_value_placeholder": "Valor do atributo",
|
"attribute_value_placeholder": "Valor do atributo",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Não foi possível criar {count} novo(s) atributo(s), pois excederia o limite máximo de {limit} classes de atributos. Os atributos existentes foram atualizados com sucesso.",
|
"attributes_msg_attribute_limit_exceeded": "Não foi possível criar {count} novo(s) atributo(s), pois excederia o limite máximo de {limit} classes de atributos. Os atributos existentes foram atualizados com sucesso.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (o atributo '{key}' tem dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (o atributo “{key}” tem dataType: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "O email já existe para este ambiente e não foi atualizado.",
|
"attributes_msg_email_already_exists": "O email já existe para este ambiente e não foi atualizado.",
|
||||||
"attributes_msg_email_or_userid_required": "É necessário email ou userId. Os valores existentes foram preservados.",
|
"attributes_msg_email_or_userid_required": "É necessário um email ou ID de utilizador. Os valores existentes foram preservados.",
|
||||||
"attributes_msg_new_attribute_created": "Criado novo atributo '{key}' com tipo '{dataType}'",
|
"attributes_msg_new_attribute_created": "Criado novo atributo “{key}” com tipo “{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "O userId já existe para este ambiente e não foi atualizado.",
|
"attributes_msg_userid_already_exists": "O ID de utilizador já existe para este ambiente e não foi atualizado.",
|
||||||
"contact_deleted_successfully": "Contacto eliminado com sucesso",
|
"contact_deleted_successfully": "Contacto eliminado com sucesso",
|
||||||
"contact_not_found": "Nenhum contacto encontrado",
|
"contact_not_found": "Nenhum contacto encontrado",
|
||||||
"contacts_table_refresh": "Atualizar contactos",
|
"contacts_table_refresh": "Atualizar contactos",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Tipo de dados",
|
"data_type": "Tipo de dados",
|
||||||
"data_type_cannot_be_changed": "O tipo de dados não pode ser alterado após a criação",
|
"data_type_cannot_be_changed": "O tipo de dados não pode ser alterado após a criação",
|
||||||
"data_type_description": "Escolhe como este atributo deve ser armazenado e filtrado",
|
"data_type_description": "Escolhe como este atributo deve ser armazenado e filtrado",
|
||||||
"date_value_required": "O valor da data é obrigatório. Usa o botão eliminar para remover este atributo se não quiseres definir uma data.",
|
"date_value_required": "O valor da data é obrigatório. Use o botão eliminar para remover este atributo se não pretender definir uma data.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Isto irá eliminar o atributo selecionado. Todos os dados de contacto associados a este atributo serão perdidos.} other {Isto irá eliminar os atributos selecionados. Todos os dados de contacto associados a estes atributos serão perdidos.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Isto irá eliminar o atributo selecionado. Todos os dados de contacto associados a este atributo serão perdidos.} other {Isto irá eliminar os atributos selecionados. Todos os dados de contacto associados a estes atributos serão perdidos.}}",
|
||||||
"delete_contact_confirmation": "Isto irá eliminar todas as respostas das pesquisas e os atributos de contato associados a este contato. Qualquer direcionamento e personalização baseados nos dados deste contato serão perdidos.",
|
"delete_contact_confirmation": "Isto irá eliminar todas as respostas das pesquisas e os atributos de contato associados a este contato. Qualquer direcionamento e personalização baseados nos dados deste contato serão perdidos.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, other {Isto irá eliminar todas as respostas das pesquisas e os atributos de contacto associados a este contacto. Qualquer segmentação e personalização baseados nos dados deste contacto serão perdidos. Se este contacto tiver respostas que contribuam para as quotas das pesquisas, as contagens de quotas serão reduzidas, mas os limites das quotas permanecerão inalterados.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, other {Isto irá eliminar todas as respostas das pesquisas e os atributos de contacto associados a este contacto. Qualquer segmentação e personalização baseados nos dados deste contacto serão perdidos. Se este contacto tiver respostas que contribuam para as quotas das pesquisas, as contagens de quotas serão reduzidas, mas os limites das quotas permanecerão inalterados.}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Atributos do sistema",
|
"system_attributes": "Atributos do sistema",
|
||||||
"unlock_contacts_description": "Gerir contactos e enviar inquéritos direcionados",
|
"unlock_contacts_description": "Gerir contactos e enviar inquéritos direcionados",
|
||||||
"unlock_contacts_title": "Desbloqueie os contactos com um plano superior",
|
"unlock_contacts_title": "Desbloqueie os contactos com um plano superior",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "O atributo \"{key}\" está definido como \"{dataType}\", mas o CSV contém valores inválidos: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "O atributo “{key}” está definido como “{dataType}” mas o CSV contém valores inválidos: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Foram encontrados mapeamentos duplicados para os seguintes atributos: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Foram encontrados mapeamentos duplicados para os seguintes atributos: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "O tamanho do ficheiro excede o limite máximo de 800KB",
|
"upload_contacts_error_file_too_large": "O tamanho do ficheiro excede o limite máximo de 800KB",
|
||||||
"upload_contacts_error_generic": "Ocorreu um erro ao carregar os contactos. Por favor, tenta novamente mais tarde.",
|
"upload_contacts_error_generic": "Ocorreu um erro ao carregar os contactos. Por favor, tenta novamente mais tarde.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconectar",
|
"reconnect_button": "Reconectar",
|
||||||
"reconnect_button_description": "A tua ligação ao Google Sheets expirou. Por favor, reconecta para continuar a sincronizar respostas. As tuas ligações de folhas de cálculo e dados existentes serão preservados.",
|
"reconnect_button_description": "A tua ligação ao Google Sheets expirou. Por favor, reconecta para continuar a sincronizar respostas. As tuas ligações de folhas de cálculo e dados existentes serão preservados.",
|
||||||
"reconnect_button_tooltip": "Reconecta a integração para atualizar o teu acesso. As tuas ligações de folhas de cálculo e dados existentes serão preservados.",
|
"reconnect_button_tooltip": "Reconecta a integração para atualizar o teu acesso. As tuas ligações de folhas de cálculo e dados existentes serão preservados.",
|
||||||
"spreadsheet_permission_error": "Não tens permissão para aceder a esta folha de cálculo. Por favor, certifica-te de que a folha de cálculo está partilhada com a tua conta Google e que tens acesso de escrita à folha de cálculo.",
|
"spreadsheet_permission_error": "Não tem permissão para aceder a esta folha de cálculo. Certifique-se de que a folha de cálculo está partilhada com a sua conta Google e que tem acesso de escrita à folha de cálculo.",
|
||||||
"spreadsheet_url": "URL da folha de cálculo",
|
"spreadsheet_url": "URL da folha de cálculo",
|
||||||
"token_expired_error": "O token de atualização do Google Sheets expirou ou foi revogado. Por favor, reconecta a integração."
|
"token_expired_error": "O token de atualização do Google Sheets expirou ou foi revogado. Por favor, reconecta a integração."
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "Plano Atual",
|
"current_plan": "Plano Atual",
|
||||||
"current_tier_limit": "Limite Atual do Nível",
|
"current_tier_limit": "Limite Atual do Nível",
|
||||||
"custom": "Personalizado",
|
"custom": "Personalizado",
|
||||||
"custom_contacts_limit": "Limite de Contactos Personalizado",
|
"custom_contacts_limit": "Limite personalizado de contactos",
|
||||||
"custom_response_limit": "Limite de Resposta Personalizado",
|
"custom_response_limit": "Limite de Resposta Personalizado",
|
||||||
"custom_workspace_limit": "Limite de projetos personalizado",
|
"custom_workspace_limit": "Limite de projetos personalizado",
|
||||||
"email_embedded_surveys": "Inquéritos Incorporados no Email",
|
"email_embedded_surveys": "Inquéritos Incorporados no Email",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "A chave de licença é inválida. Por favor, verifique a sua ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "A chave de licença é inválida. Por favor, verifique a sua ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Verificação da licença bem-sucedida",
|
"recheck_license_success": "Verificação da licença bem-sucedida",
|
||||||
"recheck_license_unreachable": "O servidor de licenças está inacessível. Por favor, tenta novamente mais tarde.",
|
"recheck_license_unreachable": "O servidor de licenças está inacessível. Por favor, tenta novamente mais tarde.",
|
||||||
"rechecking": "A verificar novamente...",
|
"rechecking": "A verificar novamente…",
|
||||||
"request_30_day_trial_license": "Solicitar Licença de Teste de 30 Dias",
|
"request_30_day_trial_license": "Solicitar Licença de Teste de 30 Dias",
|
||||||
"saml_sso": "SSO SAML",
|
"saml_sso": "SSO SAML",
|
||||||
"service_level_agreement": "Acordo de Nível de Serviço",
|
"service_level_agreement": "Acordo de Nível de Serviço",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Olá {userName}",
|
"email_customization_preview_email_heading": "Olá {userName}",
|
||||||
"email_customization_preview_email_text": "Esta é uma pré-visualização de email para mostrar qual logotipo será exibido nos emails.",
|
"email_customization_preview_email_text": "Esta é uma pré-visualização de email para mostrar qual logotipo será exibido nos emails.",
|
||||||
"error_deleting_organization_please_try_again": "Erro ao eliminar a organização. Por favor, tente novamente.",
|
"error_deleting_organization_please_try_again": "Erro ao eliminar a organização. Por favor, tente novamente.",
|
||||||
"from_your_organization": "da sua organização",
|
"from_your_organization": "{memberName} da sua organização",
|
||||||
"invitation_sent_once_more": "Convite enviado mais uma vez.",
|
"invitation_sent_once_more": "Convite enviado mais uma vez.",
|
||||||
"invite_deleted_successfully": "Convite eliminado com sucesso",
|
"invite_deleted_successfully": "Convite eliminado com sucesso",
|
||||||
"invite_expires_on": "O convite expira em {date}",
|
"invite_expires_on": "O convite expira em {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Definições de notificações atualizadas",
|
"notification_settings_updated": "Definições de notificações atualizadas",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Configurar um alerta para receber um e-mail sobre novas respostas",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Configurar um alerta para receber um e-mail sobre novas respostas",
|
||||||
"use_the_integration": "Use a integração",
|
"use_the_integration": "Use a integração",
|
||||||
"want_to_loop_in_organization_mates": "Quer incluir colegas da organização",
|
"want_to_loop_in_organization_mates": "Pretende incluir colegas da organização?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Já não será automaticamente subscrito aos inquéritos desta organização!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Já não será automaticamente subscrito aos inquéritos desta organização!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Não receberá mais emails para respostas a este inquérito!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Não receberá mais emails para respostas a este inquérito!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Adicionar um espaço reservado para mostrar se não houver valor para recordar.",
|
"add_fallback_placeholder": "Adicionar um espaço reservado para mostrar se não houver valor para recordar.",
|
||||||
"add_hidden_field_id": "Adicionar ID do campo oculto",
|
"add_hidden_field_id": "Adicionar ID do campo oculto",
|
||||||
"add_highlight_border": "Adicionar borda de destaque",
|
"add_highlight_border": "Adicionar borda de destaque",
|
||||||
|
"add_highlight_border_description": "Aplica-se apenas a inquéritos no produto.",
|
||||||
"add_logic": "Adicionar lógica",
|
"add_logic": "Adicionar lógica",
|
||||||
"add_none_of_the_above": "Adicionar \"Nenhuma das Opções Acima\"",
|
"add_none_of_the_above": "Adicionar \"Nenhuma das Opções Acima\"",
|
||||||
"add_option": "Adicionar opção",
|
"add_option": "Adicionar opção",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Ajustar mensagem de 'Inquérito Fechado'",
|
"adjust_survey_closed_message": "Ajustar mensagem de 'Inquérito Fechado'",
|
||||||
"adjust_survey_closed_message_description": "Alterar a mensagem que os visitantes veem quando o inquérito está fechado.",
|
"adjust_survey_closed_message_description": "Alterar a mensagem que os visitantes veem quando o inquérito está fechado.",
|
||||||
"adjust_the_theme_in_the": "Ajustar o tema no",
|
"adjust_the_theme_in_the": "Ajustar o tema no",
|
||||||
|
"all_are_true": "todas são verdadeiras",
|
||||||
"all_other_answers_will_continue_to": "Todas as outras respostas continuarão a",
|
"all_other_answers_will_continue_to": "Todas as outras respostas continuarão a",
|
||||||
"allow_multi_select": "Permitir seleção múltipla",
|
"allow_multi_select": "Permitir seleção múltipla",
|
||||||
"allow_multiple_files": "Permitir vários ficheiros",
|
"allow_multiple_files": "Permitir vários ficheiros",
|
||||||
"allow_users_to_select_more_than_one_image": "Permitir aos utilizadores selecionar mais do que uma imagem",
|
"allow_users_to_select_more_than_one_image": "Permitir aos utilizadores selecionar mais do que uma imagem",
|
||||||
"and_launch_surveys_in_your_website_or_app": "e lance inquéritos no seu site ou aplicação.",
|
"and_launch_surveys_in_your_website_or_app": "e lance inquéritos no seu site ou aplicação.",
|
||||||
"animation": "Animação",
|
"animation": "Animação",
|
||||||
|
"any_is_true": "qualquer uma é verdadeira",
|
||||||
"app_survey_description": "Incorpore um inquérito na sua aplicação web ou site para recolher respostas.",
|
"app_survey_description": "Incorpore um inquérito na sua aplicação web ou site para recolher respostas.",
|
||||||
"assign": "Atribuir =",
|
"assign": "Atribuir =",
|
||||||
"audience": "Público",
|
"audience": "Público",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Casual",
|
"casual": "Casual",
|
||||||
"caution_edit_duplicate": "Duplicar e editar",
|
"caution_edit_duplicate": "Duplicar e editar",
|
||||||
"caution_edit_published_survey": "Editar um inquérito publicado?",
|
"caution_edit_published_survey": "Editar um inquérito publicado?",
|
||||||
"caution_explanation_intro": "Entendemos que ainda pode querer fazer alterações. Eis o que acontece se o fizer:",
|
"caution_explanation_intro": "Compreendemos que ainda possa querer fazer alterações. Eis o que acontece se o fizer:",
|
||||||
"caution_explanation_new_responses_separated": "Respostas antes da alteração podem não estar incluídas ou estar apenas parcialmente incluídas no resumo do inquérito.",
|
"caution_explanation_new_responses_separated": "Respostas antes da alteração podem não estar incluídas ou estar apenas parcialmente incluídas no resumo do inquérito.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Todos os dados, incluindo respostas anteriores, permanecem disponíveis para download na página de resumo do inquérito.",
|
"caution_explanation_only_new_responses_in_summary": "Todos os dados, incluindo respostas anteriores, permanecem disponíveis para download na página de resumo do inquérito.",
|
||||||
"caution_explanation_responses_are_safe": "As respostas mais antigas e mais recentes se misturam, o que pode levar a resumos de dados enganosos.",
|
"caution_explanation_responses_are_safe": "As respostas mais antigas e mais recentes se misturam, o que pode levar a resumos de dados enganosos.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Seguimento atualizado e será guardado assim que guardar o questionário.",
|
"follow_ups_modal_updated_successfull_toast": "Seguimento atualizado e será guardado assim que guardar o questionário.",
|
||||||
"follow_ups_new": "Novo acompanhamento",
|
"follow_ups_new": "Novo acompanhamento",
|
||||||
"follow_ups_upgrade_button_text": "Atualize para ativar os acompanhamentos",
|
"follow_ups_upgrade_button_text": "Atualize para ativar os acompanhamentos",
|
||||||
"form_styling": "Estilo do formulário",
|
|
||||||
"formbricks_sdk_is_not_connected": "O SDK do Formbricks não está conectado",
|
"formbricks_sdk_is_not_connected": "O SDK do Formbricks não está conectado",
|
||||||
"four_points": "4 pontos",
|
"four_points": "4 pontos",
|
||||||
"heading": "Cabeçalho",
|
"heading": "Cabeçalho",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Opção {choiceIndex}",
|
"option_idx": "Opção {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Esta opção é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
"option_used_in_logic_error": "Esta opção é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
||||||
"optional": "Opcional",
|
"optional": "Opcional",
|
||||||
"options": "Opções",
|
"options": "Opções*",
|
||||||
"options_used_in_logic_bulk_error": "As seguintes opções são usadas na lógica: {questionIndexes}. Por favor, remova-as da lógica primeiro.",
|
"options_used_in_logic_bulk_error": "As seguintes opções são usadas na lógica: {questionIndexes}. Por favor, remova-as da lógica primeiro.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Substituir o tema com estilos individuais para este inquérito.",
|
"override_theme_with_individual_styles_for_this_survey": "Substituir o tema com estilos individuais para este inquérito.",
|
||||||
"overwrite_global_waiting_time": "Definir período de espera personalizado",
|
"overwrite_global_waiting_time": "Definir período de espera personalizado",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Pergunta eliminada.",
|
"question_deleted": "Pergunta eliminada.",
|
||||||
"question_duplicated": "Pergunta duplicada.",
|
"question_duplicated": "Pergunta duplicada.",
|
||||||
"question_id_updated": "ID da pergunta atualizado",
|
"question_id_updated": "ID da pergunta atualizado",
|
||||||
|
"question_number": "Pergunta {number}",
|
||||||
"question_used_in_logic_warning_text": "Os elementos deste bloco são utilizados numa regra de lógica, tem a certeza de que pretende eliminá-lo?",
|
"question_used_in_logic_warning_text": "Os elementos deste bloco são utilizados numa regra de lógica, tem a certeza de que pretende eliminá-lo?",
|
||||||
"question_used_in_logic_warning_title": "Inconsistência de lógica",
|
"question_used_in_logic_warning_title": "Inconsistência de lógica",
|
||||||
"question_used_in_quota": "Esta pergunta está a ser usada na quota \"{quotaName}\"",
|
"question_used_in_quota": "Esta pergunta está a ser usada na quota \"{quotaName}\"",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Limites de resposta, redirecionamentos e mais.",
|
"response_limits_redirections_and_more": "Limites de resposta, redirecionamentos e mais.",
|
||||||
"response_options": "Opções de Resposta",
|
"response_options": "Opções de Resposta",
|
||||||
"roundness": "Arredondamento",
|
"roundness": "Arredondamento",
|
||||||
"roundness_description": "Controla o arredondamento dos cantos do cartão.",
|
"roundness_description": "Controla o arredondamento dos cantos.",
|
||||||
"row_used_in_logic_error": "Esta linha é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
"row_used_in_logic_error": "Esta linha é usada na lógica da pergunta {questionIndex}. Por favor, remova-a da lógica primeiro.",
|
||||||
"rows": "Linhas",
|
"rows": "Linhas",
|
||||||
"save_and_close": "Guardar e Fechar",
|
"save_and_close": "Guardar e Fechar",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Este inquérito gratuito e de código aberto foi encerrado",
|
"survey_completed_subheading": "Este inquérito gratuito e de código aberto foi encerrado",
|
||||||
"survey_display_settings": "Configurações de Exibição do Inquérito",
|
"survey_display_settings": "Configurações de Exibição do Inquérito",
|
||||||
"survey_placement": "Colocação do Inquérito",
|
"survey_placement": "Colocação do Inquérito",
|
||||||
|
"survey_styling": "Estilo do formulário",
|
||||||
"survey_trigger": "Desencadeador de Inquérito",
|
"survey_trigger": "Desencadeador de Inquérito",
|
||||||
"switch_multi_language_on_to_get_started": "Ative o modo multilingue para começar 👉",
|
"switch_multi_language_on_to_get_started": "Ative o modo multilingue para começar 👉",
|
||||||
"target_block_not_found": "Bloco de destino não encontrado",
|
"target_block_not_found": "Bloco de destino não encontrado",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Coincide com o padrão regex",
|
"pattern": "Coincide com o padrão regex",
|
||||||
"phone": "É um telefone válido",
|
"phone": "É um telefone válido",
|
||||||
"rank_all_options": "Classificar todas as opções",
|
"rank_all_options": "Classificar todas as opções",
|
||||||
"select_file_extensions": "Selecionar extensões de ficheiro...",
|
"select_file_extensions": "Selecionar extensões de ficheiro…",
|
||||||
"select_option": "Selecionar opção",
|
"select_option": "Selecionar opção",
|
||||||
"start_date": "Data de início",
|
"start_date": "Data de início",
|
||||||
"url": "É um URL válido"
|
"url": "É um URL válido"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Período de espera (entre inquéritos)",
|
"waiting_time_across_surveys": "Período de espera (entre inquéritos)",
|
||||||
"waiting_time_across_surveys_description": "Para prevenir fadiga de inquéritos, escolha como este inquérito interage com o período de espera geral do espaço de trabalho.",
|
"waiting_time_across_surveys_description": "Para prevenir fadiga de inquéritos, escolha como este inquérito interage com o período de espera geral do espaço de trabalho.",
|
||||||
"welcome_message": "Mensagem de boas-vindas",
|
"welcome_message": "Mensagem de boas-vindas",
|
||||||
|
"when": "Quando",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Sem um filtro, todos os seus utilizadores podem ser pesquisados.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Sem um filtro, todos os seus utilizadores podem ser pesquisados.",
|
||||||
"you_have_not_created_a_segment_yet": "Ainda não criou um segmento",
|
"you_have_not_created_a_segment_yet": "Ainda não criou um segmento",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Precisa de ter dois ou mais idiomas configurados no seu espaço de trabalho para trabalhar com traduções.",
|
|
||||||
"your_description_here_recall_information_with": "A sua descrição aqui. Recorde a informação com @",
|
"your_description_here_recall_information_with": "A sua descrição aqui. Recorde a informação com @",
|
||||||
"your_question_here_recall_information_with": "A sua pergunta aqui. Recorde a informação com @",
|
"your_question_here_recall_information_with": "A sua pergunta aqui. Recorde a informação com @",
|
||||||
"your_web_app": "A sua aplicação web",
|
"your_web_app": "A sua aplicação web",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Desativar links de uso único",
|
"disable_single_use_link_modal_button": "Desativar links de uso único",
|
||||||
"disable_single_use_link_modal_description": "Se partilhou links de uso único, os participantes já não poderão responder ao inquérito.",
|
"disable_single_use_link_modal_description": "Se partilhou links de uso único, os participantes já não poderão responder ao inquérito.",
|
||||||
"generate_and_download_links": "Gerar & descarregar links",
|
"generate_and_download_links": "Gerar & descarregar links",
|
||||||
"generate_links_error": "Não foi possível gerar links de uso único. Por favor, trabalhe diretamente com a API",
|
"generate_links_error": "Não foi possível gerar ligações de utilização única. Por favor, trabalhe diretamente com a API.",
|
||||||
"multi_use_link": "Link de uso múltiplo",
|
"multi_use_link": "Link de uso múltiplo",
|
||||||
"multi_use_link_description": "Recolha múltiplas respostas de respondentes anónimos com um só link.",
|
"multi_use_link_description": "Recolha múltiplas respostas de respondentes anónimos com um só link.",
|
||||||
"multi_use_powers_other_channels_description": "Se desativar, estes outros canais de distribuição também serão desativados.",
|
"multi_use_powers_other_channels_description": "Se desativar, estes outros canais de distribuição também serão desativados.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} é {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Foi adicionado um filtro para respostas em que a resposta à pergunta {questionIdx} é {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} é ignorada",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Adicionado filtro para respostas onde a resposta à pergunta {questionIdx} é ignorada",
|
||||||
"aggregated": "Agregado",
|
"aggregated": "Agregado",
|
||||||
"all_responses_csv": "Todas as respostas (CSV)",
|
"all_responses_csv": "Todas as respostas (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Começa",
|
"starts": "Começa",
|
||||||
"starts_tooltip": "Número de vezes que o inquérito foi iniciado.",
|
"starts_tooltip": "Número de vezes que o inquérito foi iniciado.",
|
||||||
"survey_reset_successfully": "Inquérito reiniciado com sucesso! {responseCount} respostas e {displayCount} exibições foram eliminadas.",
|
"survey_reset_successfully": "Inquérito reiniciado com sucesso! {responseCount} respostas e {displayCount} exibições foram eliminadas.",
|
||||||
|
"survey_results": "Resultados de {surveyName}",
|
||||||
"this_month": "Este mês",
|
"this_month": "Este mês",
|
||||||
"this_quarter": "Este trimestre",
|
"this_quarter": "Este trimestre",
|
||||||
"this_year": "Este ano",
|
"this_year": "Este ano",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Adicione uma cor de fundo ao contentor do logótipo.",
|
"add_background_color_description": "Adicione uma cor de fundo ao contentor do logótipo.",
|
||||||
"advanced_styling_field_border_radius": "Raio da borda",
|
"advanced_styling_field_border_radius": "Raio da borda",
|
||||||
"advanced_styling_field_button_bg": "Fundo do botão",
|
"advanced_styling_field_button_bg": "Fundo do botão",
|
||||||
"advanced_styling_field_button_bg_description": "Preenche o botão Seguinte / Submeter.",
|
"advanced_styling_field_button_bg_description": "Preenche o botão “Seguinte” / “Submeter”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Arredonda os cantos do botão.",
|
"advanced_styling_field_button_border_radius_description": "Arredonda os cantos do botão.",
|
||||||
"advanced_styling_field_button_font_size_description": "Ajusta o tamanho do texto da etiqueta do botão.",
|
"advanced_styling_field_button_font_size_description": "Ajusta o tamanho do texto da etiqueta do botão.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Torna o texto do botão mais leve ou mais negrito.",
|
"advanced_styling_field_button_font_weight_description": "Torna o texto do botão mais leve ou mais negrito.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Tamanho da fonte da descrição",
|
"advanced_styling_field_description_size": "Tamanho da fonte da descrição",
|
||||||
"advanced_styling_field_description_size_description": "Ajusta o tamanho do texto da descrição.",
|
"advanced_styling_field_description_size_description": "Ajusta o tamanho do texto da descrição.",
|
||||||
"advanced_styling_field_description_weight": "Peso da fonte da descrição",
|
"advanced_styling_field_description_weight": "Peso da fonte da descrição",
|
||||||
"advanced_styling_field_description_weight_description": "Torna o texto da descrição mais leve ou mais negrito.",
|
"advanced_styling_field_description_weight_description": "Torna o texto da descrição mais claro ou mais negrito.",
|
||||||
"advanced_styling_field_font_size": "Tamanho da fonte",
|
"advanced_styling_field_font_size": "Tamanho da fonte",
|
||||||
"advanced_styling_field_font_weight": "Peso da fonte",
|
"advanced_styling_field_font_weight": "Peso da fonte",
|
||||||
"advanced_styling_field_headline_color": "Cor do título",
|
"advanced_styling_field_headline_color": "Cor do título",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colore o texto digitado nos campos de entrada.",
|
"advanced_styling_field_input_text_description": "Colore o texto digitado nos campos de entrada.",
|
||||||
"advanced_styling_field_option_bg": "Fundo",
|
"advanced_styling_field_option_bg": "Fundo",
|
||||||
"advanced_styling_field_option_bg_description": "Preenche os itens de opção.",
|
"advanced_styling_field_option_bg_description": "Preenche os itens de opção.",
|
||||||
|
"advanced_styling_field_option_border": "Cor do contorno",
|
||||||
|
"advanced_styling_field_option_border_description": "Contorna as opções de botões de rádio e caixas de seleção.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Arredonda os cantos das opções.",
|
"advanced_styling_field_option_border_radius_description": "Arredonda os cantos das opções.",
|
||||||
"advanced_styling_field_option_font_size_description": "Ajusta o tamanho do texto da etiqueta da opção.",
|
"advanced_styling_field_option_font_size_description": "Ajusta o tamanho do texto da etiqueta da opção.",
|
||||||
"advanced_styling_field_option_label": "Cor da etiqueta",
|
"advanced_styling_field_option_label": "Cor da etiqueta",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Mostrar assinatura 'Powered by Formbricks'",
|
"show_powered_by_formbricks": "Mostrar assinatura 'Powered by Formbricks'",
|
||||||
"styling_updated_successfully": "Estilo atualizado com sucesso",
|
"styling_updated_successfully": "Estilo atualizado com sucesso",
|
||||||
"suggest_colors": "Sugerir cores",
|
"suggest_colors": "Sugerir cores",
|
||||||
"suggested_colors_applied_please_save": "Cores sugeridas geradas com sucesso. Pressiona \"Guardar\" para manter as alterações.",
|
"suggested_colors_applied_please_save": "Cores sugeridas geradas com sucesso. Prima “Guardar” para persistir as alterações.",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_settings_description": "Crie um tema de estilo para todos os inquéritos. Pode ativar estilos personalizados para cada inquérito."
|
"theme_settings_description": "Crie um tema de estilo para todos os inquéritos. Pode ativar estilos personalizados para cada inquérito."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Por favor, verifique também a sua pasta de spam se não vir o email na sua caixa de entrada.",
|
"check_inbox_or_spam": "Por favor, verifique também a sua pasta de spam se não vir o email na sua caixa de entrada.",
|
||||||
"completed": "Este inquérito está encerrado.",
|
"completed": "Este inquérito está encerrado.",
|
||||||
"create_your_own": "Crie o seu próprio inquérito de código aberto",
|
"create_your_own": "Crie o seu próprio inquérito de código aberto",
|
||||||
"enter_pin": "Este inquérito está protegido. Introduza o PIN abaixo",
|
"enter_pin": "Este inquérito está protegido. Introduza o PIN abaixo.",
|
||||||
"just_curious": "Só por curiosidade?",
|
"just_curious": "Só por curiosidade?",
|
||||||
"link_invalid": "Este inquérito só pode ser respondido por convite.",
|
"link_invalid": "Este inquérito só pode ser respondido por convite.",
|
||||||
"paused": "Este inquérito está temporariamente suspenso.",
|
"paused": "Este inquérito está temporariamente suspenso.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Como pode a empresa melhorar o alinhamento da sua visão e estratégia?",
|
"alignment_and_engagement_survey_question_4_headline": "Como pode a empresa melhorar o alinhamento da sua visão e estratégia?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Escreva a sua resposta aqui...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Escreva a sua resposta aqui...",
|
||||||
"back": "Voltar",
|
"back": "Voltar",
|
||||||
|
"block_1": "Bloco 1",
|
||||||
|
"block_10": "Bloco 10",
|
||||||
|
"block_2": "Bloco 2",
|
||||||
|
"block_3": "Bloco 3",
|
||||||
|
"block_4": "Bloco 4",
|
||||||
|
"block_5": "Bloco 5",
|
||||||
|
"block_6": "Bloco 6",
|
||||||
|
"block_7": "Bloco 7",
|
||||||
|
"block_8": "Bloco 8",
|
||||||
|
"block_9": "Bloco 9",
|
||||||
"book_interview": "Agendar entrevista",
|
"book_interview": "Agendar entrevista",
|
||||||
"build_product_roadmap_description": "Identifique a ÚNICA coisa que os seus utilizadores mais querem e construa-a.",
|
"build_product_roadmap_description": "Identifique a ÚNICA coisa que os seus utilizadores mais querem e construa-a.",
|
||||||
"build_product_roadmap_name": "Construir Roteiro do Produto",
|
"build_product_roadmap_name": "Construir Roteiro do Produto",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Má qualidade",
|
"csat_question_3_choice_8": "Má qualidade",
|
||||||
"csat_question_3_choice_9": "Pouco fiável",
|
"csat_question_3_choice_9": "Pouco fiável",
|
||||||
"csat_question_3_headline": "Qual das seguintes palavras usaria para descrever o nosso $[projectName]?",
|
"csat_question_3_headline": "Qual das seguintes palavras usaria para descrever o nosso $[projectName]?",
|
||||||
"csat_question_3_subheader": "Selecione todas as opções aplicáveis:",
|
"csat_question_3_subheader": "Por favor, selecione todas as opções aplicáveis:",
|
||||||
"csat_question_4_choice_1": "Extremamente bem",
|
"csat_question_4_choice_1": "Extremamente bem",
|
||||||
"csat_question_4_choice_2": "Muito bem",
|
"csat_question_4_choice_2": "Muito bem",
|
||||||
"csat_question_4_choice_3": "Razoavelmente bem",
|
"csat_question_4_choice_3": "Razoavelmente bem",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Oh, desculpe! Há algo que possamos fazer para melhorar a sua experiência?",
|
"csat_survey_question_3_headline": "Oh, desculpe! Há algo que possamos fazer para melhorar a sua experiência?",
|
||||||
"csat_survey_question_3_placeholder": "Escreva a sua resposta aqui...",
|
"csat_survey_question_3_placeholder": "Escreva a sua resposta aqui...",
|
||||||
"cta_description": "Exibir informações e solicitar aos utilizadores que tomem uma ação específica",
|
"cta_description": "Exibir informações e solicitar aos utilizadores que tomem uma ação específica",
|
||||||
"custom_survey_block_1_name": "Bloco 1",
|
|
||||||
"custom_survey_description": "Crie um inquérito sem modelo.",
|
"custom_survey_description": "Crie um inquérito sem modelo.",
|
||||||
"custom_survey_name": "Começar do zero",
|
"custom_survey_name": "Começar do zero",
|
||||||
"custom_survey_question_1_headline": "O que gostaria de saber?",
|
"custom_survey_question_1_headline": "O que gostaria de saber?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Não, obrigado!",
|
"preview_survey_question_2_choice_2_label": "Não, obrigado!",
|
||||||
"preview_survey_question_2_headline": "Quer manter-se atualizado?",
|
"preview_survey_question_2_headline": "Quer manter-se atualizado?",
|
||||||
"preview_survey_question_2_subheader": "Este é um exemplo de descrição.",
|
"preview_survey_question_2_subheader": "Este é um exemplo de descrição.",
|
||||||
|
"preview_survey_question_open_text_headline": "Mais alguma coisa que gostaria de partilhar?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Escreva a sua resposta aqui...",
|
||||||
|
"preview_survey_question_open_text_subheader": "O seu feedback ajuda-nos a melhorar.",
|
||||||
"preview_survey_welcome_card_headline": "Bem-vindo!",
|
"preview_survey_welcome_card_headline": "Bem-vindo!",
|
||||||
"prioritize_features_description": "Identifique as funcionalidades que os seus utilizadores precisam mais e menos.",
|
"prioritize_features_description": "Identifique as funcionalidades que os seus utilizadores precisam mais e menos.",
|
||||||
"prioritize_features_name": "Priorizar Funcionalidades",
|
"prioritize_features_name": "Priorizar Funcionalidades",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Pesquisa individual",
|
"professional_development_survey_question_2_choice_5": "Pesquisa individual",
|
||||||
"professional_development_survey_question_2_choice_6": "Outro",
|
"professional_development_survey_question_2_choice_6": "Outro",
|
||||||
"professional_development_survey_question_2_headline": "Que tipos de atividades de desenvolvimento profissional acha que seriam mais valiosas para o seu crescimento?",
|
"professional_development_survey_question_2_headline": "Que tipos de atividades de desenvolvimento profissional acha que seriam mais valiosas para o seu crescimento?",
|
||||||
"professional_development_survey_question_2_subheader": "Selecione todas as opções aplicáveis",
|
"professional_development_survey_question_2_subheader": "Por favor, selecione todas as opções aplicáveis:",
|
||||||
"professional_development_survey_question_3_choice_1": "Sim",
|
"professional_development_survey_question_3_choice_1": "Sim",
|
||||||
"professional_development_survey_question_3_choice_2": "Não",
|
"professional_development_survey_question_3_choice_2": "Não",
|
||||||
"professional_development_survey_question_3_headline": "Dedicou tempo ao seu desenvolvimento profissional no passado?",
|
"professional_development_survey_question_3_headline": "Dedicou tempo ao seu desenvolvimento profissional no passado?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Eu senti-me confiante ao usar o sistema.",
|
"usability_question_9_headline": "Eu senti-me confiante ao usar o sistema.",
|
||||||
"usability_rating_description": "Meça a usabilidade percebida ao solicitar que os utilizadores avaliem a sua experiência com o seu produto usando um questionário padronizado de 10 perguntas.",
|
"usability_rating_description": "Meça a usabilidade percebida ao solicitar que os utilizadores avaliem a sua experiência com o seu produto usando um questionário padronizado de 10 perguntas.",
|
||||||
"usability_score_name": "System Usability Score (SUS)"
|
"usability_score_name": "System Usability Score (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Obrigado por partilhar a sua ideia de fluxo de trabalho connosco! Estamos atualmente a desenhar esta funcionalidade e o seu feedback vai ajudar-nos a construir exatamente o que precisa.",
|
||||||
|
"coming_soon_title": "Estamos quase lá!",
|
||||||
|
"follow_up_label": "Há mais alguma coisa que gostaria de acrescentar?",
|
||||||
|
"follow_up_placeholder": "Que tarefas específicas gostaria de automatizar? Existe alguma ferramenta ou integração que queira incluir?",
|
||||||
|
"generate_button": "Gerar fluxo de trabalho",
|
||||||
|
"heading": "Que fluxo de trabalho quer criar?",
|
||||||
|
"placeholder": "Descreva o fluxo de trabalho que pretende gerar…",
|
||||||
|
"subheading": "Gere o seu fluxo de trabalho em segundos.",
|
||||||
|
"submit_button": "Adicionar detalhes",
|
||||||
|
"thank_you_description": "A sua contribuição ajuda-nos a criar a funcionalidade Workflows de que realmente precisa. Mantê-lo-emos informado sobre o nosso progresso.",
|
||||||
|
"thank_you_title": "Obrigado pelo seu feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+69
-31
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Copiază",
|
"copy": "Copiază",
|
||||||
"copy_code": "Copiază codul",
|
"copy_code": "Copiază codul",
|
||||||
"copy_link": "Copiază legătura",
|
"copy_link": "Copiază legătura",
|
||||||
"count_attributes": "{value, plural, one {{value} atribut} few {{value} atribute} other {{value} de atribute}}",
|
"count_attributes": "{count, plural, one {{count} atribut} few {{count} atribute} other {{count} de atribute}}",
|
||||||
"count_contacts": "{value, plural, one {# contact} other {# contacte} }",
|
"count_contacts": "{count, plural, one {{count} contact} few {{count} contacte} other {{count} de contacte}}",
|
||||||
"count_responses": "{value, plural, one {# răspuns} other {# răspunsuri} }",
|
"count_members": "{count, plural, one {{count} membru} few {{count} membri} other {{count} de membri}}",
|
||||||
|
"count_questions": "{count, plural, one {# întrebare} few {# întrebări} other {# de întrebări}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} răspuns} few {{count} răspunsuri} other {{count} de răspunsuri}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} selecție} few {{count} selecții} other {{count} de selecții}}",
|
||||||
"create_new_organization": "Creează organizație nouă",
|
"create_new_organization": "Creează organizație nouă",
|
||||||
"create_segment": "Creați segment",
|
"create_segment": "Creați segment",
|
||||||
"create_survey": "Creează sondaj",
|
"create_survey": "Creează sondaj",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "zile",
|
"days": "zile",
|
||||||
"default": "Implicit",
|
"default": "Implicit",
|
||||||
"delete": "Șterge",
|
"delete": "Șterge",
|
||||||
|
"delete_what": "Șterge {deleteWhat}",
|
||||||
"description": "Descriere",
|
"description": "Descriere",
|
||||||
"dev_env": "Mediu de dezvoltare",
|
"dev_env": "Mediu de dezvoltare",
|
||||||
"development": "Dezvoltare",
|
"development": "Dezvoltare",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Descărcare",
|
"download": "Descărcare",
|
||||||
"draft": "Schiță",
|
"draft": "Schiță",
|
||||||
"duplicate": "Duplicități",
|
"duplicate": "Duplicități",
|
||||||
|
"duplicate_copy": "(copie)",
|
||||||
|
"duplicate_copy_number": "(copie {copyNumber})",
|
||||||
"e_commerce": "Comerț electronic",
|
"e_commerce": "Comerț electronic",
|
||||||
"edit": "Editare",
|
"edit": "Editare",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Aspect și Comportament",
|
"look_and_feel": "Aspect și Comportament",
|
||||||
"manage": "Gestionați",
|
"manage": "Gestionați",
|
||||||
"marketing": "Marketing",
|
"marketing": "Marketing",
|
||||||
"member": "Membru",
|
|
||||||
"members": "Membri",
|
"members": "Membri",
|
||||||
"members_and_teams": "Membri și echipe",
|
"members_and_teams": "Membri și echipe",
|
||||||
"membership_not_found": "Apartenența nu a fost găsită",
|
"membership_not_found": "Apartenența nu a fost găsită",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Mută în jos",
|
"move_down": "Mută în jos",
|
||||||
"move_up": "Mută sus",
|
"move_up": "Mută sus",
|
||||||
"multiple_languages": "Mai multe limbi",
|
"multiple_languages": "Mai multe limbi",
|
||||||
|
"my_product": "produsul meu",
|
||||||
"name": "Nume",
|
"name": "Nume",
|
||||||
"new": "Nou",
|
"new": "Nou",
|
||||||
"new_version_available": "Formbricks {version} este disponibil. Actualizați acum!",
|
"new_version_available": "Formbricks {version} este disponibil. Actualizați acum!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Selectați echipele",
|
"select_teams": "Selectați echipele",
|
||||||
"selected": "Selectat",
|
"selected": "Selectat",
|
||||||
"selected_questions": "Întrebări selectate",
|
"selected_questions": "Întrebări selectate",
|
||||||
"selection": "Selecție",
|
|
||||||
"selections": "Selecții",
|
|
||||||
"send_test_email": "Trimite email de test",
|
"send_test_email": "Trimite email de test",
|
||||||
"session_not_found": "Sesiune inexistentă",
|
"session_not_found": "Sesiune inexistentă",
|
||||||
"settings": "Setări",
|
"settings": "Setări",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Afișează numărul de răspunsuri",
|
"show_response_count": "Afișează numărul de răspunsuri",
|
||||||
"shown": "Afișat",
|
"shown": "Afișat",
|
||||||
"size": "Mărime",
|
"size": "Mărime",
|
||||||
|
"skip": "Omite",
|
||||||
"skipped": "Sărit",
|
"skipped": "Sărit",
|
||||||
"skips": "Salturi",
|
"skips": "Salturi",
|
||||||
"some_files_failed_to_upload": "Unele fișiere nu au reușit să se încarce",
|
"some_files_failed_to_upload": "Unele fișiere nu au reușit să se încarce",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Chestionar despre site",
|
"website_survey": "Chestionar despre site",
|
||||||
"weeks": "săptămâni",
|
"weeks": "săptămâni",
|
||||||
"welcome_card": "Card de bun venit",
|
"welcome_card": "Card de bun venit",
|
||||||
|
"workflows": "Workflows",
|
||||||
"workspace_configuration": "Configurare workspace",
|
"workspace_configuration": "Configurare workspace",
|
||||||
"workspace_created_successfully": "Spațiul de lucru a fost creat cu succes",
|
"workspace_created_successfully": "Spațiul de lucru a fost creat cu succes",
|
||||||
"workspace_creation_description": "Organizează sondajele în workspaces pentru un control mai bun al accesului.",
|
"workspace_creation_description": "Organizează sondajele în workspaces pentru un control mai bun al accesului.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Valoare",
|
"attribute_value": "Valoare",
|
||||||
"attribute_value_placeholder": "Valoare atribut",
|
"attribute_value_placeholder": "Valoare atribut",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Nu s-au putut crea {count, plural, one {1 atribut nou} few {# atribute noi} other {# de atribute noi}} deoarece s-ar depăși limita maximă de {limit, plural, one {1 clasă de atribute} few {# clase de atribute} other {# de clase de atribute}}. Atributele existente au fost actualizate cu succes.",
|
"attributes_msg_attribute_limit_exceeded": "Nu s-au putut crea {count, plural, one {1 atribut nou} few {# atribute noi} other {# de atribute noi}} deoarece s-ar depăși limita maximă de {limit, plural, one {1 clasă de atribute} few {# clase de atribute} other {# de clase de atribute}}. Atributele existente au fost actualizate cu succes.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (atributul „{key}” are dataType: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (atributul „{key}” are tipul de date: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "Emailul există deja pentru acest mediu și nu a fost actualizat.",
|
"attributes_msg_email_already_exists": "Emailul există deja pentru acest mediu și nu a fost actualizat.",
|
||||||
"attributes_msg_email_or_userid_required": "Este necesar fie un email, fie un userId. Valorile existente au fost păstrate.",
|
"attributes_msg_email_or_userid_required": "Este necesar fie un email, fie un ID de utilizator. Valorile existente au fost păstrate.",
|
||||||
"attributes_msg_new_attribute_created": "A fost creat atributul nou „{key}” cu tipul „{dataType}”",
|
"attributes_msg_new_attribute_created": "A fost creat un nou atribut „{key}” cu tipul „{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "UserId-ul există deja pentru acest mediu și nu a fost actualizat.",
|
"attributes_msg_userid_already_exists": "ID-ul de utilizator există deja pentru acest mediu și nu a fost actualizat.",
|
||||||
"contact_deleted_successfully": "Contact șters cu succes",
|
"contact_deleted_successfully": "Contact șters cu succes",
|
||||||
"contact_not_found": "Nu a fost găsit niciun contact",
|
"contact_not_found": "Nu a fost găsit niciun contact",
|
||||||
"contacts_table_refresh": "Reîmprospătare contacte",
|
"contacts_table_refresh": "Reîmprospătare contacte",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Tip de date",
|
"data_type": "Tip de date",
|
||||||
"data_type_cannot_be_changed": "Tipul de date nu poate fi schimbat după creare",
|
"data_type_cannot_be_changed": "Tipul de date nu poate fi schimbat după creare",
|
||||||
"data_type_description": "Alege cum să fie stocat și filtrat acest atribut",
|
"data_type_description": "Alege cum să fie stocat și filtrat acest atribut",
|
||||||
"date_value_required": "Valoarea pentru dată este obligatorie. Folosește butonul de ștergere dacă nu vrei să setezi o dată.",
|
"date_value_required": "Este necesară o valoare de tip dată. Folosiți butonul de ștergere pentru a elimina acest atribut dacă nu doriți să setați o dată.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Acest lucru va șterge atributul selectat. Orice date de contact asociate cu acest atribut vor fi pierdute.} few {Acest lucru va șterge atributele selectate. Orice date de contact asociate cu aceste atribute vor fi pierdute.} other {Acest lucru va șterge atributele selectate. Orice date de contact asociate cu aceste atribute vor fi pierdute.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Acest lucru va șterge atributul selectat. Orice date de contact asociate cu acest atribut vor fi pierdute.} few {Acest lucru va șterge atributele selectate. Orice date de contact asociate cu aceste atribute vor fi pierdute.} other {Acest lucru va șterge atributele selectate. Orice date de contact asociate cu aceste atribute vor fi pierdute.}}",
|
||||||
"delete_contact_confirmation": "Acest lucru va șterge toate răspunsurile la sondaj și atributele de contact asociate cu acest contact. Orice țintire și personalizare bazată pe datele acestui contact vor fi pierdute.",
|
"delete_contact_confirmation": "Acest lucru va șterge toate răspunsurile la sondaj și atributele de contact asociate cu acest contact. Orice țintire și personalizare bazată pe datele acestui contact vor fi pierdute.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {Această acțiune va șterge toate răspunsurile chestionarului și atributele de contact asociate cu acest contact. Orice țintire și personalizare bazată pe datele acestui contact vor fi pierdute. Dacă acest contact are răspunsuri care contează pentru cotele chestionarului, numărul cotelor va fi redus, dar limitele cotelor vor rămâne neschimbate.} other {Aceste acțiuni vor șterge toate răspunsurile chestionarului și atributele de contact asociate cu acești contacți. Orice țintire și personalizare bazată pe datele acestor contacți vor fi pierdute. Dacă acești contacți au răspunsuri care contează pentru cotele chestionarului, numărul cotelor va fi redus, dar limitele cotelor vor rămâne neschimbate.} }",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {Această acțiune va șterge toate răspunsurile chestionarului și atributele de contact asociate cu acest contact. Orice țintire și personalizare bazată pe datele acestui contact vor fi pierdute. Dacă acest contact are răspunsuri care contează pentru cotele chestionarului, numărul cotelor va fi redus, dar limitele cotelor vor rămâne neschimbate.} other {Aceste acțiuni vor șterge toate răspunsurile chestionarului și atributele de contact asociate cu acești contacți. Orice țintire și personalizare bazată pe datele acestor contacți vor fi pierdute. Dacă acești contacți au răspunsuri care contează pentru cotele chestionarului, numărul cotelor va fi redus, dar limitele cotelor vor rămâne neschimbate.} }",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Atribute de sistem",
|
"system_attributes": "Atribute de sistem",
|
||||||
"unlock_contacts_description": "Gestionează contactele și trimite sondaje țintite",
|
"unlock_contacts_description": "Gestionează contactele și trimite sondaje țintite",
|
||||||
"unlock_contacts_title": "Deblocați contactele cu un plan superior.",
|
"unlock_contacts_title": "Deblocați contactele cu un plan superior.",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Atributul „{key}” este de tipul „{dataType}”, dar CSV-ul conține valori invalide: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Atributul „{key}” are tipul „{dataType}”, dar fișierul CSV conține valori invalide: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Au fost găsite mapări duplicate pentru următoarele atribute: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Au fost găsite mapări duplicate pentru următoarele atribute: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "Dimensiunea fișierului depășește limita maximă de 800KB",
|
"upload_contacts_error_file_too_large": "Dimensiunea fișierului depășește limita maximă de 800KB",
|
||||||
"upload_contacts_error_generic": "A apărut o eroare la încărcarea contactelor. Te rugăm să încerci din nou mai târziu.",
|
"upload_contacts_error_generic": "A apărut o eroare la încărcarea contactelor. Te rugăm să încerci din nou mai târziu.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Reconectează",
|
"reconnect_button": "Reconectează",
|
||||||
"reconnect_button_description": "Conexiunea ta cu Google Sheets a expirat. Te rugăm să te reconectezi pentru a continua sincronizarea răspunsurilor. Linkurile și datele existente din foile de calcul vor fi păstrate.",
|
"reconnect_button_description": "Conexiunea ta cu Google Sheets a expirat. Te rugăm să te reconectezi pentru a continua sincronizarea răspunsurilor. Linkurile și datele existente din foile de calcul vor fi păstrate.",
|
||||||
"reconnect_button_tooltip": "Reconectează integrarea pentru a-ți reîmprospăta accesul. Linkurile și datele existente din foile de calcul vor fi păstrate.",
|
"reconnect_button_tooltip": "Reconectează integrarea pentru a-ți reîmprospăta accesul. Linkurile și datele existente din foile de calcul vor fi păstrate.",
|
||||||
"spreadsheet_permission_error": "Nu ai permisiunea de a accesa această foaie de calcul. Asigură-te că foaia de calcul este partajată cu contul tău Google și că ai acces de scriere la aceasta.",
|
"spreadsheet_permission_error": "Nu aveți permisiunea de a accesa această foaie de calcul. Asigurați-vă că foaia de calcul este partajată cu contul dvs. Google și că aveți acces de scriere la aceasta.",
|
||||||
"spreadsheet_url": "URL foaie de calcul",
|
"spreadsheet_url": "URL foaie de calcul",
|
||||||
"token_expired_error": "Tokenul de reîmprospătare Google Sheets a expirat sau a fost revocat. Te rugăm să reconectezi integrarea."
|
"token_expired_error": "Tokenul de reîmprospătare Google Sheets a expirat sau a fost revocat. Te rugăm să reconectezi integrarea."
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "Plan curent",
|
"current_plan": "Plan curent",
|
||||||
"current_tier_limit": "Limită curentă a nivelului",
|
"current_tier_limit": "Limită curentă a nivelului",
|
||||||
"custom": "Personalizat & Scalare",
|
"custom": "Personalizat & Scalare",
|
||||||
"custom_contacts_limit": "Limită personalizată contacte",
|
"custom_contacts_limit": "Limită personalizată de contacte",
|
||||||
"custom_response_limit": "Limit Personalizat Răspunsuri",
|
"custom_response_limit": "Limit Personalizat Răspunsuri",
|
||||||
"custom_workspace_limit": "Limită personalizată de workspaces",
|
"custom_workspace_limit": "Limită personalizată de workspaces",
|
||||||
"email_embedded_surveys": "Sondaje încorporate în email",
|
"email_embedded_surveys": "Sondaje încorporate în email",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "Cheia de licență este invalidă. Te rugăm să verifici variabila ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "Cheia de licență este invalidă. Te rugăm să verifici variabila ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Licența a fost verificată cu succes",
|
"recheck_license_success": "Licența a fost verificată cu succes",
|
||||||
"recheck_license_unreachable": "Serverul de licențe este indisponibil. Te rugăm să încerci din nou mai târziu.",
|
"recheck_license_unreachable": "Serverul de licențe este indisponibil. Te rugăm să încerci din nou mai târziu.",
|
||||||
"rechecking": "Se verifică din nou...",
|
"rechecking": "Se reverifică…",
|
||||||
"request_30_day_trial_license": "Solicitați o licență de încercare de 30 de zile",
|
"request_30_day_trial_license": "Solicitați o licență de încercare de 30 de zile",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Acord privind nivelul de servicii",
|
"service_level_agreement": "Acord privind nivelul de servicii",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Salut {userName}",
|
"email_customization_preview_email_heading": "Salut {userName}",
|
||||||
"email_customization_preview_email_text": "Acesta este o previzualizare a e-mailului pentru a vă arăta ce logo va fi afișat în e-mailurile.",
|
"email_customization_preview_email_text": "Acesta este o previzualizare a e-mailului pentru a vă arăta ce logo va fi afișat în e-mailurile.",
|
||||||
"error_deleting_organization_please_try_again": "Eroare la ștergerea organizației. Vă rugăm să încercați din nou.",
|
"error_deleting_organization_please_try_again": "Eroare la ștergerea organizației. Vă rugăm să încercați din nou.",
|
||||||
"from_your_organization": "din organizația ta",
|
"from_your_organization": "{memberName} din organizația ta",
|
||||||
"invitation_sent_once_more": "Invitație trimisă din nou.",
|
"invitation_sent_once_more": "Invitație trimisă din nou.",
|
||||||
"invite_deleted_successfully": "Invitație ștearsă cu succes",
|
"invite_deleted_successfully": "Invitație ștearsă cu succes",
|
||||||
"invite_expires_on": "Invitația expiră pe {date}",
|
"invite_expires_on": "Invitația expiră pe {date}",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Setările notificărilor actualizate",
|
"notification_settings_updated": "Setările notificărilor actualizate",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Configurați o alertă pentru a primi un email la răspunsuri noi",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Configurați o alertă pentru a primi un email la răspunsuri noi",
|
||||||
"use_the_integration": "Folosiți integrarea",
|
"use_the_integration": "Folosiți integrarea",
|
||||||
"want_to_loop_in_organization_mates": "Doriți să includeți colegii din organizație",
|
"want_to_loop_in_organization_mates": "Doriți să implicați colegii din organizație?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Nu vei fi abonat automat la sondajele acestei organizații de acum înainte!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Nu vei fi abonat automat la sondajele acestei organizații de acum înainte!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Nu veți primi mai multe e-mailuri pentru răspunsurile la acest sondaj!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Nu veți primi mai multe e-mailuri pentru răspunsurile la acest sondaj!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Adaugă un placeholder pentru a afișa dacă nu există valoare de reamintit",
|
"add_fallback_placeholder": "Adaugă un placeholder pentru a afișa dacă nu există valoare de reamintit",
|
||||||
"add_hidden_field_id": "Adăugați ID câmp ascuns",
|
"add_hidden_field_id": "Adăugați ID câmp ascuns",
|
||||||
"add_highlight_border": "Adaugă bordură evidențiată",
|
"add_highlight_border": "Adaugă bordură evidențiată",
|
||||||
|
"add_highlight_border_description": "Se aplică doar sondajelor din produs.",
|
||||||
"add_logic": "Adaugă logică",
|
"add_logic": "Adaugă logică",
|
||||||
"add_none_of_the_above": "Adăugați \"Niciuna dintre cele de mai sus\"",
|
"add_none_of_the_above": "Adăugați \"Niciuna dintre cele de mai sus\"",
|
||||||
"add_option": "Adăugați opțiune",
|
"add_option": "Adăugați opțiune",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Ajustați mesajul 'Sondaj Închis'",
|
"adjust_survey_closed_message": "Ajustați mesajul 'Sondaj Închis'",
|
||||||
"adjust_survey_closed_message_description": "Schimbați mesajul pe care îl văd vizitatorii atunci când sondajul este închis.",
|
"adjust_survey_closed_message_description": "Schimbați mesajul pe care îl văd vizitatorii atunci când sondajul este închis.",
|
||||||
"adjust_the_theme_in_the": "Ajustați tema în",
|
"adjust_the_theme_in_the": "Ajustați tema în",
|
||||||
|
"all_are_true": "toate sunt adevărate",
|
||||||
"all_other_answers_will_continue_to": "Toate celelalte răspunsuri vor continua să",
|
"all_other_answers_will_continue_to": "Toate celelalte răspunsuri vor continua să",
|
||||||
"allow_multi_select": "Permite selectare multiplă",
|
"allow_multi_select": "Permite selectare multiplă",
|
||||||
"allow_multiple_files": "Permite fișiere multiple",
|
"allow_multiple_files": "Permite fișiere multiple",
|
||||||
"allow_users_to_select_more_than_one_image": "Permite utilizatorilor să selecteze mai mult de o imagine",
|
"allow_users_to_select_more_than_one_image": "Permite utilizatorilor să selecteze mai mult de o imagine",
|
||||||
"and_launch_surveys_in_your_website_or_app": "și lansați chestionare pe site-ul sau în aplicația dvs.",
|
"and_launch_surveys_in_your_website_or_app": "și lansați chestionare pe site-ul sau în aplicația dvs.",
|
||||||
"animation": "Animație",
|
"animation": "Animație",
|
||||||
|
"any_is_true": "oricare este adevărată",
|
||||||
"app_survey_description": "Incorporați un chestionar în aplicația web sau pe site-ul dvs. pentru a colecta răspunsuri.",
|
"app_survey_description": "Incorporați un chestionar în aplicația web sau pe site-ul dvs. pentru a colecta răspunsuri.",
|
||||||
"assign": "Atribuire =",
|
"assign": "Atribuire =",
|
||||||
"audience": "Public",
|
"audience": "Public",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Casual",
|
"casual": "Casual",
|
||||||
"caution_edit_duplicate": "Duplică & editează",
|
"caution_edit_duplicate": "Duplică & editează",
|
||||||
"caution_edit_published_survey": "Editează un chestionar publicat?",
|
"caution_edit_published_survey": "Editează un chestionar publicat?",
|
||||||
"caution_explanation_intro": "Înțelegem că s-ar putea să doriți totuși să faceți modificări. Iată ce se întâmplă dacă o faceți:",
|
"caution_explanation_intro": "Înțelegem că este posibil să doriți totuși să faceți modificări. Iată ce se întâmplă dacă procedați astfel:",
|
||||||
"caution_explanation_new_responses_separated": "Răspunsurile înainte de schimbare pot să nu fie sau să fie incluse doar parțial în rezumatul sondajului.",
|
"caution_explanation_new_responses_separated": "Răspunsurile înainte de schimbare pot să nu fie sau să fie incluse doar parțial în rezumatul sondajului.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Toate datele, inclusiv răspunsurile anterioare, rămân disponibile ca descărcare pe pagina de rezumat a sondajului.",
|
"caution_explanation_only_new_responses_in_summary": "Toate datele, inclusiv răspunsurile anterioare, rămân disponibile ca descărcare pe pagina de rezumat a sondajului.",
|
||||||
"caution_explanation_responses_are_safe": "Răspunsurile mai vechi și mai noi se amestecă, ceea ce poate duce la rezumate de date înșelătoare.",
|
"caution_explanation_responses_are_safe": "Răspunsurile mai vechi și mai noi se amestecă, ceea ce poate duce la rezumate de date înșelătoare.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Urmărirea a fost actualizată și va fi salvată odată ce salvați sondajul.",
|
"follow_ups_modal_updated_successfull_toast": "Urmărirea a fost actualizată și va fi salvată odată ce salvați sondajul.",
|
||||||
"follow_ups_new": "Follow-up nou",
|
"follow_ups_new": "Follow-up nou",
|
||||||
"follow_ups_upgrade_button_text": "Actualizați pentru a activa urmărările",
|
"follow_ups_upgrade_button_text": "Actualizați pentru a activa urmărările",
|
||||||
"form_styling": "Stilizare formular",
|
|
||||||
"formbricks_sdk_is_not_connected": "SDK Formbricks nu este conectat",
|
"formbricks_sdk_is_not_connected": "SDK Formbricks nu este conectat",
|
||||||
"four_points": "4 puncte",
|
"four_points": "4 puncte",
|
||||||
"heading": "Titlu",
|
"heading": "Titlu",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Opțiunea {choiceIndex}",
|
"option_idx": "Opțiunea {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Această opțiune este folosită în logica întrebării {questionIndex}. Vă rugăm să-l eliminați din logică mai întâi.",
|
"option_used_in_logic_error": "Această opțiune este folosită în logica întrebării {questionIndex}. Vă rugăm să-l eliminați din logică mai întâi.",
|
||||||
"optional": "Opțional",
|
"optional": "Opțional",
|
||||||
"options": "Opțiuni",
|
"options": "Opțiuni*",
|
||||||
"options_used_in_logic_bulk_error": "Următoarele opțiuni sunt folosite în logică: {questionIndexes}. Vă rugăm să le eliminați din logică mai întâi.",
|
"options_used_in_logic_bulk_error": "Următoarele opțiuni sunt folosite în logică: {questionIndexes}. Vă rugăm să le eliminați din logică mai întâi.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Suprascrie tema cu stiluri individuale pentru acest sondaj.",
|
"override_theme_with_individual_styles_for_this_survey": "Suprascrie tema cu stiluri individuale pentru acest sondaj.",
|
||||||
"overwrite_global_waiting_time": "Setează perioadă de răcire personalizată",
|
"overwrite_global_waiting_time": "Setează perioadă de răcire personalizată",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Întrebare ștearsă.",
|
"question_deleted": "Întrebare ștearsă.",
|
||||||
"question_duplicated": "Întrebare duplicată.",
|
"question_duplicated": "Întrebare duplicată.",
|
||||||
"question_id_updated": "ID întrebare actualizat",
|
"question_id_updated": "ID întrebare actualizat",
|
||||||
|
"question_number": "Întrebarea {number}",
|
||||||
"question_used_in_logic_warning_text": "Elemente din acest bloc sunt folosite într-o regulă de logică. Sigur doriți să îl ștergeți?",
|
"question_used_in_logic_warning_text": "Elemente din acest bloc sunt folosite într-o regulă de logică. Sigur doriți să îl ștergeți?",
|
||||||
"question_used_in_logic_warning_title": "Inconsistență logică",
|
"question_used_in_logic_warning_title": "Inconsistență logică",
|
||||||
"question_used_in_quota": "Întrebarea aceasta este folosită în cota „{quotaName}”",
|
"question_used_in_quota": "Întrebarea aceasta este folosită în cota „{quotaName}”",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Limite de răspunsuri, redirecționări și altele.",
|
"response_limits_redirections_and_more": "Limite de răspunsuri, redirecționări și altele.",
|
||||||
"response_options": "Opțiuni răspuns",
|
"response_options": "Opțiuni răspuns",
|
||||||
"roundness": "Rotunjire",
|
"roundness": "Rotunjire",
|
||||||
"roundness_description": "Controlează cât de rotunjite sunt colțurile cardului.",
|
"roundness_description": "Controlează cât de rotunjite sunt colțurile.",
|
||||||
"row_used_in_logic_error": "Această linie este folosită în logica întrebării {questionIndex}. Vă rugăm să-l eliminați din logică mai întâi.",
|
"row_used_in_logic_error": "Această linie este folosită în logica întrebării {questionIndex}. Vă rugăm să-l eliminați din logică mai întâi.",
|
||||||
"rows": "Rânduri",
|
"rows": "Rânduri",
|
||||||
"save_and_close": "Salvează & Închide",
|
"save_and_close": "Salvează & Închide",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Acest sondaj gratuit și open-source a fost închis",
|
"survey_completed_subheading": "Acest sondaj gratuit și open-source a fost închis",
|
||||||
"survey_display_settings": "Setări de afișare a sondajului",
|
"survey_display_settings": "Setări de afișare a sondajului",
|
||||||
"survey_placement": "Amplasarea sondajului",
|
"survey_placement": "Amplasarea sondajului",
|
||||||
|
"survey_styling": "Stilizare formular",
|
||||||
"survey_trigger": "Declanșator sondaj",
|
"survey_trigger": "Declanșator sondaj",
|
||||||
"switch_multi_language_on_to_get_started": "Activați opțiunea multi-limbă pentru a începe 👉",
|
"switch_multi_language_on_to_get_started": "Activați opțiunea multi-limbă pentru a începe 👉",
|
||||||
"target_block_not_found": "Blocul țintă nu a fost găsit",
|
"target_block_not_found": "Blocul țintă nu a fost găsit",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Se potrivește cu un șablon regex",
|
"pattern": "Se potrivește cu un șablon regex",
|
||||||
"phone": "Este un număr de telefon valid",
|
"phone": "Este un număr de telefon valid",
|
||||||
"rank_all_options": "Ordonați toate opțiunile",
|
"rank_all_options": "Ordonați toate opțiunile",
|
||||||
"select_file_extensions": "Selectați extensiile de fișier...",
|
"select_file_extensions": "Selectați extensiile de fișiere…",
|
||||||
"select_option": "Selectează opțiunea",
|
"select_option": "Selectează opțiunea",
|
||||||
"start_date": "Data de început",
|
"start_date": "Data de început",
|
||||||
"url": "Este un URL valid"
|
"url": "Este un URL valid"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Perioadă de răcire (între sondaje)",
|
"waiting_time_across_surveys": "Perioadă de răcire (între sondaje)",
|
||||||
"waiting_time_across_surveys_description": "Pentru a preveni oboseala cauzată de sondaje, alege cum interacționează acest sondaj cu perioada de răcire la nivel de workspace.",
|
"waiting_time_across_surveys_description": "Pentru a preveni oboseala cauzată de sondaje, alege cum interacționează acest sondaj cu perioada de răcire la nivel de workspace.",
|
||||||
"welcome_message": "Mesaj de bun venit",
|
"welcome_message": "Mesaj de bun venit",
|
||||||
|
"when": "Când",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Fără un filtru, toți utilizatorii pot fi chestionați.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Fără un filtru, toți utilizatorii pot fi chestionați.",
|
||||||
"you_have_not_created_a_segment_yet": "Nu ai creat încă un segment",
|
"you_have_not_created_a_segment_yet": "Nu ai creat încă un segment",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Trebuie să aveți cel puțin două limbi configurate în spațiul de lucru pentru a putea lucra cu traduceri.",
|
|
||||||
"your_description_here_recall_information_with": "Descrierea ta aici. Reamintiți informațiile cu @",
|
"your_description_here_recall_information_with": "Descrierea ta aici. Reamintiți informațiile cu @",
|
||||||
"your_question_here_recall_information_with": "Întrebarea ta aici. Reamintiți informațiile cu @",
|
"your_question_here_recall_information_with": "Întrebarea ta aici. Reamintiți informațiile cu @",
|
||||||
"your_web_app": "Aplicația dumneavoastră web",
|
"your_web_app": "Aplicația dumneavoastră web",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Dezactivează linkurile de unică folosință",
|
"disable_single_use_link_modal_button": "Dezactivează linkurile de unică folosință",
|
||||||
"disable_single_use_link_modal_description": "Dacă ați distribuit linkuri de unică folosință, participanții nu vor mai putea răspunde la sondaj.",
|
"disable_single_use_link_modal_description": "Dacă ați distribuit linkuri de unică folosință, participanții nu vor mai putea răspunde la sondaj.",
|
||||||
"generate_and_download_links": "Generează și descarcă legături",
|
"generate_and_download_links": "Generează și descarcă legături",
|
||||||
"generate_links_error": "Link-urile de unică folosință nu au putut fi generate. Vă rugăm să lucrați direct cu API-ul",
|
"generate_links_error": "Legăturile de utilizare unică nu au putut fi generate. Vă rugăm să lucrați direct cu API-ul.",
|
||||||
"multi_use_link": "Link de utilizare multiplă",
|
"multi_use_link": "Link de utilizare multiplă",
|
||||||
"multi_use_link_description": "Colectați răspunsuri multiple de la respondenți anonimi cu un singur link.",
|
"multi_use_link_description": "Colectați răspunsuri multiple de la respondenți anonimi cu un singur link.",
|
||||||
"multi_use_powers_other_channels_description": "Dacă îl dezactivați, aceste alte canale de distribuție vor fi dezactivate și ele.",
|
"multi_use_powers_other_channels_description": "Dacă îl dezactivați, aceste alte canale de distribuție vor fi dezactivate și ele.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Filtru adăugat pentru răspunsuri unde răspunsul la întrebarea {questionIdx} este {filterComboBoxValue} - {filterValue}",
|
"added_filter_for_responses_where_answer_to_question": "S-a adăugat un filtru pentru răspunsurile unde răspunsul la întrebarea {questionIdx} este {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtru adăugat pentru răspunsuri unde răspunsul la întrebarea {questionIdx} este omis",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Filtru adăugat pentru răspunsuri unde răspunsul la întrebarea {questionIdx} este omis",
|
||||||
"aggregated": "Agregat",
|
"aggregated": "Agregat",
|
||||||
"all_responses_csv": "Toate răspunsurile (CSV)",
|
"all_responses_csv": "Toate răspunsurile (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Începuturi",
|
"starts": "Începuturi",
|
||||||
"starts_tooltip": "Număr de ori când sondajul a fost început.",
|
"starts_tooltip": "Număr de ori când sondajul a fost început.",
|
||||||
"survey_reset_successfully": "Resetarea chestionarului realizată cu succes! Au fost șterse {responseCount} răspunsuri și {displayCount} afișări.",
|
"survey_reset_successfully": "Resetarea chestionarului realizată cu succes! Au fost șterse {responseCount} răspunsuri și {displayCount} afișări.",
|
||||||
|
"survey_results": "Rezultatele {surveyName}",
|
||||||
"this_month": "Luna aceasta",
|
"this_month": "Luna aceasta",
|
||||||
"this_quarter": "Trimestrul acesta",
|
"this_quarter": "Trimestrul acesta",
|
||||||
"this_year": "Anul acesta",
|
"this_year": "Anul acesta",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Adăugați o culoare de fundal la containerul siglei.",
|
"add_background_color_description": "Adăugați o culoare de fundal la containerul siglei.",
|
||||||
"advanced_styling_field_border_radius": "Raza colțurilor",
|
"advanced_styling_field_border_radius": "Raza colțurilor",
|
||||||
"advanced_styling_field_button_bg": "Fundal buton",
|
"advanced_styling_field_button_bg": "Fundal buton",
|
||||||
"advanced_styling_field_button_bg_description": "Umple butonul Următor / Trimite.",
|
"advanced_styling_field_button_bg_description": "Umple butonul „Next” / „Submit”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Rotunjește colțurile butonului.",
|
"advanced_styling_field_button_border_radius_description": "Rotunjește colțurile butonului.",
|
||||||
"advanced_styling_field_button_font_size_description": "Scalează textul etichetei butonului.",
|
"advanced_styling_field_button_font_size_description": "Scalează textul etichetei butonului.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Face textul butonului mai subțire sau mai îngroșat.",
|
"advanced_styling_field_button_font_weight_description": "Face textul butonului mai subțire sau mai îngroșat.",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Colorează textul introdus în câmpuri.",
|
"advanced_styling_field_input_text_description": "Colorează textul introdus în câmpuri.",
|
||||||
"advanced_styling_field_option_bg": "Fundal",
|
"advanced_styling_field_option_bg": "Fundal",
|
||||||
"advanced_styling_field_option_bg_description": "Umple elementele de opțiune.",
|
"advanced_styling_field_option_bg_description": "Umple elementele de opțiune.",
|
||||||
|
"advanced_styling_field_option_border": "Culoare contur",
|
||||||
|
"advanced_styling_field_option_border_description": "Evidențiază opțiunile radio și checkbox.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Rotunjește colțurile opțiunilor.",
|
"advanced_styling_field_option_border_radius_description": "Rotunjește colțurile opțiunilor.",
|
||||||
"advanced_styling_field_option_font_size_description": "Redimensionează textul etichetei opțiunii.",
|
"advanced_styling_field_option_font_size_description": "Redimensionează textul etichetei opțiunii.",
|
||||||
"advanced_styling_field_option_label": "Culoare etichetă",
|
"advanced_styling_field_option_label": "Culoare etichetă",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Afișează semnătura „Powered by Formbricks”",
|
"show_powered_by_formbricks": "Afișează semnătura „Powered by Formbricks”",
|
||||||
"styling_updated_successfully": "Stilizarea a fost actualizată cu succes",
|
"styling_updated_successfully": "Stilizarea a fost actualizată cu succes",
|
||||||
"suggest_colors": "Sugerează culori",
|
"suggest_colors": "Sugerează culori",
|
||||||
"suggested_colors_applied_please_save": "Culorile sugerate au fost generate cu succes. Apasă pe „Salvează” pentru a păstra modificările.",
|
"suggested_colors_applied_please_save": "Culorile sugerate au fost generate cu succes. Apăsați „Save” pentru a salva modificările.",
|
||||||
"theme": "Temă",
|
"theme": "Temă",
|
||||||
"theme_settings_description": "Creează o temă de stil pentru toate sondajele. Poți activa stilizare personalizată pentru fiecare sondaj."
|
"theme_settings_description": "Creează o temă de stil pentru toate sondajele. Poți activa stilizare personalizată pentru fiecare sondaj."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Vă rugăm să verificați și folderul de spam dacă nu vedeți emailul în inbox.",
|
"check_inbox_or_spam": "Vă rugăm să verificați și folderul de spam dacă nu vedeți emailul în inbox.",
|
||||||
"completed": "Acest chestionar este închis.",
|
"completed": "Acest chestionar este închis.",
|
||||||
"create_your_own": "Creează-ți propriul chestionar open-source",
|
"create_your_own": "Creează-ți propriul chestionar open-source",
|
||||||
"enter_pin": "Acest sondaj este protejat. Introduceți PIN-ul mai jos",
|
"enter_pin": "Acest sondaj este protejat. Introduceți PIN-ul mai jos.",
|
||||||
"just_curious": "Doar curios?",
|
"just_curious": "Doar curios?",
|
||||||
"link_invalid": "Acest sondaj poate fi completat doar pe bază de invitație.",
|
"link_invalid": "Acest sondaj poate fi completat doar pe bază de invitație.",
|
||||||
"paused": "Acest sondaj este temporar întrerupt.",
|
"paused": "Acest sondaj este temporar întrerupt.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Cum poate îmbunătăți compania alinierea viziunii și strategiei sale?",
|
"alignment_and_engagement_survey_question_4_headline": "Cum poate îmbunătăți compania alinierea viziunii și strategiei sale?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Tastează răspunsul aici...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Tastează răspunsul aici...",
|
||||||
"back": "Înapoi",
|
"back": "Înapoi",
|
||||||
|
"block_1": "Blocul 1",
|
||||||
|
"block_10": "Blocul 10",
|
||||||
|
"block_2": "Blocul 2",
|
||||||
|
"block_3": "Blocul 3",
|
||||||
|
"block_4": "Blocul 4",
|
||||||
|
"block_5": "Blocul 5",
|
||||||
|
"block_6": "Blocul 6",
|
||||||
|
"block_7": "Blocul 7",
|
||||||
|
"block_8": "Blocul 8",
|
||||||
|
"block_9": "Blocul 9",
|
||||||
"book_interview": "Rezervă interviu",
|
"book_interview": "Rezervă interviu",
|
||||||
"build_product_roadmap_description": "Identificați acel UN lucru pe care îl doresc cel mai mult utilizatorii și construiți-l.",
|
"build_product_roadmap_description": "Identificați acel UN lucru pe care îl doresc cel mai mult utilizatorii și construiți-l.",
|
||||||
"build_product_roadmap_name": "Crearea foii de parcurs a produsului",
|
"build_product_roadmap_name": "Crearea foii de parcurs a produsului",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Calitate slabă",
|
"csat_question_3_choice_8": "Calitate slabă",
|
||||||
"csat_question_3_choice_9": "Nesigur",
|
"csat_question_3_choice_9": "Nesigur",
|
||||||
"csat_question_3_headline": "Care dintre următoarele cuvinte ați folosi pentru a descrie aplicația noastră $[projectName]?",
|
"csat_question_3_headline": "Care dintre următoarele cuvinte ați folosi pentru a descrie aplicația noastră $[projectName]?",
|
||||||
"csat_question_3_subheader": "Selectați toate opțiunile care se aplică:",
|
"csat_question_3_subheader": "Vă rugăm să selectați toate opțiunile care se aplică:",
|
||||||
"csat_question_4_choice_1": "Foarte bine",
|
"csat_question_4_choice_1": "Foarte bine",
|
||||||
"csat_question_4_choice_2": "Foarte bine",
|
"csat_question_4_choice_2": "Foarte bine",
|
||||||
"csat_question_4_choice_3": "Destul de bine",
|
"csat_question_4_choice_3": "Destul de bine",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Of, îmi pare rău! Există ceva ce putem face pentru a-ți îmbunătăți experiența?",
|
"csat_survey_question_3_headline": "Of, îmi pare rău! Există ceva ce putem face pentru a-ți îmbunătăți experiența?",
|
||||||
"csat_survey_question_3_placeholder": "Tastează răspunsul aici...",
|
"csat_survey_question_3_placeholder": "Tastează răspunsul aici...",
|
||||||
"cta_description": "Afișează informații și solicită utilizatorilor să ia o acțiune specifică",
|
"cta_description": "Afișează informații și solicită utilizatorilor să ia o acțiune specifică",
|
||||||
"custom_survey_block_1_name": "Bloc 1",
|
|
||||||
"custom_survey_description": "Creează un sondaj fără șablon.",
|
"custom_survey_description": "Creează un sondaj fără șablon.",
|
||||||
"custom_survey_name": "Începe de la zero",
|
"custom_survey_name": "Începe de la zero",
|
||||||
"custom_survey_question_1_headline": "Ce ați dori să știți?",
|
"custom_survey_question_1_headline": "Ce ați dori să știți?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Nu, mulţumesc!",
|
"preview_survey_question_2_choice_2_label": "Nu, mulţumesc!",
|
||||||
"preview_survey_question_2_headline": "Vrei să fii în temă?",
|
"preview_survey_question_2_headline": "Vrei să fii în temă?",
|
||||||
"preview_survey_question_2_subheader": "Aceasta este o descriere exemplu.",
|
"preview_survey_question_2_subheader": "Aceasta este o descriere exemplu.",
|
||||||
|
"preview_survey_question_open_text_headline": "Mai vrei să împărtășești ceva?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Tastează răspunsul aici...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Feedbackul tău ne ajută să ne îmbunătățim.",
|
||||||
"preview_survey_welcome_card_headline": "Bun venit!",
|
"preview_survey_welcome_card_headline": "Bun venit!",
|
||||||
"prioritize_features_description": "Identificați caracteristicile de care utilizatorii dumneavoastră au cel mai mult și cel mai puțin nevoie.",
|
"prioritize_features_description": "Identificați caracteristicile de care utilizatorii dumneavoastră au cel mai mult și cel mai puțin nevoie.",
|
||||||
"prioritize_features_name": "Prioritizați caracteristicile",
|
"prioritize_features_name": "Prioritizați caracteristicile",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Cercetare individuală",
|
"professional_development_survey_question_2_choice_5": "Cercetare individuală",
|
||||||
"professional_development_survey_question_2_choice_6": "Altele",
|
"professional_development_survey_question_2_choice_6": "Altele",
|
||||||
"professional_development_survey_question_2_headline": "Ce tipuri de activități de dezvoltare profesională credeți că ar fi cele mai valoroase pentru creșterea dumneavoastră?",
|
"professional_development_survey_question_2_headline": "Ce tipuri de activități de dezvoltare profesională credeți că ar fi cele mai valoroase pentru creșterea dumneavoastră?",
|
||||||
"professional_development_survey_question_2_subheader": "Selectați toate opțiunile care se aplică",
|
"professional_development_survey_question_2_subheader": "Vă rugăm să selectați toate opțiunile care se aplică:",
|
||||||
"professional_development_survey_question_3_choice_1": "Da",
|
"professional_development_survey_question_3_choice_1": "Da",
|
||||||
"professional_development_survey_question_3_choice_2": "Nu",
|
"professional_development_survey_question_3_choice_2": "Nu",
|
||||||
"professional_development_survey_question_3_headline": "Ați dedicat timp pentru dezvoltarea dumneavoastră profesională în trecut?",
|
"professional_development_survey_question_3_headline": "Ați dedicat timp pentru dezvoltarea dumneavoastră profesională în trecut?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "M-am simțit încrezător în timp ce utilizam sistemul.",
|
"usability_question_9_headline": "M-am simțit încrezător în timp ce utilizam sistemul.",
|
||||||
"usability_rating_description": "Măsurați uzabilitatea percepută cerând utilizatorilor să își evalueze experiența cu produsul dumneavoastră folosind un chestionar standardizat din 10 întrebări.",
|
"usability_rating_description": "Măsurați uzabilitatea percepută cerând utilizatorilor să își evalueze experiența cu produsul dumneavoastră folosind un chestionar standardizat din 10 întrebări.",
|
||||||
"usability_score_name": "Scor de Uzabilitate al Sistemului (SUS)"
|
"usability_score_name": "Scor de Uzabilitate al Sistemului (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Îți mulțumim că ai împărtășit cu noi ideea ta de workflow! În prezent, lucrăm la această funcționalitate, iar feedback-ul tău ne ajută să construim exact ce ai nevoie.",
|
||||||
|
"coming_soon_title": "Suntem aproape gata!",
|
||||||
|
"follow_up_label": "Mai este ceva ce ai vrea să adaugi?",
|
||||||
|
"follow_up_placeholder": "Ce sarcini specifice ați dori să automatizați? Există instrumente sau integrări pe care ați dori să le includem?",
|
||||||
|
"generate_button": "Generează workflow",
|
||||||
|
"heading": "Ce workflow vrei să creezi?",
|
||||||
|
"placeholder": "Descrieți fluxul de lucru pe care doriți să-l generați…",
|
||||||
|
"subheading": "Generează-ți workflow-ul în câteva secunde.",
|
||||||
|
"submit_button": "Adaugă detalii",
|
||||||
|
"thank_you_description": "Contribuția dvs. ne ajută să dezvoltăm funcția Workflows de care chiar aveți nevoie. Vă vom ține la curent cu progresul nostru.",
|
||||||
|
"thank_you_title": "Îți mulțumim pentru feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+68
-31
@@ -112,7 +112,6 @@
|
|||||||
"link_expired_description": "Ссылка, которой вы воспользовались, больше не действительна."
|
"link_expired_description": "Ссылка, которой вы воспользовались, больше не действительна."
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"Filter": "Фильтр",
|
|
||||||
"accepted": "Принято",
|
"accepted": "Принято",
|
||||||
"account": "Аккаунт",
|
"account": "Аккаунт",
|
||||||
"account_settings": "Настройки аккаунта",
|
"account_settings": "Настройки аккаунта",
|
||||||
@@ -176,9 +175,12 @@
|
|||||||
"copy": "Копировать",
|
"copy": "Копировать",
|
||||||
"copy_code": "Скопировать код",
|
"copy_code": "Скопировать код",
|
||||||
"copy_link": "Скопировать ссылку",
|
"copy_link": "Скопировать ссылку",
|
||||||
"count_attributes": "{value, plural, one {{value} атрибут} few {{value} атрибута} many {{value} атрибутов} other {{value} атрибута}}",
|
"count_attributes": "{count, plural, one {{count} атрибут} few {{count} атрибута} many {{count} атрибутов} other {{count} атрибута}}",
|
||||||
"count_contacts": "{value, plural, one {{value} контакт} few {{value} контакта} many {{value} контактов} other {{value} контактов}}",
|
"count_contacts": "{count, plural, one {{count} контакт} few {{count} контакта} many {{count} контактов} other {{count} контакта}}",
|
||||||
"count_responses": "{value, plural, one {{value} ответ} few {{value} ответа} many {{value} ответов} other {{value} ответов}}",
|
"count_members": "{count, plural, one {{count} участник} few {{count} участника} many {{count} участников} other {{count} участника}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} вопрос} few {{count} вопроса} many {{count} вопросов} other {{count} вопросов}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} ответ} few {{count} ответа} many {{count} ответов} other {{count} ответа}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} вариант} few {{count} варианта} many {{count} вариантов} other {{count} варианта}}",
|
||||||
"create_new_organization": "Создать новую организацию",
|
"create_new_organization": "Создать новую организацию",
|
||||||
"create_segment": "Создать сегмент",
|
"create_segment": "Создать сегмент",
|
||||||
"create_survey": "Создать опрос",
|
"create_survey": "Создать опрос",
|
||||||
@@ -192,6 +194,7 @@
|
|||||||
"days": "дни",
|
"days": "дни",
|
||||||
"default": "По умолчанию",
|
"default": "По умолчанию",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
|
"delete_what": "Удалить {deleteWhat}",
|
||||||
"description": "Описание",
|
"description": "Описание",
|
||||||
"dev_env": "Dev Environment",
|
"dev_env": "Dev Environment",
|
||||||
"development": "Разработка",
|
"development": "Разработка",
|
||||||
@@ -207,6 +210,8 @@
|
|||||||
"download": "Скачать",
|
"download": "Скачать",
|
||||||
"draft": "Черновик",
|
"draft": "Черновик",
|
||||||
"duplicate": "Дублировать",
|
"duplicate": "Дублировать",
|
||||||
|
"duplicate_copy": "(копия)",
|
||||||
|
"duplicate_copy_number": "(копия {copyNumber})",
|
||||||
"e_commerce": "E-Commerce",
|
"e_commerce": "E-Commerce",
|
||||||
"edit": "Редактировать",
|
"edit": "Редактировать",
|
||||||
"email": "Email",
|
"email": "Email",
|
||||||
@@ -274,7 +279,6 @@
|
|||||||
"look_and_feel": "Внешний вид",
|
"look_and_feel": "Внешний вид",
|
||||||
"manage": "Управление",
|
"manage": "Управление",
|
||||||
"marketing": "Маркетинг",
|
"marketing": "Маркетинг",
|
||||||
"member": "Участник",
|
|
||||||
"members": "Участники",
|
"members": "Участники",
|
||||||
"members_and_teams": "Участники и команды",
|
"members_and_teams": "Участники и команды",
|
||||||
"membership_not_found": "Участие не найдено",
|
"membership_not_found": "Участие не найдено",
|
||||||
@@ -286,6 +290,7 @@
|
|||||||
"move_down": "Переместить вниз",
|
"move_down": "Переместить вниз",
|
||||||
"move_up": "Переместить вверх",
|
"move_up": "Переместить вверх",
|
||||||
"multiple_languages": "Несколько языков",
|
"multiple_languages": "Несколько языков",
|
||||||
|
"my_product": "мой продукт",
|
||||||
"name": "Имя",
|
"name": "Имя",
|
||||||
"new": "Новый",
|
"new": "Новый",
|
||||||
"new_version_available": "Formbricks {version} уже здесь. Обновитесь сейчас!",
|
"new_version_available": "Formbricks {version} уже здесь. Обновитесь сейчас!",
|
||||||
@@ -381,8 +386,6 @@
|
|||||||
"select_teams": "Выбрать команды",
|
"select_teams": "Выбрать команды",
|
||||||
"selected": "Выбрано",
|
"selected": "Выбрано",
|
||||||
"selected_questions": "Выбранные вопросы",
|
"selected_questions": "Выбранные вопросы",
|
||||||
"selection": "Выбор",
|
|
||||||
"selections": "Выборы",
|
|
||||||
"send_test_email": "Отправить тестовое письмо",
|
"send_test_email": "Отправить тестовое письмо",
|
||||||
"session_not_found": "Сессия не найдена",
|
"session_not_found": "Сессия не найдена",
|
||||||
"settings": "Настройки",
|
"settings": "Настройки",
|
||||||
@@ -391,6 +394,7 @@
|
|||||||
"show_response_count": "Показать количество ответов",
|
"show_response_count": "Показать количество ответов",
|
||||||
"shown": "Показано",
|
"shown": "Показано",
|
||||||
"size": "Размер",
|
"size": "Размер",
|
||||||
|
"skip": "Пропустить",
|
||||||
"skipped": "Пропущено",
|
"skipped": "Пропущено",
|
||||||
"skips": "Пропуски",
|
"skips": "Пропуски",
|
||||||
"some_files_failed_to_upload": "Не удалось загрузить некоторые файлы",
|
"some_files_failed_to_upload": "Не удалось загрузить некоторые файлы",
|
||||||
@@ -460,6 +464,7 @@
|
|||||||
"website_survey": "Опрос сайта",
|
"website_survey": "Опрос сайта",
|
||||||
"weeks": "недели",
|
"weeks": "недели",
|
||||||
"welcome_card": "Приветственная карточка",
|
"welcome_card": "Приветственная карточка",
|
||||||
|
"workflows": "Воркфлоу",
|
||||||
"workspace_configuration": "Настройка рабочего пространства",
|
"workspace_configuration": "Настройка рабочего пространства",
|
||||||
"workspace_created_successfully": "Рабочий проект успешно создан",
|
"workspace_created_successfully": "Рабочий проект успешно создан",
|
||||||
"workspace_creation_description": "Организуйте опросы в рабочих пространствах для лучшего контроля доступа.",
|
"workspace_creation_description": "Организуйте опросы в рабочих пространствах для лучшего контроля доступа.",
|
||||||
@@ -644,9 +649,9 @@
|
|||||||
"attributes_msg_attribute_limit_exceeded": "Не удалось создать {count} новых атрибута, так как это превысит максимальное количество классов атрибутов: {limit}. Существующие атрибуты были успешно обновлены.",
|
"attributes_msg_attribute_limit_exceeded": "Не удалось создать {count} новых атрибута, так как это превысит максимальное количество классов атрибутов: {limit}. Существующие атрибуты были успешно обновлены.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (атрибут «{key}» имеет тип данных: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (атрибут «{key}» имеет тип данных: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "Этот email уже существует в данной среде и не был обновлён.",
|
"attributes_msg_email_already_exists": "Этот email уже существует в данной среде и не был обновлён.",
|
||||||
"attributes_msg_email_or_userid_required": "Требуется указать либо email, либо userId. Существующие значения были сохранены.",
|
"attributes_msg_email_or_userid_required": "Требуется либо email, либо user ID. Существующие значения были сохранены.",
|
||||||
"attributes_msg_new_attribute_created": "Создан новый атрибут «{key}» с типом «{dataType}»",
|
"attributes_msg_new_attribute_created": "Создан новый атрибут «{key}» с типом «{dataType}»",
|
||||||
"attributes_msg_userid_already_exists": "Этот userId уже существует в данной среде и не был обновлён.",
|
"attributes_msg_userid_already_exists": "Этот user ID уже существует в данной среде и не был обновлён.",
|
||||||
"contact_deleted_successfully": "Контакт успешно удалён",
|
"contact_deleted_successfully": "Контакт успешно удалён",
|
||||||
"contact_not_found": "Такой контакт не найден",
|
"contact_not_found": "Такой контакт не найден",
|
||||||
"contacts_table_refresh": "Обновить контакты",
|
"contacts_table_refresh": "Обновить контакты",
|
||||||
@@ -658,7 +663,7 @@
|
|||||||
"data_type": "Тип данных",
|
"data_type": "Тип данных",
|
||||||
"data_type_cannot_be_changed": "Тип данных нельзя изменить после создания",
|
"data_type_cannot_be_changed": "Тип данных нельзя изменить после создания",
|
||||||
"data_type_description": "Выберите, как этот атрибут будет храниться и фильтроваться",
|
"data_type_description": "Выберите, как этот атрибут будет храниться и фильтроваться",
|
||||||
"date_value_required": "Требуется значение даты. Используйте кнопку удаления, если не хотите указывать дату.",
|
"date_value_required": "Требуется значение даты. Если вы не хотите указывать дату, используйте кнопку удаления для удаления этого атрибута.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Будет удалён выбранный атрибут. Все данные контактов, связанные с этим атрибутом, будут потеряны.} few {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.} many {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.} other {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Будет удалён выбранный атрибут. Все данные контактов, связанные с этим атрибутом, будут потеряны.} few {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.} many {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.} other {Будут удалены выбранные атрибуты. Все данные контактов, связанные с этими атрибутами, будут потеряны.}}",
|
||||||
"delete_contact_confirmation": "Это удалит все ответы на опросы и атрибуты контакта, связанные с этим контактом. Любая таргетинг и персонализация на основе данных этого контакта будут потеряны.",
|
"delete_contact_confirmation": "Это удалит все ответы на опросы и атрибуты контакта, связанные с этим контактом. Любая таргетинг и персонализация на основе данных этого контакта будут потеряны.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {Это удалит все ответы на опросы и атрибуты контакта, связанные с этим контактом. Любая таргетинг и персонализация на основе данных этого контакта будут потеряны. Если у этого контакта есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} few {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} many {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} other {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {Это удалит все ответы на опросы и атрибуты контакта, связанные с этим контактом. Любая таргетинг и персонализация на основе данных этого контакта будут потеряны. Если у этого контакта есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} few {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} many {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.} other {Это удалит все ответы на опросы и атрибуты контактов, связанные с этими контактами. Любая таргетинг и персонализация на основе данных этих контактов будут потеряны. Если у этих контактов есть ответы, которые учитываются в квотах опроса, количество по квотам будет уменьшено, но лимиты квот останутся без изменений.}}",
|
||||||
@@ -694,7 +699,7 @@
|
|||||||
"system_attributes": "Системные атрибуты",
|
"system_attributes": "Системные атрибуты",
|
||||||
"unlock_contacts_description": "Управляйте контактами и отправляйте целевые опросы",
|
"unlock_contacts_description": "Управляйте контактами и отправляйте целевые опросы",
|
||||||
"unlock_contacts_title": "Откройте доступ к контактам с более высоким тарифом",
|
"unlock_contacts_title": "Откройте доступ к контактам с более высоким тарифом",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Атрибут «{key}» имеет тип «{dataType}», но в CSV обнаружены некорректные значения: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Атрибут «{key}» имеет тип «{dataType}», но в CSV содержатся некорректные значения: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Обнаружены дублирующиеся сопоставления для следующих атрибутов: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Обнаружены дублирующиеся сопоставления для следующих атрибутов: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "Размер файла превышает максимальный лимит 800 КБ",
|
"upload_contacts_error_file_too_large": "Размер файла превышает максимальный лимит 800 КБ",
|
||||||
"upload_contacts_error_generic": "Произошла ошибка при загрузке контактов. Пожалуйста, попробуй ещё раз позже.",
|
"upload_contacts_error_generic": "Произошла ошибка при загрузке контактов. Пожалуйста, попробуй ещё раз позже.",
|
||||||
@@ -765,7 +770,7 @@
|
|||||||
"reconnect_button": "Переподключить",
|
"reconnect_button": "Переподключить",
|
||||||
"reconnect_button_description": "Срок действия подключения к Google Sheets истёк. Пожалуйста, переподключись, чтобы продолжить синхронизацию ответов. Все существующие ссылки на таблицы и данные будут сохранены.",
|
"reconnect_button_description": "Срок действия подключения к Google Sheets истёк. Пожалуйста, переподключись, чтобы продолжить синхронизацию ответов. Все существующие ссылки на таблицы и данные будут сохранены.",
|
||||||
"reconnect_button_tooltip": "Переподключи интеграцию, чтобы обновить доступ. Все существующие ссылки на таблицы и данные будут сохранены.",
|
"reconnect_button_tooltip": "Переподключи интеграцию, чтобы обновить доступ. Все существующие ссылки на таблицы и данные будут сохранены.",
|
||||||
"spreadsheet_permission_error": "У тебя нет доступа к этой таблице. Убедись, что таблица открыта для твоего Google-аккаунта и у тебя есть права на запись.",
|
"spreadsheet_permission_error": "У вас нет доступа к этой таблице. Убедитесь, что таблица доступна вашему аккаунту Google и у вас есть права на запись.",
|
||||||
"spreadsheet_url": "URL таблицы",
|
"spreadsheet_url": "URL таблицы",
|
||||||
"token_expired_error": "Срок действия токена обновления Google Sheets истёк или он был отозван. Пожалуйста, переподключи интеграцию."
|
"token_expired_error": "Срок действия токена обновления Google Sheets истёк или он был отозван. Пожалуйста, переподключи интеграцию."
|
||||||
},
|
},
|
||||||
@@ -976,7 +981,7 @@
|
|||||||
"current_plan": "Текущий план",
|
"current_plan": "Текущий план",
|
||||||
"current_tier_limit": "Текущий лимит тарифа",
|
"current_tier_limit": "Текущий лимит тарифа",
|
||||||
"custom": "Индивидуально и масштабируемо",
|
"custom": "Индивидуально и масштабируемо",
|
||||||
"custom_contacts_limit": "Индивидуальный лимит контактов",
|
"custom_contacts_limit": "Лимит пользовательских контактов",
|
||||||
"custom_response_limit": "Индивидуальный лимит ответов",
|
"custom_response_limit": "Индивидуальный лимит ответов",
|
||||||
"custom_workspace_limit": "Пользовательский лимит рабочих пространств",
|
"custom_workspace_limit": "Пользовательский лимит рабочих пространств",
|
||||||
"email_embedded_surveys": "Встроенные в email опросы",
|
"email_embedded_surveys": "Встроенные в email опросы",
|
||||||
@@ -1054,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "Ключ лицензии недействителен. Пожалуйста, проверь свою переменную ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "Ключ лицензии недействителен. Пожалуйста, проверь свою переменную ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Проверка лицензии прошла успешно",
|
"recheck_license_success": "Проверка лицензии прошла успешно",
|
||||||
"recheck_license_unreachable": "Сервер лицензий недоступен. Пожалуйста, попробуй позже.",
|
"recheck_license_unreachable": "Сервер лицензий недоступен. Пожалуйста, попробуй позже.",
|
||||||
"rechecking": "Проверка...",
|
"rechecking": "Повторная проверка…",
|
||||||
"request_30_day_trial_license": "Запросить 30-дневную пробную лицензию",
|
"request_30_day_trial_license": "Запросить 30-дневную пробную лицензию",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Соглашение об уровне обслуживания (SLA)",
|
"service_level_agreement": "Соглашение об уровне обслуживания (SLA)",
|
||||||
@@ -1082,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "Привет, {userName}",
|
"email_customization_preview_email_heading": "Привет, {userName}",
|
||||||
"email_customization_preview_email_text": "Это предварительный просмотр письма, чтобы показать, какой логотип будет отображаться в письмах.",
|
"email_customization_preview_email_text": "Это предварительный просмотр письма, чтобы показать, какой логотип будет отображаться в письмах.",
|
||||||
"error_deleting_organization_please_try_again": "Ошибка при удалении организации. Пожалуйста, попробуйте ещё раз.",
|
"error_deleting_organization_please_try_again": "Ошибка при удалении организации. Пожалуйста, попробуйте ещё раз.",
|
||||||
"from_your_organization": "из вашей организации",
|
"from_your_organization": "{memberName} из вашей организации",
|
||||||
"invitation_sent_once_more": "Приглашение отправлено ещё раз.",
|
"invitation_sent_once_more": "Приглашение отправлено ещё раз.",
|
||||||
"invite_deleted_successfully": "Приглашение успешно удалено",
|
"invite_deleted_successfully": "Приглашение успешно удалено",
|
||||||
"invite_expires_on": "Приглашение истекает {date}",
|
"invite_expires_on": "Приглашение истекает {date}",
|
||||||
@@ -1131,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Настройки уведомлений обновлены",
|
"notification_settings_updated": "Настройки уведомлений обновлены",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Настройте оповещение, чтобы получать письма о новых ответах",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Настройте оповещение, чтобы получать письма о новых ответах",
|
||||||
"use_the_integration": "Используйте интеграцию",
|
"use_the_integration": "Используйте интеграцию",
|
||||||
"want_to_loop_in_organization_mates": "Хотите подключить коллег из организации",
|
"want_to_loop_in_organization_mates": "Хотите подключить коллег из организации?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Вы больше не будете автоматически подписаны на опросы этой организации!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Вы больше не будете автоматически подписаны на опросы этой организации!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Вы больше не будете получать письма с ответами на этот опрос!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Вы больше не будете получать письма с ответами на этот опрос!"
|
||||||
},
|
},
|
||||||
@@ -1247,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Добавить плейсхолдер, который будет показан, если нет значения для отображения.",
|
"add_fallback_placeholder": "Добавить плейсхолдер, который будет показан, если нет значения для отображения.",
|
||||||
"add_hidden_field_id": "Добавить скрытый ID поля",
|
"add_hidden_field_id": "Добавить скрытый ID поля",
|
||||||
"add_highlight_border": "Добавить выделяющую рамку",
|
"add_highlight_border": "Добавить выделяющую рамку",
|
||||||
|
"add_highlight_border_description": "Применяется только к опросам внутри продукта.",
|
||||||
"add_logic": "Добавить логику",
|
"add_logic": "Добавить логику",
|
||||||
"add_none_of_the_above": "Добавить вариант «Ничего из вышеперечисленного»",
|
"add_none_of_the_above": "Добавить вариант «Ничего из вышеперечисленного»",
|
||||||
"add_option": "Добавить вариант",
|
"add_option": "Добавить вариант",
|
||||||
@@ -1263,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Изменить сообщение «Опрос закрыт»",
|
"adjust_survey_closed_message": "Изменить сообщение «Опрос закрыт»",
|
||||||
"adjust_survey_closed_message_description": "Измените сообщение, которое видят посетители, когда опрос закрыт.",
|
"adjust_survey_closed_message_description": "Измените сообщение, которое видят посетители, когда опрос закрыт.",
|
||||||
"adjust_the_theme_in_the": "Настройте тему в",
|
"adjust_the_theme_in_the": "Настройте тему в",
|
||||||
|
"all_are_true": "все условия выполняются",
|
||||||
"all_other_answers_will_continue_to": "Все остальные ответы будут продолжать",
|
"all_other_answers_will_continue_to": "Все остальные ответы будут продолжать",
|
||||||
"allow_multi_select": "Разрешить множественный выбор",
|
"allow_multi_select": "Разрешить множественный выбор",
|
||||||
"allow_multiple_files": "Разрешить несколько файлов",
|
"allow_multiple_files": "Разрешить несколько файлов",
|
||||||
"allow_users_to_select_more_than_one_image": "Разрешить пользователям выбирать более одного изображения",
|
"allow_users_to_select_more_than_one_image": "Разрешить пользователям выбирать более одного изображения",
|
||||||
"and_launch_surveys_in_your_website_or_app": "и запускать опросы на вашем сайте или в приложении.",
|
"and_launch_surveys_in_your_website_or_app": "и запускать опросы на вашем сайте или в приложении.",
|
||||||
"animation": "Анимация",
|
"animation": "Анимация",
|
||||||
|
"any_is_true": "выполняется хотя бы одно условие",
|
||||||
"app_survey_description": "Встраивайте опрос в ваше веб-приложение или сайт для сбора ответов.",
|
"app_survey_description": "Встраивайте опрос в ваше веб-приложение или сайт для сбора ответов.",
|
||||||
"assign": "Назначить =",
|
"assign": "Назначить =",
|
||||||
"audience": "Аудитория",
|
"audience": "Аудитория",
|
||||||
@@ -1310,7 +1318,7 @@
|
|||||||
"casual": "Неформальный",
|
"casual": "Неформальный",
|
||||||
"caution_edit_duplicate": "Дублировать и редактировать",
|
"caution_edit_duplicate": "Дублировать и редактировать",
|
||||||
"caution_edit_published_survey": "Редактировать опубликованный опрос?",
|
"caution_edit_published_survey": "Редактировать опубликованный опрос?",
|
||||||
"caution_explanation_intro": "Мы понимаем, что вы всё же можете захотеть внести изменения. Вот что произойдет, если вы это сделаете:",
|
"caution_explanation_intro": "Мы понимаем, что вы всё ещё можете захотеть внести изменения. Вот что произойдёт, если вы это сделаете:",
|
||||||
"caution_explanation_new_responses_separated": "Ответы, полученные до изменений, могут быть не полностью или частично включены в итоговую сводку опроса.",
|
"caution_explanation_new_responses_separated": "Ответы, полученные до изменений, могут быть не полностью или частично включены в итоговую сводку опроса.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "Все данные, включая предыдущие ответы, остаются доступны для скачивания на странице итогов опроса.",
|
"caution_explanation_only_new_responses_in_summary": "Все данные, включая предыдущие ответы, остаются доступны для скачивания на странице итогов опроса.",
|
||||||
"caution_explanation_responses_are_safe": "Старые и новые ответы смешиваются, что может привести к искажённым итоговым данным.",
|
"caution_explanation_responses_are_safe": "Старые и новые ответы смешиваются, что может привести к искажённым итоговым данным.",
|
||||||
@@ -1445,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Фоллоу-ап обновлён и будет сохранён после сохранения опроса.",
|
"follow_ups_modal_updated_successfull_toast": "Фоллоу-ап обновлён и будет сохранён после сохранения опроса.",
|
||||||
"follow_ups_new": "Новый фоллоу-ап",
|
"follow_ups_new": "Новый фоллоу-ап",
|
||||||
"follow_ups_upgrade_button_text": "Обновите тариф для активации фоллоу-апов",
|
"follow_ups_upgrade_button_text": "Обновите тариф для активации фоллоу-апов",
|
||||||
"form_styling": "Оформление формы",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK не подключён",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK не подключён",
|
||||||
"four_points": "4 балла",
|
"four_points": "4 балла",
|
||||||
"heading": "Заголовок",
|
"heading": "Заголовок",
|
||||||
@@ -1535,7 +1542,7 @@
|
|||||||
"option_idx": "Вариант {choiceIndex}",
|
"option_idx": "Вариант {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Этот вариант используется в логике вопроса {questionIndex}. Пожалуйста, сначала удалите его из логики.",
|
"option_used_in_logic_error": "Этот вариант используется в логике вопроса {questionIndex}. Пожалуйста, сначала удалите его из логики.",
|
||||||
"optional": "Необязательно",
|
"optional": "Необязательно",
|
||||||
"options": "Варианты",
|
"options": "Параметры*",
|
||||||
"options_used_in_logic_bulk_error": "Следующие варианты используются в логике: {questionIndexes}. Пожалуйста, сначала удалите их из логики.",
|
"options_used_in_logic_bulk_error": "Следующие варианты используются в логике: {questionIndexes}. Пожалуйста, сначала удалите их из логики.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Переопределить тему индивидуальными стилями для этого опроса.",
|
"override_theme_with_individual_styles_for_this_survey": "Переопределить тему индивидуальными стилями для этого опроса.",
|
||||||
"overwrite_global_waiting_time": "Установить свой период ожидания",
|
"overwrite_global_waiting_time": "Установить свой период ожидания",
|
||||||
@@ -1560,6 +1567,7 @@
|
|||||||
"question_deleted": "Вопрос удалён.",
|
"question_deleted": "Вопрос удалён.",
|
||||||
"question_duplicated": "Вопрос дублирован.",
|
"question_duplicated": "Вопрос дублирован.",
|
||||||
"question_id_updated": "ID вопроса обновлён",
|
"question_id_updated": "ID вопроса обновлён",
|
||||||
|
"question_number": "Вопрос {number}",
|
||||||
"question_used_in_logic_warning_text": "Элементы из этого блока используются в правиле логики. Вы уверены, что хотите удалить его?",
|
"question_used_in_logic_warning_text": "Элементы из этого блока используются в правиле логики. Вы уверены, что хотите удалить его?",
|
||||||
"question_used_in_logic_warning_title": "Несогласованность логики",
|
"question_used_in_logic_warning_title": "Несогласованность логики",
|
||||||
"question_used_in_quota": "Этот вопрос используется в квоте «{quotaName}»",
|
"question_used_in_quota": "Этот вопрос используется в квоте «{quotaName}»",
|
||||||
@@ -1618,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Лимиты ответов, перенаправления и другое.",
|
"response_limits_redirections_and_more": "Лимиты ответов, перенаправления и другое.",
|
||||||
"response_options": "Параметры ответа",
|
"response_options": "Параметры ответа",
|
||||||
"roundness": "Скругление",
|
"roundness": "Скругление",
|
||||||
"roundness_description": "Определяет степень скругления углов карточки.",
|
"roundness_description": "Определяет степень скругления углов.",
|
||||||
"row_used_in_logic_error": "Эта строка используется в логике вопроса {questionIndex}. Пожалуйста, сначала удалите её из логики.",
|
"row_used_in_logic_error": "Эта строка используется в логике вопроса {questionIndex}. Пожалуйста, сначала удалите её из логики.",
|
||||||
"rows": "Строки",
|
"rows": "Строки",
|
||||||
"save_and_close": "Сохранить и закрыть",
|
"save_and_close": "Сохранить и закрыть",
|
||||||
@@ -1664,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Этот бесплатный и открытый опрос был закрыт",
|
"survey_completed_subheading": "Этот бесплатный и открытый опрос был закрыт",
|
||||||
"survey_display_settings": "Настройки отображения опроса",
|
"survey_display_settings": "Настройки отображения опроса",
|
||||||
"survey_placement": "Размещение опроса",
|
"survey_placement": "Размещение опроса",
|
||||||
|
"survey_styling": "Оформление формы",
|
||||||
"survey_trigger": "Триггер опроса",
|
"survey_trigger": "Триггер опроса",
|
||||||
"switch_multi_language_on_to_get_started": "Включите многоязычный режим, чтобы начать 👉",
|
"switch_multi_language_on_to_get_started": "Включите многоязычный режим, чтобы начать 👉",
|
||||||
"target_block_not_found": "Целевой блок не найден",
|
"target_block_not_found": "Целевой блок не найден",
|
||||||
@@ -1726,7 +1735,7 @@
|
|||||||
"pattern": "Соответствует шаблону regex",
|
"pattern": "Соответствует шаблону regex",
|
||||||
"phone": "Корректный телефон",
|
"phone": "Корректный телефон",
|
||||||
"rank_all_options": "Ранжируйте все опции",
|
"rank_all_options": "Ранжируйте все опции",
|
||||||
"select_file_extensions": "Выберите расширения файлов...",
|
"select_file_extensions": "Выберите расширения файлов…",
|
||||||
"select_option": "Выберите вариант",
|
"select_option": "Выберите вариант",
|
||||||
"start_date": "Дата начала",
|
"start_date": "Дата начала",
|
||||||
"url": "Корректный URL"
|
"url": "Корректный URL"
|
||||||
@@ -1752,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Период ожидания (между опросами)",
|
"waiting_time_across_surveys": "Период ожидания (между опросами)",
|
||||||
"waiting_time_across_surveys_description": "Чтобы избежать усталости от опросов, выберите, как этот опрос взаимодействует с общим периодом ожидания в рабочем пространстве.",
|
"waiting_time_across_surveys_description": "Чтобы избежать усталости от опросов, выберите, как этот опрос взаимодействует с общим периодом ожидания в рабочем пространстве.",
|
||||||
"welcome_message": "Приветственное сообщение",
|
"welcome_message": "Приветственное сообщение",
|
||||||
|
"when": "Когда",
|
||||||
"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": "Для работы с переводами необходимо настроить два или более языков в рабочем пространстве.",
|
|
||||||
"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": "Ваше веб-приложение",
|
||||||
@@ -1824,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Отключить одноразовые ссылки",
|
"disable_single_use_link_modal_button": "Отключить одноразовые ссылки",
|
||||||
"disable_single_use_link_modal_description": "Если вы поделились одноразовыми ссылками, участники больше не смогут пройти опрос по ним.",
|
"disable_single_use_link_modal_description": "Если вы поделились одноразовыми ссылками, участники больше не смогут пройти опрос по ним.",
|
||||||
"generate_and_download_links": "Сгенерировать и скачать ссылки",
|
"generate_and_download_links": "Сгенерировать и скачать ссылки",
|
||||||
"generate_links_error": "Не удалось сгенерировать одноразовые ссылки. Пожалуйста, работайте напрямую с API",
|
"generate_links_error": "Не удалось создать одноразовые ссылки. Пожалуйста, работайте напрямую с API.",
|
||||||
"multi_use_link": "Многоразовая ссылка",
|
"multi_use_link": "Многоразовая ссылка",
|
||||||
"multi_use_link_description": "Собирайте несколько ответов от анонимных респондентов по одной ссылке.",
|
"multi_use_link_description": "Собирайте несколько ответов от анонимных респондентов по одной ссылке.",
|
||||||
"multi_use_powers_other_channels_description": "Если вы отключите эту опцию, другие каналы распространения также будут отключены.",
|
"multi_use_powers_other_channels_description": "Если вы отключите эту опцию, другие каналы распространения также будут отключены.",
|
||||||
@@ -1935,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Добавлен фильтр для ответов, где ответ на вопрос {questionIdx} — {filterComboBoxValue} - {filterValue}",
|
"added_filter_for_responses_where_answer_to_question": "Добавлен фильтр для ответов, где ответ на вопрос {questionIdx} — {filterComboBoxValue} — {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Добавлен фильтр для ответов, где вопрос {questionIdx} был пропущен",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Добавлен фильтр для ответов, где вопрос {questionIdx} был пропущен",
|
||||||
"aggregated": "Сводные данные",
|
"aggregated": "Сводные данные",
|
||||||
"all_responses_csv": "Все ответы (CSV)",
|
"all_responses_csv": "Все ответы (CSV)",
|
||||||
@@ -2028,6 +2037,7 @@
|
|||||||
"starts": "Запуски",
|
"starts": "Запуски",
|
||||||
"starts_tooltip": "Количество запусков опроса.",
|
"starts_tooltip": "Количество запусков опроса.",
|
||||||
"survey_reset_successfully": "Опрос успешно сброшен! {responseCount} ответов и {displayCount} показов были удалены.",
|
"survey_reset_successfully": "Опрос успешно сброшен! {responseCount} ответов и {displayCount} показов были удалены.",
|
||||||
|
"survey_results": "Результаты {surveyName}",
|
||||||
"this_month": "В этом месяце",
|
"this_month": "В этом месяце",
|
||||||
"this_quarter": "В этом квартале",
|
"this_quarter": "В этом квартале",
|
||||||
"this_year": "В этом году",
|
"this_year": "В этом году",
|
||||||
@@ -2161,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Размер шрифта описания",
|
"advanced_styling_field_description_size": "Размер шрифта описания",
|
||||||
"advanced_styling_field_description_size_description": "Масштабирует текст описания.",
|
"advanced_styling_field_description_size_description": "Масштабирует текст описания.",
|
||||||
"advanced_styling_field_description_weight": "Толщина шрифта описания",
|
"advanced_styling_field_description_weight": "Толщина шрифта описания",
|
||||||
"advanced_styling_field_description_weight_description": "Делает текст описания тоньше или жирнее.",
|
"advanced_styling_field_description_weight_description": "Делает описание текста более легким или жирным.",
|
||||||
"advanced_styling_field_font_size": "Размер шрифта",
|
"advanced_styling_field_font_size": "Размер шрифта",
|
||||||
"advanced_styling_field_font_weight": "Толщина шрифта",
|
"advanced_styling_field_font_weight": "Толщина шрифта",
|
||||||
"advanced_styling_field_headline_color": "Цвет заголовка",
|
"advanced_styling_field_headline_color": "Цвет заголовка",
|
||||||
@@ -2175,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "Задаёт цвет заполненной части полосы.",
|
"advanced_styling_field_indicator_bg_description": "Задаёт цвет заполненной части полосы.",
|
||||||
"advanced_styling_field_input_border_radius_description": "Скругляет углы полей ввода.",
|
"advanced_styling_field_input_border_radius_description": "Скругляет углы полей ввода.",
|
||||||
"advanced_styling_field_input_font_size_description": "Масштабирует введённый текст в полях ввода.",
|
"advanced_styling_field_input_font_size_description": "Масштабирует введённый текст в полях ввода.",
|
||||||
"advanced_styling_field_input_height_description": "Определяет минимальную высоту поля ввода.",
|
"advanced_styling_field_input_height_description": "Управляет минимальной высотой поля ввода.",
|
||||||
"advanced_styling_field_input_padding_x_description": "Добавляет отступы слева и справа.",
|
"advanced_styling_field_input_padding_x_description": "Добавляет отступы слева и справа.",
|
||||||
"advanced_styling_field_input_padding_y_description": "Добавляет пространство сверху и снизу.",
|
"advanced_styling_field_input_padding_y_description": "Добавляет пространство сверху и снизу.",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "Делает текст подсказки менее заметным.",
|
"advanced_styling_field_input_placeholder_opacity_description": "Делает текст подсказки менее заметным.",
|
||||||
@@ -2184,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Задаёт цвет введённого текста в полях.",
|
"advanced_styling_field_input_text_description": "Задаёт цвет введённого текста в полях.",
|
||||||
"advanced_styling_field_option_bg": "Фон",
|
"advanced_styling_field_option_bg": "Фон",
|
||||||
"advanced_styling_field_option_bg_description": "Заливает фон элементов опций.",
|
"advanced_styling_field_option_bg_description": "Заливает фон элементов опций.",
|
||||||
|
"advanced_styling_field_option_border": "Цвет границы",
|
||||||
|
"advanced_styling_field_option_border_description": "Обводка для вариантов radio и checkbox.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Скругляет углы опций.",
|
"advanced_styling_field_option_border_radius_description": "Скругляет углы опций.",
|
||||||
"advanced_styling_field_option_font_size_description": "Изменяет размер текста метки опции.",
|
"advanced_styling_field_option_font_size_description": "Изменяет размер текста метки опции.",
|
||||||
"advanced_styling_field_option_label": "Цвет метки",
|
"advanced_styling_field_option_label": "Цвет метки",
|
||||||
@@ -2238,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Показывать подпись «Работает на Formbricks»",
|
"show_powered_by_formbricks": "Показывать подпись «Работает на Formbricks»",
|
||||||
"styling_updated_successfully": "Стили успешно обновлены",
|
"styling_updated_successfully": "Стили успешно обновлены",
|
||||||
"suggest_colors": "Предложить цвета",
|
"suggest_colors": "Предложить цвета",
|
||||||
"suggested_colors_applied_please_save": "Рекомендованные цвета успешно сгенерированы. Нажми «Сохранить», чтобы применить изменения.",
|
"suggested_colors_applied_please_save": "Рекомендованные цвета успешно сгенерированы. Нажмите «Сохранить», чтобы применить изменения.",
|
||||||
"theme": "Тема",
|
"theme": "Тема",
|
||||||
"theme_settings_description": "Создайте стиль для всех опросов. Вы можете включить индивидуальное оформление для каждого опроса."
|
"theme_settings_description": "Создайте стиль для всех опросов. Вы можете включить индивидуальное оформление для каждого опроса."
|
||||||
},
|
},
|
||||||
@@ -2322,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Если вы не видите письмо во входящих, проверьте папку со спамом.",
|
"check_inbox_or_spam": "Если вы не видите письмо во входящих, проверьте папку со спамом.",
|
||||||
"completed": "Этот опрос закрыт.",
|
"completed": "Этот опрос закрыт.",
|
||||||
"create_your_own": "Создайте свой собственный опрос с открытым исходным кодом",
|
"create_your_own": "Создайте свой собственный опрос с открытым исходным кодом",
|
||||||
"enter_pin": "Этот опрос защищён. Введите PIN ниже",
|
"enter_pin": "Этот опрос защищён. Введите PIN ниже.",
|
||||||
"just_curious": "Просто интересно?",
|
"just_curious": "Просто интересно?",
|
||||||
"link_invalid": "Пройти этот опрос можно только по приглашению.",
|
"link_invalid": "Пройти этот опрос можно только по приглашению.",
|
||||||
"paused": "Этот опрос временно приостановлен.",
|
"paused": "Этот опрос временно приостановлен.",
|
||||||
@@ -2393,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Как компания может улучшить согласованность видения и стратегии?",
|
"alignment_and_engagement_survey_question_4_headline": "Как компания может улучшить согласованность видения и стратегии?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Введите ваш ответ здесь...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Введите ваш ответ здесь...",
|
||||||
"back": "Назад",
|
"back": "Назад",
|
||||||
|
"block_1": "Блок 1",
|
||||||
|
"block_10": "Блок 10",
|
||||||
|
"block_2": "Блок 2",
|
||||||
|
"block_3": "Блок 3",
|
||||||
|
"block_4": "Блок 4",
|
||||||
|
"block_5": "Блок 5",
|
||||||
|
"block_6": "Блок 6",
|
||||||
|
"block_7": "Блок 7",
|
||||||
|
"block_8": "Блок 8",
|
||||||
|
"block_9": "Блок 9",
|
||||||
"book_interview": "Записаться на интервью",
|
"book_interview": "Записаться на интервью",
|
||||||
"build_product_roadmap_description": "Определите ОДНУ вещь, которую ваши пользователи хотят больше всего, и реализуйте её.",
|
"build_product_roadmap_description": "Определите ОДНУ вещь, которую ваши пользователи хотят больше всего, и реализуйте её.",
|
||||||
"build_product_roadmap_name": "Построение продуктовой дорожной карты",
|
"build_product_roadmap_name": "Построение продуктовой дорожной карты",
|
||||||
@@ -2548,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Низкое качество",
|
"csat_question_3_choice_8": "Низкое качество",
|
||||||
"csat_question_3_choice_9": "Ненадёжный",
|
"csat_question_3_choice_9": "Ненадёжный",
|
||||||
"csat_question_3_headline": "Какие из следующих слов вы бы использовали, чтобы описать наш $[projectName]?",
|
"csat_question_3_headline": "Какие из следующих слов вы бы использовали, чтобы описать наш $[projectName]?",
|
||||||
"csat_question_3_subheader": "Выберите все подходящие варианты:",
|
"csat_question_3_subheader": "Пожалуйста, выберите все подходящие варианты:",
|
||||||
"csat_question_4_choice_1": "Очень хорошо",
|
"csat_question_4_choice_1": "Очень хорошо",
|
||||||
"csat_question_4_choice_2": "Хорошо",
|
"csat_question_4_choice_2": "Хорошо",
|
||||||
"csat_question_4_choice_3": "В некоторой степени хорошо",
|
"csat_question_4_choice_3": "В некоторой степени хорошо",
|
||||||
@@ -2600,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Ой, извините! Что мы можем сделать, чтобы улучшить ваш опыт?",
|
"csat_survey_question_3_headline": "Ой, извините! Что мы можем сделать, чтобы улучшить ваш опыт?",
|
||||||
"csat_survey_question_3_placeholder": "Введите ваш ответ здесь...",
|
"csat_survey_question_3_placeholder": "Введите ваш ответ здесь...",
|
||||||
"cta_description": "Показывайте информацию и побуждайте пользователей к определённому действию",
|
"cta_description": "Показывайте информацию и побуждайте пользователей к определённому действию",
|
||||||
"custom_survey_block_1_name": "Блок 1",
|
|
||||||
"custom_survey_description": "Создайте опрос без шаблона.",
|
"custom_survey_description": "Создайте опрос без шаблона.",
|
||||||
"custom_survey_name": "Начать с нуля",
|
"custom_survey_name": "Начать с нуля",
|
||||||
"custom_survey_question_1_headline": "Что вы хотели бы узнать?",
|
"custom_survey_question_1_headline": "Что вы хотели бы узнать?",
|
||||||
@@ -3003,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Нет, спасибо!",
|
"preview_survey_question_2_choice_2_label": "Нет, спасибо!",
|
||||||
"preview_survey_question_2_headline": "Хотите быть в курсе событий?",
|
"preview_survey_question_2_headline": "Хотите быть в курсе событий?",
|
||||||
"preview_survey_question_2_subheader": "Это пример описания.",
|
"preview_survey_question_2_subheader": "Это пример описания.",
|
||||||
|
"preview_survey_question_open_text_headline": "Есть ли ещё что-то, чем хочешь поделиться?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Введи свой ответ здесь...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Твой отзыв помогает нам становиться лучше.",
|
||||||
"preview_survey_welcome_card_headline": "Добро пожаловать!",
|
"preview_survey_welcome_card_headline": "Добро пожаловать!",
|
||||||
"prioritize_features_description": "Определите, какие функции наиболее и наименее важны для ваших пользователей.",
|
"prioritize_features_description": "Определите, какие функции наиболее и наименее важны для ваших пользователей.",
|
||||||
"prioritize_features_name": "Приоритизация функций",
|
"prioritize_features_name": "Приоритизация функций",
|
||||||
@@ -3072,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Индивидуальные исследования",
|
"professional_development_survey_question_2_choice_5": "Индивидуальные исследования",
|
||||||
"professional_development_survey_question_2_choice_6": "Другое",
|
"professional_development_survey_question_2_choice_6": "Другое",
|
||||||
"professional_development_survey_question_2_headline": "Какие виды профессионального развития вы считаете наиболее ценными для своего роста?",
|
"professional_development_survey_question_2_headline": "Какие виды профессионального развития вы считаете наиболее ценными для своего роста?",
|
||||||
"professional_development_survey_question_2_subheader": "Выберите все подходящие варианты",
|
"professional_development_survey_question_2_subheader": "Пожалуйста, выберите все подходящие варианты:",
|
||||||
"professional_development_survey_question_3_choice_1": "Да",
|
"professional_development_survey_question_3_choice_1": "Да",
|
||||||
"professional_development_survey_question_3_choice_2": "Нет",
|
"professional_development_survey_question_3_choice_2": "Нет",
|
||||||
"professional_development_survey_question_3_headline": "Вы ранее выделяли время на профессиональное развитие?",
|
"professional_development_survey_question_3_headline": "Вы ранее выделяли время на профессиональное развитие?",
|
||||||
@@ -3251,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Я чувствовал себя уверенно, используя систему.",
|
"usability_question_9_headline": "Я чувствовал себя уверенно, используя систему.",
|
||||||
"usability_rating_description": "Оцените воспринимаемую удобство, попросив пользователей оценить свой опыт работы с вашим продуктом с помощью стандартизированного опроса из 10 вопросов.",
|
"usability_rating_description": "Оцените воспринимаемую удобство, попросив пользователей оценить свой опыт работы с вашим продуктом с помощью стандартизированного опроса из 10 вопросов.",
|
||||||
"usability_score_name": "Индекс удобства системы (SUS)"
|
"usability_score_name": "Индекс удобства системы (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Спасибо, что поделился своей идеей воркфлоу с нами! Сейчас мы разрабатываем эту функцию, и твой отзыв поможет нам сделать именно то, что тебе нужно.",
|
||||||
|
"coming_soon_title": "Мы почти готовы!",
|
||||||
|
"follow_up_label": "Хочешь что-то ещё добавить?",
|
||||||
|
"follow_up_placeholder": "Какие конкретные задачи вы хотите автоматизировать? Какие инструменты или интеграции вам хотелось бы добавить?",
|
||||||
|
"generate_button": "Сгенерировать воркфлоу",
|
||||||
|
"heading": "Какой воркфлоу ты хочешь создать?",
|
||||||
|
"placeholder": "Опишите, какой сценарий (workflow) вы хотите создать…",
|
||||||
|
"subheading": "Сгенерируй свой воркфлоу за секунды.",
|
||||||
|
"submit_button": "Добавить детали",
|
||||||
|
"thank_you_description": "Ваш вклад помогает нам создавать функцию сценариев, которая действительно вам нужна. Мы будем держать вас в курсе нашего прогресса.",
|
||||||
|
"thank_you_title": "Спасибо за твой отзыв!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+70
-32
@@ -175,9 +175,12 @@
|
|||||||
"copy": "Kopiera",
|
"copy": "Kopiera",
|
||||||
"copy_code": "Kopiera kod",
|
"copy_code": "Kopiera kod",
|
||||||
"copy_link": "Kopiera länk",
|
"copy_link": "Kopiera länk",
|
||||||
"count_attributes": "{value, plural, one {{value} attribut} other {{value} attribut}}",
|
"count_attributes": "{count, plural, one {{count} attribut} other {{count} attribut}}",
|
||||||
"count_contacts": "{value, plural, one {{value} kontakt} other {{value} kontakter}}",
|
"count_contacts": "{count, plural, one {{count} kontakt} other {{count} kontakter}}",
|
||||||
"count_responses": "{value, plural, one {{value} svar} other {{value} svar}}",
|
"count_members": "{count, plural, one {{count} medlem} other {{count} medlemmar}}",
|
||||||
|
"count_questions": "{count, plural, one {{count} fråga} other {{count} frågor}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} svar} other {{count} svar}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} val} other {{count} val}}",
|
||||||
"create_new_organization": "Skapa ny organisation",
|
"create_new_organization": "Skapa ny organisation",
|
||||||
"create_segment": "Skapa segment",
|
"create_segment": "Skapa segment",
|
||||||
"create_survey": "Skapa enkät",
|
"create_survey": "Skapa enkät",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "dagar",
|
"days": "dagar",
|
||||||
"default": "Standard",
|
"default": "Standard",
|
||||||
"delete": "Ta bort",
|
"delete": "Ta bort",
|
||||||
|
"delete_what": "Ta bort {deleteWhat}",
|
||||||
"description": "Beskrivning",
|
"description": "Beskrivning",
|
||||||
"dev_env": "Utvecklingsmiljö",
|
"dev_env": "Utvecklingsmiljö",
|
||||||
"development": "Utveckling",
|
"development": "Utveckling",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "Ladda ner",
|
"download": "Ladda ner",
|
||||||
"draft": "Utkast",
|
"draft": "Utkast",
|
||||||
"duplicate": "Duplicera",
|
"duplicate": "Duplicera",
|
||||||
|
"duplicate_copy": "(kopia)",
|
||||||
|
"duplicate_copy_number": "(kopia {copyNumber})",
|
||||||
"e_commerce": "E-handel",
|
"e_commerce": "E-handel",
|
||||||
"edit": "Redigera",
|
"edit": "Redigera",
|
||||||
"email": "E-post",
|
"email": "E-post",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "Utseende",
|
"look_and_feel": "Utseende",
|
||||||
"manage": "Hantera",
|
"manage": "Hantera",
|
||||||
"marketing": "Marknadsföring",
|
"marketing": "Marknadsföring",
|
||||||
"member": "Medlem",
|
|
||||||
"members": "Medlemmar",
|
"members": "Medlemmar",
|
||||||
"members_and_teams": "Medlemmar och team",
|
"members_and_teams": "Medlemmar och team",
|
||||||
"membership_not_found": "Medlemskap hittades inte",
|
"membership_not_found": "Medlemskap hittades inte",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "Flytta ner",
|
"move_down": "Flytta ner",
|
||||||
"move_up": "Flytta upp",
|
"move_up": "Flytta upp",
|
||||||
"multiple_languages": "Flera språk",
|
"multiple_languages": "Flera språk",
|
||||||
|
"my_product": "min produkt",
|
||||||
"name": "Namn",
|
"name": "Namn",
|
||||||
"new": "Ny",
|
"new": "Ny",
|
||||||
"new_version_available": "Formbricks {version} är här. Uppgradera nu!",
|
"new_version_available": "Formbricks {version} är här. Uppgradera nu!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "Välj team",
|
"select_teams": "Välj team",
|
||||||
"selected": "Vald",
|
"selected": "Vald",
|
||||||
"selected_questions": "Valda frågor",
|
"selected_questions": "Valda frågor",
|
||||||
"selection": "Urval",
|
|
||||||
"selections": "Urval",
|
|
||||||
"send_test_email": "Skicka testmeddelande",
|
"send_test_email": "Skicka testmeddelande",
|
||||||
"session_not_found": "Session hittades inte",
|
"session_not_found": "Session hittades inte",
|
||||||
"settings": "Inställningar",
|
"settings": "Inställningar",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "Visa antal svar",
|
"show_response_count": "Visa antal svar",
|
||||||
"shown": "Visad",
|
"shown": "Visad",
|
||||||
"size": "Storlek",
|
"size": "Storlek",
|
||||||
|
"skip": "Hoppa över",
|
||||||
"skipped": "Överhoppad",
|
"skipped": "Överhoppad",
|
||||||
"skips": "Överhoppningar",
|
"skips": "Överhoppningar",
|
||||||
"some_files_failed_to_upload": "Några filer misslyckades att laddas upp",
|
"some_files_failed_to_upload": "Några filer misslyckades att laddas upp",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "Webbplatsenkät",
|
"website_survey": "Webbplatsenkät",
|
||||||
"weeks": "veckor",
|
"weeks": "veckor",
|
||||||
"welcome_card": "Välkomstkort",
|
"welcome_card": "Välkomstkort",
|
||||||
|
"workflows": "Arbetsflöden",
|
||||||
"workspace_configuration": "Arbetsytans konfiguration",
|
"workspace_configuration": "Arbetsytans konfiguration",
|
||||||
"workspace_created_successfully": "Arbetsytan har skapats",
|
"workspace_created_successfully": "Arbetsytan har skapats",
|
||||||
"workspace_creation_description": "Organisera enkäter i arbetsytor för bättre åtkomstkontroll.",
|
"workspace_creation_description": "Organisera enkäter i arbetsytor för bättre åtkomstkontroll.",
|
||||||
@@ -641,11 +647,11 @@
|
|||||||
"attribute_value": "Värde",
|
"attribute_value": "Värde",
|
||||||
"attribute_value_placeholder": "Attributvärde",
|
"attribute_value_placeholder": "Attributvärde",
|
||||||
"attributes_msg_attribute_limit_exceeded": "Kunde inte skapa {count} nya attribut eftersom det skulle överskrida maxgränsen på {limit} attributklasser. Befintliga attribut uppdaterades utan problem.",
|
"attributes_msg_attribute_limit_exceeded": "Kunde inte skapa {count} nya attribut eftersom det skulle överskrida maxgränsen på {limit} attributklasser. Befintliga attribut uppdaterades utan problem.",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error} (attributet '{key}' har dataTyp: {dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error} (attributet ”{key}” har datatyp: {dataType})",
|
||||||
"attributes_msg_email_already_exists": "E-postadressen finns redan för den här miljön och uppdaterades inte.",
|
"attributes_msg_email_already_exists": "E-postadressen finns redan för den här miljön och uppdaterades inte.",
|
||||||
"attributes_msg_email_or_userid_required": "Antingen e-post eller userId krävs. De befintliga värdena behölls.",
|
"attributes_msg_email_or_userid_required": "Antingen e-post eller användar-ID krävs. De befintliga värdena har bevarats.",
|
||||||
"attributes_msg_new_attribute_created": "Nytt attribut '{key}' med typen '{dataType}' har skapats",
|
"attributes_msg_new_attribute_created": "Nytt attribut ”{key}” med typen ”{dataType}” har skapats",
|
||||||
"attributes_msg_userid_already_exists": "UserId finns redan för den här miljön och uppdaterades inte.",
|
"attributes_msg_userid_already_exists": "Användar-ID finns redan för denna miljö och uppdaterades inte.",
|
||||||
"contact_deleted_successfully": "Kontakt borttagen",
|
"contact_deleted_successfully": "Kontakt borttagen",
|
||||||
"contact_not_found": "Ingen sådan kontakt hittades",
|
"contact_not_found": "Ingen sådan kontakt hittades",
|
||||||
"contacts_table_refresh": "Uppdatera kontakter",
|
"contacts_table_refresh": "Uppdatera kontakter",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "Datatyp",
|
"data_type": "Datatyp",
|
||||||
"data_type_cannot_be_changed": "Datatypen kan inte ändras efter skapande",
|
"data_type_cannot_be_changed": "Datatypen kan inte ändras efter skapande",
|
||||||
"data_type_description": "Välj hur detta attribut ska lagras och filtreras",
|
"data_type_description": "Välj hur detta attribut ska lagras och filtreras",
|
||||||
"date_value_required": "Datumvärde krävs. Använd ta bort-knappen om du inte vill ange ett datum.",
|
"date_value_required": "Datumvärde krävs. Använd raderingsknappen för att ta bort detta attribut om du inte vill ange ett datum.",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {Detta kommer att ta bort det valda attributet. All kontaktdata som är kopplad till detta attribut kommer att gå förlorad.} other {Detta kommer att ta bort de valda attributen. All kontaktdata som är kopplad till dessa attribut kommer att gå förlorad.}}",
|
"delete_attribute_confirmation": "{value, plural, one {Detta kommer att ta bort det valda attributet. All kontaktdata som är kopplad till detta attribut kommer att gå förlorad.} other {Detta kommer att ta bort de valda attributen. All kontaktdata som är kopplad till dessa attribut kommer att gå förlorad.}}",
|
||||||
"delete_contact_confirmation": "Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till denna kontakt. All målgruppsinriktning och personalisering baserad på denna kontakts data kommer att gå förlorad.",
|
"delete_contact_confirmation": "Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till denna kontakt. All målgruppsinriktning och personalisering baserad på denna kontakts data kommer att gå förlorad.",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till denna kontakt. All målgruppsinriktning och personalisering baserad på denna kontakts data kommer att gå förlorad. Om denna kontakt har svar som räknas mot enkätkvoter, kommer kvotantalet att minskas men kvotgränserna förblir oförändrade.} other {Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till dessa kontakter. All målgruppsinriktning och personalisering baserad på dessa kontakters data kommer att gå förlorad. Om dessa kontakter har svar som räknas mot enkätkvoter, kommer kvotantalet att minskas men kvotgränserna förblir oförändrade.}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till denna kontakt. All målgruppsinriktning och personalisering baserad på denna kontakts data kommer att gå förlorad. Om denna kontakt har svar som räknas mot enkätkvoter, kommer kvotantalet att minskas men kvotgränserna förblir oförändrade.} other {Detta kommer att ta bort alla enkätsvar och kontaktattribut som är kopplade till dessa kontakter. All målgruppsinriktning och personalisering baserad på dessa kontakters data kommer att gå förlorad. Om dessa kontakter har svar som räknas mot enkätkvoter, kommer kvotantalet att minskas men kvotgränserna förblir oförändrade.}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "Systemattribut",
|
"system_attributes": "Systemattribut",
|
||||||
"unlock_contacts_description": "Hantera kontakter och skicka ut riktade enkäter",
|
"unlock_contacts_description": "Hantera kontakter och skicka ut riktade enkäter",
|
||||||
"unlock_contacts_title": "Lås upp kontakter med en högre plan",
|
"unlock_contacts_title": "Lås upp kontakter med en högre plan",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "Attributet \"{key}\" är av typen \"{dataType}\" men CSV-filen innehåller ogiltiga värden: {values}",
|
"upload_contacts_error_attribute_type_mismatch": "Attributet ”{key}” är av typen ”{dataType}” men CSV-filen innehåller ogiltiga värden: {values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "Dubblettmappningar hittades för följande attribut: {attributes}",
|
"upload_contacts_error_duplicate_mappings": "Dubblettmappningar hittades för följande attribut: {attributes}",
|
||||||
"upload_contacts_error_file_too_large": "Filstorleken överskrider maxgränsen på 800 KB",
|
"upload_contacts_error_file_too_large": "Filstorleken överskrider maxgränsen på 800 KB",
|
||||||
"upload_contacts_error_generic": "Ett fel uppstod vid uppladdning av kontakter. Försök igen senare.",
|
"upload_contacts_error_generic": "Ett fel uppstod vid uppladdning av kontakter. Försök igen senare.",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "Återanslut",
|
"reconnect_button": "Återanslut",
|
||||||
"reconnect_button_description": "Din Google Sheets-anslutning har gått ut. Återanslut för att fortsätta synkronisera svar. Dina befintliga kalkylarkslänkar och data kommer att sparas.",
|
"reconnect_button_description": "Din Google Sheets-anslutning har gått ut. Återanslut för att fortsätta synkronisera svar. Dina befintliga kalkylarkslänkar och data kommer att sparas.",
|
||||||
"reconnect_button_tooltip": "Återanslut integrationen för att uppdatera din åtkomst. Dina befintliga kalkylarkslänkar och data kommer att sparas.",
|
"reconnect_button_tooltip": "Återanslut integrationen för att uppdatera din åtkomst. Dina befintliga kalkylarkslänkar och data kommer att sparas.",
|
||||||
"spreadsheet_permission_error": "Du har inte behörighet att komma åt det här kalkylarket. Kontrollera att kalkylarket är delat med ditt Google-konto och att du har skrivrättigheter till kalkylarket.",
|
"spreadsheet_permission_error": "Du har inte behörighet att komma åt detta kalkylblad. Kontrollera att kalkylbladet är delat med ditt Google-konto och att du har skrivrättigheter.",
|
||||||
"spreadsheet_url": "Kalkylblads-URL",
|
"spreadsheet_url": "Kalkylblads-URL",
|
||||||
"token_expired_error": "Google Sheets refresh token har gått ut eller återkallats. Återanslut integrationen."
|
"token_expired_error": "Google Sheets refresh token har gått ut eller återkallats. Återanslut integrationen."
|
||||||
},
|
},
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "Licensnyckeln är ogiltig. Kontrollera din ENTERPRISE_LICENSE_KEY.",
|
"recheck_license_invalid": "Licensnyckeln är ogiltig. Kontrollera din ENTERPRISE_LICENSE_KEY.",
|
||||||
"recheck_license_success": "Licenskontrollen lyckades",
|
"recheck_license_success": "Licenskontrollen lyckades",
|
||||||
"recheck_license_unreachable": "Licensservern är otillgänglig. Försök igen senare.",
|
"recheck_license_unreachable": "Licensservern är otillgänglig. Försök igen senare.",
|
||||||
"rechecking": "Kontrollerar igen...",
|
"rechecking": "Kontrollerar igen…",
|
||||||
"request_30_day_trial_license": "Begär 30-dagars provlicens",
|
"request_30_day_trial_license": "Begär 30-dagars provlicens",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "Servicenivåavtal",
|
"service_level_agreement": "Servicenivåavtal",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "Notifieringsinställningar uppdaterade",
|
"notification_settings_updated": "Notifieringsinställningar uppdaterade",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "Ställ in en avisering för att få e-post vid nya svar",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "Ställ in en avisering för att få e-post vid nya svar",
|
||||||
"use_the_integration": "Använd integrationen",
|
"use_the_integration": "Använd integrationen",
|
||||||
"want_to_loop_in_organization_mates": "Vill du inkludera organisationskollegor",
|
"want_to_loop_in_organization_mates": "Vill du involvera kollegor i organisationen?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Du kommer inte längre att automatiskt prenumerera på denna organisations enkäter!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "Du kommer inte längre att automatiskt prenumerera på denna organisations enkäter!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Du kommer inte att få fler e-postmeddelanden för svar på denna enkät!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "Du kommer inte att få fler e-postmeddelanden för svar på denna enkät!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "Lägg till en platshållare att visa om det inte finns något värde att återkalla.",
|
"add_fallback_placeholder": "Lägg till en platshållare att visa om det inte finns något värde att återkalla.",
|
||||||
"add_hidden_field_id": "Lägg till dolt fält-ID",
|
"add_hidden_field_id": "Lägg till dolt fält-ID",
|
||||||
"add_highlight_border": "Lägg till markerad kant",
|
"add_highlight_border": "Lägg till markerad kant",
|
||||||
|
"add_highlight_border_description": "Gäller bara för undersökningar i produkten.",
|
||||||
"add_logic": "Lägg till logik",
|
"add_logic": "Lägg till logik",
|
||||||
"add_none_of_the_above": "Lägg till \"Inget av ovanstående\"",
|
"add_none_of_the_above": "Lägg till \"Inget av ovanstående\"",
|
||||||
"add_option": "Lägg till alternativ",
|
"add_option": "Lägg till alternativ",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "Justera meddelande för 'Enkät stängd'",
|
"adjust_survey_closed_message": "Justera meddelande för 'Enkät stängd'",
|
||||||
"adjust_survey_closed_message_description": "Ändra meddelandet besökare ser när enkäten är stängd.",
|
"adjust_survey_closed_message_description": "Ändra meddelandet besökare ser när enkäten är stängd.",
|
||||||
"adjust_the_theme_in_the": "Justera temat i",
|
"adjust_the_theme_in_the": "Justera temat i",
|
||||||
|
"all_are_true": "alla är sanna",
|
||||||
"all_other_answers_will_continue_to": "Alla andra svar fortsätter till",
|
"all_other_answers_will_continue_to": "Alla andra svar fortsätter till",
|
||||||
"allow_multi_select": "Tillåt flerval",
|
"allow_multi_select": "Tillåt flerval",
|
||||||
"allow_multiple_files": "Tillåt flera filer",
|
"allow_multiple_files": "Tillåt flera filer",
|
||||||
"allow_users_to_select_more_than_one_image": "Tillåt användare att välja mer än en bild",
|
"allow_users_to_select_more_than_one_image": "Tillåt användare att välja mer än en bild",
|
||||||
"and_launch_surveys_in_your_website_or_app": "och starta enkäter på din webbplats eller i din app.",
|
"and_launch_surveys_in_your_website_or_app": "och starta enkäter på din webbplats eller i din app.",
|
||||||
"animation": "Animering",
|
"animation": "Animering",
|
||||||
|
"any_is_true": "någon är sann",
|
||||||
"app_survey_description": "Bädda in en enkät i din webbapp eller webbplats för att samla in svar.",
|
"app_survey_description": "Bädda in en enkät i din webbapp eller webbplats för att samla in svar.",
|
||||||
"assign": "Tilldela =",
|
"assign": "Tilldela =",
|
||||||
"audience": "Målgrupp",
|
"audience": "Målgrupp",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "Beräkna",
|
"calculate": "Beräkna",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "Fånga en ny åtgärd att utlösa en enkät på.",
|
"capture_a_new_action_to_trigger_a_survey_on": "Fånga en ny åtgärd att utlösa en enkät på.",
|
||||||
"capture_ip_address": "Registrera IP-adress",
|
"capture_ip_address": "Registrera IP-adress",
|
||||||
"capture_ip_address_description": "Spara respondentens IP-adress i svarsmetadatan för att upptäcka dubbletter och av säkerhetsskäl",
|
"capture_ip_address_description": "Spara respondentens IP-adress i svarsmetadata för att upptäcka dubbletter och av säkerhetsskäl",
|
||||||
"capture_new_action": "Fånga ny åtgärd",
|
"capture_new_action": "Fånga ny åtgärd",
|
||||||
"card_arrangement_for_survey_type_derived": "Kortarrangemang för {surveyTypeDerived}-enkäter",
|
"card_arrangement_for_survey_type_derived": "Kortarrangemang för {surveyTypeDerived}-enkäter",
|
||||||
"card_background_color": "Kortets bakgrundsfärg",
|
"card_background_color": "Kortets bakgrundsfärg",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "Avslappnad",
|
"casual": "Avslappnad",
|
||||||
"caution_edit_duplicate": "Duplicera och redigera",
|
"caution_edit_duplicate": "Duplicera och redigera",
|
||||||
"caution_edit_published_survey": "Redigera en publicerad enkät?",
|
"caution_edit_published_survey": "Redigera en publicerad enkät?",
|
||||||
"caution_explanation_intro": "Vi förstår att du kanske fortfarande vill göra ändringar. Här är vad som händer om du gör det: ",
|
"caution_explanation_intro": "Vi förstår att du kanske ändå vill göra ändringar. Så här händer om du gör det:",
|
||||||
"caution_explanation_new_responses_separated": "Svar före ändringen kanske inte eller endast delvis inkluderas i enkätsammanfattningen.",
|
"caution_explanation_new_responses_separated": "Svar före ändringen kanske inte eller endast delvis inkluderas i enkätsammanfattningen.",
|
||||||
"caution_explanation_only_new_responses_in_summary": "All data, inklusive tidigare svar, förblir tillgänglig som nedladdning på enkätsammanfattningssidan.",
|
"caution_explanation_only_new_responses_in_summary": "All data, inklusive tidigare svar, förblir tillgänglig som nedladdning på enkätsammanfattningssidan.",
|
||||||
"caution_explanation_responses_are_safe": "Äldre och nyare svar blandas vilket kan leda till vilseledande datasammanfattningar.",
|
"caution_explanation_responses_are_safe": "Äldre och nyare svar blandas vilket kan leda till vilseledande datasammanfattningar.",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "Uppföljning uppdaterad och sparas när du sparar enkäten.",
|
"follow_ups_modal_updated_successfull_toast": "Uppföljning uppdaterad och sparas när du sparar enkäten.",
|
||||||
"follow_ups_new": "Ny uppföljning",
|
"follow_ups_new": "Ny uppföljning",
|
||||||
"follow_ups_upgrade_button_text": "Uppgradera för att aktivera uppföljningar",
|
"follow_ups_upgrade_button_text": "Uppgradera för att aktivera uppföljningar",
|
||||||
"form_styling": "Formulärstil",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK är inte anslutet",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK är inte anslutet",
|
||||||
"four_points": "4 poäng",
|
"four_points": "4 poäng",
|
||||||
"heading": "Rubrik",
|
"heading": "Rubrik",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "Alternativ {choiceIndex}",
|
"option_idx": "Alternativ {choiceIndex}",
|
||||||
"option_used_in_logic_error": "Detta alternativ används i logiken för fråga {questionIndex}. Vänligen ta bort det från logiken först.",
|
"option_used_in_logic_error": "Detta alternativ används i logiken för fråga {questionIndex}. Vänligen ta bort det från logiken först.",
|
||||||
"optional": "Valfritt",
|
"optional": "Valfritt",
|
||||||
"options": "Alternativ",
|
"options": "Alternativ*",
|
||||||
"options_used_in_logic_bulk_error": "Följande alternativ används i logiken: {questionIndexes}. Vänligen ta bort dem från logiken först.",
|
"options_used_in_logic_bulk_error": "Följande alternativ används i logiken: {questionIndexes}. Vänligen ta bort dem från logiken först.",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "Åsidosätt temat med individuella stilar för denna enkät.",
|
"override_theme_with_individual_styles_for_this_survey": "Åsidosätt temat med individuella stilar för denna enkät.",
|
||||||
"overwrite_global_waiting_time": "Ange anpassad väntetid",
|
"overwrite_global_waiting_time": "Ange anpassad väntetid",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "Fråga borttagen.",
|
"question_deleted": "Fråga borttagen.",
|
||||||
"question_duplicated": "Fråga duplicerad.",
|
"question_duplicated": "Fråga duplicerad.",
|
||||||
"question_id_updated": "Fråge-ID uppdaterat",
|
"question_id_updated": "Fråge-ID uppdaterat",
|
||||||
|
"question_number": "Fråga {number}",
|
||||||
"question_used_in_logic_warning_text": "Element från det här blocket används i en logikregel. Är du säker på att du vill ta bort det?",
|
"question_used_in_logic_warning_text": "Element från det här blocket används i en logikregel. Är du säker på att du vill ta bort det?",
|
||||||
"question_used_in_logic_warning_title": "Logikkonflikt",
|
"question_used_in_logic_warning_title": "Logikkonflikt",
|
||||||
"question_used_in_quota": "Denna fråga används i kvoten “{quotaName}”",
|
"question_used_in_quota": "Denna fråga används i kvoten “{quotaName}”",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "Svarsgränser, omdirigeringar och mer.",
|
"response_limits_redirections_and_more": "Svarsgränser, omdirigeringar och mer.",
|
||||||
"response_options": "Svarsalternativ",
|
"response_options": "Svarsalternativ",
|
||||||
"roundness": "Rundhet",
|
"roundness": "Rundhet",
|
||||||
"roundness_description": "Styr hur rundade kortets hörn är.",
|
"roundness_description": "Styr hur rundade hörnen är.",
|
||||||
"row_used_in_logic_error": "Denna rad används i logiken för fråga {questionIndex}. Vänligen ta bort den från logiken först.",
|
"row_used_in_logic_error": "Denna rad används i logiken för fråga {questionIndex}. Vänligen ta bort den från logiken först.",
|
||||||
"rows": "Rader",
|
"rows": "Rader",
|
||||||
"save_and_close": "Spara och stäng",
|
"save_and_close": "Spara och stäng",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "Denna gratis och öppenkällkodsenkät har stängts",
|
"survey_completed_subheading": "Denna gratis och öppenkällkodsenkät har stängts",
|
||||||
"survey_display_settings": "Visningsinställningar för enkät",
|
"survey_display_settings": "Visningsinställningar för enkät",
|
||||||
"survey_placement": "Enkätplacering",
|
"survey_placement": "Enkätplacering",
|
||||||
|
"survey_styling": "Formulärstil",
|
||||||
"survey_trigger": "Enkätutlösare",
|
"survey_trigger": "Enkätutlösare",
|
||||||
"switch_multi_language_on_to_get_started": "Slå på flerspråkighet för att komma igång 👉",
|
"switch_multi_language_on_to_get_started": "Slå på flerspråkighet för att komma igång 👉",
|
||||||
"target_block_not_found": "Målblock hittades inte",
|
"target_block_not_found": "Målblock hittades inte",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "Matchar regexmönster",
|
"pattern": "Matchar regexmönster",
|
||||||
"phone": "Är ett giltigt telefonnummer",
|
"phone": "Är ett giltigt telefonnummer",
|
||||||
"rank_all_options": "Rangordna alla alternativ",
|
"rank_all_options": "Rangordna alla alternativ",
|
||||||
"select_file_extensions": "Välj filändelser...",
|
"select_file_extensions": "Välj filändelser…",
|
||||||
"select_option": "Välj alternativ",
|
"select_option": "Välj alternativ",
|
||||||
"start_date": "Startdatum",
|
"start_date": "Startdatum",
|
||||||
"url": "Är en giltig URL"
|
"url": "Är en giltig URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "Väntetid (mellan enkäter)",
|
"waiting_time_across_surveys": "Väntetid (mellan enkäter)",
|
||||||
"waiting_time_across_surveys_description": "För att undvika enkättrötthet, välj hur denna enkät ska förhålla sig till arbetsytans gemensamma väntetid.",
|
"waiting_time_across_surveys_description": "För att undvika enkättrötthet, välj hur denna enkät ska förhålla sig till arbetsytans gemensamma väntetid.",
|
||||||
"welcome_message": "Välkomstmeddelande",
|
"welcome_message": "Välkomstmeddelande",
|
||||||
|
"when": "När",
|
||||||
"without_a_filter_all_of_your_users_can_be_surveyed": "Utan ett filter kan alla dina användare enkäteras.",
|
"without_a_filter_all_of_your_users_can_be_surveyed": "Utan ett filter kan alla dina användare enkäteras.",
|
||||||
"you_have_not_created_a_segment_yet": "Du har inte skapat ett segment ännu",
|
"you_have_not_created_a_segment_yet": "Du har inte skapat ett segment ännu",
|
||||||
"you_need_to_have_two_or_more_languages_set_up_in_your_workspace_to_work_with_translations": "Du måste ha två eller fler språk inställda i din arbetsyta för att kunna arbeta med översättningar.",
|
|
||||||
"your_description_here_recall_information_with": "Din beskrivning här. Återkalla information med @",
|
"your_description_here_recall_information_with": "Din beskrivning här. Återkalla information med @",
|
||||||
"your_question_here_recall_information_with": "Din fråga här. Återkalla information med @",
|
"your_question_here_recall_information_with": "Din fråga här. Återkalla information med @",
|
||||||
"your_web_app": "Din webbapp",
|
"your_web_app": "Din webbapp",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "Inaktivera engångslänkar",
|
"disable_single_use_link_modal_button": "Inaktivera engångslänkar",
|
||||||
"disable_single_use_link_modal_description": "Om du delade engångslänkar kommer deltagarna inte längre att kunna svara på enkäten.",
|
"disable_single_use_link_modal_description": "Om du delade engångslänkar kommer deltagarna inte längre att kunna svara på enkäten.",
|
||||||
"generate_and_download_links": "Generera och ladda ner länkar",
|
"generate_and_download_links": "Generera och ladda ner länkar",
|
||||||
"generate_links_error": "Engångslänkar kunde inte genereras. Vänligen arbeta direkt med API:t",
|
"generate_links_error": "Engångslänkar kunde inte genereras. Arbeta direkt med API:et istället.",
|
||||||
"multi_use_link": "Fleranvändarlänk",
|
"multi_use_link": "Fleranvändarlänk",
|
||||||
"multi_use_link_description": "Samla in flera svar från anonyma respondenter med en länk.",
|
"multi_use_link_description": "Samla in flera svar från anonyma respondenter med en länk.",
|
||||||
"multi_use_powers_other_channels_description": "Om du inaktiverar den kommer dessa andra distributionskanaler också att inaktiveras.",
|
"multi_use_powers_other_channels_description": "Om du inaktiverar den kommer dessa andra distributionskanaler också att inaktiveras.",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "Lade till filter för svar där svar på fråga {questionIdx} är {filterComboBoxValue} - {filterValue} ",
|
"added_filter_for_responses_where_answer_to_question": "Filter har lagts till för svar där svaret på fråga {questionIdx} är {filterComboBoxValue} - {filterValue}",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "Lade till filter för svar där svar på fråga {questionIdx} är överhoppad",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "Lade till filter för svar där svar på fråga {questionIdx} är överhoppad",
|
||||||
"aggregated": "Aggregerad",
|
"aggregated": "Aggregerad",
|
||||||
"all_responses_csv": "Alla svar (CSV)",
|
"all_responses_csv": "Alla svar (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "Starter",
|
"starts": "Starter",
|
||||||
"starts_tooltip": "Antal gånger enkäten har startats.",
|
"starts_tooltip": "Antal gånger enkäten har startats.",
|
||||||
"survey_reset_successfully": "Enkät återställd! {responseCount} svar och {displayCount} visningar togs bort.",
|
"survey_reset_successfully": "Enkät återställd! {responseCount} svar och {displayCount} visningar togs bort.",
|
||||||
|
"survey_results": "Resultat för {surveyName}",
|
||||||
"this_month": "Denna månad",
|
"this_month": "Denna månad",
|
||||||
"this_quarter": "Detta kvartal",
|
"this_quarter": "Detta kvartal",
|
||||||
"this_year": "Detta år",
|
"this_year": "Detta år",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "Lägg till en bakgrundsfärg i logobehållaren.",
|
"add_background_color_description": "Lägg till en bakgrundsfärg i logobehållaren.",
|
||||||
"advanced_styling_field_border_radius": "Hörnradie",
|
"advanced_styling_field_border_radius": "Hörnradie",
|
||||||
"advanced_styling_field_button_bg": "Knappens bakgrund",
|
"advanced_styling_field_button_bg": "Knappens bakgrund",
|
||||||
"advanced_styling_field_button_bg_description": "Fyller Nästa / Skicka-knappen.",
|
"advanced_styling_field_button_bg_description": "Fyller knappen ”Nästa” / ”Skicka”.",
|
||||||
"advanced_styling_field_button_border_radius_description": "Rundar av knappens hörn.",
|
"advanced_styling_field_button_border_radius_description": "Rundar av knappens hörn.",
|
||||||
"advanced_styling_field_button_font_size_description": "Ändrar storleken på knappens text.",
|
"advanced_styling_field_button_font_size_description": "Ändrar storleken på knappens text.",
|
||||||
"advanced_styling_field_button_font_weight_description": "Gör knapptexten tunnare eller fetare.",
|
"advanced_styling_field_button_font_weight_description": "Gör knapptexten tunnare eller fetare.",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "Beskrivningens teckenstorlek",
|
"advanced_styling_field_description_size": "Beskrivningens teckenstorlek",
|
||||||
"advanced_styling_field_description_size_description": "Ändrar storleken på beskrivningstexten.",
|
"advanced_styling_field_description_size_description": "Ändrar storleken på beskrivningstexten.",
|
||||||
"advanced_styling_field_description_weight": "Beskrivningens teckentjocklek",
|
"advanced_styling_field_description_weight": "Beskrivningens teckentjocklek",
|
||||||
"advanced_styling_field_description_weight_description": "Gör beskrivningstexten tunnare eller fetare.",
|
"advanced_styling_field_description_weight_description": "Gör beskrivningstexten ljusare eller fetare.",
|
||||||
"advanced_styling_field_font_size": "Teckenstorlek",
|
"advanced_styling_field_font_size": "Teckenstorlek",
|
||||||
"advanced_styling_field_font_weight": "Teckentjocklek",
|
"advanced_styling_field_font_weight": "Teckentjocklek",
|
||||||
"advanced_styling_field_headline_color": "Rubrikfärg",
|
"advanced_styling_field_headline_color": "Rubrikfärg",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "Färglägger den fyllda delen av stapeln.",
|
"advanced_styling_field_indicator_bg_description": "Färglägger den fyllda delen av stapeln.",
|
||||||
"advanced_styling_field_input_border_radius_description": "Rundar av hörnen på inmatningsfält.",
|
"advanced_styling_field_input_border_radius_description": "Rundar av hörnen på inmatningsfält.",
|
||||||
"advanced_styling_field_input_font_size_description": "Ändrar storleken på texten i inmatningsfält.",
|
"advanced_styling_field_input_font_size_description": "Ändrar storleken på texten i inmatningsfält.",
|
||||||
"advanced_styling_field_input_height_description": "Styr den minsta höjden på inmatningsfältet.",
|
"advanced_styling_field_input_height_description": "Styr minimihöjden på inmatningsfältet.",
|
||||||
"advanced_styling_field_input_padding_x_description": "Lägger till utrymme till vänster och höger.",
|
"advanced_styling_field_input_padding_x_description": "Lägger till utrymme till vänster och höger.",
|
||||||
"advanced_styling_field_input_padding_y_description": "Lägger till utrymme upptill och nedtill.",
|
"advanced_styling_field_input_padding_y_description": "Lägger till utrymme upptill och nedtill.",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "Tonar ut platshållartexten.",
|
"advanced_styling_field_input_placeholder_opacity_description": "Tonar ut platshållartexten.",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "Färgar den inmatade texten i fälten.",
|
"advanced_styling_field_input_text_description": "Färgar den inmatade texten i fälten.",
|
||||||
"advanced_styling_field_option_bg": "Bakgrund",
|
"advanced_styling_field_option_bg": "Bakgrund",
|
||||||
"advanced_styling_field_option_bg_description": "Fyller alternativraderna.",
|
"advanced_styling_field_option_bg_description": "Fyller alternativraderna.",
|
||||||
|
"advanced_styling_field_option_border": "Kantfärg",
|
||||||
|
"advanced_styling_field_option_border_description": "Markerar radio- och kryssrutealternativ.",
|
||||||
"advanced_styling_field_option_border_radius_description": "Rundar hörnen på alternativen.",
|
"advanced_styling_field_option_border_radius_description": "Rundar hörnen på alternativen.",
|
||||||
"advanced_styling_field_option_font_size_description": "Skalar textstorleken på alternativetiketten.",
|
"advanced_styling_field_option_font_size_description": "Skalar textstorleken på alternativetiketten.",
|
||||||
"advanced_styling_field_option_label": "Etikettfärg",
|
"advanced_styling_field_option_label": "Etikettfärg",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "Visa 'Powered by Formbricks'-signatur",
|
"show_powered_by_formbricks": "Visa 'Powered by Formbricks'-signatur",
|
||||||
"styling_updated_successfully": "Stiluppdatering lyckades",
|
"styling_updated_successfully": "Stiluppdatering lyckades",
|
||||||
"suggest_colors": "Föreslå färger",
|
"suggest_colors": "Föreslå färger",
|
||||||
"suggested_colors_applied_please_save": "Föreslagna färger har skapats. Tryck på \"Spara\" för att spara ändringarna.",
|
"suggested_colors_applied_please_save": "Föreslagna färger har genererats. Tryck på ”Spara” för att spara ändringarna.",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_settings_description": "Skapa ett stilmall för alla undersökningar. Du kan aktivera anpassad stil för varje undersökning."
|
"theme_settings_description": "Skapa ett stilmall för alla undersökningar. Du kan aktivera anpassad stil för varje undersökning."
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "Vänligen kontrollera även din skräppost om du inte ser e-postmeddelandet i din inkorg.",
|
"check_inbox_or_spam": "Vänligen kontrollera även din skräppost om du inte ser e-postmeddelandet i din inkorg.",
|
||||||
"completed": "Denna enkät är stängd.",
|
"completed": "Denna enkät är stängd.",
|
||||||
"create_your_own": "Skapa din egen öppenkällkodsenkät",
|
"create_your_own": "Skapa din egen öppenkällkodsenkät",
|
||||||
"enter_pin": "Denna enkät är skyddad. Ange PIN nedan",
|
"enter_pin": "Denna undersökning är skyddad. Ange PIN-koden nedan.",
|
||||||
"just_curious": "Bara nyfiken?",
|
"just_curious": "Bara nyfiken?",
|
||||||
"link_invalid": "Denna enkät kan endast tas via inbjudan.",
|
"link_invalid": "Denna enkät kan endast tas via inbjudan.",
|
||||||
"paused": "Denna enkät är tillfälligt pausad.",
|
"paused": "Denna enkät är tillfälligt pausad.",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "Hur kan företaget förbättra sin vision och strategiöverensstämmelse?",
|
"alignment_and_engagement_survey_question_4_headline": "Hur kan företaget förbättra sin vision och strategiöverensstämmelse?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "Skriv ditt svar här...",
|
"alignment_and_engagement_survey_question_4_placeholder": "Skriv ditt svar här...",
|
||||||
"back": "Tillbaka",
|
"back": "Tillbaka",
|
||||||
|
"block_1": "Block 1",
|
||||||
|
"block_10": "Block 10",
|
||||||
|
"block_2": "Block 2",
|
||||||
|
"block_3": "Block 3",
|
||||||
|
"block_4": "Block 4",
|
||||||
|
"block_5": "Block 5",
|
||||||
|
"block_6": "Block 6",
|
||||||
|
"block_7": "Block 7",
|
||||||
|
"block_8": "Block 8",
|
||||||
|
"block_9": "Block 9",
|
||||||
"book_interview": "Boka intervju",
|
"book_interview": "Boka intervju",
|
||||||
"build_product_roadmap_description": "Identifiera det EN sak dina användare vill ha mest och bygg den.",
|
"build_product_roadmap_description": "Identifiera det EN sak dina användare vill ha mest och bygg den.",
|
||||||
"build_product_roadmap_name": "Bygg produktroadmap",
|
"build_product_roadmap_name": "Bygg produktroadmap",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "Dålig kvalitet",
|
"csat_question_3_choice_8": "Dålig kvalitet",
|
||||||
"csat_question_3_choice_9": "Opålitlig",
|
"csat_question_3_choice_9": "Opålitlig",
|
||||||
"csat_question_3_headline": "Vilka av följande ord skulle du använda för att beskriva vår $[projectName]?",
|
"csat_question_3_headline": "Vilka av följande ord skulle du använda för att beskriva vår $[projectName]?",
|
||||||
"csat_question_3_subheader": "Välj alla som gäller:",
|
"csat_question_3_subheader": "Vänligen välj alla som gäller:",
|
||||||
"csat_question_4_choice_1": "Extremt bra",
|
"csat_question_4_choice_1": "Extremt bra",
|
||||||
"csat_question_4_choice_2": "Mycket bra",
|
"csat_question_4_choice_2": "Mycket bra",
|
||||||
"csat_question_4_choice_3": "Ganska bra",
|
"csat_question_4_choice_3": "Ganska bra",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "Aj, förlåt! Finns det något vi kan göra för att förbättra din upplevelse?",
|
"csat_survey_question_3_headline": "Aj, förlåt! Finns det något vi kan göra för att förbättra din upplevelse?",
|
||||||
"csat_survey_question_3_placeholder": "Skriv ditt svar här...",
|
"csat_survey_question_3_placeholder": "Skriv ditt svar här...",
|
||||||
"cta_description": "Visa information och uppmana användare att vidta en specifik åtgärd",
|
"cta_description": "Visa information och uppmana användare att vidta en specifik åtgärd",
|
||||||
"custom_survey_block_1_name": "Block 1",
|
|
||||||
"custom_survey_description": "Skapa en enkät utan mall.",
|
"custom_survey_description": "Skapa en enkät utan mall.",
|
||||||
"custom_survey_name": "Börja från början",
|
"custom_survey_name": "Börja från början",
|
||||||
"custom_survey_question_1_headline": "Vad vill du veta?",
|
"custom_survey_question_1_headline": "Vad vill du veta?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "Nej, tack!",
|
"preview_survey_question_2_choice_2_label": "Nej, tack!",
|
||||||
"preview_survey_question_2_headline": "Vill du hållas uppdaterad?",
|
"preview_survey_question_2_headline": "Vill du hållas uppdaterad?",
|
||||||
"preview_survey_question_2_subheader": "Det här är ett exempel på en beskrivning.",
|
"preview_survey_question_2_subheader": "Det här är ett exempel på en beskrivning.",
|
||||||
|
"preview_survey_question_open_text_headline": "Något mer du vill dela med dig av?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "Skriv ditt svar här...",
|
||||||
|
"preview_survey_question_open_text_subheader": "Din feedback hjälper oss att bli bättre.",
|
||||||
"preview_survey_welcome_card_headline": "Välkommen!",
|
"preview_survey_welcome_card_headline": "Välkommen!",
|
||||||
"prioritize_features_description": "Identifiera vilka funktioner dina användare behöver mest och minst.",
|
"prioritize_features_description": "Identifiera vilka funktioner dina användare behöver mest och minst.",
|
||||||
"prioritize_features_name": "Prioritera funktioner",
|
"prioritize_features_name": "Prioritera funktioner",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "Individuell forskning",
|
"professional_development_survey_question_2_choice_5": "Individuell forskning",
|
||||||
"professional_development_survey_question_2_choice_6": "Annat",
|
"professional_development_survey_question_2_choice_6": "Annat",
|
||||||
"professional_development_survey_question_2_headline": "Vilka typer av aktiviteter för professionell utveckling tror du skulle vara mest värdefulla för din tillväxt?",
|
"professional_development_survey_question_2_headline": "Vilka typer av aktiviteter för professionell utveckling tror du skulle vara mest värdefulla för din tillväxt?",
|
||||||
"professional_development_survey_question_2_subheader": "Välj alla som gäller",
|
"professional_development_survey_question_2_subheader": "Vänligen välj alla som gäller:",
|
||||||
"professional_development_survey_question_3_choice_1": "Ja",
|
"professional_development_survey_question_3_choice_1": "Ja",
|
||||||
"professional_development_survey_question_3_choice_2": "Nej",
|
"professional_development_survey_question_3_choice_2": "Nej",
|
||||||
"professional_development_survey_question_3_headline": "Har du ägnat tid åt din professionella utveckling tidigare?",
|
"professional_development_survey_question_3_headline": "Har du ägnat tid åt din professionella utveckling tidigare?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "Jag kände mig trygg när jag använde systemet.",
|
"usability_question_9_headline": "Jag kände mig trygg när jag använde systemet.",
|
||||||
"usability_rating_description": "Mät upplevd användbarhet genom att be användare betygsätta sin upplevelse med din produkt med en standardiserad 10-frågors enkät.",
|
"usability_rating_description": "Mät upplevd användbarhet genom att be användare betygsätta sin upplevelse med din produkt med en standardiserad 10-frågors enkät.",
|
||||||
"usability_score_name": "System Usability Score (SUS)"
|
"usability_score_name": "System Usability Score (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "Tack för att du delade din arbetsflödesidé med oss! Vi håller just nu på att designa den här funktionen och din feedback hjälper oss att bygga precis det du behöver.",
|
||||||
|
"coming_soon_title": "Vi är nästan där!",
|
||||||
|
"follow_up_label": "Är det något mer du vill lägga till?",
|
||||||
|
"follow_up_placeholder": "Vilka specifika uppgifter vill du automatisera? Några verktyg eller integrationer du vill ha med?",
|
||||||
|
"generate_button": "Skapa arbetsflöde",
|
||||||
|
"heading": "Vilket arbetsflöde vill du skapa?",
|
||||||
|
"placeholder": "Beskriv det arbetsflöde du vill skapa…",
|
||||||
|
"subheading": "Skapa ditt arbetsflöde på några sekunder.",
|
||||||
|
"submit_button": "Lägg till detaljer",
|
||||||
|
"thank_you_description": "Din input hjälper oss att bygga arbetsflödesfunktionen du faktiskt behöver. Vi håller dig uppdaterad om våra framsteg.",
|
||||||
|
"thank_you_title": "Tack för din feedback!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,9 +175,12 @@
|
|||||||
"copy": "复制",
|
"copy": "复制",
|
||||||
"copy_code": "复制 代码",
|
"copy_code": "复制 代码",
|
||||||
"copy_link": "复制 链接",
|
"copy_link": "复制 链接",
|
||||||
"count_attributes": "{value, plural, one {{value} 个属性} other {{value} 个属性}}",
|
"count_attributes": "{count, plural, other {{count} 个属性}}",
|
||||||
"count_contacts": "{value, plural, other {{value} 联系人} }",
|
"count_contacts": "{count, plural, other {{count} 位联系人}}",
|
||||||
"count_responses": "{value, plural, other {{value} 回复} }",
|
"count_members": "{count, plural, other {{count} 位成员}}",
|
||||||
|
"count_questions": "{count, plural, other {{count} 个问题} }",
|
||||||
|
"count_responses": "{count, plural, other {{count} 个回复}}",
|
||||||
|
"count_selections": "{count, plural, other {{count} 个选择}}",
|
||||||
"create_new_organization": "创建 新的 组织",
|
"create_new_organization": "创建 新的 组织",
|
||||||
"create_segment": "创建 细分",
|
"create_segment": "创建 细分",
|
||||||
"create_survey": "创建 调查",
|
"create_survey": "创建 调查",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "天",
|
"days": "天",
|
||||||
"default": "默认",
|
"default": "默认",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
|
"delete_what": "删除{deleteWhat}",
|
||||||
"description": "描述",
|
"description": "描述",
|
||||||
"dev_env": "开发 环境",
|
"dev_env": "开发 环境",
|
||||||
"development": "开发环境",
|
"development": "开发环境",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "下载",
|
"download": "下载",
|
||||||
"draft": "草稿",
|
"draft": "草稿",
|
||||||
"duplicate": "复制",
|
"duplicate": "复制",
|
||||||
|
"duplicate_copy": "(副本)",
|
||||||
|
"duplicate_copy_number": "(副本 {copyNumber})",
|
||||||
"e_commerce": "电子商务",
|
"e_commerce": "电子商务",
|
||||||
"edit": "编辑",
|
"edit": "编辑",
|
||||||
"email": "邮箱",
|
"email": "邮箱",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "外观 & 感觉",
|
"look_and_feel": "外观 & 感觉",
|
||||||
"manage": "管理",
|
"manage": "管理",
|
||||||
"marketing": "市场营销",
|
"marketing": "市场营销",
|
||||||
"member": "成员",
|
|
||||||
"members": "成员",
|
"members": "成员",
|
||||||
"members_and_teams": "成员和团队",
|
"members_and_teams": "成员和团队",
|
||||||
"membership_not_found": "未找到会员资格",
|
"membership_not_found": "未找到会员资格",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "下移",
|
"move_down": "下移",
|
||||||
"move_up": "上移",
|
"move_up": "上移",
|
||||||
"multiple_languages": "多种 语言",
|
"multiple_languages": "多种 语言",
|
||||||
|
"my_product": "我的产品",
|
||||||
"name": "名称",
|
"name": "名称",
|
||||||
"new": "新建",
|
"new": "新建",
|
||||||
"new_version_available": "Formbricks {version} 在 这里。立即 升级!",
|
"new_version_available": "Formbricks {version} 在 这里。立即 升级!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "选择 团队",
|
"select_teams": "选择 团队",
|
||||||
"selected": "已选择",
|
"selected": "已选择",
|
||||||
"selected_questions": "选择的问题",
|
"selected_questions": "选择的问题",
|
||||||
"selection": "选择",
|
|
||||||
"selections": "选择",
|
|
||||||
"send_test_email": "发送 测试 电子邮件",
|
"send_test_email": "发送 测试 电子邮件",
|
||||||
"session_not_found": "会话 未找到",
|
"session_not_found": "会话 未找到",
|
||||||
"settings": "设置",
|
"settings": "设置",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "显示 响应 计数",
|
"show_response_count": "显示 响应 计数",
|
||||||
"shown": "显示",
|
"shown": "显示",
|
||||||
"size": "尺寸",
|
"size": "尺寸",
|
||||||
|
"skip": "跳过",
|
||||||
"skipped": "跳过",
|
"skipped": "跳过",
|
||||||
"skips": "跳过",
|
"skips": "跳过",
|
||||||
"some_files_failed_to_upload": "某些文件上传失败",
|
"some_files_failed_to_upload": "某些文件上传失败",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "网站 调查",
|
"website_survey": "网站 调查",
|
||||||
"weeks": "周",
|
"weeks": "周",
|
||||||
"welcome_card": "欢迎 卡片",
|
"welcome_card": "欢迎 卡片",
|
||||||
|
"workflows": "工作流",
|
||||||
"workspace_configuration": "工作区配置",
|
"workspace_configuration": "工作区配置",
|
||||||
"workspace_created_successfully": "工作区创建成功",
|
"workspace_created_successfully": "工作区创建成功",
|
||||||
"workspace_creation_description": "在工作区中组织调查,以便更好地进行访问控制。",
|
"workspace_creation_description": "在工作区中组织调查,以便更好地进行访问控制。",
|
||||||
@@ -643,9 +649,9 @@
|
|||||||
"attributes_msg_attribute_limit_exceeded": "无法创建 {count} 个新属性,因为这将超过最多 {limit} 个属性类别的限制。已有属性已成功更新。",
|
"attributes_msg_attribute_limit_exceeded": "无法创建 {count} 个新属性,因为这将超过最多 {limit} 个属性类别的限制。已有属性已成功更新。",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error}(属性“{key}”的数据类型为:{dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error}(属性“{key}”的数据类型为:{dataType})",
|
||||||
"attributes_msg_email_already_exists": "该邮箱已存在于当前环境,未进行更新。",
|
"attributes_msg_email_already_exists": "该邮箱已存在于当前环境,未进行更新。",
|
||||||
"attributes_msg_email_or_userid_required": "必须填写邮箱或 userId。已保留原有值。",
|
"attributes_msg_email_or_userid_required": "需要填写邮箱或用户ID。已保留现有值。",
|
||||||
"attributes_msg_new_attribute_created": "已创建新属性“{key}”,类型为“{dataType}”",
|
"attributes_msg_new_attribute_created": "已创建新属性“{key}”,类型为“{dataType}”",
|
||||||
"attributes_msg_userid_already_exists": "该 userId 已存在于当前环境,未进行更新。",
|
"attributes_msg_userid_already_exists": "该环境下的用户ID已存在,未进行更新。",
|
||||||
"contact_deleted_successfully": "联系人 删除 成功",
|
"contact_deleted_successfully": "联系人 删除 成功",
|
||||||
"contact_not_found": "未找到此 联系人",
|
"contact_not_found": "未找到此 联系人",
|
||||||
"contacts_table_refresh": "刷新 联系人",
|
"contacts_table_refresh": "刷新 联系人",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "数据类型",
|
"data_type": "数据类型",
|
||||||
"data_type_cannot_be_changed": "数据类型创建后无法更改",
|
"data_type_cannot_be_changed": "数据类型创建后无法更改",
|
||||||
"data_type_description": "选择此属性的存储和筛选方式",
|
"data_type_description": "选择此属性的存储和筛选方式",
|
||||||
"date_value_required": "需要日期值。如果你不想设置日期,请使用删除按钮移除此属性。",
|
"date_value_required": "需要填写日期值。如果不想设置日期,请使用删除按钮移除此属性。",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {这将删除所选属性。与该属性相关的任何联系人数据都将丢失。} other {这将删除所选属性。与这些属性相关的任何联系人数据都将丢失。}}",
|
"delete_attribute_confirmation": "{value, plural, one {这将删除所选属性。与该属性相关的任何联系人数据都将丢失。} other {这将删除所选属性。与这些属性相关的任何联系人数据都将丢失。}}",
|
||||||
"delete_contact_confirmation": "这将删除与此联系人相关的所有调查问卷回复和联系人属性。基于此联系人数据的任何定位和个性化将会丢失。",
|
"delete_contact_confirmation": "这将删除与此联系人相关的所有调查问卷回复和联系人属性。基于此联系人数据的任何定位和个性化将会丢失。",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {这将删除与此联系人相关的所有调查回复和联系人属性。基于此联系人数据的任何定位和个性化将丢失。如果此联系人有影响调查配额的回复,配额数量将减少,但配额限制将保持不变。} other {这将删除与这些联系人相关的所有调查回复和联系人属性。基于这些联系人数据的任何定位和个性化将丢失。如果这些联系人有影响调查配额的回复,配额数量将减少,但配额限制将保持不变。}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {这将删除与此联系人相关的所有调查回复和联系人属性。基于此联系人数据的任何定位和个性化将丢失。如果此联系人有影响调查配额的回复,配额数量将减少,但配额限制将保持不变。} other {这将删除与这些联系人相关的所有调查回复和联系人属性。基于这些联系人数据的任何定位和个性化将丢失。如果这些联系人有影响调查配额的回复,配额数量将减少,但配额限制将保持不变。}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "系统属性",
|
"system_attributes": "系统属性",
|
||||||
"unlock_contacts_description": "管理 联系人 并 发送 定向 调查",
|
"unlock_contacts_description": "管理 联系人 并 发送 定向 调查",
|
||||||
"unlock_contacts_title": "通过 更 高级 划解锁 联系人",
|
"unlock_contacts_title": "通过 更 高级 划解锁 联系人",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "属性“{key}”的数据类型为“{dataType}”,但 CSV 文件中包含无效值:{values}",
|
"upload_contacts_error_attribute_type_mismatch": "属性“{key}”的数据类型为“{dataType}”,但CSV中包含无效值:{values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "以下属性存在重复映射:{attributes}",
|
"upload_contacts_error_duplicate_mappings": "以下属性存在重复映射:{attributes}",
|
||||||
"upload_contacts_error_file_too_large": "文件大小超过最大限制 800KB",
|
"upload_contacts_error_file_too_large": "文件大小超过最大限制 800KB",
|
||||||
"upload_contacts_error_generic": "上传联系人时发生错误,请稍后再试。",
|
"upload_contacts_error_generic": "上传联系人时发生错误,请稍后再试。",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "重新连接",
|
"reconnect_button": "重新连接",
|
||||||
"reconnect_button_description": "你的 Google Sheets 连接已过期。请重新连接以继续同步回复。你现有的表格链接和数据会被保留。",
|
"reconnect_button_description": "你的 Google Sheets 连接已过期。请重新连接以继续同步回复。你现有的表格链接和数据会被保留。",
|
||||||
"reconnect_button_tooltip": "重新连接集成以刷新你的访问权限。你现有的表格链接和数据会被保留。",
|
"reconnect_button_tooltip": "重新连接集成以刷新你的访问权限。你现有的表格链接和数据会被保留。",
|
||||||
"spreadsheet_permission_error": "你没有权限访问此表格。请确保该表格已与你的 Google 账号共享,并且你拥有该表格的编辑权限。",
|
"spreadsheet_permission_error": "您没有权限访问该表格。请确保该表格已与您的Google账号共享,并且您拥有写入权限。",
|
||||||
"spreadsheet_url": "电子表格 URL",
|
"spreadsheet_url": "电子表格 URL",
|
||||||
"token_expired_error": "Google Sheets 的刷新令牌已过期或被撤销。请重新连接集成。"
|
"token_expired_error": "Google Sheets 的刷新令牌已过期或被撤销。请重新连接集成。"
|
||||||
},
|
},
|
||||||
@@ -975,7 +981,7 @@
|
|||||||
"current_plan": "当前 计划",
|
"current_plan": "当前 计划",
|
||||||
"current_tier_limit": "当前 层 级 限制",
|
"current_tier_limit": "当前 层 级 限制",
|
||||||
"custom": "自定义 & Scale",
|
"custom": "自定义 & Scale",
|
||||||
"custom_contacts_limit": "自定义联系人限制",
|
"custom_contacts_limit": "自定义联系人上限",
|
||||||
"custom_response_limit": "自定义 响应限制",
|
"custom_response_limit": "自定义 响应限制",
|
||||||
"custom_workspace_limit": "自定义工作区数量限制",
|
"custom_workspace_limit": "自定义工作区数量限制",
|
||||||
"email_embedded_surveys": "邮件 嵌入 调查",
|
"email_embedded_surveys": "邮件 嵌入 调查",
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "许可证密钥无效。请确认你的 ENTERPRISE_LICENSE_KEY。",
|
"recheck_license_invalid": "许可证密钥无效。请确认你的 ENTERPRISE_LICENSE_KEY。",
|
||||||
"recheck_license_success": "许可证检查成功",
|
"recheck_license_success": "许可证检查成功",
|
||||||
"recheck_license_unreachable": "许可证服务器无法访问,请稍后再试。",
|
"recheck_license_unreachable": "许可证服务器无法访问,请稍后再试。",
|
||||||
"rechecking": "正在重新检查...",
|
"rechecking": "正在重新检查…",
|
||||||
"request_30_day_trial_license": "申请 30 天 的 试用许可证",
|
"request_30_day_trial_license": "申请 30 天 的 试用许可证",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "服务水平协议",
|
"service_level_agreement": "服务水平协议",
|
||||||
@@ -1081,7 +1087,7 @@
|
|||||||
"email_customization_preview_email_heading": "嘿 {userName}",
|
"email_customization_preview_email_heading": "嘿 {userName}",
|
||||||
"email_customization_preview_email_text": "这 是 一封 电子邮件 预览,展示 哪个 徽标 将在 电子邮件 中 渲染。",
|
"email_customization_preview_email_text": "这 是 一封 电子邮件 预览,展示 哪个 徽标 将在 电子邮件 中 渲染。",
|
||||||
"error_deleting_organization_please_try_again": "删除 组织时 出错 。 请重试 。",
|
"error_deleting_organization_please_try_again": "删除 组织时 出错 。 请重试 。",
|
||||||
"from_your_organization": "来自你的组织",
|
"from_your_organization": "来自您组织的{memberName}",
|
||||||
"invitation_sent_once_more": "再次发送邀请。",
|
"invitation_sent_once_more": "再次发送邀请。",
|
||||||
"invite_deleted_successfully": "邀请 删除 成功",
|
"invite_deleted_successfully": "邀请 删除 成功",
|
||||||
"invite_expires_on": "邀请将于 {date} 过期",
|
"invite_expires_on": "邀请将于 {date} 过期",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "通知 设置 已更新",
|
"notification_settings_updated": "通知 设置 已更新",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "设置 提醒, 在 新 回复 时获取 邮件",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "设置 提醒, 在 新 回复 时获取 邮件",
|
||||||
"use_the_integration": "使用 集成",
|
"use_the_integration": "使用 集成",
|
||||||
"want_to_loop_in_organization_mates": "想 要 加入 组织 成员",
|
"want_to_loop_in_organization_mates": "想要让组织成员参与吗?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "您将不再自动订阅此组织的调查!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "您将不再自动订阅此组织的调查!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "您 将 不会 再 收到 关于 此 调查 的 任何 回复 邮件!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "您 将 不会 再 收到 关于 此 调查 的 任何 回复 邮件!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "添加 占位符 显示 如果 没有 值以 回忆",
|
"add_fallback_placeholder": "添加 占位符 显示 如果 没有 值以 回忆",
|
||||||
"add_hidden_field_id": "添加 隐藏 字段 ID",
|
"add_hidden_field_id": "添加 隐藏 字段 ID",
|
||||||
"add_highlight_border": "添加 高亮 边框",
|
"add_highlight_border": "添加 高亮 边框",
|
||||||
|
"add_highlight_border_description": "仅适用于产品内调查。",
|
||||||
"add_logic": "添加逻辑",
|
"add_logic": "添加逻辑",
|
||||||
"add_none_of_the_above": "添加 “以上 都 不 是”",
|
"add_none_of_the_above": "添加 “以上 都 不 是”",
|
||||||
"add_option": "添加 选项",
|
"add_option": "添加 选项",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "调整 \"调查 关闭\" 消息",
|
"adjust_survey_closed_message": "调整 \"调查 关闭\" 消息",
|
||||||
"adjust_survey_closed_message_description": "更改 访客 看到 调查 关闭 时 的 消息。",
|
"adjust_survey_closed_message_description": "更改 访客 看到 调查 关闭 时 的 消息。",
|
||||||
"adjust_the_theme_in_the": "调整主题在",
|
"adjust_the_theme_in_the": "调整主题在",
|
||||||
|
"all_are_true": "全部为真",
|
||||||
"all_other_answers_will_continue_to": "所有其他答案将继续",
|
"all_other_answers_will_continue_to": "所有其他答案将继续",
|
||||||
"allow_multi_select": "允许 多选",
|
"allow_multi_select": "允许 多选",
|
||||||
"allow_multiple_files": "允许 多 个 文件",
|
"allow_multiple_files": "允许 多 个 文件",
|
||||||
"allow_users_to_select_more_than_one_image": "允许 用户 选择 多于 一个 图片",
|
"allow_users_to_select_more_than_one_image": "允许 用户 选择 多于 一个 图片",
|
||||||
"and_launch_surveys_in_your_website_or_app": "并 在 你 的 网站 或 应用 中 启动 问卷 。",
|
"and_launch_surveys_in_your_website_or_app": "并 在 你 的 网站 或 应用 中 启动 问卷 。",
|
||||||
"animation": "动画",
|
"animation": "动画",
|
||||||
|
"any_is_true": "任一为真",
|
||||||
"app_survey_description": "在 你的 网络 应用 或 网站 中 嵌入 问卷 收集 反馈 。",
|
"app_survey_description": "在 你的 网络 应用 或 网站 中 嵌入 问卷 收集 反馈 。",
|
||||||
"assign": "指派 =",
|
"assign": "指派 =",
|
||||||
"audience": "受众",
|
"audience": "受众",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "休闲",
|
"casual": "休闲",
|
||||||
"caution_edit_duplicate": "复制 并 编辑",
|
"caution_edit_duplicate": "复制 并 编辑",
|
||||||
"caution_edit_published_survey": "编辑 已 发布 的 survey?",
|
"caution_edit_published_survey": "编辑 已 发布 的 survey?",
|
||||||
"caution_explanation_intro": "我们 理解 您 可能 仍然 希望 进行 更改 。 如果 您 做 , 以下 事情 会 发生 :",
|
"caution_explanation_intro": "我们理解您可能仍想进行更改。如果您这样做,将会发生以下情况:",
|
||||||
"caution_explanation_new_responses_separated": "更改 之前 的 回复 可能 未 全部 或 仅 部分 包含 在 调查 总结中。",
|
"caution_explanation_new_responses_separated": "更改 之前 的 回复 可能 未 全部 或 仅 部分 包含 在 调查 总结中。",
|
||||||
"caution_explanation_only_new_responses_in_summary": "所有 数据 , 包括 过去 的 回复 , 仍 可 在 调查 总结 页 下载 。",
|
"caution_explanation_only_new_responses_in_summary": "所有 数据 , 包括 过去 的 回复 , 仍 可 在 调查 总结 页 下载 。",
|
||||||
"caution_explanation_responses_are_safe": "旧 与 新 的 回复 混合 , 这 可能 导致 数据 总结 有误 。",
|
"caution_explanation_responses_are_safe": "旧 与 新 的 回复 混合 , 这 可能 导致 数据 总结 有误 。",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "后续 操作 已 更新, 并且 在 你 保存 调查 后 将 被 保存。",
|
"follow_ups_modal_updated_successfull_toast": "后续 操作 已 更新, 并且 在 你 保存 调查 后 将 被 保存。",
|
||||||
"follow_ups_new": "新的跟进",
|
"follow_ups_new": "新的跟进",
|
||||||
"follow_ups_upgrade_button_text": "升级 以启用 跟进",
|
"follow_ups_upgrade_button_text": "升级 以启用 跟进",
|
||||||
"form_styling": "表单 样式",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK 未连接",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK 未连接",
|
||||||
"four_points": "4 分",
|
"four_points": "4 分",
|
||||||
"heading": "标题",
|
"heading": "标题",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "选项 {choiceIndex}",
|
"option_idx": "选项 {choiceIndex}",
|
||||||
"option_used_in_logic_error": "\"这个 选项 在 问题 {questionIndex} 的 逻辑 中 使用。请 先 从 逻辑 中 删除 它。\"",
|
"option_used_in_logic_error": "\"这个 选项 在 问题 {questionIndex} 的 逻辑 中 使用。请 先 从 逻辑 中 删除 它。\"",
|
||||||
"optional": "可选",
|
"optional": "可选",
|
||||||
"options": "选项",
|
"options": "选项*",
|
||||||
"options_used_in_logic_bulk_error": "以下选项在逻辑中被使用:{questionIndexes}。请先从逻辑中删除它们。",
|
"options_used_in_logic_bulk_error": "以下选项在逻辑中被使用:{questionIndexes}。请先从逻辑中删除它们。",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "使用 个性化 样式 替代 这份 问卷 的 主题。",
|
"override_theme_with_individual_styles_for_this_survey": "使用 个性化 样式 替代 这份 问卷 的 主题。",
|
||||||
"overwrite_global_waiting_time": "自定义冷却期",
|
"overwrite_global_waiting_time": "自定义冷却期",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "问题 已删除",
|
"question_deleted": "问题 已删除",
|
||||||
"question_duplicated": "问题重复。",
|
"question_duplicated": "问题重复。",
|
||||||
"question_id_updated": "问题 ID 更新",
|
"question_id_updated": "问题 ID 更新",
|
||||||
|
"question_number": "第 {number} 题",
|
||||||
"question_used_in_logic_warning_text": "此区块中的元素已被用于逻辑规则,您确定要删除吗?",
|
"question_used_in_logic_warning_text": "此区块中的元素已被用于逻辑规则,您确定要删除吗?",
|
||||||
"question_used_in_logic_warning_title": "逻辑不一致",
|
"question_used_in_logic_warning_title": "逻辑不一致",
|
||||||
"question_used_in_quota": "此问题正在被“{quotaName}”配额使用",
|
"question_used_in_quota": "此问题正在被“{quotaName}”配额使用",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "响应 限制 、 重定向 和 更多 。",
|
"response_limits_redirections_and_more": "响应 限制 、 重定向 和 更多 。",
|
||||||
"response_options": "响应 选项",
|
"response_options": "响应 选项",
|
||||||
"roundness": "圆度",
|
"roundness": "圆度",
|
||||||
"roundness_description": "控制卡片角的圆润程度。",
|
"roundness_description": "控制圆角的弧度。",
|
||||||
"row_used_in_logic_error": "\"这个 行 在 问题 {questionIndex} 的 逻辑 中 使用。请 先 从 逻辑 中 删除 它。\"",
|
"row_used_in_logic_error": "\"这个 行 在 问题 {questionIndex} 的 逻辑 中 使用。请 先 从 逻辑 中 删除 它。\"",
|
||||||
"rows": "行",
|
"rows": "行",
|
||||||
"save_and_close": "保存 和 关闭",
|
"save_and_close": "保存 和 关闭",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "此 免费 & 开源 调查 已 关闭",
|
"survey_completed_subheading": "此 免费 & 开源 调查 已 关闭",
|
||||||
"survey_display_settings": "调查显示设置",
|
"survey_display_settings": "调查显示设置",
|
||||||
"survey_placement": "调查 放置",
|
"survey_placement": "调查 放置",
|
||||||
|
"survey_styling": "表单 样式",
|
||||||
"survey_trigger": "调查 触发",
|
"survey_trigger": "调查 触发",
|
||||||
"switch_multi_language_on_to_get_started": "开启多语言以开始使用 👉",
|
"switch_multi_language_on_to_get_started": "开启多语言以开始使用 👉",
|
||||||
"target_block_not_found": "未找到目标区块",
|
"target_block_not_found": "未找到目标区块",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "匹配正则表达式模式",
|
"pattern": "匹配正则表达式模式",
|
||||||
"phone": "是有效的手机号",
|
"phone": "是有效的手机号",
|
||||||
"rank_all_options": "对所有选项进行排序",
|
"rank_all_options": "对所有选项进行排序",
|
||||||
"select_file_extensions": "选择文件扩展名...",
|
"select_file_extensions": "请选择文件扩展名…",
|
||||||
"select_option": "选择选项",
|
"select_option": "选择选项",
|
||||||
"start_date": "开始日期",
|
"start_date": "开始日期",
|
||||||
"url": "是有效的URL"
|
"url": "是有效的URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "冷却期(跨问卷)",
|
"waiting_time_across_surveys": "冷却期(跨问卷)",
|
||||||
"waiting_time_across_surveys_description": "为防止问卷疲劳,请选择此问卷与工作区冷却期的交互方式。",
|
"waiting_time_across_surveys_description": "为防止问卷疲劳,请选择此问卷与工作区冷却期的交互方式。",
|
||||||
"welcome_message": "欢迎 信息",
|
"welcome_message": "欢迎 信息",
|
||||||
|
"when": "当",
|
||||||
"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": "要使用翻译功能,您的工作区需设置两种或以上语言。",
|
|
||||||
"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": "您的 网页应用",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "禁用 单次 使用 链接",
|
"disable_single_use_link_modal_button": "禁用 单次 使用 链接",
|
||||||
"disable_single_use_link_modal_description": "如果 你 分享了 单一 使用 链接,参与者 将 无法 再 回应 调查。",
|
"disable_single_use_link_modal_description": "如果 你 分享了 单一 使用 链接,参与者 将 无法 再 回应 调查。",
|
||||||
"generate_and_download_links": "生成 & 下载 链接",
|
"generate_and_download_links": "生成 & 下载 链接",
|
||||||
"generate_links_error": "单次 使用 链接 无法 生成 。请 直接 使用 API ",
|
"generate_links_error": "无法生成一次性链接。请直接使用 API 操作。",
|
||||||
"multi_use_link": "多次 使用 链接",
|
"multi_use_link": "多次 使用 链接",
|
||||||
"multi_use_link_description": "使用 一个 链接 从 匿名 响应者 收集 多个 响应",
|
"multi_use_link_description": "使用 一个 链接 从 匿名 响应者 收集 多个 响应",
|
||||||
"multi_use_powers_other_channels_description": "如果 禁用 它, 这些 其他 分发 渠道 也 会 被 禁用。",
|
"multi_use_powers_other_channels_description": "如果 禁用 它, 这些 其他 分发 渠道 也 会 被 禁用。",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "为 回答 问题 {questionIdx} 的 答复 增加 了 筛选器,筛选条件 是 {filterComboBoxValue} - {filterValue}",
|
"added_filter_for_responses_where_answer_to_question": "已添加筛选条件:问题 {questionIdx} 的答案为 {filterComboBoxValue} - {filterValue} 的回复",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "为 回答 问题 {questionIdx} 的 答复 增加 了 筛选器,筛选条件 是 略过",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "为 回答 问题 {questionIdx} 的 答复 增加 了 筛选器,筛选条件 是 略过",
|
||||||
"aggregated": "汇总",
|
"aggregated": "汇总",
|
||||||
"all_responses_csv": "所有 反馈 (CSV)",
|
"all_responses_csv": "所有 反馈 (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "开始",
|
"starts": "开始",
|
||||||
"starts_tooltip": "调查 被 开始 的 次数",
|
"starts_tooltip": "调查 被 开始 的 次数",
|
||||||
"survey_reset_successfully": "调查已重置成功!{responseCount} 个 反馈 和 {displayCount} 个 显示 已删除。",
|
"survey_reset_successfully": "调查已重置成功!{responseCount} 个 反馈 和 {displayCount} 个 显示 已删除。",
|
||||||
|
"survey_results": "{surveyName} 结果",
|
||||||
"this_month": "本月",
|
"this_month": "本月",
|
||||||
"this_quarter": "本季度",
|
"this_quarter": "本季度",
|
||||||
"this_year": "今年",
|
"this_year": "今年",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "为 logo 容器添加背景色。",
|
"add_background_color_description": "为 logo 容器添加背景色。",
|
||||||
"advanced_styling_field_border_radius": "边框圆角",
|
"advanced_styling_field_border_radius": "边框圆角",
|
||||||
"advanced_styling_field_button_bg": "按钮背景",
|
"advanced_styling_field_button_bg": "按钮背景",
|
||||||
"advanced_styling_field_button_bg_description": "填充“下一步/提交”按钮。",
|
"advanced_styling_field_button_bg_description": "填充“下一步”/“提交”按钮。",
|
||||||
"advanced_styling_field_button_border_radius_description": "设置按钮圆角。",
|
"advanced_styling_field_button_border_radius_description": "设置按钮圆角。",
|
||||||
"advanced_styling_field_button_font_size_description": "调整按钮标签文字大小。",
|
"advanced_styling_field_button_font_size_description": "调整按钮标签文字大小。",
|
||||||
"advanced_styling_field_button_font_weight_description": "设置按钮文字的粗细。",
|
"advanced_styling_field_button_font_weight_description": "设置按钮文字的粗细。",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "描述字体大小",
|
"advanced_styling_field_description_size": "描述字体大小",
|
||||||
"advanced_styling_field_description_size_description": "调整描述文字大小。",
|
"advanced_styling_field_description_size_description": "调整描述文字大小。",
|
||||||
"advanced_styling_field_description_weight": "描述字体粗细",
|
"advanced_styling_field_description_weight": "描述字体粗细",
|
||||||
"advanced_styling_field_description_weight_description": "设置描述文字的粗细。",
|
"advanced_styling_field_description_weight_description": "让描述文本更轻或更粗。",
|
||||||
"advanced_styling_field_font_size": "字体大小",
|
"advanced_styling_field_font_size": "字体大小",
|
||||||
"advanced_styling_field_font_weight": "字体粗细",
|
"advanced_styling_field_font_weight": "字体粗细",
|
||||||
"advanced_styling_field_headline_color": "标题颜色",
|
"advanced_styling_field_headline_color": "标题颜色",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "设置进度条已填充部分的颜色。",
|
"advanced_styling_field_indicator_bg_description": "设置进度条已填充部分的颜色。",
|
||||||
"advanced_styling_field_input_border_radius_description": "设置输入框圆角。",
|
"advanced_styling_field_input_border_radius_description": "设置输入框圆角。",
|
||||||
"advanced_styling_field_input_font_size_description": "调整输入框内文字大小。",
|
"advanced_styling_field_input_font_size_description": "调整输入框内文字大小。",
|
||||||
"advanced_styling_field_input_height_description": "设置输入框的最小高度。",
|
"advanced_styling_field_input_height_description": "控制输入框的最小高度。",
|
||||||
"advanced_styling_field_input_padding_x_description": "增加输入框左右间距。",
|
"advanced_styling_field_input_padding_x_description": "增加输入框左右间距。",
|
||||||
"advanced_styling_field_input_padding_y_description": "为输入框上下添加间距。",
|
"advanced_styling_field_input_padding_y_description": "为输入框上下添加间距。",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "调整占位提示文字的透明度。",
|
"advanced_styling_field_input_placeholder_opacity_description": "调整占位提示文字的透明度。",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "设置输入框内已输入文字的颜色。",
|
"advanced_styling_field_input_text_description": "设置输入框内已输入文字的颜色。",
|
||||||
"advanced_styling_field_option_bg": "背景色",
|
"advanced_styling_field_option_bg": "背景色",
|
||||||
"advanced_styling_field_option_bg_description": "设置选项项的背景色。",
|
"advanced_styling_field_option_bg_description": "设置选项项的背景色。",
|
||||||
|
"advanced_styling_field_option_border": "边框颜色",
|
||||||
|
"advanced_styling_field_option_border_description": "为单选框和复选框选项添加轮廓。",
|
||||||
"advanced_styling_field_option_border_radius_description": "设置选项的圆角。",
|
"advanced_styling_field_option_border_radius_description": "设置选项的圆角。",
|
||||||
"advanced_styling_field_option_font_size_description": "调整选项标签文字的大小。",
|
"advanced_styling_field_option_font_size_description": "调整选项标签文字的大小。",
|
||||||
"advanced_styling_field_option_label": "标签颜色",
|
"advanced_styling_field_option_label": "标签颜色",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "显示“Powered by Formbricks”标识",
|
"show_powered_by_formbricks": "显示“Powered by Formbricks”标识",
|
||||||
"styling_updated_successfully": "样式更新成功",
|
"styling_updated_successfully": "样式更新成功",
|
||||||
"suggest_colors": "推荐颜色",
|
"suggest_colors": "推荐颜色",
|
||||||
"suggested_colors_applied_please_save": "已成功生成推荐配色。请点击“保存”以保留更改。",
|
"suggested_colors_applied_please_save": "已成功生成建议颜色。请点击“保存”以保留更改。",
|
||||||
"theme": "主题",
|
"theme": "主题",
|
||||||
"theme_settings_description": "为所有问卷创建一个样式主题。你可以为每个问卷启用自定义样式。"
|
"theme_settings_description": "为所有问卷创建一个样式主题。你可以为每个问卷启用自定义样式。"
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "请 也 检查 您 的 垃圾邮件 文件夹 如果 您 没有 在 收件箱 中 看到 邮件。",
|
"check_inbox_or_spam": "请 也 检查 您 的 垃圾邮件 文件夹 如果 您 没有 在 收件箱 中 看到 邮件。",
|
||||||
"completed": "此 调查 关闭",
|
"completed": "此 调查 关闭",
|
||||||
"create_your_own": "创建 你 的 开源 调查",
|
"create_your_own": "创建 你 的 开源 调查",
|
||||||
"enter_pin": "此调查已受保护。输入下方 PIN",
|
"enter_pin": "本调查已受保护。请在下方输入PIN码。",
|
||||||
"just_curious": "只是好奇 ?",
|
"just_curious": "只是好奇 ?",
|
||||||
"link_invalid": "此调查只能通过邀请参加。",
|
"link_invalid": "此调查只能通过邀请参加。",
|
||||||
"paused": "此调查暂时暂停。",
|
"paused": "此调查暂时暂停。",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "公司 如何 改进 其 愿景 与 战略 的 协同?",
|
"alignment_and_engagement_survey_question_4_headline": "公司 如何 改进 其 愿景 与 战略 的 协同?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "输入您的答案...",
|
"alignment_and_engagement_survey_question_4_placeholder": "输入您的答案...",
|
||||||
"back": "返回",
|
"back": "返回",
|
||||||
|
"block_1": "第 1 块",
|
||||||
|
"block_10": "第 10 块",
|
||||||
|
"block_2": "第 2 块",
|
||||||
|
"block_3": "第 3 块",
|
||||||
|
"block_4": "第 4 块",
|
||||||
|
"block_5": "第 5 块",
|
||||||
|
"block_6": "第 6 块",
|
||||||
|
"block_7": "第 7 块",
|
||||||
|
"block_8": "第 8 块",
|
||||||
|
"block_9": "第 9 块",
|
||||||
"book_interview": "预约 面试",
|
"book_interview": "预约 面试",
|
||||||
"build_product_roadmap_description": "识别 用户 最 想要 的 一个 东西 并 构建 它 。",
|
"build_product_roadmap_description": "识别 用户 最 想要 的 一个 东西 并 构建 它 。",
|
||||||
"build_product_roadmap_name": "构建 产品 路线图",
|
"build_product_roadmap_name": "构建 产品 路线图",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "质量差",
|
"csat_question_3_choice_8": "质量差",
|
||||||
"csat_question_3_choice_9": "不可靠",
|
"csat_question_3_choice_9": "不可靠",
|
||||||
"csat_question_3_headline": "您会用以下哪个词来形容我们的 $[projectName]?",
|
"csat_question_3_headline": "您会用以下哪个词来形容我们的 $[projectName]?",
|
||||||
"csat_question_3_subheader": "全选适用项:",
|
"csat_question_3_subheader": "请选择所有适用项:",
|
||||||
"csat_question_4_choice_1": "极好",
|
"csat_question_4_choice_1": "极好",
|
||||||
"csat_question_4_choice_2": "非常 好",
|
"csat_question_4_choice_2": "非常 好",
|
||||||
"csat_question_4_choice_3": "有点 好",
|
"csat_question_4_choice_3": "有点 好",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "糟糕, 对不起!我们可以做些什么来改善您的体验?",
|
"csat_survey_question_3_headline": "糟糕, 对不起!我们可以做些什么来改善您的体验?",
|
||||||
"csat_survey_question_3_placeholder": "在此输入您的答案...",
|
"csat_survey_question_3_placeholder": "在此输入您的答案...",
|
||||||
"cta_description": "显示 信息 并 提示用户采取 特定行动",
|
"cta_description": "显示 信息 并 提示用户采取 特定行动",
|
||||||
"custom_survey_block_1_name": "模块 1",
|
|
||||||
"custom_survey_description": "创建 一个 没有 模板 的 调查。",
|
"custom_survey_description": "创建 一个 没有 模板 的 调查。",
|
||||||
"custom_survey_name": "从零开始",
|
"custom_survey_name": "从零开始",
|
||||||
"custom_survey_question_1_headline": "你 想 知道 什么?",
|
"custom_survey_question_1_headline": "你 想 知道 什么?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "不,谢谢!",
|
"preview_survey_question_2_choice_2_label": "不,谢谢!",
|
||||||
"preview_survey_question_2_headline": "想 了解 最新信息吗?",
|
"preview_survey_question_2_headline": "想 了解 最新信息吗?",
|
||||||
"preview_survey_question_2_subheader": "这是一个示例描述。",
|
"preview_survey_question_2_subheader": "这是一个示例描述。",
|
||||||
|
"preview_survey_question_open_text_headline": "还有什么想和我们分享的吗?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "请在这里输入你的答案...",
|
||||||
|
"preview_survey_question_open_text_subheader": "你的反馈能帮助我们改进。",
|
||||||
"preview_survey_welcome_card_headline": "欢迎!",
|
"preview_survey_welcome_card_headline": "欢迎!",
|
||||||
"prioritize_features_description": "确定 用户 最 需要 和 最 不 需要 的 功能。",
|
"prioritize_features_description": "确定 用户 最 需要 和 最 不 需要 的 功能。",
|
||||||
"prioritize_features_name": "优先 功能",
|
"prioritize_features_name": "优先 功能",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "个人 研究",
|
"professional_development_survey_question_2_choice_5": "个人 研究",
|
||||||
"professional_development_survey_question_2_choice_6": "其他",
|
"professional_development_survey_question_2_choice_6": "其他",
|
||||||
"professional_development_survey_question_2_headline": "哪种类型的 职业 发展 活动 对您的 成长 最有 价值?",
|
"professional_development_survey_question_2_headline": "哪种类型的 职业 发展 活动 对您的 成长 最有 价值?",
|
||||||
"professional_development_survey_question_2_subheader": "全选适用项",
|
"professional_development_survey_question_2_subheader": "请选择所有适用项:",
|
||||||
"professional_development_survey_question_3_choice_1": "是",
|
"professional_development_survey_question_3_choice_1": "是",
|
||||||
"professional_development_survey_question_3_choice_2": "否",
|
"professional_development_survey_question_3_choice_2": "否",
|
||||||
"professional_development_survey_question_3_headline": "过去 ,您 是否 专注 于 职业 发展 ?",
|
"professional_development_survey_question_3_headline": "过去 ,您 是否 专注 于 职业 发展 ?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "使用 系统 时 我 感到 自信。",
|
"usability_question_9_headline": "使用 系统 时 我 感到 自信。",
|
||||||
"usability_rating_description": "通过要求用户使用标准化的 10 问 调查 来 评价 他们对您产品的体验,以 测量 感知 的 可用性。",
|
"usability_rating_description": "通过要求用户使用标准化的 10 问 调查 来 评价 他们对您产品的体验,以 测量 感知 的 可用性。",
|
||||||
"usability_score_name": "系统 可用性 得分 ( SUS )"
|
"usability_score_name": "系统 可用性 得分 ( SUS )"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "感谢你与我们分享你的工作流想法!我们目前正在设计这个功能,你的反馈将帮助我们打造真正适合你的工具。",
|
||||||
|
"coming_soon_title": "我们快完成啦!",
|
||||||
|
"follow_up_label": "你还有其他想补充的吗?",
|
||||||
|
"follow_up_placeholder": "您希望自动化哪些具体任务?是否需要包含特定工具或集成?",
|
||||||
|
"generate_button": "生成工作流",
|
||||||
|
"heading": "你想创建什么样的工作流?",
|
||||||
|
"placeholder": "请描述您希望生成的工作流程……",
|
||||||
|
"subheading": "几秒钟生成你的工作流。",
|
||||||
|
"submit_button": "补充细节",
|
||||||
|
"thank_you_description": "您的反馈有助于我们打造真正适合您的工作流功能。我们会及时告知您进展。",
|
||||||
|
"thank_you_title": "感谢你的反馈!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,9 +175,12 @@
|
|||||||
"copy": "複製",
|
"copy": "複製",
|
||||||
"copy_code": "複製程式碼",
|
"copy_code": "複製程式碼",
|
||||||
"copy_link": "複製連結",
|
"copy_link": "複製連結",
|
||||||
"count_attributes": "{value, plural, one {{value} 個屬性} other {{value} 個屬性}}",
|
"count_attributes": "{count, plural, one {{count} 個屬性} other {{count} 個屬性}}",
|
||||||
"count_contacts": "{value, plural, other {{value} 聯絡人} }",
|
"count_contacts": "{count, plural, one {{count} 位聯絡人} other {{count} 位聯絡人}}",
|
||||||
"count_responses": "{value, plural, other {{value} 回應} }",
|
"count_members": "{count, plural, one {{count} 位成員} other {{count} 位成員}}",
|
||||||
|
"count_questions": "{count, plural, other {{count} 個問題}}",
|
||||||
|
"count_responses": "{count, plural, one {{count} 答覆} other {{count} 答覆}}",
|
||||||
|
"count_selections": "{count, plural, one {{count} 個選項} other {{count} 個選項}}",
|
||||||
"create_new_organization": "建立新組織",
|
"create_new_organization": "建立新組織",
|
||||||
"create_segment": "建立區隔",
|
"create_segment": "建立區隔",
|
||||||
"create_survey": "建立問卷",
|
"create_survey": "建立問卷",
|
||||||
@@ -191,6 +194,7 @@
|
|||||||
"days": "天",
|
"days": "天",
|
||||||
"default": "預設",
|
"default": "預設",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
|
"delete_what": "刪除{deleteWhat}",
|
||||||
"description": "描述",
|
"description": "描述",
|
||||||
"dev_env": "開發環境",
|
"dev_env": "開發環境",
|
||||||
"development": "開發",
|
"development": "開發",
|
||||||
@@ -206,6 +210,8 @@
|
|||||||
"download": "下載",
|
"download": "下載",
|
||||||
"draft": "草稿",
|
"draft": "草稿",
|
||||||
"duplicate": "複製",
|
"duplicate": "複製",
|
||||||
|
"duplicate_copy": "(複製)",
|
||||||
|
"duplicate_copy_number": "(複製 {copyNumber})",
|
||||||
"e_commerce": "電子商務",
|
"e_commerce": "電子商務",
|
||||||
"edit": "編輯",
|
"edit": "編輯",
|
||||||
"email": "電子郵件",
|
"email": "電子郵件",
|
||||||
@@ -273,7 +279,6 @@
|
|||||||
"look_and_feel": "外觀與風格",
|
"look_and_feel": "外觀與風格",
|
||||||
"manage": "管理",
|
"manage": "管理",
|
||||||
"marketing": "行銷",
|
"marketing": "行銷",
|
||||||
"member": "成員",
|
|
||||||
"members": "成員",
|
"members": "成員",
|
||||||
"members_and_teams": "成員與團隊",
|
"members_and_teams": "成員與團隊",
|
||||||
"membership_not_found": "找不到成員資格",
|
"membership_not_found": "找不到成員資格",
|
||||||
@@ -285,6 +290,7 @@
|
|||||||
"move_down": "下移",
|
"move_down": "下移",
|
||||||
"move_up": "上移",
|
"move_up": "上移",
|
||||||
"multiple_languages": "多種語言",
|
"multiple_languages": "多種語言",
|
||||||
|
"my_product": "我的產品",
|
||||||
"name": "名稱",
|
"name": "名稱",
|
||||||
"new": "新增",
|
"new": "新增",
|
||||||
"new_version_available": "Formbricks '{'version'}' 已推出。立即升級!",
|
"new_version_available": "Formbricks '{'version'}' 已推出。立即升級!",
|
||||||
@@ -380,8 +386,6 @@
|
|||||||
"select_teams": "選擇 團隊",
|
"select_teams": "選擇 團隊",
|
||||||
"selected": "已選取",
|
"selected": "已選取",
|
||||||
"selected_questions": "選取的問題",
|
"selected_questions": "選取的問題",
|
||||||
"selection": "選取",
|
|
||||||
"selections": "選取",
|
|
||||||
"send_test_email": "發送測試電子郵件",
|
"send_test_email": "發送測試電子郵件",
|
||||||
"session_not_found": "找不到工作階段",
|
"session_not_found": "找不到工作階段",
|
||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
@@ -390,6 +394,7 @@
|
|||||||
"show_response_count": "顯示回應數",
|
"show_response_count": "顯示回應數",
|
||||||
"shown": "已顯示",
|
"shown": "已顯示",
|
||||||
"size": "大小",
|
"size": "大小",
|
||||||
|
"skip": "略過",
|
||||||
"skipped": "已跳過",
|
"skipped": "已跳過",
|
||||||
"skips": "跳過次數",
|
"skips": "跳過次數",
|
||||||
"some_files_failed_to_upload": "部分檔案上傳失敗",
|
"some_files_failed_to_upload": "部分檔案上傳失敗",
|
||||||
@@ -459,6 +464,7 @@
|
|||||||
"website_survey": "網站問卷",
|
"website_survey": "網站問卷",
|
||||||
"weeks": "週",
|
"weeks": "週",
|
||||||
"welcome_card": "歡迎卡片",
|
"welcome_card": "歡迎卡片",
|
||||||
|
"workflows": "工作流程",
|
||||||
"workspace_configuration": "工作區設定",
|
"workspace_configuration": "工作區設定",
|
||||||
"workspace_created_successfully": "工作區已成功建立",
|
"workspace_created_successfully": "工作區已成功建立",
|
||||||
"workspace_creation_description": "將問卷組織在工作區中,以便更好地控管存取權限。",
|
"workspace_creation_description": "將問卷組織在工作區中,以便更好地控管存取權限。",
|
||||||
@@ -643,9 +649,9 @@
|
|||||||
"attributes_msg_attribute_limit_exceeded": "無法建立 {count} 個新屬性,因為這樣會超過 {limit} 個屬性類別的上限。現有屬性已成功更新。",
|
"attributes_msg_attribute_limit_exceeded": "無法建立 {count} 個新屬性,因為這樣會超過 {limit} 個屬性類別的上限。現有屬性已成功更新。",
|
||||||
"attributes_msg_attribute_type_validation_error": "{error}(屬性「{key}」的資料型別為:{dataType})",
|
"attributes_msg_attribute_type_validation_error": "{error}(屬性「{key}」的資料型別為:{dataType})",
|
||||||
"attributes_msg_email_already_exists": "此環境已存在該 email,未進行更新。",
|
"attributes_msg_email_already_exists": "此環境已存在該 email,未進行更新。",
|
||||||
"attributes_msg_email_or_userid_required": "必須提供 email 或 userId。已保留現有值。",
|
"attributes_msg_email_or_userid_required": "必須填寫電子郵件或使用者 ID。已保留現有值。",
|
||||||
"attributes_msg_new_attribute_created": "已建立新屬性「{key}」,型別為「{dataType}」",
|
"attributes_msg_new_attribute_created": "已建立新屬性「{key}」,型別為「{dataType}」",
|
||||||
"attributes_msg_userid_already_exists": "此環境已存在該 userId,未進行更新。",
|
"attributes_msg_userid_already_exists": "此環境已存在該使用者 ID,未進行更新。",
|
||||||
"contact_deleted_successfully": "聯絡人已成功刪除",
|
"contact_deleted_successfully": "聯絡人已成功刪除",
|
||||||
"contact_not_found": "找不到此聯絡人",
|
"contact_not_found": "找不到此聯絡人",
|
||||||
"contacts_table_refresh": "重新整理聯絡人",
|
"contacts_table_refresh": "重新整理聯絡人",
|
||||||
@@ -657,7 +663,7 @@
|
|||||||
"data_type": "資料型態",
|
"data_type": "資料型態",
|
||||||
"data_type_cannot_be_changed": "建立後無法變更資料型態",
|
"data_type_cannot_be_changed": "建立後無法變更資料型態",
|
||||||
"data_type_description": "選擇此屬性要如何儲存與篩選",
|
"data_type_description": "選擇此屬性要如何儲存與篩選",
|
||||||
"date_value_required": "必須填寫日期值。如果你不想設定日期,請用刪除按鈕移除此屬性。",
|
"date_value_required": "必須填寫日期值。如果不想設定日期,請使用刪除按鈕移除此屬性。",
|
||||||
"delete_attribute_confirmation": "{value, plural, one {這將刪除所選屬性。與此屬性相關的聯絡人資料將會遺失。} other {這將刪除所選屬性。與這些屬性相關的聯絡人資料將會遺失。}}",
|
"delete_attribute_confirmation": "{value, plural, one {這將刪除所選屬性。與此屬性相關的聯絡人資料將會遺失。} other {這將刪除所選屬性。與這些屬性相關的聯絡人資料將會遺失。}}",
|
||||||
"delete_contact_confirmation": "這將刪除與此聯繫人相關的所有調查回應和聯繫屬性。任何基於此聯繫人數據的定位和個性化將會丟失。",
|
"delete_contact_confirmation": "這將刪除與此聯繫人相關的所有調查回應和聯繫屬性。任何基於此聯繫人數據的定位和個性化將會丟失。",
|
||||||
"delete_contact_confirmation_with_quotas": "{value, plural, one {這將刪除與這個 contact 相關的所有調查響應和聯繫人屬性。基於這個 contact 數據的任何定向和個性化功能將會丟失。如果這個 contact 有作為調查配額依據的響應,配額計數將會減少,但配額限制將保持不變。} other {這將刪除與這些 contacts 相關的所有調查響應和聯繫人屬性。基於這些 contacts 數據的任何定向和個性化功能將會丟失。如果這些 contacts 有作為調查配額依據的響應,配額計數將會減少,但配額限制將保持不變。}}",
|
"delete_contact_confirmation_with_quotas": "{value, plural, one {這將刪除與這個 contact 相關的所有調查響應和聯繫人屬性。基於這個 contact 數據的任何定向和個性化功能將會丟失。如果這個 contact 有作為調查配額依據的響應,配額計數將會減少,但配額限制將保持不變。} other {這將刪除與這些 contacts 相關的所有調查響應和聯繫人屬性。基於這些 contacts 數據的任何定向和個性化功能將會丟失。如果這些 contacts 有作為調查配額依據的響應,配額計數將會減少,但配額限制將保持不變。}}",
|
||||||
@@ -693,7 +699,7 @@
|
|||||||
"system_attributes": "系統屬性",
|
"system_attributes": "系統屬性",
|
||||||
"unlock_contacts_description": "管理聯絡人並發送目標問卷",
|
"unlock_contacts_description": "管理聯絡人並發送目標問卷",
|
||||||
"unlock_contacts_title": "使用更高等級的方案解鎖聯絡人",
|
"unlock_contacts_title": "使用更高等級的方案解鎖聯絡人",
|
||||||
"upload_contacts_error_attribute_type_mismatch": "屬性「{key}」的類型為「{dataType}」,但 CSV 檔案中包含無效的值:{values}",
|
"upload_contacts_error_attribute_type_mismatch": "屬性「{key}」的型別為「{dataType}」,但 CSV 包含無效值:{values}",
|
||||||
"upload_contacts_error_duplicate_mappings": "以下屬性有重複對應:{attributes}",
|
"upload_contacts_error_duplicate_mappings": "以下屬性有重複對應:{attributes}",
|
||||||
"upload_contacts_error_file_too_large": "檔案大小超過 800KB 的上限",
|
"upload_contacts_error_file_too_large": "檔案大小超過 800KB 的上限",
|
||||||
"upload_contacts_error_generic": "上傳聯絡人時發生錯誤,請稍後再試。",
|
"upload_contacts_error_generic": "上傳聯絡人時發生錯誤,請稍後再試。",
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
"reconnect_button": "重新連線",
|
"reconnect_button": "重新連線",
|
||||||
"reconnect_button_description": "你的 Google Sheets 連線已過期。請重新連線以繼續同步回應。你現有的試算表連結和資料都會被保留。",
|
"reconnect_button_description": "你的 Google Sheets 連線已過期。請重新連線以繼續同步回應。你現有的試算表連結和資料都會被保留。",
|
||||||
"reconnect_button_tooltip": "重新連線整合以刷新存取權限。你現有的試算表連結和資料都會被保留。",
|
"reconnect_button_tooltip": "重新連線整合以刷新存取權限。你現有的試算表連結和資料都會被保留。",
|
||||||
"spreadsheet_permission_error": "你沒有權限存取這個試算表。請確認該試算表已與你的 Google 帳戶分享,且你擁有寫入權限。",
|
"spreadsheet_permission_error": "您沒有權限存取此試算表。請確認該試算表已與您的 Google 帳戶分享,且您擁有寫入權限。",
|
||||||
"spreadsheet_url": "試算表網址",
|
"spreadsheet_url": "試算表網址",
|
||||||
"token_expired_error": "Google Sheets 的刷新權杖已過期或被撤銷。請重新連線整合。"
|
"token_expired_error": "Google Sheets 的刷新權杖已過期或被撤銷。請重新連線整合。"
|
||||||
},
|
},
|
||||||
@@ -1053,7 +1059,7 @@
|
|||||||
"recheck_license_invalid": "授權金鑰無效。請確認你的 ENTERPRISE_LICENSE_KEY。",
|
"recheck_license_invalid": "授權金鑰無效。請確認你的 ENTERPRISE_LICENSE_KEY。",
|
||||||
"recheck_license_success": "授權檢查成功",
|
"recheck_license_success": "授權檢查成功",
|
||||||
"recheck_license_unreachable": "授權伺服器無法連線,請稍後再試。",
|
"recheck_license_unreachable": "授權伺服器無法連線,請稍後再試。",
|
||||||
"rechecking": "正在重新檢查...",
|
"rechecking": "重新檢查中…",
|
||||||
"request_30_day_trial_license": "請求 30 天試用授權",
|
"request_30_day_trial_license": "請求 30 天試用授權",
|
||||||
"saml_sso": "SAML SSO",
|
"saml_sso": "SAML SSO",
|
||||||
"service_level_agreement": "服務等級協定",
|
"service_level_agreement": "服務等級協定",
|
||||||
@@ -1130,7 +1136,7 @@
|
|||||||
"notification_settings_updated": "通知設定已更新",
|
"notification_settings_updated": "通知設定已更新",
|
||||||
"set_up_an_alert_to_get_an_email_on_new_responses": "設定警示以在收到新回應時收到電子郵件",
|
"set_up_an_alert_to_get_an_email_on_new_responses": "設定警示以在收到新回應時收到電子郵件",
|
||||||
"use_the_integration": "使用整合",
|
"use_the_integration": "使用整合",
|
||||||
"want_to_loop_in_organization_mates": "想要讓組織夥伴也參與嗎?",
|
"want_to_loop_in_organization_mates": "想要邀請組織成員一起參與嗎?",
|
||||||
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "您將不會再自動訂閱此組織的問卷!",
|
"you_will_not_be_auto_subscribed_to_this_organizations_surveys_anymore": "您將不會再自動訂閱此組織的問卷!",
|
||||||
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "您將不會再收到此問卷回應的電子郵件!"
|
"you_will_not_receive_any_more_emails_for_responses_on_this_survey": "您將不會再收到此問卷回應的電子郵件!"
|
||||||
},
|
},
|
||||||
@@ -1246,6 +1252,7 @@
|
|||||||
"add_fallback_placeholder": "新增 預設 以顯示是否沒 有 值 可 回憶 。",
|
"add_fallback_placeholder": "新增 預設 以顯示是否沒 有 值 可 回憶 。",
|
||||||
"add_hidden_field_id": "新增隱藏欄位 ID",
|
"add_hidden_field_id": "新增隱藏欄位 ID",
|
||||||
"add_highlight_border": "新增醒目提示邊框",
|
"add_highlight_border": "新增醒目提示邊框",
|
||||||
|
"add_highlight_border_description": "僅適用於產品內調查。",
|
||||||
"add_logic": "新增邏輯",
|
"add_logic": "新增邏輯",
|
||||||
"add_none_of_the_above": "新增 \"以上皆非\"",
|
"add_none_of_the_above": "新增 \"以上皆非\"",
|
||||||
"add_option": "新增選項",
|
"add_option": "新增選項",
|
||||||
@@ -1262,12 +1269,14 @@
|
|||||||
"adjust_survey_closed_message": "調整「問卷已關閉」訊息",
|
"adjust_survey_closed_message": "調整「問卷已關閉」訊息",
|
||||||
"adjust_survey_closed_message_description": "變更訪客在問卷關閉時看到的訊息。",
|
"adjust_survey_closed_message_description": "變更訪客在問卷關閉時看到的訊息。",
|
||||||
"adjust_the_theme_in_the": "在",
|
"adjust_the_theme_in_the": "在",
|
||||||
|
"all_are_true": "全部為真",
|
||||||
"all_other_answers_will_continue_to": "所有其他答案將繼續",
|
"all_other_answers_will_continue_to": "所有其他答案將繼續",
|
||||||
"allow_multi_select": "允許多重選取",
|
"allow_multi_select": "允許多重選取",
|
||||||
"allow_multiple_files": "允許上傳多個檔案",
|
"allow_multiple_files": "允許上傳多個檔案",
|
||||||
"allow_users_to_select_more_than_one_image": "允許使用者選取多張圖片",
|
"allow_users_to_select_more_than_one_image": "允許使用者選取多張圖片",
|
||||||
"and_launch_surveys_in_your_website_or_app": "並在您的網站或應用程式中啟動問卷。",
|
"and_launch_surveys_in_your_website_or_app": "並在您的網站或應用程式中啟動問卷。",
|
||||||
"animation": "動畫",
|
"animation": "動畫",
|
||||||
|
"any_is_true": "任一為真",
|
||||||
"app_survey_description": "將問卷嵌入您的 Web 應用程式或網站中以收集回應。",
|
"app_survey_description": "將問卷嵌入您的 Web 應用程式或網站中以收集回應。",
|
||||||
"assign": "等於 =",
|
"assign": "等於 =",
|
||||||
"audience": "受眾",
|
"audience": "受眾",
|
||||||
@@ -1298,7 +1307,7 @@
|
|||||||
"calculate": "計算",
|
"calculate": "計算",
|
||||||
"capture_a_new_action_to_trigger_a_survey_on": "擷取新的操作以觸發問卷。",
|
"capture_a_new_action_to_trigger_a_survey_on": "擷取新的操作以觸發問卷。",
|
||||||
"capture_ip_address": "擷取 IP 位址",
|
"capture_ip_address": "擷取 IP 位址",
|
||||||
"capture_ip_address_description": "將受訪者的 IP 位址儲存在回應中繼資料中,以便進行重複檢測與安全性用途",
|
"capture_ip_address_description": "將受訪者的 IP 位址儲存在回應中繼資料中,以利重複檢測與安全用途",
|
||||||
"capture_new_action": "擷取新操作",
|
"capture_new_action": "擷取新操作",
|
||||||
"card_arrangement_for_survey_type_derived": "'{'surveyTypeDerived'}' 問卷的卡片排列",
|
"card_arrangement_for_survey_type_derived": "'{'surveyTypeDerived'}' 問卷的卡片排列",
|
||||||
"card_background_color": "卡片背景顏色",
|
"card_background_color": "卡片背景顏色",
|
||||||
@@ -1309,7 +1318,7 @@
|
|||||||
"casual": "隨意",
|
"casual": "隨意",
|
||||||
"caution_edit_duplicate": "複製 & 編輯",
|
"caution_edit_duplicate": "複製 & 編輯",
|
||||||
"caution_edit_published_survey": "編輯已發佈的調查?",
|
"caution_edit_published_survey": "編輯已發佈的調查?",
|
||||||
"caution_explanation_intro": "我們了解您可能仍然想要進行更改。如果您這樣做,將會發生以下情況:",
|
"caution_explanation_intro": "我們了解您可能仍想進行變更。若您這麼做,將會發生以下情況:",
|
||||||
"caution_explanation_new_responses_separated": "更改前的回應可能未被納入或只有部分包含在調查摘要中。",
|
"caution_explanation_new_responses_separated": "更改前的回應可能未被納入或只有部分包含在調查摘要中。",
|
||||||
"caution_explanation_only_new_responses_in_summary": "所有數據,包括過去的回應,仍可在調查摘要頁面下載。",
|
"caution_explanation_only_new_responses_in_summary": "所有數據,包括過去的回應,仍可在調查摘要頁面下載。",
|
||||||
"caution_explanation_responses_are_safe": "較舊和較新的回應會混在一起,可能導致數據摘要失準。",
|
"caution_explanation_responses_are_safe": "較舊和較新的回應會混在一起,可能導致數據摘要失準。",
|
||||||
@@ -1444,7 +1453,6 @@
|
|||||||
"follow_ups_modal_updated_successfull_toast": "後續 動作 已 更新 並 將 在 你 儲存 調查 後 儲存",
|
"follow_ups_modal_updated_successfull_toast": "後續 動作 已 更新 並 將 在 你 儲存 調查 後 儲存",
|
||||||
"follow_ups_new": "新增後續追蹤",
|
"follow_ups_new": "新增後續追蹤",
|
||||||
"follow_ups_upgrade_button_text": "升級以啟用後續追蹤",
|
"follow_ups_upgrade_button_text": "升級以啟用後續追蹤",
|
||||||
"form_styling": "表單樣式設定",
|
|
||||||
"formbricks_sdk_is_not_connected": "Formbricks SDK 未連線",
|
"formbricks_sdk_is_not_connected": "Formbricks SDK 未連線",
|
||||||
"four_points": "4 分",
|
"four_points": "4 分",
|
||||||
"heading": "標題",
|
"heading": "標題",
|
||||||
@@ -1534,7 +1542,7 @@
|
|||||||
"option_idx": "選項 '{'choiceIndex'}'",
|
"option_idx": "選項 '{'choiceIndex'}'",
|
||||||
"option_used_in_logic_error": "此選項用於問題 '{'questionIndex'}' 的邏輯中。請先從邏輯中移除。",
|
"option_used_in_logic_error": "此選項用於問題 '{'questionIndex'}' 的邏輯中。請先從邏輯中移除。",
|
||||||
"optional": "選填",
|
"optional": "選填",
|
||||||
"options": "選項",
|
"options": "選項*",
|
||||||
"options_used_in_logic_bulk_error": "以下選項已用於邏輯中:{questionIndexes}。請先從邏輯中移除它們。",
|
"options_used_in_logic_bulk_error": "以下選項已用於邏輯中:{questionIndexes}。請先從邏輯中移除它們。",
|
||||||
"override_theme_with_individual_styles_for_this_survey": "使用此問卷的個別樣式覆寫主題。",
|
"override_theme_with_individual_styles_for_this_survey": "使用此問卷的個別樣式覆寫主題。",
|
||||||
"overwrite_global_waiting_time": "自訂冷卻期",
|
"overwrite_global_waiting_time": "自訂冷卻期",
|
||||||
@@ -1559,6 +1567,7 @@
|
|||||||
"question_deleted": "問題已刪除。",
|
"question_deleted": "問題已刪除。",
|
||||||
"question_duplicated": "問題已複製。",
|
"question_duplicated": "問題已複製。",
|
||||||
"question_id_updated": "問題 ID 已更新",
|
"question_id_updated": "問題 ID 已更新",
|
||||||
|
"question_number": "第 {number} 題",
|
||||||
"question_used_in_logic_warning_text": "此區塊中的元素已用於邏輯規則,確定要刪除嗎?",
|
"question_used_in_logic_warning_text": "此區塊中的元素已用於邏輯規則,確定要刪除嗎?",
|
||||||
"question_used_in_logic_warning_title": "邏輯不一致",
|
"question_used_in_logic_warning_title": "邏輯不一致",
|
||||||
"question_used_in_quota": "此問題正被使用於「{quotaName}」配額中",
|
"question_used_in_quota": "此問題正被使用於「{quotaName}」配額中",
|
||||||
@@ -1617,7 +1626,7 @@
|
|||||||
"response_limits_redirections_and_more": "回應限制、重新導向等。",
|
"response_limits_redirections_and_more": "回應限制、重新導向等。",
|
||||||
"response_options": "回應選項",
|
"response_options": "回應選項",
|
||||||
"roundness": "圓角",
|
"roundness": "圓角",
|
||||||
"roundness_description": "調整卡片邊角的圓弧度。",
|
"roundness_description": "調整邊角的圓潤程度。",
|
||||||
"row_used_in_logic_error": "此 row 用於問題 '{'questionIndex'}' 的邏輯中。請先從邏輯中移除。",
|
"row_used_in_logic_error": "此 row 用於問題 '{'questionIndex'}' 的邏輯中。請先從邏輯中移除。",
|
||||||
"rows": "列",
|
"rows": "列",
|
||||||
"save_and_close": "儲存並關閉",
|
"save_and_close": "儲存並關閉",
|
||||||
@@ -1663,6 +1672,7 @@
|
|||||||
"survey_completed_subheading": "此免費且開源的問卷已關閉",
|
"survey_completed_subheading": "此免費且開源的問卷已關閉",
|
||||||
"survey_display_settings": "問卷顯示設定",
|
"survey_display_settings": "問卷顯示設定",
|
||||||
"survey_placement": "問卷位置",
|
"survey_placement": "問卷位置",
|
||||||
|
"survey_styling": "表單樣式設定",
|
||||||
"survey_trigger": "問卷觸發器",
|
"survey_trigger": "問卷觸發器",
|
||||||
"switch_multi_language_on_to_get_started": "請開啟多語言功能以開始使用 👉",
|
"switch_multi_language_on_to_get_started": "請開啟多語言功能以開始使用 👉",
|
||||||
"target_block_not_found": "找不到目標區塊",
|
"target_block_not_found": "找不到目標區塊",
|
||||||
@@ -1725,7 +1735,7 @@
|
|||||||
"pattern": "符合正則表達式樣式",
|
"pattern": "符合正則表達式樣式",
|
||||||
"phone": "是有效的電話號碼",
|
"phone": "是有效的電話號碼",
|
||||||
"rank_all_options": "請為所有選項排序",
|
"rank_all_options": "請為所有選項排序",
|
||||||
"select_file_extensions": "請選擇檔案副檔名...",
|
"select_file_extensions": "請選擇檔案副檔名…",
|
||||||
"select_option": "選擇選項",
|
"select_option": "選擇選項",
|
||||||
"start_date": "開始日期",
|
"start_date": "開始日期",
|
||||||
"url": "是有效的 URL"
|
"url": "是有效的 URL"
|
||||||
@@ -1751,9 +1761,9 @@
|
|||||||
"waiting_time_across_surveys": "冷卻期(跨問卷)",
|
"waiting_time_across_surveys": "冷卻期(跨問卷)",
|
||||||
"waiting_time_across_surveys_description": "為避免問卷疲勞,請選擇此問卷如何與工作區的冷卻期互動。",
|
"waiting_time_across_surveys_description": "為避免問卷疲勞,請選擇此問卷如何與工作區的冷卻期互動。",
|
||||||
"welcome_message": "歡迎訊息",
|
"welcome_message": "歡迎訊息",
|
||||||
|
"when": "當",
|
||||||
"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": "您必須在工作區中設定兩種或以上語言,才能進行翻譯作業。",
|
|
||||||
"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": "您的 Web 應用程式",
|
"your_web_app": "您的 Web 應用程式",
|
||||||
@@ -1823,7 +1833,7 @@
|
|||||||
"disable_single_use_link_modal_button": "停用 單次使用連結",
|
"disable_single_use_link_modal_button": "停用 單次使用連結",
|
||||||
"disable_single_use_link_modal_description": "如果您共享了單次使用連結,參與者將不再能夠回應此問卷。",
|
"disable_single_use_link_modal_description": "如果您共享了單次使用連結,參與者將不再能夠回應此問卷。",
|
||||||
"generate_and_download_links": "生成 & 下載 連結",
|
"generate_and_download_links": "生成 & 下載 連結",
|
||||||
"generate_links_error": "無法生成單次使用連結。請直接使用 API",
|
"generate_links_error": "無法產生一次性連結。請直接使用 API。",
|
||||||
"multi_use_link": "多 重 使用 連結",
|
"multi_use_link": "多 重 使用 連結",
|
||||||
"multi_use_link_description": "收集 多位 匿名 受訪者 的 多次 回應 , 使用 一個 連結",
|
"multi_use_link_description": "收集 多位 匿名 受訪者 的 多次 回應 , 使用 一個 連結",
|
||||||
"multi_use_powers_other_channels_description": "如果您停用它,這些其他分發管道也會被停用",
|
"multi_use_powers_other_channels_description": "如果您停用它,這些其他分發管道也會被停用",
|
||||||
@@ -1934,7 +1944,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": {
|
"summary": {
|
||||||
"added_filter_for_responses_where_answer_to_question": "已新增回應的篩選器,其中問題 '{'questionIdx'}' 的答案為 '{'filterComboBoxValue'}' - '{'filterValue'}'",
|
"added_filter_for_responses_where_answer_to_question": "已新增回答第 {questionIdx} 題為 {filterComboBoxValue} - {filterValue} 的回覆篩選器",
|
||||||
"added_filter_for_responses_where_answer_to_question_is_skipped": "已新增回應的篩選器,其中問題 '{'questionIdx'}' 的答案被跳過",
|
"added_filter_for_responses_where_answer_to_question_is_skipped": "已新增回應的篩選器,其中問題 '{'questionIdx'}' 的答案被跳過",
|
||||||
"aggregated": "匯總",
|
"aggregated": "匯總",
|
||||||
"all_responses_csv": "所有回應 (CSV)",
|
"all_responses_csv": "所有回應 (CSV)",
|
||||||
@@ -2027,6 +2037,7 @@
|
|||||||
"starts": "開始次數",
|
"starts": "開始次數",
|
||||||
"starts_tooltip": "問卷已開始的次數。",
|
"starts_tooltip": "問卷已開始的次數。",
|
||||||
"survey_reset_successfully": "調查 重置 成功!{responseCount} 條回應和 {displayCount} 個顯示被刪除。",
|
"survey_reset_successfully": "調查 重置 成功!{responseCount} 條回應和 {displayCount} 個顯示被刪除。",
|
||||||
|
"survey_results": "{surveyName} 結果",
|
||||||
"this_month": "本月",
|
"this_month": "本月",
|
||||||
"this_quarter": "本季",
|
"this_quarter": "本季",
|
||||||
"this_year": "今年",
|
"this_year": "今年",
|
||||||
@@ -2146,7 +2157,7 @@
|
|||||||
"add_background_color_description": "為標誌容器新增背景顏色。",
|
"add_background_color_description": "為標誌容器新增背景顏色。",
|
||||||
"advanced_styling_field_border_radius": "邊框圓角",
|
"advanced_styling_field_border_radius": "邊框圓角",
|
||||||
"advanced_styling_field_button_bg": "按鈕背景",
|
"advanced_styling_field_button_bg": "按鈕背景",
|
||||||
"advanced_styling_field_button_bg_description": "填滿「下一步」/「送出」按鈕。",
|
"advanced_styling_field_button_bg_description": "填滿「Next」/「Submit」按鈕。",
|
||||||
"advanced_styling_field_button_border_radius_description": "調整按鈕的圓角。",
|
"advanced_styling_field_button_border_radius_description": "調整按鈕的圓角。",
|
||||||
"advanced_styling_field_button_font_size_description": "調整按鈕標籤文字的大小。",
|
"advanced_styling_field_button_font_size_description": "調整按鈕標籤文字的大小。",
|
||||||
"advanced_styling_field_button_font_weight_description": "讓按鈕文字變細或變粗。",
|
"advanced_styling_field_button_font_weight_description": "讓按鈕文字變細或變粗。",
|
||||||
@@ -2160,7 +2171,7 @@
|
|||||||
"advanced_styling_field_description_size": "說明文字大小",
|
"advanced_styling_field_description_size": "說明文字大小",
|
||||||
"advanced_styling_field_description_size_description": "調整說明文字的大小。",
|
"advanced_styling_field_description_size_description": "調整說明文字的大小。",
|
||||||
"advanced_styling_field_description_weight": "說明文字粗細",
|
"advanced_styling_field_description_weight": "說明文字粗細",
|
||||||
"advanced_styling_field_description_weight_description": "讓說明文字變細或變粗。",
|
"advanced_styling_field_description_weight_description": "讓描述文字變得更輕或更粗。",
|
||||||
"advanced_styling_field_font_size": "字體大小",
|
"advanced_styling_field_font_size": "字體大小",
|
||||||
"advanced_styling_field_font_weight": "字體粗細",
|
"advanced_styling_field_font_weight": "字體粗細",
|
||||||
"advanced_styling_field_headline_color": "標題顏色",
|
"advanced_styling_field_headline_color": "標題顏色",
|
||||||
@@ -2174,7 +2185,7 @@
|
|||||||
"advanced_styling_field_indicator_bg_description": "設定進度條已填滿部分的顏色。",
|
"advanced_styling_field_indicator_bg_description": "設定進度條已填滿部分的顏色。",
|
||||||
"advanced_styling_field_input_border_radius_description": "調整輸入框的圓角。",
|
"advanced_styling_field_input_border_radius_description": "調整輸入框的圓角。",
|
||||||
"advanced_styling_field_input_font_size_description": "調整輸入框內輸入文字的大小。",
|
"advanced_styling_field_input_font_size_description": "調整輸入框內輸入文字的大小。",
|
||||||
"advanced_styling_field_input_height_description": "設定輸入欄位的最小高度。",
|
"advanced_styling_field_input_height_description": "控制輸入欄的最小高度。",
|
||||||
"advanced_styling_field_input_padding_x_description": "在左右兩側增加間距。",
|
"advanced_styling_field_input_padding_x_description": "在左右兩側增加間距。",
|
||||||
"advanced_styling_field_input_padding_y_description": "在上方和下方增加間距。",
|
"advanced_styling_field_input_padding_y_description": "在上方和下方增加間距。",
|
||||||
"advanced_styling_field_input_placeholder_opacity_description": "讓提示文字變得更淡。",
|
"advanced_styling_field_input_placeholder_opacity_description": "讓提示文字變得更淡。",
|
||||||
@@ -2183,6 +2194,8 @@
|
|||||||
"advanced_styling_field_input_text_description": "設定輸入文字的顏色。",
|
"advanced_styling_field_input_text_description": "設定輸入文字的顏色。",
|
||||||
"advanced_styling_field_option_bg": "背景",
|
"advanced_styling_field_option_bg": "背景",
|
||||||
"advanced_styling_field_option_bg_description": "填滿選項項目背景。",
|
"advanced_styling_field_option_bg_description": "填滿選項項目背景。",
|
||||||
|
"advanced_styling_field_option_border": "邊框顏色",
|
||||||
|
"advanced_styling_field_option_border_description": "為單選框和核取方塊選項加上外框。",
|
||||||
"advanced_styling_field_option_border_radius_description": "讓選項的邊角變圓。",
|
"advanced_styling_field_option_border_radius_description": "讓選項的邊角變圓。",
|
||||||
"advanced_styling_field_option_font_size_description": "調整選項標籤文字的大小。",
|
"advanced_styling_field_option_font_size_description": "調整選項標籤文字的大小。",
|
||||||
"advanced_styling_field_option_label": "標籤顏色",
|
"advanced_styling_field_option_label": "標籤顏色",
|
||||||
@@ -2237,7 +2250,7 @@
|
|||||||
"show_powered_by_formbricks": "顯示「Powered by Formbricks」標記",
|
"show_powered_by_formbricks": "顯示「Powered by Formbricks」標記",
|
||||||
"styling_updated_successfully": "樣式已成功更新",
|
"styling_updated_successfully": "樣式已成功更新",
|
||||||
"suggest_colors": "建議顏色",
|
"suggest_colors": "建議顏色",
|
||||||
"suggested_colors_applied_please_save": "已成功產生建議色彩。請按「儲存」以保存變更。",
|
"suggested_colors_applied_please_save": "已成功產生建議色彩。請按「Save」以儲存變更。",
|
||||||
"theme": "主題",
|
"theme": "主題",
|
||||||
"theme_settings_description": "為所有調查建立樣式主題。您可以為每個調查啟用自訂樣式。"
|
"theme_settings_description": "為所有調查建立樣式主題。您可以為每個調查啟用自訂樣式。"
|
||||||
},
|
},
|
||||||
@@ -2321,7 +2334,7 @@
|
|||||||
"check_inbox_or_spam": "如果您的收件匣中沒有看到電子郵件,也請檢查您的垃圾郵件資料夾。",
|
"check_inbox_or_spam": "如果您的收件匣中沒有看到電子郵件,也請檢查您的垃圾郵件資料夾。",
|
||||||
"completed": "此免費且開源的問卷已關閉。",
|
"completed": "此免費且開源的問卷已關閉。",
|
||||||
"create_your_own": "建立您自己的",
|
"create_your_own": "建立您自己的",
|
||||||
"enter_pin": "此問卷已受保護。請輸入下方 PIN 碼",
|
"enter_pin": "此問卷已受保護。請在下方輸入 PIN 碼。",
|
||||||
"just_curious": "只是好奇?",
|
"just_curious": "只是好奇?",
|
||||||
"link_invalid": "此問卷只能透過邀請填寫。",
|
"link_invalid": "此問卷只能透過邀請填寫。",
|
||||||
"paused": "此免費且開源的問卷已暫時暫停。",
|
"paused": "此免費且開源的問卷已暫時暫停。",
|
||||||
@@ -2392,6 +2405,16 @@
|
|||||||
"alignment_and_engagement_survey_question_4_headline": "公司如何改善其願景和策略一致性?",
|
"alignment_and_engagement_survey_question_4_headline": "公司如何改善其願景和策略一致性?",
|
||||||
"alignment_and_engagement_survey_question_4_placeholder": "在此輸入您的答案...",
|
"alignment_and_engagement_survey_question_4_placeholder": "在此輸入您的答案...",
|
||||||
"back": "返回",
|
"back": "返回",
|
||||||
|
"block_1": "區塊 1",
|
||||||
|
"block_10": "區塊 10",
|
||||||
|
"block_2": "區塊 2",
|
||||||
|
"block_3": "區塊 3",
|
||||||
|
"block_4": "區塊 4",
|
||||||
|
"block_5": "區塊 5",
|
||||||
|
"block_6": "區塊 6",
|
||||||
|
"block_7": "區塊 7",
|
||||||
|
"block_8": "區塊 8",
|
||||||
|
"block_9": "區塊 9",
|
||||||
"book_interview": "預訂面試",
|
"book_interview": "預訂面試",
|
||||||
"build_product_roadmap_description": "找出您的使用者最想要的一件事,然後建立它。",
|
"build_product_roadmap_description": "找出您的使用者最想要的一件事,然後建立它。",
|
||||||
"build_product_roadmap_name": "建立產品路線圖",
|
"build_product_roadmap_name": "建立產品路線圖",
|
||||||
@@ -2547,7 +2570,7 @@
|
|||||||
"csat_question_3_choice_8": "品質差",
|
"csat_question_3_choice_8": "品質差",
|
||||||
"csat_question_3_choice_9": "不可靠",
|
"csat_question_3_choice_9": "不可靠",
|
||||||
"csat_question_3_headline": "您會使用以下哪些詞語來描述我們的 {projectName}?",
|
"csat_question_3_headline": "您會使用以下哪些詞語來描述我們的 {projectName}?",
|
||||||
"csat_question_3_subheader": "選取所有適用的項目:",
|
"csat_question_3_subheader": "請選取所有適用的選項:",
|
||||||
"csat_question_4_choice_1": "非常好",
|
"csat_question_4_choice_1": "非常好",
|
||||||
"csat_question_4_choice_2": "很好",
|
"csat_question_4_choice_2": "很好",
|
||||||
"csat_question_4_choice_3": "還可以",
|
"csat_question_4_choice_3": "還可以",
|
||||||
@@ -2599,7 +2622,6 @@
|
|||||||
"csat_survey_question_3_headline": "唉,抱歉!我們是否有任何可以改善您體驗的地方?",
|
"csat_survey_question_3_headline": "唉,抱歉!我們是否有任何可以改善您體驗的地方?",
|
||||||
"csat_survey_question_3_placeholder": "在此輸入您的答案...",
|
"csat_survey_question_3_placeholder": "在此輸入您的答案...",
|
||||||
"cta_description": "顯示資訊並提示使用者採取特定操作",
|
"cta_description": "顯示資訊並提示使用者採取特定操作",
|
||||||
"custom_survey_block_1_name": "區塊 1",
|
|
||||||
"custom_survey_description": "建立沒有範本的問卷。",
|
"custom_survey_description": "建立沒有範本的問卷。",
|
||||||
"custom_survey_name": "從頭開始",
|
"custom_survey_name": "從頭開始",
|
||||||
"custom_survey_question_1_headline": "您想瞭解什麼?",
|
"custom_survey_question_1_headline": "您想瞭解什麼?",
|
||||||
@@ -3002,6 +3024,9 @@
|
|||||||
"preview_survey_question_2_choice_2_label": "不用了,謝謝!",
|
"preview_survey_question_2_choice_2_label": "不用了,謝謝!",
|
||||||
"preview_survey_question_2_headline": "想要緊跟最新動態嗎?",
|
"preview_survey_question_2_headline": "想要緊跟最新動態嗎?",
|
||||||
"preview_survey_question_2_subheader": "這是一個範例說明。",
|
"preview_survey_question_2_subheader": "這是一個範例說明。",
|
||||||
|
"preview_survey_question_open_text_headline": "還有什麼想和我們分享的嗎?",
|
||||||
|
"preview_survey_question_open_text_placeholder": "在此輸入您的答案...",
|
||||||
|
"preview_survey_question_open_text_subheader": "您的回饋能幫助我們進步。",
|
||||||
"preview_survey_welcome_card_headline": "歡迎!",
|
"preview_survey_welcome_card_headline": "歡迎!",
|
||||||
"prioritize_features_description": "找出您的使用者最需要和最不需要的功能。",
|
"prioritize_features_description": "找出您的使用者最需要和最不需要的功能。",
|
||||||
"prioritize_features_name": "優先排序功能",
|
"prioritize_features_name": "優先排序功能",
|
||||||
@@ -3071,7 +3096,7 @@
|
|||||||
"professional_development_survey_question_2_choice_5": "個人研究",
|
"professional_development_survey_question_2_choice_5": "個人研究",
|
||||||
"professional_development_survey_question_2_choice_6": "其他",
|
"professional_development_survey_question_2_choice_6": "其他",
|
||||||
"professional_development_survey_question_2_headline": "您認為哪種類型的專業發展活動對您的成長最有價值?",
|
"professional_development_survey_question_2_headline": "您認為哪種類型的專業發展活動對您的成長最有價值?",
|
||||||
"professional_development_survey_question_2_subheader": "選取所有適用的項目",
|
"professional_development_survey_question_2_subheader": "請選取所有適用的選項:",
|
||||||
"professional_development_survey_question_3_choice_1": "是",
|
"professional_development_survey_question_3_choice_1": "是",
|
||||||
"professional_development_survey_question_3_choice_2": "否",
|
"professional_development_survey_question_3_choice_2": "否",
|
||||||
"professional_development_survey_question_3_headline": "您過去是否曾投入時間進行專業發展?",
|
"professional_development_survey_question_3_headline": "您過去是否曾投入時間進行專業發展?",
|
||||||
@@ -3250,5 +3275,18 @@
|
|||||||
"usability_question_9_headline": "使用 系統 時,我 感到 有 信心。",
|
"usability_question_9_headline": "使用 系統 時,我 感到 有 信心。",
|
||||||
"usability_rating_description": "透過使用標準化的 十個問題 問卷,要求使用者評估他們對 您 產品的使用體驗,來衡量感知的 可用性。",
|
"usability_rating_description": "透過使用標準化的 十個問題 問卷,要求使用者評估他們對 您 產品的使用體驗,來衡量感知的 可用性。",
|
||||||
"usability_score_name": "系統 可用性 分數 (SUS)"
|
"usability_score_name": "系統 可用性 分數 (SUS)"
|
||||||
|
},
|
||||||
|
"workflows": {
|
||||||
|
"coming_soon_description": "感謝你和我們分享你的工作流程想法!我們目前正在設計這個功能,你的回饋將幫助我們打造真正符合你需求的工具。",
|
||||||
|
"coming_soon_title": "快完成囉!",
|
||||||
|
"follow_up_label": "還有什麼想補充的嗎?",
|
||||||
|
"follow_up_placeholder": "您希望自動化哪些具體任務?有沒有想要整合的工具或功能?",
|
||||||
|
"generate_button": "產生工作流程",
|
||||||
|
"heading": "你想建立什麼樣的工作流程?",
|
||||||
|
"placeholder": "請描述您想產生的工作流程……",
|
||||||
|
"subheading": "幾秒鐘就能產生你的工作流程。",
|
||||||
|
"submit_button": "補充細節",
|
||||||
|
"thank_you_description": "您的意見有助於我們打造真正符合您需求的工作流程功能。我們會持續向您更新開發進度。",
|
||||||
|
"thank_you_title": "感謝你的回饋!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,17 @@ const ZCreateTagAction = z.object({
|
|||||||
tagName: z.string(),
|
tagName: z.string(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const createTagAction = authenticatedActionClient.schema(ZCreateTagAction).action(
|
export const createTagAction = authenticatedActionClient.inputSchema(ZCreateTagAction).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"created",
|
"created",
|
||||||
"tag",
|
"tag",
|
||||||
async ({ parsedInput, ctx }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
async ({
|
||||||
|
parsedInput,
|
||||||
|
ctx,
|
||||||
|
}: {
|
||||||
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: z.infer<typeof ZCreateTagAction>;
|
||||||
|
}) => {
|
||||||
const organizationId = await getOrganizationIdFromEnvironmentId(parsedInput.environmentId);
|
const organizationId = await getOrganizationIdFromEnvironmentId(parsedInput.environmentId);
|
||||||
|
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
@@ -65,103 +71,125 @@ const ZCreateTagToResponseAction = z.object({
|
|||||||
tagId: ZId,
|
tagId: ZId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const createTagToResponseAction = authenticatedActionClient.schema(ZCreateTagToResponseAction).action(
|
export const createTagToResponseAction = authenticatedActionClient
|
||||||
withAuditLogging(
|
.inputSchema(ZCreateTagToResponseAction)
|
||||||
"addedToResponse",
|
.action(
|
||||||
"tag",
|
withAuditLogging(
|
||||||
async ({ parsedInput, ctx }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
"addedToResponse",
|
||||||
const responseEnvironmentId = await getEnvironmentIdFromResponseId(parsedInput.responseId);
|
"tag",
|
||||||
const tagEnvironment = await getTag(parsedInput.tagId);
|
async ({
|
||||||
|
parsedInput,
|
||||||
|
ctx,
|
||||||
|
}: {
|
||||||
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: z.infer<typeof ZCreateTagToResponseAction>;
|
||||||
|
}) => {
|
||||||
|
const responseEnvironmentId = await getEnvironmentIdFromResponseId(parsedInput.responseId);
|
||||||
|
const tagEnvironment = await getTag(parsedInput.tagId);
|
||||||
|
|
||||||
if (!responseEnvironmentId || !tagEnvironment) {
|
if (!responseEnvironmentId || !tagEnvironment) {
|
||||||
throw new Error("Environment not found");
|
throw new Error("Environment not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (responseEnvironmentId !== tagEnvironment.environmentId) {
|
||||||
|
throw new Error("Response and tag are not in the same environment");
|
||||||
|
}
|
||||||
|
|
||||||
|
const organizationId = await getOrganizationIdFromEnvironmentId(responseEnvironmentId);
|
||||||
|
|
||||||
|
await checkAuthorizationUpdated({
|
||||||
|
userId: ctx.user.id,
|
||||||
|
organizationId,
|
||||||
|
access: [
|
||||||
|
{
|
||||||
|
type: "organization",
|
||||||
|
roles: ["owner", "manager"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "projectTeam",
|
||||||
|
projectId: await getProjectIdFromEnvironmentId(responseEnvironmentId),
|
||||||
|
minPermission: "readWrite",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
ctx.auditLoggingCtx.organizationId = organizationId;
|
||||||
|
ctx.auditLoggingCtx.tagId = parsedInput.tagId;
|
||||||
|
const result = await addTagToRespone(parsedInput.responseId, parsedInput.tagId);
|
||||||
|
ctx.auditLoggingCtx.newObject = result;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
)
|
||||||
if (responseEnvironmentId !== tagEnvironment.environmentId) {
|
);
|
||||||
throw new Error("Response and tag are not in the same environment");
|
|
||||||
}
|
|
||||||
|
|
||||||
const organizationId = await getOrganizationIdFromEnvironmentId(responseEnvironmentId);
|
|
||||||
|
|
||||||
await checkAuthorizationUpdated({
|
|
||||||
userId: ctx.user.id,
|
|
||||||
organizationId,
|
|
||||||
access: [
|
|
||||||
{
|
|
||||||
type: "organization",
|
|
||||||
roles: ["owner", "manager"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "projectTeam",
|
|
||||||
projectId: await getProjectIdFromEnvironmentId(responseEnvironmentId),
|
|
||||||
minPermission: "readWrite",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
});
|
|
||||||
ctx.auditLoggingCtx.organizationId = organizationId;
|
|
||||||
ctx.auditLoggingCtx.tagId = parsedInput.tagId;
|
|
||||||
const result = await addTagToRespone(parsedInput.responseId, parsedInput.tagId);
|
|
||||||
ctx.auditLoggingCtx.newObject = result;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const ZDeleteTagOnResponseAction = z.object({
|
const ZDeleteTagOnResponseAction = z.object({
|
||||||
responseId: ZId,
|
responseId: ZId,
|
||||||
tagId: ZId,
|
tagId: ZId,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const deleteTagOnResponseAction = authenticatedActionClient.schema(ZDeleteTagOnResponseAction).action(
|
export const deleteTagOnResponseAction = authenticatedActionClient
|
||||||
withAuditLogging(
|
.inputSchema(ZDeleteTagOnResponseAction)
|
||||||
"removedFromResponse",
|
.action(
|
||||||
"tag",
|
withAuditLogging(
|
||||||
async ({ parsedInput, ctx }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
"removedFromResponse",
|
||||||
const responseEnvironmentId = await getEnvironmentIdFromResponseId(parsedInput.responseId);
|
"tag",
|
||||||
const tagEnvironment = await getTag(parsedInput.tagId);
|
async ({
|
||||||
const organizationId = await getOrganizationIdFromResponseId(parsedInput.responseId);
|
parsedInput,
|
||||||
if (!responseEnvironmentId || !tagEnvironment) {
|
ctx,
|
||||||
throw new Error("Environment not found");
|
}: {
|
||||||
}
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: z.infer<typeof ZDeleteTagOnResponseAction>;
|
||||||
|
}) => {
|
||||||
|
const responseEnvironmentId = await getEnvironmentIdFromResponseId(parsedInput.responseId);
|
||||||
|
const tagEnvironment = await getTag(parsedInput.tagId);
|
||||||
|
const organizationId = await getOrganizationIdFromResponseId(parsedInput.responseId);
|
||||||
|
if (!responseEnvironmentId || !tagEnvironment) {
|
||||||
|
throw new Error("Environment not found");
|
||||||
|
}
|
||||||
|
|
||||||
if (responseEnvironmentId !== tagEnvironment.environmentId) {
|
if (responseEnvironmentId !== tagEnvironment.environmentId) {
|
||||||
throw new Error("Response and tag are not in the same environment");
|
throw new Error("Response and tag are not in the same environment");
|
||||||
}
|
}
|
||||||
|
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
organizationId,
|
organizationId,
|
||||||
access: [
|
access: [
|
||||||
{
|
{
|
||||||
type: "organization",
|
type: "organization",
|
||||||
roles: ["owner", "manager"],
|
roles: ["owner", "manager"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "projectTeam",
|
type: "projectTeam",
|
||||||
projectId: await getProjectIdFromEnvironmentId(responseEnvironmentId),
|
projectId: await getProjectIdFromEnvironmentId(responseEnvironmentId),
|
||||||
minPermission: "readWrite",
|
minPermission: "readWrite",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
ctx.auditLoggingCtx.organizationId = organizationId;
|
ctx.auditLoggingCtx.organizationId = organizationId;
|
||||||
ctx.auditLoggingCtx.tagId = parsedInput.tagId;
|
ctx.auditLoggingCtx.tagId = parsedInput.tagId;
|
||||||
const result = await deleteTagOnResponse(parsedInput.responseId, parsedInput.tagId);
|
const result = await deleteTagOnResponse(parsedInput.responseId, parsedInput.tagId);
|
||||||
ctx.auditLoggingCtx.oldObject = result;
|
ctx.auditLoggingCtx.oldObject = result;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
const ZDeleteResponseAction = z.object({
|
const ZDeleteResponseAction = z.object({
|
||||||
responseId: ZId,
|
responseId: ZId,
|
||||||
decrementQuotas: z.boolean().default(false),
|
decrementQuotas: z.boolean().prefault(false),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const deleteResponseAction = authenticatedActionClient.schema(ZDeleteResponseAction).action(
|
export const deleteResponseAction = authenticatedActionClient.inputSchema(ZDeleteResponseAction).action(
|
||||||
withAuditLogging(
|
withAuditLogging(
|
||||||
"deleted",
|
"deleted",
|
||||||
"response",
|
"response",
|
||||||
async ({ parsedInput, ctx }: { ctx: AuthenticatedActionClientCtx; parsedInput: Record<string, any> }) => {
|
async ({
|
||||||
|
parsedInput,
|
||||||
|
ctx,
|
||||||
|
}: {
|
||||||
|
ctx: AuthenticatedActionClientCtx;
|
||||||
|
parsedInput: z.infer<typeof ZDeleteResponseAction>;
|
||||||
|
}) => {
|
||||||
const organizationId = await getOrganizationIdFromResponseId(parsedInput.responseId);
|
const organizationId = await getOrganizationIdFromResponseId(parsedInput.responseId);
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
@@ -192,7 +220,7 @@ const ZGetResponseAction = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getResponseAction = authenticatedActionClient
|
export const getResponseAction = authenticatedActionClient
|
||||||
.schema(ZGetResponseAction)
|
.inputSchema(ZGetResponseAction)
|
||||||
.action(async ({ parsedInput, ctx }) => {
|
.action(async ({ parsedInput, ctx }) => {
|
||||||
await checkAuthorizationUpdated({
|
await checkAuthorizationUpdated({
|
||||||
userId: ctx.user.id,
|
userId: ctx.user.id,
|
||||||
|
|||||||
+1
-1
@@ -42,7 +42,7 @@ export const SingleResponseCardBody = ({
|
|||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
key={index}
|
key={index}
|
||||||
className="mr-0.5 ml-0.5 rounded-md border border-slate-200 bg-slate-50 px-1 py-0.5 text-sm first:ml-0">
|
className="ml-0.5 mr-0.5 rounded-md border border-slate-200 bg-slate-50 px-1 py-0.5 text-sm first:ml-0">
|
||||||
@{part}
|
@{part}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { extendZodWithOpenApi } from "zod-openapi";
|
|
||||||
|
|
||||||
extendZodWithOpenApi(z);
|
|
||||||
|
|
||||||
export const ZOverallHealthStatus = z
|
export const ZOverallHealthStatus = z
|
||||||
.object({
|
.object({
|
||||||
main_database: z.boolean().openapi({
|
main_database: z
|
||||||
description: "Main database connection status - true if database is reachable and running",
|
.boolean()
|
||||||
example: true,
|
.meta({
|
||||||
}),
|
example: true,
|
||||||
cache_database: z.boolean().openapi({
|
})
|
||||||
description: "Cache database connection status - true if cache database is reachable and running",
|
.describe("Main database connection status - true if database is reachable and running"),
|
||||||
example: true,
|
cache_database: z
|
||||||
}),
|
.boolean()
|
||||||
|
.meta({
|
||||||
|
example: true,
|
||||||
|
})
|
||||||
|
.describe("Cache database connection status - true if cache database is reachable and running"),
|
||||||
})
|
})
|
||||||
.openapi({
|
.meta({
|
||||||
title: "Health Check Response",
|
title: "Health Check Response",
|
||||||
description: "Health check status for critical application dependencies",
|
})
|
||||||
});
|
.describe("Health check status for critical application dependencies");
|
||||||
|
|
||||||
export type OverallHealthStatus = z.infer<typeof ZOverallHealthStatus>;
|
export type OverallHealthStatus = z.infer<typeof ZOverallHealthStatus>;
|
||||||
|
|||||||
+6
-10
@@ -1,26 +1,22 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { extendZodWithOpenApi } from "zod-openapi";
|
|
||||||
import { ZContactAttributeKey } from "@formbricks/database/zod/contact-attribute-keys";
|
import { ZContactAttributeKey } from "@formbricks/database/zod/contact-attribute-keys";
|
||||||
|
|
||||||
extendZodWithOpenApi(z);
|
|
||||||
|
|
||||||
export const ZContactAttributeKeyIdSchema = z
|
export const ZContactAttributeKeyIdSchema = z
|
||||||
.string()
|
|
||||||
.cuid2()
|
.cuid2()
|
||||||
.openapi({
|
.meta({
|
||||||
ref: "contactAttributeKeyId",
|
id: "contactAttributeKeyId",
|
||||||
description: "The ID of the contact attribute key",
|
|
||||||
param: {
|
param: {
|
||||||
name: "id",
|
name: "id",
|
||||||
in: "path",
|
in: "path",
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
.describe("The ID of the contact attribute key");
|
||||||
|
|
||||||
export const ZContactAttributeKeyUpdateSchema = ZContactAttributeKey.pick({
|
export const ZContactAttributeKeyUpdateSchema = ZContactAttributeKey.pick({
|
||||||
name: true,
|
name: true,
|
||||||
description: true,
|
description: true,
|
||||||
}).openapi({
|
}).meta({
|
||||||
ref: "contactAttributeKeyUpdate",
|
id: "contactAttributeKeyUpdate",
|
||||||
description: "A contact attribute key to update. Key cannot be changed.",
|
description: "A contact attribute key to update. Key cannot be changed.",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export const getContactAttributeKeysEndpoint: ZodOpenApiOperationObject = {
|
|||||||
description: "Gets contact attribute keys from the database.",
|
description: "Gets contact attribute keys from the database.",
|
||||||
tags: ["Management API - Contact Attribute Keys"],
|
tags: ["Management API - Contact Attribute Keys"],
|
||||||
requestParams: {
|
requestParams: {
|
||||||
query: ZGetContactAttributeKeysFilter.sourceType(),
|
query: ZGetContactAttributeKeysFilter,
|
||||||
},
|
},
|
||||||
responses: {
|
responses: {
|
||||||
"200": {
|
"200": {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export const GET = async (request: NextRequest) =>
|
|||||||
authenticatedApiClient({
|
authenticatedApiClient({
|
||||||
request,
|
request,
|
||||||
schemas: {
|
schemas: {
|
||||||
query: ZGetContactAttributeKeysFilter.sourceType(),
|
query: ZGetContactAttributeKeysFilter,
|
||||||
},
|
},
|
||||||
handler: async ({ authentication, parsedInput }) => {
|
handler: async ({ authentication, parsedInput }) => {
|
||||||
const { query } = parsedInput;
|
const { query } = parsedInput;
|
||||||
@@ -49,7 +49,7 @@ export const POST = async (request: NextRequest) =>
|
|||||||
authenticatedApiClient({
|
authenticatedApiClient({
|
||||||
request,
|
request,
|
||||||
schemas: {
|
schemas: {
|
||||||
body: ZContactAttributeKeyInput.sourceType(),
|
body: ZContactAttributeKeyInput,
|
||||||
},
|
},
|
||||||
handler: async ({ authentication, parsedInput, auditLog }) => {
|
handler: async ({ authentication, parsedInput, auditLog }) => {
|
||||||
const { body } = parsedInput;
|
const { body } = parsedInput;
|
||||||
|
|||||||
+4
-7
@@ -1,13 +1,10 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { extendZodWithOpenApi } from "zod-openapi";
|
|
||||||
import { ZContactAttributeKey } from "@formbricks/database/zod/contact-attribute-keys";
|
import { ZContactAttributeKey } from "@formbricks/database/zod/contact-attribute-keys";
|
||||||
import { isSafeIdentifier } from "@/lib/utils/safe-identifier";
|
import { isSafeIdentifier } from "@/lib/utils/safe-identifier";
|
||||||
import { ZGetFilter } from "@/modules/api/v2/types/api-filter";
|
import { ZGetFilter } from "@/modules/api/v2/types/api-filter";
|
||||||
|
|
||||||
extendZodWithOpenApi(z);
|
|
||||||
|
|
||||||
export const ZGetContactAttributeKeysFilter = ZGetFilter.extend({
|
export const ZGetContactAttributeKeysFilter = ZGetFilter.extend({
|
||||||
environmentId: z.string().cuid2().optional().describe("The environment ID to filter by"),
|
environmentId: z.cuid2().optional().describe("The environment ID to filter by"),
|
||||||
})
|
})
|
||||||
.refine(
|
.refine(
|
||||||
(data) => {
|
(data) => {
|
||||||
@@ -37,15 +34,15 @@ export const ZContactAttributeKeyInput = ZContactAttributeKey.pick({
|
|||||||
// Enforce safe identifier format for key
|
// Enforce safe identifier format for key
|
||||||
if (!isSafeIdentifier(data.key)) {
|
if (!isSafeIdentifier(data.key)) {
|
||||||
ctx.addIssue({
|
ctx.addIssue({
|
||||||
code: z.ZodIssueCode.custom,
|
code: "custom",
|
||||||
message:
|
message:
|
||||||
"Key must be a safe identifier: only lowercase letters, numbers, and underscores, and must start with a letter",
|
"Key must be a safe identifier: only lowercase letters, numbers, and underscores, and must start with a letter",
|
||||||
path: ["key"],
|
path: ["key"],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.openapi({
|
.meta({
|
||||||
ref: "contactAttributeKeyInput",
|
id: "contactAttributeKeyInput",
|
||||||
description: "Input data for creating or updating a contact attribute",
|
description: "Input data for creating or updating a contact attribute",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,21 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { extendZodWithOpenApi } from "zod-openapi";
|
|
||||||
import { ZResponse } from "@formbricks/database/zod/responses";
|
import { ZResponse } from "@formbricks/database/zod/responses";
|
||||||
|
|
||||||
extendZodWithOpenApi(z);
|
|
||||||
|
|
||||||
export const ZResponseIdSchema = z
|
export const ZResponseIdSchema = z
|
||||||
.string()
|
|
||||||
.cuid2()
|
.cuid2()
|
||||||
.openapi({
|
.meta({
|
||||||
ref: "responseId",
|
id: "responseId",
|
||||||
description: "The ID of the response",
|
|
||||||
param: {
|
param: {
|
||||||
name: "id",
|
name: "id",
|
||||||
in: "path",
|
in: "path",
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
.describe("The ID of the response");
|
||||||
|
|
||||||
export const ZResponseUpdateSchema = ZResponse.omit({
|
export const ZResponseUpdateSchema = ZResponse.omit({
|
||||||
id: true,
|
id: true,
|
||||||
surveyId: true,
|
surveyId: true,
|
||||||
}).openapi({
|
}).meta({
|
||||||
ref: "responseUpdate",
|
id: "responseUpdate",
|
||||||
description: "A response to update.",
|
description: "A response to update.",
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export const getResponsesEndpoint: ZodOpenApiOperationObject = {
|
|||||||
summary: "Get responses",
|
summary: "Get responses",
|
||||||
description: "Gets responses from the database.",
|
description: "Gets responses from the database.",
|
||||||
requestParams: {
|
requestParams: {
|
||||||
query: ZGetResponsesFilter.sourceType(),
|
query: ZGetResponsesFilter,
|
||||||
},
|
},
|
||||||
tags: ["Management API - Responses"],
|
tags: ["Management API - Responses"],
|
||||||
responses: {
|
responses: {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export const GET = async (request: NextRequest) =>
|
|||||||
authenticatedApiClient({
|
authenticatedApiClient({
|
||||||
request,
|
request,
|
||||||
schemas: {
|
schemas: {
|
||||||
query: ZGetResponsesFilter.sourceType(),
|
query: ZGetResponsesFilter,
|
||||||
},
|
},
|
||||||
handler: async ({ authentication, parsedInput }) => {
|
handler: async ({ authentication, parsedInput }) => {
|
||||||
const { query } = parsedInput;
|
const { query } = parsedInput;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { ZResponse } from "@formbricks/database/zod/responses";
|
|||||||
import { ZGetFilter } from "@/modules/api/v2/types/api-filter";
|
import { ZGetFilter } from "@/modules/api/v2/types/api-filter";
|
||||||
|
|
||||||
export const ZGetResponsesFilter = ZGetFilter.extend({
|
export const ZGetResponsesFilter = ZGetFilter.extend({
|
||||||
surveyId: z.string().cuid2().optional(),
|
surveyId: z.cuid2().optional(),
|
||||||
contactId: z.string().optional(),
|
contactId: z.string().optional(),
|
||||||
}).refine(
|
}).refine(
|
||||||
(data) => {
|
(data) => {
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ export const getPersonalizedSurveyLink: ZodOpenApiOperationObject = {
|
|||||||
schema: makePartialSchema(
|
schema: makePartialSchema(
|
||||||
z.object({
|
z.object({
|
||||||
data: z.object({
|
data: z.object({
|
||||||
surveyUrl: z.string().url(),
|
surveyUrl: z.url(),
|
||||||
expiresAt: z
|
expiresAt: z
|
||||||
.string()
|
.string()
|
||||||
.nullable()
|
.nullable()
|
||||||
|
|||||||
+6
-11
@@ -1,23 +1,18 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { extendZodWithOpenApi } from "zod-openapi";
|
|
||||||
|
|
||||||
extendZodWithOpenApi(z);
|
|
||||||
|
|
||||||
export const ZContactLinkParams = z.object({
|
export const ZContactLinkParams = z.object({
|
||||||
surveyId: z
|
surveyId: z
|
||||||
.string()
|
|
||||||
.cuid2()
|
.cuid2()
|
||||||
.openapi({
|
.meta({
|
||||||
description: "The ID of the survey",
|
|
||||||
param: { name: "surveyId", in: "path" },
|
param: { name: "surveyId", in: "path" },
|
||||||
}),
|
})
|
||||||
|
.describe("The ID of the survey"),
|
||||||
contactId: z
|
contactId: z
|
||||||
.string()
|
|
||||||
.cuid2()
|
.cuid2()
|
||||||
.openapi({
|
.meta({
|
||||||
description: "The ID of the contact",
|
|
||||||
param: { name: "contactId", in: "path" },
|
param: { name: "contactId", in: "path" },
|
||||||
}),
|
})
|
||||||
|
.describe("The ID of the contact"),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ZContactLinkQuery = z.object({
|
export const ZContactLinkQuery = z.object({
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user