Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b6a0915ee | ||
|
|
65d6a94b0a | ||
|
|
7fd8e3364c | ||
|
|
4225bc59de | ||
|
|
4c1bdd1d62 | ||
|
|
ff21e53f5a | ||
|
|
9491bdbe46 | ||
|
|
a62fe8a781 | ||
|
|
db1c5b9513 | ||
|
|
a40e064448 |
@@ -0,0 +1,51 @@
|
||||
name: i18n sync check
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- "preview"
|
||||
types:
|
||||
- "opened"
|
||||
- "synchronize"
|
||||
- "reopened"
|
||||
- "ready_for_review"
|
||||
paths:
|
||||
- "packages/i18n/**"
|
||||
- ".github/workflows/i18n-sync-check.yml"
|
||||
push:
|
||||
branches:
|
||||
- "preview"
|
||||
paths:
|
||||
- "packages/i18n/**"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
sync-check:
|
||||
name: check:sync
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
if: github.event_name == 'push' || github.event.pull_request.draft == false
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
filter: blob:none
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: "22.18.0"
|
||||
|
||||
- name: Enable Corepack and pnpm
|
||||
run: corepack enable pnpm
|
||||
|
||||
- name: Run sync check
|
||||
run: pnpm dlx tsx packages/i18n/scripts/sync-check.ts --ci
|
||||
@@ -110,3 +110,7 @@ build/
|
||||
.react-router/
|
||||
temp/
|
||||
scripts/
|
||||
!packages/i18n/scripts/
|
||||
|
||||
# i18n auto-generated types (regenerated on every build)
|
||||
packages/i18n/src/types/keys.generated.ts
|
||||
|
||||
@@ -11,7 +11,7 @@ http {
|
||||
|
||||
set_real_ip_from 0.0.0.0/0;
|
||||
real_ip_recursive on;
|
||||
real_ip_header X-Forward-For;
|
||||
real_ip_header X-Forwarded-For;
|
||||
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
|
||||
|
||||
access_log /dev/stdout;
|
||||
|
||||
@@ -113,7 +113,7 @@ class BulkEstimatePointEndpoint(BaseViewSet):
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
estimate = Estimate.objects.get(pk=estimate_id)
|
||||
estimate = Estimate.objects.get(pk=estimate_id, workspace__slug=slug, project_id=project_id)
|
||||
|
||||
if request.data.get("estimate"):
|
||||
estimate.name = request.data.get("estimate").get("name", estimate.name)
|
||||
|
||||
@@ -99,6 +99,7 @@ class IssueListEndpoint(BaseAPIView):
|
||||
# Apply legacy filters
|
||||
filters = issue_filters(request.query_params, "GET")
|
||||
issue_queryset = queryset.filter(**filters)
|
||||
issue_queryset = issue_queryset.filter(state__deleted_at__isnull=True)
|
||||
|
||||
# Add select_related, prefetch_related if fields or expand is not None
|
||||
if self.fields or self.expand:
|
||||
@@ -157,7 +158,7 @@ class IssueListEndpoint(BaseAPIView):
|
||||
)
|
||||
|
||||
if self.fields or self.expand:
|
||||
issues = IssueSerializer(queryset, many=True, fields=self.fields, expand=self.expand).data
|
||||
issues = IssueSerializer(issue_queryset, many=True, fields=self.fields, expand=self.expand).data
|
||||
else:
|
||||
issues = issue_queryset.values(
|
||||
"id",
|
||||
|
||||
@@ -332,7 +332,7 @@ class ProjectViewSet(BaseViewSet):
|
||||
|
||||
workspace = Workspace.objects.get(slug=slug)
|
||||
|
||||
project = Project.objects.get(pk=pk)
|
||||
project = Project.objects.get(pk=pk, workspace__slug=slug)
|
||||
intake_view = request.data.get("inbox_view", project.intake_view)
|
||||
current_instance = json.dumps(ProjectSerializer(project).data, cls=DjangoJSONEncoder)
|
||||
if project.archived_at:
|
||||
|
||||
@@ -206,11 +206,15 @@ class ProjectMemberViewSet(BaseViewSet):
|
||||
def partial_update(self, request, slug, project_id, pk):
|
||||
project_member = ProjectMember.objects.get(pk=pk, workspace__slug=slug, project_id=project_id, is_active=True)
|
||||
|
||||
# Fetch the workspace role of the project member
|
||||
workspace_role = WorkspaceMember.objects.get(
|
||||
# Fetch the target's workspace role (used to cap the new project role)
|
||||
target_workspace_role = WorkspaceMember.objects.get(
|
||||
workspace__slug=slug, member=project_member.member, is_active=True
|
||||
).role
|
||||
is_workspace_admin = workspace_role == ROLE.ADMIN.value
|
||||
# Fetch the requester's workspace role to decide if they may bypass project-role checks
|
||||
requester_workspace_role = WorkspaceMember.objects.get(
|
||||
workspace__slug=slug, member=request.user, is_active=True
|
||||
).role
|
||||
is_workspace_admin = requester_workspace_role == ROLE.ADMIN.value
|
||||
|
||||
# Check if the user is not editing their own role if they are not an admin
|
||||
if request.user.id == project_member.member_id and not is_workspace_admin:
|
||||
@@ -251,7 +255,7 @@ class ProjectMemberViewSet(BaseViewSet):
|
||||
)
|
||||
|
||||
# Cannot assign a role higher than the target's workspace role
|
||||
if workspace_role in [5] and new_role in [15, 20]:
|
||||
if target_workspace_role in [5] and new_role in [15, 20]:
|
||||
return Response(
|
||||
{"error": "You cannot add a user with role higher than the workspace role"},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
|
||||
@@ -279,11 +279,16 @@ class WorkspaceUserPropertiesEndpoint(BaseAPIView):
|
||||
|
||||
class WorkspaceUserProfileEndpoint(BaseAPIView):
|
||||
def get(self, request, slug, user_id):
|
||||
user_data = User.objects.get(pk=user_id)
|
||||
|
||||
requesting_workspace_member = WorkspaceMember.objects.get(
|
||||
workspace__slug=slug, member=request.user, is_active=True
|
||||
)
|
||||
|
||||
# Verify the target user is also an active member of this workspace
|
||||
# before exposing their profile data.
|
||||
target_workspace_member = WorkspaceMember.objects.select_related("member").get(
|
||||
workspace__slug=slug, member_id=user_id, is_active=True
|
||||
)
|
||||
user_data = target_workspace_member.member
|
||||
projects = []
|
||||
if requesting_workspace_member.role >= 15:
|
||||
projects = (
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Generated for comment_submit_shortcut user preference
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("db", "0121_alter_estimate_type"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="profile",
|
||||
name="comment_submit_shortcut",
|
||||
field=models.CharField(
|
||||
choices=[("enter", "Enter"), ("mod_enter", "Mod+Enter")],
|
||||
default="enter",
|
||||
max_length=20,
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -18,12 +18,11 @@ from django import apps
|
||||
# Module imports
|
||||
from plane.utils.html_processor import strip_tags
|
||||
from plane.utils.path_validator import sanitize_filename
|
||||
from plane.db.mixins import SoftDeletionManager
|
||||
from plane.db.mixins import SoftDeletionManager, ChangeTrackerMixin
|
||||
from plane.utils.exception_logger import log_exception
|
||||
from .project import ProjectBaseModel
|
||||
from plane.utils.uuid import convert_uuid_to_integer
|
||||
from .description import Description
|
||||
from plane.db.mixins import ChangeTrackerMixin
|
||||
from .state import StateGroup
|
||||
|
||||
|
||||
@@ -102,7 +101,9 @@ class IssueManager(SoftDeletionManager):
|
||||
)
|
||||
|
||||
|
||||
class Issue(ProjectBaseModel):
|
||||
class Issue(ChangeTrackerMixin, ProjectBaseModel):
|
||||
TRACKED_FIELDS = ["state_id"]
|
||||
|
||||
PRIORITY_CHOICES = (
|
||||
("urgent", "Urgent"),
|
||||
("high", "High"),
|
||||
@@ -177,30 +178,8 @@ class Issue(ProjectBaseModel):
|
||||
ordering = ("-created_at",)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.state is None:
|
||||
try:
|
||||
from plane.db.models import State
|
||||
|
||||
default_state = State.objects.filter(
|
||||
~models.Q(is_triage=True), project=self.project, default=True
|
||||
).first()
|
||||
if default_state is None:
|
||||
random_state = State.objects.filter(~models.Q(is_triage=True), project=self.project).first()
|
||||
self.state = random_state
|
||||
else:
|
||||
self.state = default_state
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
from plane.db.models import State
|
||||
|
||||
if self.state.group == "completed":
|
||||
self.completed_at = timezone.now()
|
||||
else:
|
||||
self.completed_at = None
|
||||
except ImportError:
|
||||
pass
|
||||
self._ensure_default_state()
|
||||
kwargs = self._sync_completed_at(kwargs)
|
||||
|
||||
if self._state.adding:
|
||||
with transaction.atomic():
|
||||
@@ -246,6 +225,35 @@ class Issue(ProjectBaseModel):
|
||||
"""Return name of the issue"""
|
||||
return f"{self.name} <{self.project.name}>"
|
||||
|
||||
def _ensure_default_state(self):
|
||||
"""Assign a default state when none is set."""
|
||||
if self.state is not None:
|
||||
return
|
||||
try:
|
||||
from plane.db.models import State
|
||||
|
||||
default_state = State.objects.filter(~models.Q(is_triage=True), project=self.project, default=True).first()
|
||||
self.state = default_state or State.objects.filter(~models.Q(is_triage=True), project=self.project).first()
|
||||
except ImportError as e:
|
||||
log_exception(e)
|
||||
|
||||
def _sync_completed_at(self, kwargs):
|
||||
"""Update completed_at when state changes. Returns kwargs."""
|
||||
if not self.state:
|
||||
return kwargs
|
||||
if not self._state.adding and not self.has_changed("state_id"):
|
||||
return kwargs
|
||||
|
||||
if self.state.group == StateGroup.COMPLETED.value:
|
||||
self.completed_at = timezone.now()
|
||||
else:
|
||||
self.completed_at = None
|
||||
|
||||
update_fields = kwargs.get("update_fields")
|
||||
if update_fields is not None:
|
||||
kwargs["update_fields"] = list(set(update_fields) | {"completed_at"})
|
||||
return kwargs
|
||||
|
||||
|
||||
class IssueBlocker(ProjectBaseModel):
|
||||
block = models.ForeignKey(Issue, related_name="blocker_issues", on_delete=models.CASCADE)
|
||||
|
||||
@@ -210,6 +210,10 @@ class Profile(TimeAuditModel):
|
||||
FULL = "full", "Full"
|
||||
COMPACT = "compact", "Compact"
|
||||
|
||||
class CommentSubmitShortcut(models.TextChoices):
|
||||
ENTER = "enter", "Enter"
|
||||
MOD_ENTER = "mod_enter", "Mod+Enter"
|
||||
|
||||
START_OF_THE_WEEK_CHOICES = (
|
||||
(SUNDAY, "Sunday"),
|
||||
(MONDAY, "Monday"),
|
||||
@@ -243,6 +247,9 @@ class Profile(TimeAuditModel):
|
||||
max_length=255, choices=NotificationViewMode.choices, default=NotificationViewMode.FULL
|
||||
)
|
||||
is_smooth_cursor_enabled = models.BooleanField(default=False)
|
||||
comment_submit_shortcut = models.CharField(
|
||||
max_length=20, choices=CommentSubmitShortcut.choices, default=CommentSubmitShortcut.ENTER
|
||||
)
|
||||
# mobile
|
||||
is_mobile_onboarded = models.BooleanField(default=False)
|
||||
mobile_onboarding_step = models.JSONField(default=get_mobile_default_onboarding)
|
||||
|
||||
@@ -13,6 +13,7 @@ import { cn, isCommentEmpty } from "@plane/utils";
|
||||
// helpers
|
||||
import { getEditorFileHandlers } from "@/helpers/editor.helper";
|
||||
// hooks
|
||||
import { useUserProfile } from "@/hooks/store/use-user-profile";
|
||||
import { useParseEditorContent } from "@/hooks/use-parse-editor-content";
|
||||
// plane web imports
|
||||
import { useEditorFlagging } from "@/hooks/use-editor-flagging";
|
||||
@@ -57,6 +58,9 @@ export const LiteTextEditor = React.forwardRef(function LiteTextEditor(
|
||||
}
|
||||
// derived values
|
||||
const isEmpty = isCommentEmpty(props.initialValue);
|
||||
const {
|
||||
data: { comment_submit_shortcut },
|
||||
} = useUserProfile();
|
||||
const editorRef = isMutableRefObject<EditorRefApi>(ref) ? ref.current : null;
|
||||
const { liteText: liteTextEditorExtensions } = useEditorFlagging(anchor);
|
||||
// parse content
|
||||
@@ -80,6 +84,7 @@ export const LiteTextEditor = React.forwardRef(function LiteTextEditor(
|
||||
mentionHandler={{
|
||||
renderComponent: (props) => <EditorMentionsRoot {...props} />,
|
||||
}}
|
||||
submitShortcut={comment_submit_shortcut}
|
||||
extendedEditorProps={{}}
|
||||
{...rest}
|
||||
// overriding the containerClassName to add relative class passed
|
||||
|
||||
@@ -11,7 +11,7 @@ http {
|
||||
|
||||
set_real_ip_from 0.0.0.0/0;
|
||||
real_ip_recursive on;
|
||||
real_ip_header X-Forward-For;
|
||||
real_ip_header X-Forwarded-For;
|
||||
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
|
||||
|
||||
access_log /dev/stdout;
|
||||
|
||||
@@ -59,6 +59,7 @@ export class ProfileStore implements IProfileStore {
|
||||
updated_at: "",
|
||||
language: "",
|
||||
start_of_the_week: EStartOfTheWeek.SUNDAY,
|
||||
comment_submit_shortcut: "enter",
|
||||
};
|
||||
|
||||
// services
|
||||
|
||||
@@ -108,7 +108,7 @@ const CreatedVsResolved = observer(function CreatedVsResolved() {
|
||||
}}
|
||||
yAxis={{
|
||||
key: "count",
|
||||
label: t("common.no_of", { entity: isEpic ? t("epics") : t("work_items") }),
|
||||
label: t("common.no_of", { entity: isEpic ? t("common.epics") : t("work_items") }),
|
||||
offset: -60,
|
||||
dx: -24,
|
||||
}}
|
||||
|
||||
@@ -11,9 +11,11 @@ import type { EditorRefApi } from "@plane/editor";
|
||||
import { CheckIcon, CloseIcon } from "@plane/propel/icons";
|
||||
// plane imports
|
||||
import type { TCommentsOperations, TIssueComment } from "@plane/types";
|
||||
import { cn, isCommentEmpty } from "@plane/utils";
|
||||
import { cn, isCommentEmpty, isCommentSubmissionValid } from "@plane/utils";
|
||||
// components
|
||||
import { LiteTextEditor } from "@/components/editor/lite-text";
|
||||
// hooks
|
||||
import { useUserProfile } from "@/hooks/store/user";
|
||||
|
||||
type Props = {
|
||||
activityOperations: TCommentsOperations;
|
||||
@@ -39,6 +41,10 @@ export const CommentCardEditForm = observer(function CommentCardEditForm(props:
|
||||
} = props;
|
||||
// refs
|
||||
const editorRef = useRef<EditorRefApi>(null);
|
||||
// store hooks
|
||||
const {
|
||||
data: { comment_submit_shortcut },
|
||||
} = useUserProfile();
|
||||
// form info
|
||||
const {
|
||||
formState: { isSubmitting },
|
||||
@@ -77,7 +83,16 @@ export const CommentCardEditForm = observer(function CommentCardEditForm(props:
|
||||
<form className="flex flex-col gap-2">
|
||||
<div
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Enter" && !e.shiftKey && !e.ctrlKey && !e.metaKey && !isEmpty) handleSubmit(onEnter)(e);
|
||||
if (
|
||||
isCommentSubmissionValid({
|
||||
e,
|
||||
shortcut: comment_submit_shortcut,
|
||||
isEmpty,
|
||||
isSubmitting,
|
||||
isEditorReadyToDiscard: !!editorRef.current?.isEditorReadyToDiscard(),
|
||||
})
|
||||
)
|
||||
handleSubmit(onEnter)(e);
|
||||
}}
|
||||
>
|
||||
<LiteTextEditor
|
||||
|
||||
@@ -11,10 +11,11 @@ import { useForm, Controller } from "react-hook-form";
|
||||
import { EIssueCommentAccessSpecifier } from "@plane/constants";
|
||||
import type { EditorRefApi } from "@plane/editor";
|
||||
import type { TIssueComment, TCommentsOperations } from "@plane/types";
|
||||
import { cn, isCommentEmpty } from "@plane/utils";
|
||||
import { cn, isCommentEmpty, isCommentSubmissionValid } from "@plane/utils";
|
||||
// components
|
||||
import { LiteTextEditor } from "@/components/editor/lite-text";
|
||||
// hooks
|
||||
import { useUserProfile } from "@/hooks/store/user";
|
||||
import { useWorkspace } from "@/hooks/store/use-workspace";
|
||||
// services
|
||||
import { FileService } from "@/services/file.service";
|
||||
@@ -46,6 +47,9 @@ export const CommentCreate = observer(function CommentCreate(props: TCommentCrea
|
||||
const editorRef = useRef<EditorRefApi>(null);
|
||||
// store hooks
|
||||
const workspaceStore = useWorkspace();
|
||||
const {
|
||||
data: { comment_submit_shortcut },
|
||||
} = useUserProfile();
|
||||
// derived values
|
||||
const workspaceId = workspaceStore.getWorkspaceBySlug(workspaceSlug)?.id as string;
|
||||
// form info
|
||||
@@ -95,13 +99,13 @@ export const CommentCreate = observer(function CommentCreate(props: TCommentCrea
|
||||
className={cn("sticky bottom-0 z-[4] bg-surface-1 sm:static")}
|
||||
onKeyDown={(e) => {
|
||||
if (
|
||||
e.key === "Enter" &&
|
||||
!e.shiftKey &&
|
||||
!e.ctrlKey &&
|
||||
!e.metaKey &&
|
||||
!isEmpty &&
|
||||
!isSubmitting &&
|
||||
editorRef.current?.isEditorReadyToDiscard()
|
||||
isCommentSubmissionValid({
|
||||
e,
|
||||
shortcut: comment_submit_shortcut,
|
||||
isEmpty,
|
||||
isSubmitting,
|
||||
isEditorReadyToDiscard: !!editorRef.current?.isEditorReadyToDiscard(),
|
||||
})
|
||||
)
|
||||
handleSubmit(onSubmit)(e);
|
||||
}}
|
||||
|
||||
@@ -61,8 +61,8 @@ export const ChangeEmailModal = observer(function ChangeEmailModal(props: Props)
|
||||
await signOut().catch(() =>
|
||||
setToast({
|
||||
type: TOAST_TYPE.ERROR,
|
||||
title: t("sign_out.toast.error.title"),
|
||||
message: t("sign_out.toast.error.message"),
|
||||
title: t("auth.sign_out.toast.error.title"),
|
||||
message: t("auth.sign_out.toast.error.message"),
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -117,7 +117,7 @@ export const CustomThemeSelector = observer(function CustomThemeSelector() {
|
||||
<div className="mt-5 flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
|
||||
{/* Save Theme Button */}
|
||||
<Button variant="primary" size="lg" type="submit" loading={isSubmitting || isLoadingPalette}>
|
||||
{isSubmitting ? t("creating_theme") : isLoadingPalette ? "Generating" : t("set_theme")}
|
||||
{isSubmitting ? t("common.saving") : isLoadingPalette ? "Generating" : t("set_theme")}
|
||||
</Button>
|
||||
{/* Import/Export Section */}
|
||||
<CustomThemeDownloadConfigButton getValues={getValues} />
|
||||
|
||||
@@ -19,6 +19,7 @@ import { IssueCommentToolbar } from "@/components/editor/lite-text/toolbar";
|
||||
// hooks
|
||||
import { useEditorConfig, useEditorMention } from "@/hooks/editor";
|
||||
import { useMember } from "@/hooks/store/use-member";
|
||||
import { useUserProfile } from "@/hooks/store/user";
|
||||
import { useParseEditorContent } from "@/hooks/use-parse-editor-content";
|
||||
// plane web hooks
|
||||
import { useEditorFlagging } from "@/plane-web/hooks/use-editor-flagging";
|
||||
@@ -95,6 +96,9 @@ export const LiteTextEditor = React.forwardRef(function LiteTextEditor(
|
||||
});
|
||||
// store hooks
|
||||
const { getUserDetails } = useMember();
|
||||
const {
|
||||
data: { comment_submit_shortcut },
|
||||
} = useUserProfile();
|
||||
// parse content
|
||||
const { getEditorMetaData } = useParseEditorContent({
|
||||
projectId,
|
||||
@@ -168,6 +172,7 @@ export const LiteTextEditor = React.forwardRef(function LiteTextEditor(
|
||||
"p-2": !editable,
|
||||
})}
|
||||
extendedEditorProps={{}}
|
||||
submitShortcut={comment_submit_shortcut}
|
||||
editorClassName={editorClassName}
|
||||
{...rest}
|
||||
/>
|
||||
|
||||
@@ -100,7 +100,7 @@ export const IssueDetailQuickActions = observer(function IssueDetailQuickActions
|
||||
router.push(redirectionPath);
|
||||
} catch (_error) {
|
||||
setToast({
|
||||
title: t("toast.error "),
|
||||
title: t("toast.error"),
|
||||
type: TOAST_TYPE.ERROR,
|
||||
message: t("entity.delete.failed", { entity: t("issue.label", { count: 1 }) }),
|
||||
});
|
||||
|
||||
@@ -127,7 +127,7 @@ export const ModuleAnalyticsProgress = observer(function ModuleAnalyticsProgress
|
||||
{isModuleDateValid ? (
|
||||
<div className="relative flex w-full items-center justify-between gap-2">
|
||||
<Disclosure.Button className="relative flex w-full items-center gap-2">
|
||||
<div className="text-13 font-medium text-secondary">{t("progress")}</div>
|
||||
<div className="text-13 font-medium text-secondary">{t("common.progress")}</div>
|
||||
{progressHeaderPercentage > 0 && (
|
||||
<div className="bg-amber-500/20 text-amber-500 flex h-5 w-9 items-center justify-center rounded-sm text-11 font-medium">{`${progressHeaderPercentage}%`}</div>
|
||||
)}
|
||||
|
||||
@@ -230,7 +230,7 @@ export const CustomizeNavigationDialog = observer(function CustomizeNavigationDi
|
||||
|
||||
{/* Workspace Section */}
|
||||
<div className="flex flex-col gap-2">
|
||||
<h3 className="text-13 font-semibold text-placeholder">{t("workspace")}</h3>
|
||||
<h3 className="text-13 font-semibold text-placeholder">{t("common.workspace")}</h3>
|
||||
<div className="rounded-md border border-subtle bg-surface-2 py-2">
|
||||
{/* Pinned Items - Draggable */}
|
||||
<Sortable
|
||||
|
||||
@@ -30,8 +30,8 @@ export const usePowerKAccountCommands = (): TPowerKCommandConfig[] => {
|
||||
signOut().catch(() =>
|
||||
setToast({
|
||||
type: TOAST_TYPE.ERROR,
|
||||
title: t("sign_out.toast.error.title"),
|
||||
message: t("sign_out.toast.error.message"),
|
||||
title: t("auth.sign_out.toast.error.title"),
|
||||
message: t("auth.sign_out.toast.error.message"),
|
||||
})
|
||||
);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
|
||||
@@ -54,7 +54,7 @@ export function ProfilePriorityDistribution({ userProfile }: Props) {
|
||||
]}
|
||||
xAxis={{
|
||||
key: "name",
|
||||
label: t("profile.stats.priority_distribution.priority"),
|
||||
label: t("common.priority"),
|
||||
}}
|
||||
yAxis={{
|
||||
key: "count",
|
||||
|
||||
@@ -98,7 +98,7 @@ export function ProjectAppliedFiltersList(props: Props) {
|
||||
{/* Applied display filters */}
|
||||
{appliedDisplayFilters.length > 0 && (
|
||||
<Tag key="project_display_filters">
|
||||
<span className="text-11 text-tertiary">{t("projects.label", { count: 2 })}</span>
|
||||
<span className="text-11 text-tertiary">{t("common.projects")}</span>
|
||||
<AppliedProjectDisplayFilters
|
||||
editable={isEditingAllowed}
|
||||
values={appliedDisplayFilters}
|
||||
|
||||
@@ -38,7 +38,7 @@ export const APITokensProfileSettings = observer(function APITokensProfileSettin
|
||||
<div className="size-full">
|
||||
<CreateApiTokenModal isOpen={isCreateTokenModalOpen} onClose={() => setIsCreateTokenModalOpen(false)} />
|
||||
<ProfileSettingsHeading
|
||||
title={t("account_settings.api_tokens.heading")}
|
||||
title={t("account_settings.api_tokens.title")}
|
||||
description={t("account_settings.api_tokens.description")}
|
||||
control={
|
||||
<Button variant="primary" size="lg" onClick={() => setIsCreateTokenModalOpen(true)}>
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import { observer } from "mobx-react";
|
||||
// plane imports
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
import type { CommentSubmitShortcut } from "@plane/types";
|
||||
import { CustomSelect } from "@plane/ui";
|
||||
import { getIsMac } from "@plane/utils";
|
||||
// components
|
||||
import { SettingsControlItem } from "@/components/settings/control-item";
|
||||
// hooks
|
||||
import { useUserProfile } from "@/hooks/store/user";
|
||||
|
||||
const isMac = getIsMac();
|
||||
|
||||
const COMMENT_SUBMIT_SHORTCUT_OPTIONS: { value: CommentSubmitShortcut; label: string }[] = [
|
||||
{ value: "enter", label: "Enter" },
|
||||
{ value: "mod_enter", label: isMac ? "⌘ + Enter" : "Ctrl + Enter" },
|
||||
];
|
||||
|
||||
export const CommentShortcutSelector = observer(function CommentShortcutSelector() {
|
||||
// store hooks
|
||||
const {
|
||||
data: { comment_submit_shortcut },
|
||||
updateUserProfile,
|
||||
} = useUserProfile();
|
||||
// derived values
|
||||
const selectedLabel = COMMENT_SUBMIT_SHORTCUT_OPTIONS.find((o) => o.value === comment_submit_shortcut)?.label;
|
||||
// translation
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<SettingsControlItem
|
||||
title={t("comment_submit_shortcut.label")}
|
||||
description={t("comment_submit_shortcut.description")}
|
||||
control={
|
||||
<CustomSelect
|
||||
value={comment_submit_shortcut}
|
||||
label={selectedLabel}
|
||||
onChange={(value: CommentSubmitShortcut) => {
|
||||
updateUserProfile({ comment_submit_shortcut: value });
|
||||
}}
|
||||
buttonClassName="border border-subtle-1"
|
||||
input
|
||||
placement="bottom-end"
|
||||
>
|
||||
{COMMENT_SUBMIT_SHORTCUT_OPTIONS.map((option) => (
|
||||
<CustomSelect.Option key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</CustomSelect.Option>
|
||||
))}
|
||||
</CustomSelect>
|
||||
}
|
||||
/>
|
||||
);
|
||||
});
|
||||
@@ -7,6 +7,8 @@
|
||||
import { observer } from "mobx-react";
|
||||
// components
|
||||
import { ThemeSwitcher } from "@/plane-web/components/preferences/theme-switcher";
|
||||
// local imports
|
||||
import { CommentShortcutSelector } from "./comment-shortcut-selector";
|
||||
|
||||
export const ProfileSettingsDefaultPreferencesList = observer(function ProfileSettingsDefaultPreferencesList() {
|
||||
return (
|
||||
@@ -18,6 +20,7 @@ export const ProfileSettingsDefaultPreferencesList = observer(function ProfileSe
|
||||
description: "select_or_customize_your_interface_color_scheme",
|
||||
}}
|
||||
/>
|
||||
<CommentShortcutSelector />
|
||||
</div>
|
||||
);
|
||||
});
|
||||
|
||||
@@ -99,15 +99,17 @@ export const SecurityProfileSettings = observer(function SecurityProfileSettings
|
||||
|
||||
setToast({
|
||||
type: TOAST_TYPE.ERROR,
|
||||
title: errorInfo?.title ?? t("auth.common.password.toast.error.title"),
|
||||
title: errorInfo?.title ?? t("auth.common.password.toast.change_password.error.title"),
|
||||
message:
|
||||
typeof errorInfo?.message === "string" ? errorInfo.message : t("auth.common.password.toast.error.message"),
|
||||
typeof errorInfo?.message === "string"
|
||||
? errorInfo.message
|
||||
: t("auth.common.password.toast.change_password.error.message"),
|
||||
});
|
||||
|
||||
if (code && passwordErrors.includes(code as EAuthenticationErrorCodes)) {
|
||||
setError("new_password", {
|
||||
type: "manual",
|
||||
message: errorInfo?.message?.toString() || t("auth.common.password.toast.error.message"),
|
||||
message: errorInfo?.message?.toString() || t("auth.common.password.toast.change_password.error.message"),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,11 @@ import { Activity, Bell, CircleUser, KeyRound, LockIcon, Settings2 } from "lucid
|
||||
import { observer } from "mobx-react";
|
||||
import { useParams } from "react-router";
|
||||
// plane imports
|
||||
import { GROUPED_PROFILE_SETTINGS, PROFILE_SETTINGS_CATEGORIES } from "@plane/constants";
|
||||
import {
|
||||
GROUPED_PROFILE_SETTINGS,
|
||||
PROFILE_SETTINGS_CATEGORIES,
|
||||
PROFILE_SETTINGS_CATEGORY_LABELS,
|
||||
} from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
import type { ISvgIcons } from "@plane/propel/icons";
|
||||
import type { TProfileSettingsTabs } from "@plane/types";
|
||||
@@ -50,7 +54,9 @@ export const ProfileSettingsSidebarItemCategories = observer(function ProfileSet
|
||||
|
||||
return (
|
||||
<div key={category} className="shrink-0">
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">{t(category)}</div>
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">
|
||||
{t(PROFILE_SETTINGS_CATEGORY_LABELS[category])}
|
||||
</div>
|
||||
<div className="flex flex-col">
|
||||
{categoryItems.map((item) => (
|
||||
<SettingsSidebarItem
|
||||
|
||||
@@ -22,7 +22,7 @@ export const ProfileSettingsSidebarWorkspaceOptions = observer(function ProfileS
|
||||
|
||||
return (
|
||||
<div className="shrink-0">
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">{t("workspace")}</div>
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">{t("common.workspace")}</div>
|
||||
<div className="flex flex-col">
|
||||
{Object.values(workspaces).map((workspace) => (
|
||||
<SettingsSidebarItem
|
||||
|
||||
@@ -8,7 +8,12 @@ import { observer } from "mobx-react";
|
||||
import { usePathname } from "next/navigation";
|
||||
import { useParams } from "react-router";
|
||||
// plane imports
|
||||
import { EUserPermissionsLevel, GROUPED_PROJECT_SETTINGS, PROJECT_SETTINGS_CATEGORIES } from "@plane/constants";
|
||||
import {
|
||||
EUserPermissionsLevel,
|
||||
GROUPED_PROJECT_SETTINGS,
|
||||
PROJECT_SETTINGS_CATEGORIES,
|
||||
PROJECT_SETTINGS_CATEGORY_LABELS,
|
||||
} from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
// components
|
||||
import { SettingsSidebarItem } from "@/components/settings/sidebar/item";
|
||||
@@ -45,7 +50,9 @@ export const ProjectSettingsSidebarItemCategories = observer(function ProjectSet
|
||||
|
||||
return (
|
||||
<div key={category} className="shrink-0 py-3 first:pt-0 last:pb-0">
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">{t(category)}</div>
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">
|
||||
{t(PROJECT_SETTINGS_CATEGORY_LABELS[category])}
|
||||
</div>
|
||||
<div className="flex flex-col">
|
||||
{accessibleItems.map((item) => {
|
||||
const isItemActive =
|
||||
|
||||
@@ -8,7 +8,12 @@ import { observer } from "mobx-react";
|
||||
import { usePathname } from "next/navigation";
|
||||
import { useParams } from "react-router";
|
||||
// plane imports
|
||||
import { EUserPermissionsLevel, GROUPED_WORKSPACE_SETTINGS, WORKSPACE_SETTINGS_CATEGORIES } from "@plane/constants";
|
||||
import {
|
||||
EUserPermissionsLevel,
|
||||
GROUPED_WORKSPACE_SETTINGS,
|
||||
WORKSPACE_SETTINGS_CATEGORIES,
|
||||
WORKSPACE_SETTINGS_CATEGORY_LABELS,
|
||||
} from "@plane/constants";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
import { joinUrlPath } from "@plane/utils";
|
||||
// components
|
||||
@@ -39,7 +44,9 @@ export const WorkspaceSettingsSidebarItemCategories = observer(function Workspac
|
||||
|
||||
return (
|
||||
<div key={category} className="shrink-0 py-3 first:pt-0 last:pb-0">
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">{t(category)}</div>
|
||||
<div className="p-2 text-caption-md-medium text-tertiary capitalize">
|
||||
{t(WORKSPACE_SETTINGS_CATEGORY_LABELS[category])}
|
||||
</div>
|
||||
<div className="flex flex-col">
|
||||
{accessibleItems.map((item) => {
|
||||
const isItemActive =
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ export const NotificationItemSnoozeOption = observer(function NotificationItemSn
|
||||
await unSnoozeNotification(workspaceSlug);
|
||||
setToast({
|
||||
title: `${t("common.success")}!`,
|
||||
message: t("notification.toasts.un_snoozed"),
|
||||
message: t("notification.toasts.unsnoozed"),
|
||||
type: TOAST_TYPE.SUCCESS,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
@@ -114,7 +114,7 @@ export const SidebarMenuItems = observer(function SidebarMenuItems() {
|
||||
: "aria_labels.app_sidebar.open_workspace_menu"
|
||||
)}
|
||||
>
|
||||
<span className="text-13 font-semibold">{t("workspace")}</span>
|
||||
<span className="text-13 font-semibold">{t("common.workspace")}</span>
|
||||
</Disclosure.Button>
|
||||
<div className="pointer-events-none flex items-center opacity-0 group-hover:pointer-events-auto group-hover:opacity-100">
|
||||
<Disclosure.Button
|
||||
|
||||
@@ -41,8 +41,8 @@ export const UserMenuRoot = observer(function UserMenuRoot() {
|
||||
signOut().catch(() =>
|
||||
setToast({
|
||||
type: TOAST_TYPE.ERROR,
|
||||
title: t("sign_out.toast.error.title"),
|
||||
message: t("sign_out.toast.error.message"),
|
||||
title: t("auth.sign_out.toast.error.title"),
|
||||
message: t("auth.sign_out.toast.error.message"),
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -52,7 +52,7 @@ export const SidebarWorkspaceMenuHeader = observer(function SidebarWorkspaceMenu
|
||||
className="sticky top-0 z-10 flex w-full flex-1 items-center justify-between gap-1 py-1.5 text-13 font-semibold text-placeholder"
|
||||
onClick={() => toggleWorkspaceMenu(!isWorkspaceMenuOpen)}
|
||||
>
|
||||
<span>{t("workspace")}</span>
|
||||
<span>{t("common.workspace")}</span>
|
||||
</Disclosure.Button>
|
||||
<CustomMenu
|
||||
customButton={
|
||||
|
||||
@@ -55,8 +55,8 @@ export const WorkspaceMenuRoot = observer(function WorkspaceMenuRoot(props: Work
|
||||
await signOut().catch(() =>
|
||||
setToast({
|
||||
type: TOAST_TYPE.ERROR,
|
||||
title: t("sign_out.toast.error.title"),
|
||||
message: t("sign_out.toast.error.message"),
|
||||
title: t("auth.sign_out.toast.error.title"),
|
||||
message: t("auth.sign_out.toast.error.message"),
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -9,8 +9,6 @@ import { useEffect, useRef } from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { useParams } from "next/navigation";
|
||||
import { useTheme } from "next-themes";
|
||||
import type { TLanguage } from "@plane/i18n";
|
||||
import { useTranslation } from "@plane/i18n";
|
||||
// helpers
|
||||
import { applyCustomTheme, clearCustomTheme } from "@plane/utils";
|
||||
// hooks
|
||||
@@ -32,8 +30,6 @@ function StoreWrapper(props: TStoreWrapper) {
|
||||
const { setQuery } = useRouterParams();
|
||||
const { sidebarCollapsed, toggleSidebar } = useAppTheme();
|
||||
const { data: userProfile } = useUserProfile();
|
||||
const { changeLanguage } = useTranslation();
|
||||
|
||||
// Track if we've initialized theme from server (one-time only)
|
||||
const hasInitializedThemeRef = useRef(false);
|
||||
// Track current user to reset on logout/login
|
||||
@@ -107,11 +103,6 @@ function StoreWrapper(props: TStoreWrapper) {
|
||||
previousThemeRef.current = currentTheme;
|
||||
}, [userProfile?.theme]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!userProfile?.language) return;
|
||||
changeLanguage(userProfile?.language as TLanguage);
|
||||
}, [userProfile?.language, changeLanguage]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!params) return;
|
||||
setQuery(params);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
import { enableStaticRendering } from "mobx-react";
|
||||
// plane imports
|
||||
import { FALLBACK_LANGUAGE, LANGUAGE_STORAGE_KEY } from "@plane/i18n";
|
||||
import { FALLBACK_LANGUAGE, setLanguage } from "@plane/i18n";
|
||||
import type { IWorkItemFilterStore } from "@plane/shared-state";
|
||||
import { WorkItemFilterStore } from "@plane/shared-state";
|
||||
// plane web store
|
||||
@@ -137,7 +137,7 @@ export class CoreRootStore {
|
||||
resetOnSignOut() {
|
||||
// handling the system theme when user logged out from the app
|
||||
localStorage.setItem("theme", "system");
|
||||
localStorage.setItem(LANGUAGE_STORAGE_KEY, FALLBACK_LANGUAGE);
|
||||
void setLanguage(FALLBACK_LANGUAGE);
|
||||
this.router = new RouterStore();
|
||||
this.commandPalette = new CommandPaletteStore();
|
||||
this.instance = new InstanceStore();
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
|
||||
import { cloneDeep, set } from "lodash-es";
|
||||
import { action, makeObservable, observable, runInAction } from "mobx";
|
||||
// plane imports
|
||||
import { setLanguage } from "@plane/i18n";
|
||||
import type { TLanguage } from "@plane/i18n";
|
||||
// types
|
||||
import type { IUserTheme, TUserProfile } from "@plane/types";
|
||||
import { EStartOfTheWeek } from "@plane/types";
|
||||
@@ -63,6 +66,7 @@ export class ProfileStore implements IUserProfileStore {
|
||||
updated_at: "",
|
||||
language: "",
|
||||
start_of_the_week: EStartOfTheWeek.SUNDAY,
|
||||
comment_submit_shortcut: "enter",
|
||||
};
|
||||
|
||||
// services
|
||||
@@ -108,6 +112,9 @@ export class ProfileStore implements IUserProfileStore {
|
||||
this.isLoading = false;
|
||||
this.data = userProfile;
|
||||
});
|
||||
if (userProfile.language) {
|
||||
void setLanguage(userProfile.language as TLanguage);
|
||||
}
|
||||
return userProfile;
|
||||
} catch (error) {
|
||||
runInAction(() => {
|
||||
@@ -132,6 +139,9 @@ export class ProfileStore implements IUserProfileStore {
|
||||
if (currentUserProfileData) {
|
||||
this.mutateUserProfile(data);
|
||||
}
|
||||
if (data.language) {
|
||||
void setLanguage(data.language as TLanguage);
|
||||
}
|
||||
const userProfile = await this.userService.updateCurrentUserProfile(data);
|
||||
return userProfile;
|
||||
} catch {
|
||||
|
||||
@@ -11,7 +11,7 @@ http {
|
||||
|
||||
set_real_ip_from 0.0.0.0/0;
|
||||
real_ip_recursive on;
|
||||
real_ip_header X-Forward-For;
|
||||
real_ip_header X-Forwarded-For;
|
||||
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
|
||||
|
||||
access_log /dev/stdout;
|
||||
|
||||
@@ -44,15 +44,12 @@
|
||||
"mdast-util-to-hast": "13.2.1",
|
||||
"valibot": "1.2.0",
|
||||
"glob": "11.1.0",
|
||||
"js-yaml": "4.1.1",
|
||||
"brace-expansion": "5.0.5",
|
||||
"nanoid": "3.3.8",
|
||||
"esbuild": "0.25.0",
|
||||
"@babel/helpers": "7.26.10",
|
||||
"@babel/runtime": "7.26.10",
|
||||
"chokidar": "3.6.0",
|
||||
"happy-dom": "20.0.2",
|
||||
"tar-fs": "3.0.9",
|
||||
"prosemirror-view": "1.40.0",
|
||||
"@types/express": "4.17.23",
|
||||
"typescript": "catalog:",
|
||||
@@ -61,7 +58,6 @@
|
||||
"diff": "5.2.2",
|
||||
"webpack": "5.104.1",
|
||||
"lodash-es": "catalog:",
|
||||
"@isaacs/brace-expansion": "5.0.1",
|
||||
"lodash": "4.18.1",
|
||||
"markdown-it": "14.1.1",
|
||||
"rollup": "4.59.0",
|
||||
|
||||
@@ -17,6 +17,11 @@ export const PROFILE_SETTINGS_CATEGORIES: PROFILE_SETTINGS_CATEGORY[] = [
|
||||
PROFILE_SETTINGS_CATEGORY.DEVELOPER,
|
||||
];
|
||||
|
||||
export const PROFILE_SETTINGS_CATEGORY_LABELS: Record<PROFILE_SETTINGS_CATEGORY, string> = {
|
||||
[PROFILE_SETTINGS_CATEGORY.YOUR_PROFILE]: "common.your_profile",
|
||||
[PROFILE_SETTINGS_CATEGORY.DEVELOPER]: "common.developer",
|
||||
};
|
||||
|
||||
export const PROFILE_SETTINGS: Record<
|
||||
TProfileSettingsTabs,
|
||||
{
|
||||
|
||||
@@ -22,6 +22,13 @@ export const PROJECT_SETTINGS_CATEGORIES: PROJECT_SETTINGS_CATEGORY[] = [
|
||||
PROJECT_SETTINGS_CATEGORY.EXECUTION,
|
||||
];
|
||||
|
||||
export const PROJECT_SETTINGS_CATEGORY_LABELS: Record<PROJECT_SETTINGS_CATEGORY, string> = {
|
||||
[PROJECT_SETTINGS_CATEGORY.GENERAL]: "common.general",
|
||||
[PROJECT_SETTINGS_CATEGORY.FEATURES]: "common.features",
|
||||
[PROJECT_SETTINGS_CATEGORY.WORK_STRUCTURE]: "common.work_structure",
|
||||
[PROJECT_SETTINGS_CATEGORY.EXECUTION]: "common.execution",
|
||||
};
|
||||
|
||||
export const PROJECT_SETTINGS: Record<TProjectSettingsTabs, TProjectSettingsItem> = {
|
||||
general: {
|
||||
key: "general",
|
||||
|
||||
@@ -20,6 +20,12 @@ export const WORKSPACE_SETTINGS_CATEGORIES: WORKSPACE_SETTINGS_CATEGORY[] = [
|
||||
WORKSPACE_SETTINGS_CATEGORY.DEVELOPER,
|
||||
];
|
||||
|
||||
export const WORKSPACE_SETTINGS_CATEGORY_LABELS: Record<WORKSPACE_SETTINGS_CATEGORY, string> = {
|
||||
[WORKSPACE_SETTINGS_CATEGORY.ADMINISTRATION]: "common.administration",
|
||||
[WORKSPACE_SETTINGS_CATEGORY.FEATURES]: "common.features",
|
||||
[WORKSPACE_SETTINGS_CATEGORY.DEVELOPER]: "common.developer",
|
||||
};
|
||||
|
||||
export const WORKSPACE_SETTINGS: Record<TWorkspaceSettingsTabs, TWorkspaceSettingsItem> = {
|
||||
general: {
|
||||
key: "general",
|
||||
|
||||
@@ -13,17 +13,17 @@ import { EnterKeyExtension } from "@/extensions";
|
||||
import type { EditorRefApi, ILiteTextEditorProps } from "@/types";
|
||||
|
||||
function LiteTextEditor(props: ILiteTextEditorProps) {
|
||||
const { onEnterKeyPress, disabledExtensions, extensions: externalExtensions = [] } = props;
|
||||
const { onEnterKeyPress, submitShortcut, disabledExtensions, extensions: externalExtensions = [] } = props;
|
||||
|
||||
const extensions = useMemo(() => {
|
||||
const resolvedExtensions = [...externalExtensions];
|
||||
|
||||
if (!disabledExtensions?.includes("enter-key")) {
|
||||
resolvedExtensions.push(EnterKeyExtension(onEnterKeyPress));
|
||||
resolvedExtensions.push(EnterKeyExtension({ onEnterKeyPress, submitShortcut }));
|
||||
}
|
||||
|
||||
return resolvedExtensions;
|
||||
}, [externalExtensions, disabledExtensions, onEnterKeyPress]);
|
||||
}, [externalExtensions, disabledExtensions, onEnterKeyPress, submitShortcut]);
|
||||
|
||||
return <EditorWrapper {...props} extensions={extensions} />;
|
||||
}
|
||||
|
||||
@@ -4,35 +4,61 @@
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import type { Editor } from "@tiptap/core";
|
||||
import { Extension } from "@tiptap/core";
|
||||
// plane imports
|
||||
import type { CommentSubmitShortcut } from "@plane/types";
|
||||
// constants
|
||||
import { CORE_EXTENSIONS } from "@/constants/extension";
|
||||
|
||||
export const EnterKeyExtension = (onEnterKeyPress?: () => void) =>
|
||||
Extension.create({
|
||||
type EnterKeyExtensionArgs = {
|
||||
onEnterKeyPress?: () => void;
|
||||
submitShortcut?: CommentSubmitShortcut;
|
||||
};
|
||||
|
||||
export const EnterKeyExtension = ({ onEnterKeyPress, submitShortcut = "enter" }: EnterKeyExtensionArgs) => {
|
||||
const newLine = ({ editor }: { editor: Editor }) =>
|
||||
editor.commands.first(({ commands }) => [
|
||||
() => commands.newlineInCode(),
|
||||
() => commands.splitListItem(CORE_EXTENSIONS.LIST_ITEM),
|
||||
() => commands.splitListItem(CORE_EXTENSIONS.TASK_ITEM),
|
||||
() => commands.createParagraphNear(),
|
||||
() => commands.liftEmptyBlock(),
|
||||
() => commands.splitBlock(),
|
||||
]);
|
||||
|
||||
const submit = (editor: Editor) => {
|
||||
const activeDropbarExtensions = editor.storage.utility?.activeDropbarExtensions ?? [];
|
||||
if (activeDropbarExtensions.length === 0) {
|
||||
onEnterKeyPress?.();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
return Extension.create({
|
||||
name: CORE_EXTENSIONS.ENTER_KEY,
|
||||
|
||||
addKeyboardShortcuts(this) {
|
||||
return {
|
||||
Enter: () => {
|
||||
const { activeDropbarExtensions } = this.editor.storage.utility;
|
||||
|
||||
if (activeDropbarExtensions.length === 0) {
|
||||
onEnterKeyPress?.();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
"Shift-Enter": ({ editor }) =>
|
||||
editor.commands.first(({ commands }) => [
|
||||
() => commands.newlineInCode(),
|
||||
() => commands.splitListItem(CORE_EXTENSIONS.LIST_ITEM),
|
||||
() => commands.splitListItem(CORE_EXTENSIONS.TASK_ITEM),
|
||||
() => commands.createParagraphNear(),
|
||||
() => commands.liftEmptyBlock(),
|
||||
() => commands.splitBlock(),
|
||||
]),
|
||||
};
|
||||
if (submitShortcut === "enter") {
|
||||
return {
|
||||
// Shift+Enter always inserts a new line (its default behavior)
|
||||
"Shift-Enter": newLine,
|
||||
// Enter submits
|
||||
Enter: () => submit(this.editor),
|
||||
// Mod+Enter always inserts a line-break (its default behavior)
|
||||
"Mod-Enter": () => false,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
// Shift+Enter always inserts a line-break (its default behavior)
|
||||
"Shift-Enter": () => false,
|
||||
// Enter always inserts a new line (its default behavior)
|
||||
Enter: () => false,
|
||||
// Mod+Enter submits
|
||||
"Mod-Enter": () => submit(this.editor),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -10,6 +10,7 @@ import type { Selection } from "@tiptap/pm/state";
|
||||
import type { EditorProps, EditorView } from "@tiptap/pm/view";
|
||||
import type { NodeViewProps as TNodeViewProps } from "@tiptap/react";
|
||||
// plane imports
|
||||
import type { CommentSubmitShortcut } from "@plane/types";
|
||||
import type { TCustomComponentsMetaData } from "@plane/utils";
|
||||
// extension types
|
||||
import type { TTextAlign } from "@/extensions";
|
||||
@@ -184,7 +185,9 @@ export type IEditorProps = {
|
||||
workItemIdentifier?: string | null;
|
||||
};
|
||||
|
||||
export type ILiteTextEditorProps = IEditorProps;
|
||||
export type ILiteTextEditorProps = IEditorProps & {
|
||||
submitShortcut?: CommentSubmitShortcut;
|
||||
};
|
||||
|
||||
export type IRichTextEditorProps = IEditorProps & {
|
||||
dragDropEnabled?: boolean;
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
src/locales
|
||||
+12
-10
@@ -14,28 +14,30 @@
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "tsdown --watch --no-clean",
|
||||
"build": "tsdown",
|
||||
"check:lint": "oxlint --max-warnings=2 .",
|
||||
"check:types": "tsc --noEmit",
|
||||
"build": "pnpm run generate:types && tsdown",
|
||||
"generate:types": "tsx scripts/generate-types.ts",
|
||||
"sync:check": "tsx scripts/sync-check.ts",
|
||||
"check:sync": "tsx scripts/sync-check.ts --ci",
|
||||
"check:lint": "oxlint --max-warnings=9 .",
|
||||
"check:types": "pnpm run generate:types && tsc --noEmit",
|
||||
"check:format": "oxfmt --check .",
|
||||
"fix:lint": "oxlint --fix .",
|
||||
"fix:format": "oxfmt .",
|
||||
"clean": "rm -rf .turbo && rm -rf .next && rm -rf node_modules && rm -rf dist"
|
||||
},
|
||||
"dependencies": {
|
||||
"@plane/utils": "workspace:*",
|
||||
"intl-messageformat": "^10.7.11",
|
||||
"lodash-es": "catalog:",
|
||||
"mobx": "catalog:",
|
||||
"mobx-react": "catalog:",
|
||||
"react": "catalog:"
|
||||
"i18next": "catalog:",
|
||||
"i18next-icu": "catalog:",
|
||||
"i18next-resources-to-backend": "catalog:",
|
||||
"react": "catalog:",
|
||||
"react-i18next": "catalog:"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@plane/typescript-config": "workspace:*",
|
||||
"@types/lodash-es": "catalog:",
|
||||
"@types/node": "catalog:",
|
||||
"@types/react": "catalog:",
|
||||
"tsdown": "catalog:",
|
||||
"tsx": "catalog:",
|
||||
"typescript": "catalog:"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
// Usage: npx tsx packages/i18n/scripts/generate-types.ts
|
||||
// Reads: src/locales/en/*.json
|
||||
// Writes: src/types/keys.generated.ts
|
||||
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
const COPYRIGHT_HEADER = `/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/`;
|
||||
|
||||
type NestedObject = { [key: string]: string | NestedObject };
|
||||
|
||||
/**
|
||||
* Recursively flatten a nested object into dot-notated keys.
|
||||
* Returns an array of flattened key strings.
|
||||
*/
|
||||
function flattenKeys(obj: NestedObject, prefix = ""): string[] {
|
||||
const keys: string[] = [];
|
||||
|
||||
for (const [key, value] of Object.entries(obj)) {
|
||||
const fullKey = prefix ? `${prefix}.${key}` : key;
|
||||
|
||||
if (typeof value === "string") {
|
||||
keys.push(fullKey);
|
||||
} else if (typeof value === "object" && value !== null) {
|
||||
keys.push(...flattenKeys(value as NestedObject, fullKey));
|
||||
}
|
||||
}
|
||||
|
||||
return keys;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect path conflicts where a key is both a leaf (string value) and a prefix
|
||||
* of another key. For example, "workspace" as a leaf and "workspace.settings" as
|
||||
* another key would be a conflict.
|
||||
*/
|
||||
function detectPathConflicts(keys: string[]): string[] {
|
||||
// Build a set of all prefixes used across keys
|
||||
const prefixes = new Set<string>();
|
||||
for (const key of keys) {
|
||||
const parts = key.split(".");
|
||||
for (let i = 1; i < parts.length; i++) {
|
||||
prefixes.add(parts.slice(0, i).join("."));
|
||||
}
|
||||
}
|
||||
|
||||
// A conflict exists when a leaf key is also a prefix
|
||||
const conflicts: string[] = [];
|
||||
for (const key of keys) {
|
||||
if (prefixes.has(key)) {
|
||||
const extending = keys.find((k) => k.startsWith(key + "."));
|
||||
if (extending) {
|
||||
conflicts.push(`Path conflict: "${key}" is both a leaf key and a prefix of "${extending}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return conflicts;
|
||||
}
|
||||
|
||||
function main(): void {
|
||||
const rootDir = import.meta.dirname;
|
||||
const localesDir = path.resolve(rootDir, "..", "src", "locales", "en");
|
||||
const outputDir = path.resolve(rootDir, "..", "src", "types");
|
||||
const outputFile = path.join(outputDir, "keys.generated.ts");
|
||||
|
||||
// Read all JSON files from the English locales directory
|
||||
if (!fs.existsSync(localesDir)) {
|
||||
console.error(`Error: Locales directory not found: ${localesDir}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const jsonFiles = fs
|
||||
.readdirSync(localesDir)
|
||||
.filter((file) => file.endsWith(".json"))
|
||||
.sort();
|
||||
|
||||
if (jsonFiles.length === 0) {
|
||||
console.error(`Error: No JSON files found in ${localesDir}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Track keys per namespace file for collision detection
|
||||
const keysByFile = new Map<string, string[]>();
|
||||
const allKeys = new Set<string>();
|
||||
const collisions: string[] = [];
|
||||
|
||||
for (const file of jsonFiles) {
|
||||
const filePath = path.join(localesDir, file);
|
||||
const content = fs.readFileSync(filePath, "utf-8");
|
||||
const parsed = (() => {
|
||||
try {
|
||||
return JSON.parse(content) as NestedObject;
|
||||
} catch {
|
||||
console.error(`Error: Failed to parse JSON in ${file}`);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
|
||||
const fileKeys = flattenKeys(parsed);
|
||||
keysByFile.set(file, fileKeys);
|
||||
|
||||
// Detect cross-namespace collisions
|
||||
for (const key of fileKeys) {
|
||||
if (allKeys.has(key)) {
|
||||
// Find which file already had this key
|
||||
for (const [otherFile, otherKeys] of keysByFile.entries()) {
|
||||
if (otherFile !== file && otherKeys.includes(key)) {
|
||||
collisions.push(`Cross-namespace collision: key "${key}" exists in both "${otherFile}" and "${file}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
allKeys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
if (collisions.length > 0) {
|
||||
console.error("Error: Cross-namespace key collisions detected:");
|
||||
for (const collision of collisions) {
|
||||
console.error(` ${collision}`);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Detect path conflicts
|
||||
const sortedKeys = [...allKeys].sort();
|
||||
const pathConflicts = detectPathConflicts(sortedKeys);
|
||||
|
||||
if (pathConflicts.length > 0) {
|
||||
console.error("Error: Path conflicts detected:");
|
||||
for (const conflict of pathConflicts) {
|
||||
console.error(` ${conflict}`);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Ensure output directory exists
|
||||
if (!fs.existsSync(outputDir)) {
|
||||
fs.mkdirSync(outputDir, { recursive: true });
|
||||
}
|
||||
|
||||
// Generate the output file
|
||||
const keyLines = sortedKeys.map((key) => ` | "${key}"`).join("\n");
|
||||
const output = `${COPYRIGHT_HEADER}
|
||||
|
||||
// AUTO-GENERATED — DO NOT EDIT
|
||||
// Generated from ${jsonFiles.length} English namespace files (${sortedKeys.length} keys)
|
||||
// Run: pnpm run generate:types
|
||||
|
||||
export type TTranslationKeys =
|
||||
${keyLines}
|
||||
;
|
||||
`;
|
||||
|
||||
fs.writeFileSync(outputFile, output, "utf-8");
|
||||
|
||||
console.log(`Generated ${sortedKeys.length} keys from ${jsonFiles.length} namespace files`);
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
export const LOCALES_DIR = path.resolve(import.meta.dirname, "../../src/locales");
|
||||
|
||||
/** Recursively flatten an object into dot-notation keys. */
|
||||
export function flattenKeys(obj: Record<string, unknown>, prefix = ""): string[] {
|
||||
const keys: string[] = [];
|
||||
for (const [k, v] of Object.entries(obj)) {
|
||||
const full = prefix ? `${prefix}.${k}` : k;
|
||||
if (v !== null && typeof v === "object" && !Array.isArray(v)) {
|
||||
keys.push(...flattenKeys(v as Record<string, unknown>, full));
|
||||
} else {
|
||||
keys.push(full);
|
||||
}
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
||||
/** Parse JSON from a file, including the file path in any error message. */
|
||||
export function readJsonFile(filePath: string): Record<string, unknown> {
|
||||
const raw = fs.readFileSync(filePath, "utf-8");
|
||||
try {
|
||||
return JSON.parse(raw) as Record<string, unknown>;
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : String(err);
|
||||
throw new Error(`Failed to parse JSON at ${filePath}: ${message}`, { cause: err });
|
||||
}
|
||||
}
|
||||
|
||||
export interface NamespaceData {
|
||||
name: string; // file stem, e.g. "common"
|
||||
keys: Set<string>;
|
||||
data: Record<string, unknown>; // original parsed object
|
||||
}
|
||||
|
||||
export interface LocaleData {
|
||||
locale: string;
|
||||
namespaces: NamespaceData[];
|
||||
allKeys: Set<string>;
|
||||
}
|
||||
|
||||
export function listLocales(): string[] {
|
||||
const entries = fs.readdirSync(LOCALES_DIR, { withFileTypes: true });
|
||||
return entries
|
||||
.filter((e) => e.isDirectory())
|
||||
.map((e) => e.name)
|
||||
.toSorted();
|
||||
}
|
||||
|
||||
export function loadLocale(locale: string): LocaleData {
|
||||
const localeDir = path.join(LOCALES_DIR, locale);
|
||||
const files = fs.readdirSync(localeDir).filter((f) => f.endsWith(".json"));
|
||||
|
||||
const namespaces: NamespaceData[] = [];
|
||||
const allKeys = new Set<string>();
|
||||
|
||||
for (const file of files) {
|
||||
const filePath = path.join(localeDir, file);
|
||||
const data = readJsonFile(filePath);
|
||||
const name = path.basename(file, ".json");
|
||||
const keys = flattenKeys(data);
|
||||
const keySet = new Set(keys);
|
||||
namespaces.push({ name, keys: keySet, data });
|
||||
for (const key of keys) {
|
||||
allKeys.add(key);
|
||||
}
|
||||
}
|
||||
|
||||
return { locale, namespaces, allKeys };
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
// Usage:
|
||||
// tsx packages/i18n/scripts/sync-check.ts # Report only
|
||||
// tsx packages/i18n/scripts/sync-check.ts --ci # Exit 1 if issues found
|
||||
|
||||
import type { LocaleData } from "./lib/locale-io.js";
|
||||
import { LOCALES_DIR, listLocales, loadLocale } from "./lib/locale-io.js";
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Helpers
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** Format a number with commas (e.g. 7712 -> "7,712"). */
|
||||
function fmt(n: number): string {
|
||||
return n.toLocaleString("en-US");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Checks
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
interface CollisionEntry {
|
||||
key: string;
|
||||
files: string[];
|
||||
}
|
||||
|
||||
/** Cross-namespace collision check: same flattened key in multiple namespace files. */
|
||||
function findCollisions(localeData: LocaleData): CollisionEntry[] {
|
||||
const keyToFiles = new Map<string, string[]>();
|
||||
for (const ns of localeData.namespaces) {
|
||||
for (const key of ns.keys) {
|
||||
const existing = keyToFiles.get(key);
|
||||
if (existing) {
|
||||
existing.push(`${ns.name}.json`);
|
||||
} else {
|
||||
keyToFiles.set(key, [`${ns.name}.json`]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const collisions: CollisionEntry[] = [];
|
||||
for (const [key, files] of keyToFiles) {
|
||||
if (files.length > 1) {
|
||||
collisions.push({ key, files });
|
||||
}
|
||||
}
|
||||
return collisions.toSorted((a, b) => a.key.localeCompare(b.key));
|
||||
}
|
||||
|
||||
interface PathConflict {
|
||||
leaf: string;
|
||||
branch: string;
|
||||
}
|
||||
|
||||
/** Path conflict check: a key is both a leaf AND a prefix of another key. */
|
||||
function findPathConflicts(localeData: LocaleData): PathConflict[] {
|
||||
const allKeysArray = [...localeData.allKeys].toSorted();
|
||||
const conflicts: PathConflict[] = [];
|
||||
|
||||
// Build a set of all prefixes used in the keys
|
||||
const prefixes = new Set<string>();
|
||||
for (const key of allKeysArray) {
|
||||
const parts = key.split(".");
|
||||
for (let i = 1; i < parts.length; i++) {
|
||||
prefixes.add(parts.slice(0, i).join("."));
|
||||
}
|
||||
}
|
||||
|
||||
// A conflict exists when a leaf key is also a prefix
|
||||
for (const key of allKeysArray) {
|
||||
if (prefixes.has(key)) {
|
||||
// Find one example of a key that extends this prefix
|
||||
const extending = allKeysArray.find((k) => k.startsWith(key + "."));
|
||||
if (extending) {
|
||||
conflicts.push({ leaf: key, branch: extending });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return conflicts;
|
||||
}
|
||||
|
||||
interface LocaleComparison {
|
||||
locale: string;
|
||||
totalKeys: number;
|
||||
missingKeys: string[];
|
||||
staleKeys: string[];
|
||||
coverage: number; // 0-100
|
||||
}
|
||||
|
||||
function compareToEnglish(enKeys: Set<string>, other: LocaleData): LocaleComparison {
|
||||
const missingKeys: string[] = [];
|
||||
const staleKeys: string[] = [];
|
||||
|
||||
for (const key of enKeys) {
|
||||
if (!other.allKeys.has(key)) {
|
||||
missingKeys.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
for (const key of other.allKeys) {
|
||||
if (!enKeys.has(key)) {
|
||||
staleKeys.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
const coverage = enKeys.size > 0 ? ((enKeys.size - missingKeys.length) / enKeys.size) * 100 : 100;
|
||||
|
||||
return {
|
||||
locale: other.locale,
|
||||
totalKeys: other.allKeys.size,
|
||||
missingKeys: missingKeys.toSorted(),
|
||||
staleKeys: staleKeys.toSorted(),
|
||||
coverage,
|
||||
};
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Main
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function main() {
|
||||
const ciMode = process.argv.includes("--ci");
|
||||
|
||||
// Discover all locale directories
|
||||
const localeDirs = listLocales();
|
||||
|
||||
if (!localeDirs.includes("en")) {
|
||||
console.error("ERROR: English locale (en) not found in", LOCALES_DIR);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Load all locales
|
||||
const localeDataMap = new Map<string, LocaleData>();
|
||||
for (const locale of localeDirs) {
|
||||
localeDataMap.set(locale, loadLocale(locale));
|
||||
}
|
||||
|
||||
const enData = localeDataMap.get("en")!;
|
||||
|
||||
// Run checks
|
||||
const collisions = findCollisions(enData);
|
||||
const pathConflicts = findPathConflicts(enData);
|
||||
|
||||
const comparisons: LocaleComparison[] = [];
|
||||
for (const locale of localeDirs) {
|
||||
if (locale === "en") continue;
|
||||
comparisons.push(compareToEnglish(enData.allKeys, localeDataMap.get(locale)!));
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Print report
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
let hasFailure = false;
|
||||
|
||||
console.log("\n=== Sync Check Results ===\n");
|
||||
console.log(` en: ${fmt(enData.allKeys.size)} keys (source)\n`);
|
||||
|
||||
for (const comp of comparisons) {
|
||||
const status = comp.missingKeys.length === 0 ? "✓" : "✗";
|
||||
const missingStr = comp.missingKeys.length > 0 ? ` — ${fmt(comp.missingKeys.length)} missing` : "";
|
||||
const staleStr = comp.staleKeys.length > 0 ? `, ${fmt(comp.staleKeys.length)} stale` : "";
|
||||
console.log(
|
||||
` ${status} ${comp.locale.padEnd(10)} ${fmt(comp.totalKeys)} keys (${comp.coverage.toFixed(1)}%)${missingStr}${staleStr}`
|
||||
);
|
||||
if (comp.missingKeys.length > 0) {
|
||||
hasFailure = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Cross-namespace collisions
|
||||
if (collisions.length > 0) {
|
||||
hasFailure = true;
|
||||
console.log("\nCROSS-NAMESPACE COLLISIONS:");
|
||||
for (const c of collisions) {
|
||||
console.log(` ✗ "${c.key}" exists in: ${c.files.join(", ")}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Path conflicts
|
||||
if (pathConflicts.length > 0) {
|
||||
hasFailure = true;
|
||||
console.log("\nPATH CONFLICTS:");
|
||||
for (const pc of pathConflicts) {
|
||||
console.log(` ✗ "${pc.leaf}" is a leaf but "${pc.branch}" extends it`);
|
||||
}
|
||||
}
|
||||
|
||||
// Missing keys detail
|
||||
const withMissing = comparisons.filter((c) => c.missingKeys.length > 0);
|
||||
if (withMissing.length > 0) {
|
||||
console.log("\n--- Missing Keys Detail ---\n");
|
||||
for (const comp of withMissing) {
|
||||
console.log(`${comp.locale} (${fmt(comp.missingKeys.length)} missing):`);
|
||||
const show = comp.missingKeys.slice(0, 20);
|
||||
for (const key of show) {
|
||||
console.log(` - ${key}`);
|
||||
}
|
||||
if (comp.missingKeys.length > 20) {
|
||||
console.log(` ... and ${fmt(comp.missingKeys.length - 20)} more`);
|
||||
}
|
||||
console.log();
|
||||
}
|
||||
}
|
||||
|
||||
// Stale keys detail
|
||||
const withStale = comparisons.filter((c) => c.staleKeys.length > 0);
|
||||
if (withStale.length > 0) {
|
||||
console.log("--- Stale Keys Detail ---\n");
|
||||
for (const comp of withStale) {
|
||||
console.log(`${comp.locale} (${fmt(comp.staleKeys.length)} stale):`);
|
||||
const show = comp.staleKeys.slice(0, 20);
|
||||
for (const key of show) {
|
||||
console.log(` - ${key}`);
|
||||
}
|
||||
if (comp.staleKeys.length > 20) {
|
||||
console.log(` ... and ${fmt(comp.staleKeys.length - 20)} more`);
|
||||
}
|
||||
console.log();
|
||||
}
|
||||
}
|
||||
|
||||
// CI exit code
|
||||
if (ciMode && hasFailure) {
|
||||
console.log("CI mode: exiting with code 1 due to missing keys, collisions, or path conflicts.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!hasFailure) {
|
||||
console.log("\nAll locales are in sync with English. No issues found.");
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
main();
|
||||
} catch (err) {
|
||||
console.error("Sync check failed:", err);
|
||||
process.exit(1);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"module": "Node16",
|
||||
"moduleResolution": "Node16",
|
||||
"esModuleInterop": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["."]
|
||||
}
|
||||
@@ -5,3 +5,4 @@
|
||||
*/
|
||||
|
||||
export * from "./language";
|
||||
export * from "./namespaces";
|
||||
|
||||
@@ -30,15 +30,4 @@ export const SUPPORTED_LANGUAGES: ILanguageOption[] = [
|
||||
{ label: "Türkçe", value: "tr-TR" },
|
||||
];
|
||||
|
||||
/**
|
||||
* Enum for translation file names
|
||||
* These are the JSON files that contain translations each category
|
||||
*/
|
||||
export enum ETranslationFiles {
|
||||
TRANSLATIONS = "translations",
|
||||
ACCESSIBILITY = "accessibility",
|
||||
EDITOR = "editor",
|
||||
EMPTY_STATE = "empty-state",
|
||||
}
|
||||
|
||||
export const LANGUAGE_STORAGE_KEY = "userLanguage";
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export const NAMESPACES = [
|
||||
"accessibility",
|
||||
"auth",
|
||||
"automation",
|
||||
"common",
|
||||
"cycle",
|
||||
"editor",
|
||||
"empty-state",
|
||||
"home",
|
||||
"inbox",
|
||||
"integration",
|
||||
"module",
|
||||
"navigation",
|
||||
"notification",
|
||||
"page",
|
||||
"power-k",
|
||||
"profile-preferences",
|
||||
"project",
|
||||
"project-settings",
|
||||
"settings",
|
||||
"stickies",
|
||||
"template",
|
||||
"tour",
|
||||
"update",
|
||||
"wiki",
|
||||
"work-item",
|
||||
"work-item-type",
|
||||
"workflow",
|
||||
"workspace",
|
||||
"workspace-settings",
|
||||
] as const;
|
||||
|
||||
export type TNamespace = (typeof NAMESPACES)[number];
|
||||
|
||||
export const DEFAULT_NAMESPACE: TNamespace = "common";
|
||||
@@ -1,25 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import { observer } from "mobx-react";
|
||||
import React, { createContext } from "react";
|
||||
// store
|
||||
import { TranslationStore } from "../store";
|
||||
|
||||
export const TranslationContext = createContext<TranslationStore | null>(null);
|
||||
|
||||
interface TranslationProviderProps {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides the translation store to the application
|
||||
*/
|
||||
export const TranslationProvider = observer(function TranslationProvider({ children }: TranslationProviderProps) {
|
||||
const [store] = React.useState(() => new TranslationStore());
|
||||
|
||||
return <TranslationContext.Provider value={store}>{children}</TranslationContext.Provider>;
|
||||
});
|
||||
@@ -4,4 +4,5 @@
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export default {} as const;
|
||||
export { i18nInstance, initPromise } from "./instance";
|
||||
export { setLanguage } from "./set-language";
|
||||
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import i18n from "i18next";
|
||||
import { initReactI18next } from "react-i18next";
|
||||
import ICU from "i18next-icu";
|
||||
import resourcesToBackend from "i18next-resources-to-backend";
|
||||
import { SUPPORTED_LANGUAGES, FALLBACK_LANGUAGE, LANGUAGE_STORAGE_KEY } from "../constants/language";
|
||||
import { NAMESPACES, DEFAULT_NAMESPACE } from "../constants/namespaces";
|
||||
|
||||
import type { i18n as I18nInstance } from "i18next";
|
||||
|
||||
export const i18nInstance: I18nInstance = i18n.createInstance();
|
||||
|
||||
i18nInstance
|
||||
.use(ICU)
|
||||
.use(initReactI18next)
|
||||
.use(resourcesToBackend((language: string, namespace: string) => import(`../locales/${language}/${namespace}.json`)));
|
||||
|
||||
const initialLng =
|
||||
typeof window !== "undefined" ? localStorage.getItem(LANGUAGE_STORAGE_KEY) || FALLBACK_LANGUAGE : FALLBACK_LANGUAGE;
|
||||
|
||||
export const initPromise = i18nInstance
|
||||
.init({
|
||||
lng: initialLng,
|
||||
fallbackLng: FALLBACK_LANGUAGE,
|
||||
supportedLngs: SUPPORTED_LANGUAGES.map((l) => l.value),
|
||||
ns: NAMESPACES,
|
||||
defaultNS: DEFAULT_NAMESPACE,
|
||||
// fallbackNS ensures all namespaces are searched for any key, so components
|
||||
// don't need to pass NAMESPACES to useTranslation (which triggers re-render cascades).
|
||||
fallbackNS: NAMESPACES.filter((ns) => ns !== DEFAULT_NAMESPACE),
|
||||
partialBundledLanguages: true,
|
||||
keySeparator: ".",
|
||||
nsSeparator: false,
|
||||
interpolation: { escapeValue: false },
|
||||
returnNull: false,
|
||||
returnEmptyString: false,
|
||||
// Pinned explicitly even though it's the default — i18next-icu intercepts the
|
||||
// format pipeline and returns raw objects regardless of this flag, so the runtime
|
||||
// guard in useTranslation is what actually prevents React crashes. Documenting
|
||||
// intent here so this isn't accidentally flipped.
|
||||
returnObjects: false,
|
||||
react: { useSuspense: false },
|
||||
})
|
||||
// Eagerly pre-load all namespaces for the initial language so they're cached
|
||||
// before any component renders. This prevents the re-render cascade that occurs
|
||||
// when react-i18next triggers concurrent async loads for unloaded namespaces.
|
||||
.then(() => i18nInstance.loadNamespaces(NAMESPACES));
|
||||
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import { initPromise, i18nInstance } from "./instance";
|
||||
import { LANGUAGE_STORAGE_KEY } from "../constants/language";
|
||||
import type { TLanguage } from "../types";
|
||||
|
||||
export async function setLanguage(lng: TLanguage): Promise<void> {
|
||||
await initPromise;
|
||||
await i18nInstance.changeLanguage(lng);
|
||||
if (typeof window !== "undefined") {
|
||||
localStorage.setItem(LANGUAGE_STORAGE_KEY, lng);
|
||||
document.documentElement.lang = lng;
|
||||
}
|
||||
}
|
||||
@@ -4,11 +4,10 @@
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
import { useContext } from "react";
|
||||
// context
|
||||
import { TranslationContext } from "../context";
|
||||
// types
|
||||
import type { ILanguageOption, TLanguage } from "../types";
|
||||
import { useCallback } from "react";
|
||||
import { useTranslation as useI18nextTranslation } from "react-i18next";
|
||||
import { SUPPORTED_LANGUAGES, LANGUAGE_STORAGE_KEY } from "../constants/language";
|
||||
import type { TLanguage, ILanguageOption } from "../types";
|
||||
|
||||
export type TTranslationStore = {
|
||||
t: (key: string, params?: Record<string, unknown>) => string;
|
||||
@@ -17,25 +16,53 @@ export type TTranslationStore = {
|
||||
languages: ILanguageOption[];
|
||||
};
|
||||
|
||||
/**
|
||||
* Provides the translation store to the application
|
||||
* @returns {TTranslationStore}
|
||||
* @returns {(key: string, params?: Record<string, any>) => string} t: method to translate the key with params
|
||||
* @returns {TLanguage} currentLocale - current locale language
|
||||
* @returns {(lng: TLanguage) => void} changeLanguage - method to change the language
|
||||
* @returns {ILanguageOption[]} languages - available languages
|
||||
* @throws {Error} if the TranslationProvider is not used
|
||||
*/
|
||||
export function useTranslation(): TTranslationStore {
|
||||
const store = useContext(TranslationContext);
|
||||
if (!store) {
|
||||
throw new Error("useTranslation must be used within a TranslationProvider");
|
||||
// Crash guard: i18next-icu unconditionally returns raw objects when t() is called
|
||||
// with a branch (namespace-node) key, regardless of returnObjects:false. Without
|
||||
// this wrapper, React unmounts the subtree with "Objects are not valid as a React
|
||||
// child". Strings pass through; numbers/booleans are stringified; objects/null/
|
||||
// undefined fall back to the key itself plus a dev-mode warning. Can be removed
|
||||
// once t() gains key-level type safety (Phase 2 of the i18n roadmap).
|
||||
function coerceToString(key: string, value: unknown): string {
|
||||
if (typeof value === "string") return value;
|
||||
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn(
|
||||
`[i18n] Translation for key "${key}" is not a string (got ${
|
||||
value === null ? "null" : typeof value
|
||||
}). This is likely a missing key or a namespace-node lookup. Returning the key as fallback.`
|
||||
);
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
export function useTranslation(): TTranslationStore {
|
||||
// No namespace arg — fallbackNS in the i18next config ensures all namespaces
|
||||
// are searched for any key. Passing NAMESPACES here would trigger concurrent
|
||||
// async loads per component, causing a re-render cascade.
|
||||
const { t, i18n } = useI18nextTranslation();
|
||||
|
||||
const changeLanguage = useCallback(
|
||||
(lng: TLanguage) => {
|
||||
void (async () => {
|
||||
try {
|
||||
await i18n.changeLanguage(lng);
|
||||
if (typeof window === "undefined") return;
|
||||
localStorage.setItem(LANGUAGE_STORAGE_KEY, lng);
|
||||
document.documentElement.lang = lng;
|
||||
} catch (err) {
|
||||
console.error("Failed to change language:", err);
|
||||
}
|
||||
})();
|
||||
},
|
||||
[i18n]
|
||||
);
|
||||
|
||||
return {
|
||||
t: store.t.bind(store),
|
||||
currentLocale: store.currentLocale,
|
||||
changeLanguage: (lng: TLanguage) => store.setLanguage(lng),
|
||||
languages: store.availableLanguages,
|
||||
t: (key: string, params?: Record<string, unknown>) =>
|
||||
coerceToString(key, params === undefined ? t(key) : t(key, params)),
|
||||
currentLocale: i18n.language as TLanguage,
|
||||
changeLanguage,
|
||||
languages: SUPPORTED_LANGUAGES,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,9 +4,20 @@
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export * from "./constants";
|
||||
export * from "./context";
|
||||
export * from "./hooks";
|
||||
export * from "./types";
|
||||
export * from "./store";
|
||||
export * from "./locales";
|
||||
// Components
|
||||
export { TranslationProvider } from "./provider";
|
||||
|
||||
// Hooks
|
||||
export { useTranslation } from "./hooks/use-translation";
|
||||
export type { TTranslationStore } from "./hooks/use-translation";
|
||||
|
||||
// Types
|
||||
export type { TLanguage, ILanguageOption } from "./types";
|
||||
export type { TTranslationKeys } from "./types";
|
||||
export type { TNamespace } from "./constants/namespaces";
|
||||
|
||||
// Utilities
|
||||
export { setLanguage } from "./core/set-language";
|
||||
|
||||
// Constants
|
||||
export { FALLBACK_LANGUAGE, SUPPORTED_LANGUAGES, LANGUAGE_STORAGE_KEY } from "./constants/language";
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"aria_labels": {
|
||||
"projects_sidebar": {
|
||||
"workspace_logo": "Logo pracovního prostoru",
|
||||
"open_workspace_switcher": "Otevřít přepínač pracovního prostoru",
|
||||
"open_user_menu": "Otevřít uživatelské menu",
|
||||
"open_command_palette": "Otevřít paletu příkazů",
|
||||
"open_extended_sidebar": "Otevřít rozšířený postranní panel",
|
||||
"close_extended_sidebar": "Zavřít rozšířený postranní panel",
|
||||
"create_favorites_folder": "Vytvořit složku oblíbených",
|
||||
"open_folder": "Otevřít složku",
|
||||
"close_folder": "Zavřít složku",
|
||||
"open_favorites_menu": "Otevřít menu oblíbených",
|
||||
"close_favorites_menu": "Zavřít menu oblíbených",
|
||||
"enter_folder_name": "Zadejte název složky",
|
||||
"create_new_project": "Vytvořit nový projekt",
|
||||
"open_projects_menu": "Otevřít menu projektů",
|
||||
"close_projects_menu": "Zavřít menu projektů",
|
||||
"toggle_quick_actions_menu": "Přepnout menu rychlých akcí",
|
||||
"open_project_menu": "Otevřít menu projektu",
|
||||
"close_project_menu": "Zavřít menu projektu",
|
||||
"collapse_sidebar": "Sbalit postranní panel",
|
||||
"expand_sidebar": "Rozbalit postranní panel",
|
||||
"edition_badge": "Otevřít modal placených plánů"
|
||||
},
|
||||
"auth_forms": {
|
||||
"clear_email": "Vymazat e-mail",
|
||||
"show_password": "Zobrazit heslo",
|
||||
"hide_password": "Skrýt heslo",
|
||||
"close_alert": "Zavřít upozornění",
|
||||
"close_popover": "Zavřít vyskakovací okno"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export default {
|
||||
aria_labels: {
|
||||
projects_sidebar: {
|
||||
workspace_logo: "Logo pracovního prostoru",
|
||||
open_workspace_switcher: "Otevřít přepínač pracovního prostoru",
|
||||
open_user_menu: "Otevřít uživatelské menu",
|
||||
open_command_palette: "Otevřít paletu příkazů",
|
||||
open_extended_sidebar: "Otevřít rozšířený postranní panel",
|
||||
close_extended_sidebar: "Zavřít rozšířený postranní panel",
|
||||
create_favorites_folder: "Vytvořit složku oblíbených",
|
||||
open_folder: "Otevřít složku",
|
||||
close_folder: "Zavřít složku",
|
||||
open_favorites_menu: "Otevřít menu oblíbených",
|
||||
close_favorites_menu: "Zavřít menu oblíbených",
|
||||
enter_folder_name: "Zadejte název složky",
|
||||
create_new_project: "Vytvořit nový projekt",
|
||||
open_projects_menu: "Otevřít menu projektů",
|
||||
close_projects_menu: "Zavřít menu projektů",
|
||||
toggle_quick_actions_menu: "Přepnout menu rychlých akcí",
|
||||
open_project_menu: "Otevřít menu projektu",
|
||||
close_project_menu: "Zavřít menu projektu",
|
||||
collapse_sidebar: "Sbalit postranní panel",
|
||||
expand_sidebar: "Rozbalit postranní panel",
|
||||
edition_badge: "Otevřít modal placených plánů",
|
||||
},
|
||||
auth_forms: {
|
||||
clear_email: "Vymazat e-mail",
|
||||
show_password: "Zobrazit heslo",
|
||||
hide_password: "Skrýt heslo",
|
||||
close_alert: "Zavřít upozornění",
|
||||
close_popover: "Zavřít vyskakovací okno",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
@@ -0,0 +1,368 @@
|
||||
{
|
||||
"sso": {
|
||||
"header": "Identita",
|
||||
"description": "Nakonfigurujte svou doménu pro přístup k bezpečnostním funkcím včetně jednotného přihlašování.",
|
||||
"domain_management": {
|
||||
"header": "Správa domén",
|
||||
"verified_domains": {
|
||||
"header": "Ověřené domény",
|
||||
"description": "Ověřte vlastnictví e-mailové domény pro povolení jednotného přihlašování.",
|
||||
"button_text": "Přidat doménu",
|
||||
"list": {
|
||||
"domain_name": "Název domény",
|
||||
"status": "Stav",
|
||||
"status_verified": "Ověřeno",
|
||||
"status_failed": "Selhalo",
|
||||
"status_pending": "Čeká na vyřízení"
|
||||
},
|
||||
"add_domain": {
|
||||
"title": "Přidat doménu",
|
||||
"description": "Přidejte svou doménu pro konfiguraci SSO a její ověření.",
|
||||
"form": {
|
||||
"domain_label": "Doména",
|
||||
"domain_placeholder": "plane.so",
|
||||
"domain_required": "Doména je povinná",
|
||||
"domain_invalid": "Zadejte platný název domény (např. plane.so)"
|
||||
},
|
||||
"primary_button_text": "Přidat doménu",
|
||||
"primary_button_loading_text": "Přidávání",
|
||||
"toast": {
|
||||
"success_title": "Úspěch!",
|
||||
"success_message": "Doména byla úspěšně přidána. Ověřte ji přidáním DNS TXT záznamu.",
|
||||
"error_message": "Nepodařilo se přidat doménu. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"verify_domain": {
|
||||
"title": "Ověřte svou doménu",
|
||||
"description": "Postupujte podle těchto kroků pro ověření vaší domény.",
|
||||
"instructions": {
|
||||
"label": "Pokyny",
|
||||
"step_1": "Přejděte do nastavení DNS pro váš doménový hostitel.",
|
||||
"step_2": {
|
||||
"part_1": "Vytvořte",
|
||||
"part_2": "TXT záznam",
|
||||
"part_3": "a vložte úplnou hodnotu záznamu uvedenou níže."
|
||||
},
|
||||
"step_3": "Tato aktualizace obvykle trvá několik minut, ale může trvat až 72 hodin.",
|
||||
"step_4": "Klikněte na \"Ověřit doménu\" pro potvrzení po aktualizaci DNS záznamu."
|
||||
},
|
||||
"verification_code_label": "Hodnota TXT záznamu",
|
||||
"verification_code_description": "Přidejte tento záznam do nastavení DNS",
|
||||
"domain_label": "Doména",
|
||||
"primary_button_text": "Ověřit doménu",
|
||||
"primary_button_loading_text": "Ověřování",
|
||||
"secondary_button_text": "Udělám to později",
|
||||
"toast": {
|
||||
"success_title": "Úspěch!",
|
||||
"success_message": "Doména byla úspěšně ověřena.",
|
||||
"error_message": "Nepodařilo se ověřit doménu. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"delete_domain": {
|
||||
"title": "Smazat doménu",
|
||||
"description": {
|
||||
"prefix": "Opravdu chcete smazat",
|
||||
"suffix": "? Tuto akci nelze vrátit zpět."
|
||||
},
|
||||
"primary_button_text": "Smazat",
|
||||
"primary_button_loading_text": "Mazání",
|
||||
"secondary_button_text": "Zrušit",
|
||||
"toast": {
|
||||
"success_title": "Úspěch!",
|
||||
"success_message": "Doména byla úspěšně smazána.",
|
||||
"error_message": "Nepodařilo se smazat doménu. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"providers": {
|
||||
"header": "Jednotné přihlašování",
|
||||
"disabled_message": "Přidejte ověřenou doménu pro konfiguraci SSO",
|
||||
"configure": {
|
||||
"create": "Nakonfigurovat",
|
||||
"update": "Upravit"
|
||||
},
|
||||
"switch_alert_modal": {
|
||||
"title": "Přepnout metodu SSO na {newProviderShortName}?",
|
||||
"content": "Chystáte se povolit {newProviderLongName} ({newProviderShortName}). Tato akce automaticky zakáže {activeProviderLongName} ({activeProviderShortName}). Uživatelé, kteří se pokusí přihlásit přes {activeProviderShortName}, již nebudou moci přistupovat k platformě, dokud nepřepnou na novou metodu. Opravdu chcete pokračovat?",
|
||||
"primary_button_text": "Přepnout",
|
||||
"primary_button_text_loading": "Přepínání",
|
||||
"secondary_button_text": "Zrušit"
|
||||
},
|
||||
"form_section": {
|
||||
"title": "Detaily poskytnuté IdP pro {workspaceName}"
|
||||
},
|
||||
"form_action_buttons": {
|
||||
"saving": "Ukládání",
|
||||
"save_changes": "Uložit změny",
|
||||
"configure_only": "Pouze nakonfigurovat",
|
||||
"configure_and_enable": "Nakonfigurovat a povolit",
|
||||
"default": "Uložit"
|
||||
},
|
||||
"setup_details_section": {
|
||||
"title": "{workspaceName} poskytnuté detaily pro váš IdP",
|
||||
"button_text": "Získat detaily nastavení"
|
||||
},
|
||||
"saml": {
|
||||
"header": "Povolit SAML",
|
||||
"description": "Nakonfigurujte svého poskytovatele identity SAML pro povolení jednotného přihlašování.",
|
||||
"configure": {
|
||||
"title": "Povolit SAML",
|
||||
"description": "Ověřte vlastnictví e-mailové domény pro přístup k bezpečnostním funkcím včetně jednotného přihlašování.",
|
||||
"toast": {
|
||||
"success_title": "Úspěch!",
|
||||
"create_success_message": "Poskytovatel SAML byl úspěšně vytvořen.",
|
||||
"update_success_message": "Poskytovatel SAML byl úspěšně aktualizován.",
|
||||
"error_title": "Chyba!",
|
||||
"error_message": "Nepodařilo se uložit poskytovatele SAML. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"setup_modal": {
|
||||
"web_details": {
|
||||
"header": "Webové detaily",
|
||||
"entity_id": {
|
||||
"label": "Entity ID | Audience | Metadata informace",
|
||||
"description": "Vygenerujeme tuto část metadat, která identifikuje tuto aplikaci Plane jako autorizovanou službu na vašem IdP."
|
||||
},
|
||||
"callback_url": {
|
||||
"label": "URL jednotného přihlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při přihlášení vašeho IdP."
|
||||
},
|
||||
"logout_url": {
|
||||
"label": "URL jednotného odhlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při jednotném odhlášení vašeho IdP."
|
||||
}
|
||||
},
|
||||
"mobile_details": {
|
||||
"header": "Mobilní detaily",
|
||||
"entity_id": {
|
||||
"label": "Entity ID | Audience | Metadata informace",
|
||||
"description": "Vygenerujeme tuto část metadat, která identifikuje tuto aplikaci Plane jako autorizovanou službu na vašem IdP."
|
||||
},
|
||||
"callback_url": {
|
||||
"label": "URL jednotného přihlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při přihlášení vašeho IdP."
|
||||
},
|
||||
"logout_url": {
|
||||
"label": "URL jednotného odhlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při odhlášení vašeho IdP."
|
||||
}
|
||||
},
|
||||
"mapping_table": {
|
||||
"header": "Detaily mapování",
|
||||
"table": {
|
||||
"idp": "IdP",
|
||||
"plane": "Plane"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"oidc": {
|
||||
"header": "Povolit OIDC",
|
||||
"description": "Nakonfigurujte svého poskytovatele identity OIDC pro povolení jednotného přihlašování.",
|
||||
"configure": {
|
||||
"title": "Povolit OIDC",
|
||||
"description": "Ověřte vlastnictví e-mailové domény pro přístup k bezpečnostním funkcím včetně jednotného přihlašování.",
|
||||
"toast": {
|
||||
"success_title": "Úspěch!",
|
||||
"create_success_message": "Poskytovatel OIDC byl úspěšně vytvořen.",
|
||||
"update_success_message": "Poskytovatel OIDC byl úspěšně aktualizován.",
|
||||
"error_title": "Chyba!",
|
||||
"error_message": "Nepodařilo se uložit poskytovatele OIDC. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"setup_modal": {
|
||||
"web_details": {
|
||||
"header": "Webové detaily",
|
||||
"origin_url": {
|
||||
"label": "Origin URL",
|
||||
"description": "Vygenerujeme toto pro tuto aplikaci Plane. Přidejte toto jako důvěryhodný zdroj do odpovídajícího pole vašeho IdP."
|
||||
},
|
||||
"callback_url": {
|
||||
"label": "URL pro přesměrování",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při přihlášení vašeho IdP."
|
||||
},
|
||||
"logout_url": {
|
||||
"label": "URL pro odhlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při odhlášení vašeho IdP."
|
||||
}
|
||||
},
|
||||
"mobile_details": {
|
||||
"header": "Mobilní detaily",
|
||||
"origin_url": {
|
||||
"label": "Origin URL",
|
||||
"description": "Vygenerujeme toto pro tuto aplikaci Plane. Přidejte toto jako důvěryhodný zdroj do odpovídajícího pole vašeho IdP."
|
||||
},
|
||||
"callback_url": {
|
||||
"label": "URL pro přesměrování",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při přihlášení vašeho IdP."
|
||||
},
|
||||
"logout_url": {
|
||||
"label": "URL pro odhlášení",
|
||||
"description": "Vygenerujeme toto za vás. Přidejte toto do pole URL pro přesměrování při odhlášení vašeho IdP."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"auth": {
|
||||
"common": {
|
||||
"email": {
|
||||
"label": "E-mail",
|
||||
"placeholder": "jmeno@spolecnost.cz",
|
||||
"errors": {
|
||||
"required": "E-mail je povinný",
|
||||
"invalid": "E-mail je neplatný"
|
||||
}
|
||||
},
|
||||
"password": {
|
||||
"label": "Heslo",
|
||||
"set_password": "Nastavit heslo",
|
||||
"placeholder": "Zadejte heslo",
|
||||
"confirm_password": {
|
||||
"label": "Potvrďte heslo",
|
||||
"placeholder": "Potvrďte heslo"
|
||||
},
|
||||
"current_password": {
|
||||
"label": "Aktuální heslo"
|
||||
},
|
||||
"new_password": {
|
||||
"label": "Nové heslo",
|
||||
"placeholder": "Zadejte nové heslo"
|
||||
},
|
||||
"change_password": {
|
||||
"label": {
|
||||
"default": "Změnit heslo",
|
||||
"submitting": "Mění se heslo"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"match": "Hesla se neshodují",
|
||||
"empty": "Zadejte prosím své heslo",
|
||||
"length": "Délka hesla by měla být více než 8 znaků",
|
||||
"strength": {
|
||||
"weak": "Heslo je slabé",
|
||||
"strong": "Heslo je silné"
|
||||
}
|
||||
},
|
||||
"submit": "Nastavit heslo",
|
||||
"toast": {
|
||||
"change_password": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Heslo bylo úspěšně změněno."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Něco se pokazilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"unique_code": {
|
||||
"label": "Jedinečný kód",
|
||||
"placeholder": "123456",
|
||||
"paste_code": "Vložte kód zaslaný na váš e-mail",
|
||||
"requesting_new_code": "Žádám o nový kód",
|
||||
"sending_code": "Odesílám kód"
|
||||
},
|
||||
"already_have_an_account": "Už máte účet?",
|
||||
"login": "Přihlásit se",
|
||||
"create_account": "Vytvořit účet",
|
||||
"new_to_plane": "Nový v Plane?",
|
||||
"back_to_sign_in": "Zpět k přihlášení",
|
||||
"resend_in": "Znovu odeslat za {seconds} sekund",
|
||||
"sign_in_with_unique_code": "Přihlásit se pomocí jedinečného kódu",
|
||||
"forgot_password": "Zapomněli jste heslo?",
|
||||
"username": {
|
||||
"label": "Uživatelské jméno",
|
||||
"placeholder": "Zadejte své uživatelské jméno"
|
||||
}
|
||||
},
|
||||
"sign_up": {
|
||||
"header": {
|
||||
"label": "Vytvořte účet a začněte spravovat práci se svým týmem.",
|
||||
"step": {
|
||||
"email": {
|
||||
"header": "Registrace",
|
||||
"sub_header": ""
|
||||
},
|
||||
"password": {
|
||||
"header": "Registrace",
|
||||
"sub_header": "Zaregistrujte se pomocí kombinace e-mailu a hesla."
|
||||
},
|
||||
"unique_code": {
|
||||
"header": "Registrace",
|
||||
"sub_header": "Zaregistrujte se pomocí jedinečného kódu zaslaného na výše uvedenou e-mailovou adresu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"password": {
|
||||
"strength": "Zkuste nastavit silné heslo, abyste mohli pokračovat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sign_in": {
|
||||
"header": {
|
||||
"label": "Přihlaste se a začněte spravovat práci se svým týmem.",
|
||||
"step": {
|
||||
"email": {
|
||||
"header": "Přihlásit se nebo zaregistrovat",
|
||||
"sub_header": ""
|
||||
},
|
||||
"password": {
|
||||
"header": "Přihlásit se nebo zaregistrovat",
|
||||
"sub_header": "Použijte svou kombinaci e-mailu a hesla pro přihlášení."
|
||||
},
|
||||
"unique_code": {
|
||||
"header": "Přihlásit se nebo zaregistrovat",
|
||||
"sub_header": "Přihlaste se pomocí jedinečného kódu zaslaného na výše uvedenou e-mailovou adresu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"forgot_password": {
|
||||
"title": "Obnovte své heslo",
|
||||
"description": "Zadejte ověřenou e-mailovou adresu vašeho uživatelského účtu a my vám zašleme odkaz na obnovení hesla.",
|
||||
"email_sent": "Odeslali jsme odkaz na obnovení na vaši e-mailovou adresu",
|
||||
"send_reset_link": "Odeslat odkaz na obnovení",
|
||||
"errors": {
|
||||
"smtp_not_enabled": "Vidíme, že váš správce neaktivoval SMTP, nebudeme schopni odeslat odkaz na obnovení hesla"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "E-mail odeslán",
|
||||
"message": "Zkontrolujte svou doručenou poštu pro odkaz na obnovení hesla. Pokud se neobjeví během několika minut, zkontrolujte svou složku se spamem."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Něco se pokazilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"reset_password": {
|
||||
"title": "Nastavit nové heslo",
|
||||
"description": "Zabezpečte svůj účet silným heslem"
|
||||
},
|
||||
"set_password": {
|
||||
"title": "Zabezpečte svůj účet",
|
||||
"description": "Nastavení hesla vám pomůže bezpečně se přihlásit"
|
||||
},
|
||||
"sign_out": {
|
||||
"toast": {
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se odhlásit. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"ldap": {
|
||||
"header": {
|
||||
"label": "Pokračovat s {ldapProviderName}",
|
||||
"sub_header": "Zadejte své přihlašovací údaje {ldapProviderName}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,273 @@
|
||||
{
|
||||
"automations": {
|
||||
"settings": {
|
||||
"title": "Vlastní automatizace",
|
||||
"create_automation": "Vytvořit automatizaci"
|
||||
},
|
||||
"scope": {
|
||||
"label": "Rozsah",
|
||||
"run_on": "Spustit na"
|
||||
},
|
||||
"trigger": {
|
||||
"label": "Spouštěč",
|
||||
"add_trigger": "Přidat spouštěč",
|
||||
"sidebar_header": "Konfigurace spouštěče",
|
||||
"input_label": "Co je spouštěčem této automatizace?",
|
||||
"input_placeholder": "Vyberte možnost",
|
||||
"section_plane_events": "Události Plane",
|
||||
"section_time_based": "Časově založené",
|
||||
"fixed_schedule": "Pevný rozvrh",
|
||||
"schedule": {
|
||||
"frequency": "Frekvence",
|
||||
"select_day": "Vyberte den",
|
||||
"day_of_month": "Den v měsíci",
|
||||
"monthly_every": "Každý",
|
||||
"monthly_day_aria": "Den {day}",
|
||||
"time": "Čas",
|
||||
"hour": "Hodina",
|
||||
"minute": "Minuta",
|
||||
"hour_suffix": "hod",
|
||||
"minute_suffix": "min",
|
||||
"am": "AM",
|
||||
"pm": "PM",
|
||||
"timezone": "Časové pásmo",
|
||||
"timezone_placeholder": "Vyberte časové pásmo",
|
||||
"frequency_daily": "Denně",
|
||||
"frequency_weekly": "Týdně",
|
||||
"frequency_monthly": "Měsíčně",
|
||||
"on": "V",
|
||||
"validation_weekly_day_required": "Vyberte alespoň jeden den v týdnu.",
|
||||
"validation_monthly_date_required": "Vyberte den v měsíci.",
|
||||
"main_content_schedule_summary_daily": "Každý den v {time} ({timezone}).",
|
||||
"main_content_schedule_summary_weekly": "Každý týden v {days} v {time} ({timezone}).",
|
||||
"main_content_schedule_summary_monthly": "Každý měsíc v den {day} v {time} ({timezone}).",
|
||||
"schedule_mode": "Režim plánování",
|
||||
"schedule_mode_fixed": "Pevný",
|
||||
"schedule_mode_cron": "Cron",
|
||||
"cron_expression_label": "Zadejte výraz Cron",
|
||||
"cron_expression_placeholder": "0 9 * * 1-5",
|
||||
"cron_invalid": "Neplatný výraz cron.",
|
||||
"cron_preview": "Tento výraz Cron spouští \"{description}\".",
|
||||
"main_content_cron_summary": "{description} ({timezone})."
|
||||
},
|
||||
"button": {
|
||||
"previous": "Zpět",
|
||||
"next": "Přidat akci"
|
||||
},
|
||||
"warning": {
|
||||
"disabled_trigger_switching": "Po vytvoření nelze typ spouštěče změnit"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"label": "Za předpokladu",
|
||||
"add_condition": "Přidat podmínku",
|
||||
"adding_condition": "Přidávání podmínky"
|
||||
},
|
||||
"action": {
|
||||
"label": "Akce",
|
||||
"add_action": "Přidat akci",
|
||||
"sidebar_header": "Akce",
|
||||
"input_label": "Co automatizace dělá?",
|
||||
"input_placeholder": "Vyberte možnost",
|
||||
"handler_name": {
|
||||
"add_comment": "Přidat komentář",
|
||||
"change_property": "Změnit vlastnost",
|
||||
"run_script": "Spustit skript"
|
||||
},
|
||||
"configuration": {
|
||||
"label": "Konfigurace",
|
||||
"change_property": {
|
||||
"placeholders": {
|
||||
"property_name": "Vyberte vlastnost",
|
||||
"change_type": "Vybrat",
|
||||
"property_value_select": "{count, plural, one{Vybrat hodnotu} other{Vybrat hodnoty}}",
|
||||
"property_value_select_date": "Vybrat datum"
|
||||
},
|
||||
"validation": {
|
||||
"property_name_required": "Název vlastnosti je povinný",
|
||||
"change_type_required": "Typ změny je povinný",
|
||||
"property_value_required": "Hodnota vlastnosti je povinná"
|
||||
}
|
||||
}
|
||||
},
|
||||
"comment_block": {
|
||||
"title": "Přidat komentář"
|
||||
},
|
||||
"run_script_block": {
|
||||
"title": "Spustit skript"
|
||||
},
|
||||
"change_property_block": {
|
||||
"title": "Změnit vlastnost"
|
||||
},
|
||||
"validation": {
|
||||
"delete_only_action": "Před smazáním jediné akce automatizaci zakažte."
|
||||
}
|
||||
},
|
||||
"conjunctions": {
|
||||
"and": "A",
|
||||
"or": "Nebo",
|
||||
"if": "Pokud",
|
||||
"then": "Pak"
|
||||
},
|
||||
"enable": {
|
||||
"alert": "Stiskněte 'Povolit', když je vaše automatizace dokončena. Po povolení bude automatizace připravena ke spuštění.",
|
||||
"validation": {
|
||||
"required": "Automatizace musí mít spouštěč a alespoň jednu akci, aby mohla být povolena."
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"validation": {
|
||||
"enabled": "Automatizace musí být před smazáním zakázána."
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"title": "Název automatizace",
|
||||
"scope": "Rozsah",
|
||||
"projects": "Projekty",
|
||||
"last_run_on": "Naposledy spuštěno",
|
||||
"created_on": "Vytvořeno",
|
||||
"last_updated_on": "Naposledy aktualizováno",
|
||||
"last_run_status": "Stav posledního spuštění",
|
||||
"average_duration": "Průměrná doba trvání",
|
||||
"owner": "Vlastník",
|
||||
"executions": "Spuštění"
|
||||
},
|
||||
"create_modal": {
|
||||
"heading": {
|
||||
"create": "Vytvořit automatizaci",
|
||||
"update": "Aktualizovat automatizaci"
|
||||
},
|
||||
"title": {
|
||||
"placeholder": "Pojmenujte svou automatizaci.",
|
||||
"required_error": "Název je povinný"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište svou automatizaci."
|
||||
},
|
||||
"submit_button": {
|
||||
"create": "Vytvořit automatizaci",
|
||||
"update": "Aktualizovat automatizaci"
|
||||
}
|
||||
},
|
||||
"delete_modal": {
|
||||
"heading": "Smazat automatizaci"
|
||||
},
|
||||
"activity": {
|
||||
"filters": {
|
||||
"show_fails": "Zobrazit chyby",
|
||||
"all": "Vše",
|
||||
"only_activity": "Pouze aktivita",
|
||||
"only_run_history": "Pouze historie spuštění"
|
||||
},
|
||||
"run_history": {
|
||||
"initiator": "Iniciátor"
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Automatizace byla úspěšně vytvořena."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Vytvoření automatizace se nezdařilo."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Automatizace byla úspěšně aktualizována."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Aktualizace automatizace se nezdařila."
|
||||
}
|
||||
},
|
||||
"enable": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Automatizace byla úspěšně povolena."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Povolení automatizace se nezdařilo."
|
||||
}
|
||||
},
|
||||
"disable": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Automatizace byla úspěšně zakázána."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Zakázání automatizace se nezdařilo."
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"success": {
|
||||
"title": "Automatizace smazána",
|
||||
"message": "{name}, automatizace, byla nyní odstraněna z vašeho projektu."
|
||||
},
|
||||
"error": {
|
||||
"title": "Tuto automatizaci se tentokrát nepodařilo smazat.",
|
||||
"message": "Zkuste ji smazat znovu nebo se k ní vraťte později. Pokud ji stále nemůžete smazat, kontaktujte nás."
|
||||
}
|
||||
},
|
||||
"action": {
|
||||
"create": {
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Vytvoření akce se nezdařilo. Zkuste to znovu!"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Aktualizace akce se nezdařila. Zkuste to znovu!"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"no_automations": {
|
||||
"title": "Zatím nejsou k zobrazení žádné automatizace.",
|
||||
"description": "Automatizace vám pomáhají eliminovat opakující se úkoly nastavením spouštěčů, podmínek a akcí. Vytvořte jednu, abyste ušetřili čas a udrželi práci v plynulém chodu."
|
||||
},
|
||||
"upgrade": {
|
||||
"title": "Automatizace",
|
||||
"description": "Automatizace jsou způsob, jak automatizovat úkoly ve vašem projektu.",
|
||||
"sub_description": "Získejte zpět 80% svého administrativního času, když používáte automatizace."
|
||||
}
|
||||
},
|
||||
"global_automations": {
|
||||
"project_select": {
|
||||
"label": "Vyberte projekty, na kterých se má tato automatizace spouštět",
|
||||
"all_projects": {
|
||||
"label": "Všechny projekty",
|
||||
"description": "Automatizace poběží pro všechny projekty v pracovním prostoru."
|
||||
},
|
||||
"select_projects": {
|
||||
"label": "Vybrat projekty",
|
||||
"description": "Automatizace poběží pro vybrané projekty v pracovním prostoru.",
|
||||
"placeholder": "Vybrat projekty"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"sidebar_label": "Automatizace",
|
||||
"title": "Automatizace",
|
||||
"description": "Standardizujte procesy napříč pracovním prostorem pomocí globálních automatizací."
|
||||
},
|
||||
"table": {
|
||||
"scope": {
|
||||
"global": "Globální",
|
||||
"project": {
|
||||
"label": "Projekt",
|
||||
"multiple": "Více",
|
||||
"all": "Vše"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,871 @@
|
||||
{
|
||||
"cloud_maintenance_message": {
|
||||
"we_are_working_on_this_if_you_need_immediate_assistance": "Pracujeme na tom. Pokud potřebujete okamžitou pomoc,",
|
||||
"reach_out_to_us": "kontaktujte nás",
|
||||
"otherwise_try_refreshing_the_page_occasionally_or_visit_our": "Jinak zkuste občas obnovit stránku nebo navštivte naši",
|
||||
"status_page": "stránku stavu"
|
||||
},
|
||||
"submit": "Odeslat",
|
||||
"cancel": "Zrušit",
|
||||
"loading": "Načítání",
|
||||
"error": "Chyba",
|
||||
"success": "Úspěch",
|
||||
"warning": "Varování",
|
||||
"info": "Informace",
|
||||
"close": "Zavřít",
|
||||
"yes": "Ano",
|
||||
"no": "Ne",
|
||||
"ok": "OK",
|
||||
"name": "Název",
|
||||
"unknown_user": "Neznámý uživatel",
|
||||
"description": "Popis",
|
||||
"search": "Hledat",
|
||||
"add_member": "Přidat člena",
|
||||
"adding_members": "Přidávání členů",
|
||||
"remove_member": "Odebrat člena",
|
||||
"add_members": "Přidat členy",
|
||||
"adding_member": "Přidávání členů",
|
||||
"remove_members": "Odebrat členy",
|
||||
"add": "Přidat",
|
||||
"adding": "Přidávání",
|
||||
"remove": "Odebrat",
|
||||
"add_new": "Přidat nový",
|
||||
"remove_selected": "Odebrat vybrané",
|
||||
"first_name": "Křestní jméno",
|
||||
"last_name": "Příjmení",
|
||||
"email": "E-mail",
|
||||
"display_name": "Zobrazované jméno",
|
||||
"role": "Role",
|
||||
"timezone": "Časové pásmo",
|
||||
"avatar": "Profilový obrázek",
|
||||
"cover_image": "Úvodní obrázek",
|
||||
"password": "Heslo",
|
||||
"change_cover": "Změnit úvodní obrázek",
|
||||
"language": "Jazyk",
|
||||
"saving": "Ukládání",
|
||||
"save_changes": "Uložit změny",
|
||||
"deactivate_account": "Deaktivovat účet",
|
||||
"deactivate_account_description": "Při deaktivaci účtu budou všechna data a prostředky v rámci tohoto účtu trvale odstraněny a nelze je obnovit.",
|
||||
"profile_settings": "Nastavení profilu",
|
||||
"your_account": "Váš účet",
|
||||
"security": "Zabezpečení",
|
||||
"activity": "Aktivita",
|
||||
"activity_empty_state": {
|
||||
"no_activity": "Zatím žádná aktivita",
|
||||
"no_transitions": "Zatím žádné přechody",
|
||||
"no_comments": "Zatím žádné komentáře",
|
||||
"no_worklogs": "Zatím žádné záznamy práce",
|
||||
"no_history": "Zatím žádná historie"
|
||||
},
|
||||
"preferences": "Předvolby",
|
||||
"language_and_time": "Jazyk a čas",
|
||||
"notifications": "Oznámení",
|
||||
"workspaces": "Pracovní prostory",
|
||||
"create_workspace": "Vytvořit pracovní prostor",
|
||||
"invitations": "Pozvánky",
|
||||
"summary": "Shrnutí",
|
||||
"assigned": "Přiřazeno",
|
||||
"created": "Vytvořeno",
|
||||
"subscribed": "Odebíráno",
|
||||
"you_do_not_have_the_permission_to_access_this_page": "Nemáte oprávnění pro přístup k této stránce.",
|
||||
"something_went_wrong_please_try_again": "Něco se pokazilo. Zkuste to prosím znovu.",
|
||||
"load_more": "Načíst více",
|
||||
"select_or_customize_your_interface_color_scheme": "Vyberte nebo přizpůsobte barevné schéma rozhraní.",
|
||||
"timezone_setting": "Aktuální nastavení časového pásma.",
|
||||
"language_setting": "Vyberte jazyk používaný v uživatelském rozhraní.",
|
||||
"settings_moved_to_preferences": "Nastavení časového pásma a jazyka bylo přesunuto do předvoleb.",
|
||||
"go_to_preferences": "Přejít do předvoleb",
|
||||
"select_the_cursor_motion_style_that_feels_right_for_you": "Vyberte styl pohybu kurzoru, který vám vyhovuje.",
|
||||
"theme": "Téma",
|
||||
"smooth_cursor": "Plynulý kurzor",
|
||||
"system_preference": "Systémové předvolby",
|
||||
"light": "Světlé",
|
||||
"dark": "Tmavé",
|
||||
"light_contrast": "Světlý vysoký kontrast",
|
||||
"dark_contrast": "Tmavý vysoký kontrast",
|
||||
"custom": "Vlastní téma",
|
||||
"select_your_theme": "Vyberte téma",
|
||||
"customize_your_theme": "Přizpůsobte si téma",
|
||||
"background_color": "Barva pozadí",
|
||||
"text_color": "Barva textu",
|
||||
"primary_color": "Hlavní barva (téma)",
|
||||
"sidebar_background_color": "Barva pozadí postranního panelu",
|
||||
"sidebar_text_color": "Barva textu postranního panelu",
|
||||
"set_theme": "Nastavit téma",
|
||||
"enter_a_valid_hex_code_of_6_characters": "Zadejte platný hexadecimální kód o 6 znacích",
|
||||
"background_color_is_required": "Barva pozadí je povinná",
|
||||
"text_color_is_required": "Barva textu je povinná",
|
||||
"primary_color_is_required": "Hlavní barva je povinná",
|
||||
"sidebar_background_color_is_required": "Barva pozadí postranního panelu je povinná",
|
||||
"sidebar_text_color_is_required": "Barva textu postranního panelu je povinná",
|
||||
"updating_theme": "Aktualizace tématu",
|
||||
"theme_updated_successfully": "Téma úspěšně aktualizováno",
|
||||
"failed_to_update_the_theme": "Aktualizace tématu se nezdařila",
|
||||
"email_notifications": "E-mailová oznámení",
|
||||
"stay_in_the_loop_on_issues_you_are_subscribed_to_enable_this_to_get_notified": "Zůstaňte v obraze u pracovních položek, které odebíráte. Aktivujte toto pro zasílání oznámení.",
|
||||
"email_notification_setting_updated_successfully": "Nastavení e-mailových oznámení úspěšně aktualizováno",
|
||||
"failed_to_update_email_notification_setting": "Aktualizace nastavení e-mailových oznámení se nezdařila",
|
||||
"notify_me_when": "Upozornit mě, když",
|
||||
"property_changes": "Změny vlastností",
|
||||
"property_changes_description": "Upozornit mě, když se změní vlastnosti pracovních položek jako přiřazení, priorita, odhady nebo cokoli jiného.",
|
||||
"state_change": "Změna stavu",
|
||||
"state_change_description": "Upozornit mě, když se pracovní položka přesune do jiného stavu",
|
||||
"issue_completed": "Pracovní položka dokončena",
|
||||
"issue_completed_description": "Upozornit mě pouze při dokončení pracovní položky",
|
||||
"comments": "Komentáře",
|
||||
"comments_description": "Upozornit mě, když někdo přidá komentář k pracovní položce",
|
||||
"mentions": "Zmínky",
|
||||
"mentions_description": "Upozornit mě pouze, když mě někdo zmíní v komentářích nebo popisu",
|
||||
"old_password": "Staré heslo",
|
||||
"general_settings": "Obecná nastavení",
|
||||
"sign_out": "Odhlásit se",
|
||||
"signing_out": "Odhlašování",
|
||||
"active_cycles": "Aktivní cykly",
|
||||
"active_cycles_description": "Sledujte cykly napříč projekty, monitorujte vysoce prioritní pracovní položky a zaměřte se na cykly vyžadující pozornost.",
|
||||
"on_demand_snapshots_of_all_your_cycles": "Snapshots všech vašich cyklů na vyžádání",
|
||||
"upgrade": "Upgradovat",
|
||||
"10000_feet_view": "Pohled z 10 000 stop na všechny aktivní cykly.",
|
||||
"10000_feet_view_description": "Přibližte si všechny běžící cykly napříč všemi projekty najednou, místo přepínání mezi cykly v každém projektu.",
|
||||
"get_snapshot_of_each_active_cycle": "Získejte snapshot každého aktivního cyklu.",
|
||||
"get_snapshot_of_each_active_cycle_description": "Sledujte klíčové metriky pro všechny aktivní cykly, zjistěte jejich průběh a porovnejte rozsah s termíny.",
|
||||
"compare_burndowns": "Porovnejte burndowny.",
|
||||
"compare_burndowns_description": "Sledujte výkonnost týmů prostřednictvím přehledu burndown reportů každého cyklu.",
|
||||
"quickly_see_make_or_break_issues": "Rychle zjistěte kritické pracovní položky.",
|
||||
"quickly_see_make_or_break_issues_description": "Prohlédněte si vysoce prioritní pracovní položky pro každý cyklus vzhledem k termínům. Zobrazte všechny na jedno kliknutí.",
|
||||
"zoom_into_cycles_that_need_attention": "Zaměřte se na cykly vyžadující pozornost.",
|
||||
"zoom_into_cycles_that_need_attention_description": "Prozkoumejte stav jakéhokoli cyklu, který nesplňuje očekávání, na jedno kliknutí.",
|
||||
"stay_ahead_of_blockers": "Předvídejte překážky.",
|
||||
"stay_ahead_of_blockers_description": "Identifikujte problémy mezi projekty a zjistěte závislosti mezi cykly, které nejsou z jiných pohledů zřejmé.",
|
||||
"analytics": "Analytika",
|
||||
"workspace_invites": "Pozvánky do pracovního prostoru",
|
||||
"enter_god_mode": "Vstoupit do režimu boha",
|
||||
"workspace_logo": "Logo pracovního prostoru",
|
||||
"new_issue": "Nová pracovní položka",
|
||||
"your_work": "Vaše práce",
|
||||
"drafts": "Koncepty",
|
||||
"projects": "Projekty",
|
||||
"views": "Pohledy",
|
||||
"archives": "Archivy",
|
||||
"settings": "Nastavení",
|
||||
"failed_to_move_favorite": "Přesunutí oblíbeného se nezdařilo",
|
||||
"favorites": "Oblíbené",
|
||||
"no_favorites_yet": "Zatím žádné oblíbené",
|
||||
"create_folder": "Vytvořit složku",
|
||||
"new_folder": "Nová složka",
|
||||
"favorite_updated_successfully": "Oblíbené úspěšně aktualizováno",
|
||||
"favorite_created_successfully": "Oblíbené úspěšně vytvořeno",
|
||||
"folder_already_exists": "Složka již existuje",
|
||||
"folder_name_cannot_be_empty": "Název složky nemůže být prázdný",
|
||||
"something_went_wrong": "Něco se pokazilo",
|
||||
"failed_to_reorder_favorite": "Změna pořadí oblíbeného se nezdařila",
|
||||
"favorite_removed_successfully": "Oblíbené úspěšně odstraněno",
|
||||
"failed_to_create_favorite": "Vytvoření oblíbeného se nezdařilo",
|
||||
"failed_to_rename_favorite": "Přejmenování oblíbeného se nezdařilo",
|
||||
"project_link_copied_to_clipboard": "Odkaz na projekt zkopírován do schránky",
|
||||
"link_copied": "Odkaz zkopírován",
|
||||
"add_project": "Přidat projekt",
|
||||
"create_project": "Vytvořit projekt",
|
||||
"failed_to_remove_project_from_favorites": "Nepodařilo se odstranit projekt z oblíbených. Zkuste to prosím znovu.",
|
||||
"project_created_successfully": "Projekt úspěšně vytvořen",
|
||||
"project_created_successfully_description": "Projekt byl úspěšně vytvořen. Nyní můžete začít přidávat pracovní položky.",
|
||||
"project_name_already_taken": "Název projektu už je zabraný.",
|
||||
"project_name_cannot_contain_special_characters": "Název projektu nesmí obsahovat speciální znaky.",
|
||||
"project_identifier_already_taken": "Identifikátor projektu už je zabraný.",
|
||||
"project_cover_image_alt": "Úvodní obrázek projektu",
|
||||
"name_is_required": "Název je povinný",
|
||||
"title_should_be_less_than_255_characters": "Název by měl být kratší než 255 znaků",
|
||||
"project_name": "Název projektu",
|
||||
"project_id_must_be_at_least_1_character": "ID projektu musí mít alespoň 1 znak",
|
||||
"project_id_must_be_at_most_5_characters": "ID projektu může mít maximálně 5 znaků",
|
||||
"project_id": "ID projektu",
|
||||
"project_id_tooltip_content": "Pomáhá jednoznačně identifikovat pracovní položky v projektu. Max. 50 znaků.",
|
||||
"description_placeholder": "Popis",
|
||||
"only_alphanumeric_non_latin_characters_allowed": "Jsou povoleny pouze alfanumerické a nelatinské znaky.",
|
||||
"project_id_is_required": "ID projektu je povinné",
|
||||
"project_id_allowed_char": "Jsou povoleny pouze alfanumerické a nelatinské znaky.",
|
||||
"project_id_min_char": "ID projektu musí mít alespoň 1 znak",
|
||||
"project_id_max_char": "ID projektu může mít maximálně {max} znaků",
|
||||
"project_description_placeholder": "Zadejte popis projektu",
|
||||
"select_network": "Vybrat síť",
|
||||
"lead": "Vedoucí",
|
||||
"date_range": "Rozsah dat",
|
||||
"private": "Soukromý",
|
||||
"public": "Veřejný",
|
||||
"accessible_only_by_invite": "Přístupné pouze na pozvání",
|
||||
"anyone_in_the_workspace_except_guests_can_join": "Kdokoli v pracovním prostoru kromě hostů se může připojit",
|
||||
"creating": "Vytváření",
|
||||
"creating_project": "Vytváření projektu",
|
||||
"adding_project_to_favorites": "Přidávání projektu do oblíbených",
|
||||
"project_added_to_favorites": "Projekt přidán do oblíbených",
|
||||
"couldnt_add_the_project_to_favorites": "Nepodařilo se přidat projekt do oblíbených. Zkuste to prosím znovu.",
|
||||
"removing_project_from_favorites": "Odebírání projektu z oblíbených",
|
||||
"project_removed_from_favorites": "Projekt odstraněn z oblíbených",
|
||||
"couldnt_remove_the_project_from_favorites": "Nepodařilo se odstranit projekt z oblíbených. Zkuste to prosím znovu.",
|
||||
"add_to_favorites": "Přidat do oblíbených",
|
||||
"remove_from_favorites": "Odebrat z oblíbených",
|
||||
"publish_project": "Publikovat projekt",
|
||||
"publish": "Publikovat",
|
||||
"copy_link": "Kopírovat odkaz",
|
||||
"leave_project": "Opustit projekt",
|
||||
"join_the_project_to_rearrange": "Připojte se k projektu pro změnu uspořádání",
|
||||
"drag_to_rearrange": "Přetáhněte pro uspořádání",
|
||||
"congrats": "Gratulujeme!",
|
||||
"open_project": "Otevřít projekt",
|
||||
"issues": "Pracovní položky",
|
||||
"cycles": "Cykly",
|
||||
"modules": "Moduly",
|
||||
"pages": "Stránky",
|
||||
"intake": "Příjem",
|
||||
"renew": "Obnovit",
|
||||
"preview": "Náhled",
|
||||
"time_tracking": "Sledování času",
|
||||
"work_management": "Správa práce",
|
||||
"projects_and_issues": "Projekty a pracovní položky",
|
||||
"projects_and_issues_description": "Aktivujte nebo deaktivujte tyto funkce v projektu.",
|
||||
"cycles_description": "Časově vymezte práci podle projektu a podle potřeby upravte období. Jeden cyklus může trvat 2 týdny, další jen 1 týden.",
|
||||
"modules_description": "Organizujte práci do podprojektů s vyhrazenými vedoucími a přiřazenými osobami.",
|
||||
"views_description": "Uložte vlastní řazení, filtry a možnosti zobrazení nebo je sdílejte se svým týmem.",
|
||||
"pages_description": "Vytvářejte a upravujte volně strukturovaný obsah – poznámky, dokumenty, cokoli.",
|
||||
"intake_description": "Umožněte nečlenům sdílet chyby, zpětnou vazbu a návrhy, aniž by narušili váš pracovní postup.",
|
||||
"time_tracking_description": "Zaznamenávejte čas strávený na pracovních položkách a projektech.",
|
||||
"work_management_description": "Spravujte svou práci a projekty snadno.",
|
||||
"documentation": "Dokumentace",
|
||||
"message_support": "Kontaktovat podporu",
|
||||
"contact_sales": "Kontaktovat prodej",
|
||||
"hyper_mode": "Hyper režim",
|
||||
"keyboard_shortcuts": "Klávesové zkratky",
|
||||
"whats_new": "Co je nového?",
|
||||
"version": "Verze",
|
||||
"we_are_having_trouble_fetching_the_updates": "Máme potíže s načítáním aktualizací.",
|
||||
"our_changelogs": "naše změnové protokoly",
|
||||
"for_the_latest_updates": "pro nejnovější aktualizace.",
|
||||
"please_visit": "Navštivte",
|
||||
"docs": "Dokumentace",
|
||||
"full_changelog": "Úplný změnový protokol",
|
||||
"support": "Podpora",
|
||||
"forum": "Forum",
|
||||
"powered_by_plane_pages": "Poháněno Plane Pages",
|
||||
"please_select_at_least_one_invitation": "Vyberte alespoň jednu pozvánku.",
|
||||
"please_select_at_least_one_invitation_description": "Vyberte alespoň jednu pozvánku pro připojení k pracovnímu prostoru.",
|
||||
"we_see_that_someone_has_invited_you_to_join_a_workspace": "Vidíme, že vás někdo pozval do pracovního prostoru",
|
||||
"join_a_workspace": "Připojit se k pracovnímu prostoru",
|
||||
"we_see_that_someone_has_invited_you_to_join_a_workspace_description": "Vidíme, že vás někdo pozval do pracovního prostoru",
|
||||
"join_a_workspace_description": "Připojit se k pracovnímu prostoru",
|
||||
"accept_and_join": "Přijmout a připojit se",
|
||||
"go_home": "Domů",
|
||||
"no_pending_invites": "Žádné čekající pozvánky",
|
||||
"you_can_see_here_if_someone_invites_you_to_a_workspace": "Zde uvidíte, pokud vás někdo pozve do pracovního prostoru",
|
||||
"back_to_home": "Zpět na domovskou stránku",
|
||||
"workspace_name": "název-pracovního-prostoru",
|
||||
"deactivate_your_account": "Deaktivovat váš účet",
|
||||
"deactivate_your_account_description": "Po deaktivaci nebudete moci být přiřazeni k pracovním položkám a nebude vám účtován poplatek za pracovní prostor. Pro opětovnou aktivaci účtu budete potřebovat pozvánku do pracovního prostoru na tento e-mail.",
|
||||
"deactivating": "Deaktivace",
|
||||
"confirm": "Potvrdit",
|
||||
"confirming": "Potvrzování",
|
||||
"draft_created": "Koncept vytvořen",
|
||||
"issue_created_successfully": "Pracovní položka úspěšně vytvořena",
|
||||
"draft_creation_failed": "Vytvoření konceptu se nezdařilo",
|
||||
"issue_creation_failed": "Vytvoření pracovní položky se nezdařilo",
|
||||
"draft_issue": "Koncept pracovní položky",
|
||||
"issue_updated_successfully": "Pracovní položka úspěšně aktualizována",
|
||||
"issue_could_not_be_updated": "Aktualizace pracovní položky se nezdařila",
|
||||
"create_a_draft": "Vytvořit koncept",
|
||||
"save_to_drafts": "Uložit do konceptů",
|
||||
"save": "Uložit",
|
||||
"update": "Aktualizovat",
|
||||
"updating": "Aktualizace",
|
||||
"create_new_issue": "Vytvořit novou pracovní položku",
|
||||
"editor_is_not_ready_to_discard_changes": "Editor není připraven zahodit změny",
|
||||
"failed_to_move_issue_to_project": "Přesunutí pracovní položky do projektu se nezdařilo",
|
||||
"create_more": "Vytvořit více",
|
||||
"add_to_project": "Přidat do projektu",
|
||||
"discard": "Zahodit",
|
||||
"duplicate_issue_found": "Nalezena duplicitní pracovní položka",
|
||||
"duplicate_issues_found": "Nalezeny duplicitní pracovní položky",
|
||||
"no_matching_results": "Žádné odpovídající výsledky",
|
||||
"title_is_required": "Název je povinný",
|
||||
"title": "Název",
|
||||
"state": "Stav",
|
||||
"transition": "Přechod",
|
||||
"history": "Historie",
|
||||
"priority": "Priorita",
|
||||
"none": "Žádná",
|
||||
"urgent": "Naléhavá",
|
||||
"high": "Vysoká",
|
||||
"medium": "Střední",
|
||||
"low": "Nízká",
|
||||
"members": "Členové",
|
||||
"assignee": "Přiřazeno",
|
||||
"assignees": "Přiřazení",
|
||||
"subscriber": "{count, plural, one{# Odběratel} few{# Odběratelé} other{# Odběratelů}}",
|
||||
"you": "Vy",
|
||||
"labels": "Štítky",
|
||||
"create_new_label": "Vytvořit nový štítek",
|
||||
"label_name": "Název štítku",
|
||||
"failed_to_create_label": "Vytvoření štítku se nezdařilo. Zkuste to prosím znovu.",
|
||||
"start_date": "Datum začátku",
|
||||
"end_date": "Datum ukončení",
|
||||
"due_date": "Termín",
|
||||
"target_date": "Cílové datum",
|
||||
"estimate": "Odhad",
|
||||
"change_parent_issue": "Změnit nadřazenou pracovní položku",
|
||||
"remove_parent_issue": "Odebrat nadřazenou pracovní položku",
|
||||
"add_parent": "Přidat nadřazenou",
|
||||
"loading_members": "Načítání členů",
|
||||
"view_link_copied_to_clipboard": "Odkaz na pohled zkopírován do schránky.",
|
||||
"required": "Povinné",
|
||||
"optional": "Volitelné",
|
||||
"Cancel": "Zrušit",
|
||||
"edit": "Upravit",
|
||||
"archive": "Archivovat",
|
||||
"restore": "Obnovit",
|
||||
"open_in_new_tab": "Otevřít v nové záložce",
|
||||
"delete": "Smazat",
|
||||
"deleting": "Mazání",
|
||||
"make_a_copy": "Vytvořit kopii",
|
||||
"move_to_project": "Přesunout do projektu",
|
||||
"good": "Dobrý",
|
||||
"morning": "ráno",
|
||||
"afternoon": "odpoledne",
|
||||
"evening": "večer",
|
||||
"show_all": "Zobrazit vše",
|
||||
"show_less": "Zobrazit méně",
|
||||
"no_data_yet": "Zatím žádná data",
|
||||
"syncing": "Synchronizace",
|
||||
"add_work_item": "Přidat pracovní položku",
|
||||
"advanced_description_placeholder": "Stiskněte '/' pro příkazy",
|
||||
"create_work_item": "Vytvořit pracovní položku",
|
||||
"attachments": "Přílohy",
|
||||
"declining": "Odmítání",
|
||||
"declined": "Odmítnuto",
|
||||
"decline": "Odmítnout",
|
||||
"unassigned": "Nepřiřazeno",
|
||||
"work_items": "Pracovní položky",
|
||||
"add_link": "Přidat odkaz",
|
||||
"points": "Body",
|
||||
"no_assignee": "Žádné přiřazení",
|
||||
"no_assignees_yet": "Zatím žádní přiřazení",
|
||||
"no_labels_yet": "Zatím žádné štítky",
|
||||
"ideal": "Ideální",
|
||||
"current": "Aktuální",
|
||||
"no_matching_members": "Žádní odpovídající členové",
|
||||
"leaving": "Opouštění",
|
||||
"removing": "Odebírání",
|
||||
"leave": "Opustit",
|
||||
"refresh": "Obnovit",
|
||||
"refreshing": "Obnovování",
|
||||
"refresh_status": "Obnovit stav",
|
||||
"prev": "Předchozí",
|
||||
"next": "Další",
|
||||
"re_generating": "Znovu generování",
|
||||
"re_generate": "Znovu generovat",
|
||||
"re_generate_key": "Znovu generovat klíč",
|
||||
"export": "Exportovat",
|
||||
"member": "{count, plural, one{# člen} few{# členové} other{# členů}}",
|
||||
"new_password_must_be_different_from_old_password": "Nové heslo musí být odlišné od starého hesla",
|
||||
"edited": "upraveno",
|
||||
"bot": "Bot",
|
||||
"settings_description": "Spravujte nastavení svého účtu, pracovního prostoru a projektů na jednom místě. Přepínáním mezi záložkami je můžete snadno konfigurovat.",
|
||||
"back_to_workspace": "Zpět do pracovního prostoru",
|
||||
"upgrade_request": "Požádejte správce pracovního prostoru o upgrade.",
|
||||
"copied_to_clipboard": "Zkopírováno do schránky",
|
||||
"copied_to_clipboard_description": "URL byla úspěšně zkopírována do schránky",
|
||||
"toast": {
|
||||
"success": "Úspěch!",
|
||||
"error": "Chyba!"
|
||||
},
|
||||
"links": {
|
||||
"toasts": {
|
||||
"created": {
|
||||
"title": "Odkaz vytvořen",
|
||||
"message": "Odkaz byl úspěšně vytvořen"
|
||||
},
|
||||
"not_created": {
|
||||
"title": "Odkaz nebyl vytvořen",
|
||||
"message": "Odkaz se nepodařilo vytvořit"
|
||||
},
|
||||
"updated": {
|
||||
"title": "Odkaz aktualizován",
|
||||
"message": "Odkaz byl úspěšně aktualizován"
|
||||
},
|
||||
"not_updated": {
|
||||
"title": "Odkaz nebyl aktualizován",
|
||||
"message": "Odkaz se nepodařilo aktualizovat"
|
||||
},
|
||||
"removed": {
|
||||
"title": "Odkaz odstraněn",
|
||||
"message": "Odkaz byl úspěšně odstraněn"
|
||||
},
|
||||
"not_removed": {
|
||||
"title": "Odkaz nebyl odstraněn",
|
||||
"message": "Odkaz se nepodařilo odstranit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"link": {
|
||||
"modal": {
|
||||
"url": {
|
||||
"text": "URL",
|
||||
"required": "URL je neplatná",
|
||||
"placeholder": "Zadejte nebo vložte URL"
|
||||
},
|
||||
"title": {
|
||||
"text": "Zobrazovaný název",
|
||||
"placeholder": "Jak chcete tento odkaz vidět"
|
||||
}
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"all": "Vše",
|
||||
"no_items_in_this_group": "V této skupině nejsou žádné položky",
|
||||
"drop_here_to_move": "Přetáhněte sem pro přesunutí",
|
||||
"states": "Stavy",
|
||||
"state": "Stav",
|
||||
"state_groups": "Skupiny stavů",
|
||||
"state_group": "Skupina stavů",
|
||||
"priorities": "Priority",
|
||||
"priority": "Priorita",
|
||||
"team_project": "Týmový projekt",
|
||||
"project": "Projekt",
|
||||
"cycle": "Cyklus",
|
||||
"cycles": "Cykly",
|
||||
"module": "Modul",
|
||||
"modules": "Moduly",
|
||||
"labels": "Štítky",
|
||||
"label": "Štítek",
|
||||
"admins": "Administrátoři",
|
||||
"users": "Uživatelé",
|
||||
"guests": "Hosté",
|
||||
"assignees": "Přiřazení",
|
||||
"assignee": "Přiřazeno",
|
||||
"created_by": "Vytvořil",
|
||||
"none": "Žádné",
|
||||
"link": "Odkaz",
|
||||
"estimates": "Odhady",
|
||||
"estimate": "Odhad",
|
||||
"created_at": "Vytvořeno dne",
|
||||
"updated_at": "Aktualizováno dne",
|
||||
"completed_at": "Dokončeno dne",
|
||||
"layout": "Rozložení",
|
||||
"filters": "Filtry",
|
||||
"display": "Zobrazení",
|
||||
"load_more": "Načíst více",
|
||||
"activity": "Aktivita",
|
||||
"analytics": "Analytika",
|
||||
"dates": "Data",
|
||||
"success": "Úspěch!",
|
||||
"something_went_wrong": "Něco se pokazilo",
|
||||
"error": {
|
||||
"label": "Chyba!",
|
||||
"message": "Došlo k chybě. Zkuste to prosím znovu."
|
||||
},
|
||||
"group_by": "Seskupit podle",
|
||||
"epic": "Epika",
|
||||
"epics": "Epiky",
|
||||
"work_item": "Pracovní položka",
|
||||
"work_items": "Pracovní položky",
|
||||
"sub_work_item": "Podřízená pracovní položka",
|
||||
"views": "Pohledy",
|
||||
"pages": "Stránky",
|
||||
"add": "Přidat",
|
||||
"warning": "Varování",
|
||||
"updating": "Aktualizace",
|
||||
"adding": "Přidávání",
|
||||
"update": "Aktualizovat",
|
||||
"creating": "Vytváření",
|
||||
"create": "Vytvořit",
|
||||
"cancel": "Zrušit",
|
||||
"description": "Popis",
|
||||
"title": "Název",
|
||||
"attachment": "Příloha",
|
||||
"general": "Obecné",
|
||||
"features": "Funkce",
|
||||
"automation": "Automatizace",
|
||||
"project_name": "Název projektu",
|
||||
"project_id": "ID projektu",
|
||||
"project_timezone": "Časové pásmo projektu",
|
||||
"created_on": "Vytvořeno dne",
|
||||
"updated_on": "Aktualizováno",
|
||||
"completed_on": "Completed on",
|
||||
"update_project": "Aktualizovat projekt",
|
||||
"identifier_already_exists": "Identifikátor již existuje",
|
||||
"add_more": "Přidat více",
|
||||
"defaults": "Výchozí",
|
||||
"add_label": "Přidat štítek",
|
||||
"customize_time_range": "Přizpůsobit časový rozsah",
|
||||
"loading": "Načítání",
|
||||
"attachments": "Přílohy",
|
||||
"property": "Vlastnost",
|
||||
"properties": "Vlastnosti",
|
||||
"parent": "Nadřazený",
|
||||
"page": "Stránka",
|
||||
"remove": "Odebrat",
|
||||
"archiving": "Archivace",
|
||||
"archive": "Archivovat",
|
||||
"access": {
|
||||
"public": "Veřejný",
|
||||
"private": "Soukromý"
|
||||
},
|
||||
"done": "Hotovo",
|
||||
"sub_work_items": "Podřízené pracovní položky",
|
||||
"comment": "Komentář",
|
||||
"workspace_level": "Úroveň pracovního prostoru",
|
||||
"order_by": {
|
||||
"label": "Řadit podle",
|
||||
"manual": "Ručně - Pořadí",
|
||||
"last_created": "Naposledy vytvořené",
|
||||
"last_updated": "Naposledy aktualizované",
|
||||
"start_date": "Datum začátku",
|
||||
"due_date": "Termín",
|
||||
"asc": "Vzestupně",
|
||||
"desc": "Sestupně",
|
||||
"updated_on": "Aktualizováno dne"
|
||||
},
|
||||
"sort": {
|
||||
"asc": "Vzestupně",
|
||||
"desc": "Sestupně",
|
||||
"created_on": "Vytvořeno dne",
|
||||
"updated_on": "Aktualizováno dne"
|
||||
},
|
||||
"comments": "Komentáře",
|
||||
"updates": "Aktualizace",
|
||||
"additional_updates": "Další aktualizace",
|
||||
"clear_all": "Vymazat vše",
|
||||
"copied": "Zkopírováno!",
|
||||
"link_copied": "Odkaz zkopírován!",
|
||||
"link_copied_to_clipboard": "Odkaz zkopírován do schránky",
|
||||
"copied_to_clipboard": "Odkaz na pracovní položku zkopírován do schránky",
|
||||
"branch_name_copied_to_clipboard": "Název větve zkopírován do schránky",
|
||||
"is_copied_to_clipboard": "Pracovní položka zkopírována do schránky",
|
||||
"no_links_added_yet": "Zatím nejsou přidány žádné odkazy",
|
||||
"add_link": "Přidat odkaz",
|
||||
"links": "Odkazy",
|
||||
"go_to_workspace": "Přejít do pracovního prostoru",
|
||||
"progress": "Pokrok",
|
||||
"optional": "Volitelné",
|
||||
"join": "Připojit se",
|
||||
"go_back": "Zpět",
|
||||
"continue": "Pokračovat",
|
||||
"resend": "Znovu odeslat",
|
||||
"relations": "Vztahy",
|
||||
"dependencies": "Závislosti",
|
||||
"errors": {
|
||||
"default": {
|
||||
"title": "Chyba!",
|
||||
"message": "Něco se pokazilo. Zkuste to prosím znovu."
|
||||
},
|
||||
"required": "Toto pole je povinné",
|
||||
"entity_required": "{entity} je povinná",
|
||||
"restricted_entity": "{entity} je omezen"
|
||||
},
|
||||
"update_link": "Aktualizovat odkaz",
|
||||
"attach": "Připojit",
|
||||
"create_new": "Vytvořit nový",
|
||||
"add_existing": "Přidat existující",
|
||||
"type_or_paste_a_url": "Zadejte nebo vložte URL",
|
||||
"url_is_invalid": "URL je neplatná",
|
||||
"display_title": "Zobrazovaný název",
|
||||
"link_title_placeholder": "Jak chcete tento odkaz vidět",
|
||||
"url": "URL",
|
||||
"side_peek": "Postranní náhled",
|
||||
"modal": "Modální okno",
|
||||
"full_screen": "Celá obrazovka",
|
||||
"close_peek_view": "Zavřít náhled",
|
||||
"toggle_peek_view_layout": "Přepnout rozložení náhledu",
|
||||
"options": "Možnosti",
|
||||
"duration": "Trvání",
|
||||
"today": "Dnes",
|
||||
"week": "Týden",
|
||||
"month": "Měsíc",
|
||||
"quarter": "Čtvrtletí",
|
||||
"press_for_commands": "Stiskněte '/' pro příkazy",
|
||||
"click_to_add_description": "Klikněte pro přidání popisu",
|
||||
"on_track": "Na správné cestě",
|
||||
"off_track": "Mimo plán",
|
||||
"at_risk": "V ohrožení",
|
||||
"timeline": "Časová osa",
|
||||
"completion": "Dokončení",
|
||||
"upcoming": "Nadcházející",
|
||||
"completed": "Dokončeno",
|
||||
"in_progress": "Probíhá",
|
||||
"planned": "Plánováno",
|
||||
"paused": "Pozastaveno",
|
||||
"search": {
|
||||
"label": "Hledat",
|
||||
"placeholder": "Zadejte hledaný výraz",
|
||||
"no_matches_found": "Nenalezeny žádné shody",
|
||||
"no_matching_results": "Žádné odpovídající výsledky",
|
||||
"min_chars": "Pro hledání zadejte alespoň {count} znaků",
|
||||
"error": "Chyba při načítání výsledků hledání",
|
||||
"no_results": {
|
||||
"title": "Žádné odpovídající výsledky",
|
||||
"description": "Odstraňte kritéria hledání pro zobrazení všech výsledků"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"edit": "Upravit",
|
||||
"make_a_copy": "Vytvořit kopii",
|
||||
"open_in_new_tab": "Otevřít v nové záložce",
|
||||
"copy_link": "Kopírovat odkaz",
|
||||
"copy_branch_name": "Kopírovat název větve",
|
||||
"archive": "Archivovat",
|
||||
"restore": "Obnovit",
|
||||
"delete": "Smazat",
|
||||
"remove_relation": "Odebrat vztah",
|
||||
"subscribe": "Odebírat",
|
||||
"unsubscribe": "Zrušit odběr",
|
||||
"clear_sorting": "Vymazat řazení",
|
||||
"show_weekends": "Zobrazit víkendy",
|
||||
"enable": "Povolit",
|
||||
"disable": "Zakázat",
|
||||
"copy_markdown": "Kopírovat markdown",
|
||||
"reply": "Odpovědět"
|
||||
},
|
||||
"name": "Název",
|
||||
"discard": "Zahodit",
|
||||
"confirm": "Potvrdit",
|
||||
"confirming": "Potvrzování",
|
||||
"read_the_docs": "Přečtěte si dokumentaci",
|
||||
"default": "Výchozí",
|
||||
"active": "Aktivní",
|
||||
"enabled": "Povoleno",
|
||||
"disabled": "Zakázáno",
|
||||
"mandate": "Mandát",
|
||||
"mandatory": "Povinné",
|
||||
"global": "Globální",
|
||||
"yes": "Ano",
|
||||
"no": "Ne",
|
||||
"please_wait": "Prosím čekejte",
|
||||
"enabling": "Povolování",
|
||||
"disabling": "Zakazování",
|
||||
"beta": "Beta",
|
||||
"or": "nebo",
|
||||
"next": "Další",
|
||||
"back": "Zpět",
|
||||
"retry": "Zkusit znovu",
|
||||
"cancelling": "Rušení",
|
||||
"configuring": "Konfigurace",
|
||||
"clear": "Vymazat",
|
||||
"import": "Importovat",
|
||||
"connect": "Připojit",
|
||||
"authorizing": "Autorizace",
|
||||
"processing": "Zpracování",
|
||||
"no_data_available": "Nejsou k dispozici žádná data",
|
||||
"from": "od {name}",
|
||||
"authenticated": "Ověřeno",
|
||||
"select": "Vybrat",
|
||||
"upgrade": "Upgradovat",
|
||||
"add_seats": "Přidat místa",
|
||||
"projects": "Projekty",
|
||||
"workspace": "Pracovní prostor",
|
||||
"workspaces": "Pracovní prostory",
|
||||
"team": "Tým",
|
||||
"teams": "Týmy",
|
||||
"entity": "Entita",
|
||||
"entities": "Entity",
|
||||
"task": "Úkol",
|
||||
"tasks": "Úkoly",
|
||||
"section": "Sekce",
|
||||
"sections": "Sekce",
|
||||
"edit": "Upravit",
|
||||
"connecting": "Připojování",
|
||||
"connected": "Připojeno",
|
||||
"disconnect": "Odpojit",
|
||||
"disconnecting": "Odpojování",
|
||||
"installing": "Instalace",
|
||||
"install": "Nainstalovat",
|
||||
"reset": "Resetovat",
|
||||
"live": "Živě",
|
||||
"change_history": "Historie změn",
|
||||
"coming_soon": "Již brzy",
|
||||
"member": "Člen",
|
||||
"members": "Členové",
|
||||
"you": "Vy",
|
||||
"upgrade_cta": {
|
||||
"higher_subscription": "Upgradovat na vyšší předplatné",
|
||||
"talk_to_sales": "Promluvte si s prodejem"
|
||||
},
|
||||
"category": "Kategorie",
|
||||
"categories": "Kategorie",
|
||||
"saving": "Ukládání",
|
||||
"save_changes": "Uložit změny",
|
||||
"delete": "Smazat",
|
||||
"deleting": "Mazání",
|
||||
"pending": "Čekající",
|
||||
"invite": "Pozvat",
|
||||
"view": "Pohled",
|
||||
"deactivated_user": "Deaktivovaný uživatel",
|
||||
"apply": "Použít",
|
||||
"applying": "Používání",
|
||||
"overview": "Přehled",
|
||||
"no_of": "Počet {entity}",
|
||||
"resolved": "Vyřešeno",
|
||||
"get_started": "Začít",
|
||||
"worklogs": "Pracovní záznamy",
|
||||
"project_updates": "Aktualizace projektu",
|
||||
"workflows": "Workflow",
|
||||
"templates": "Šablony",
|
||||
"business": "Business",
|
||||
"members_and_teamspaces": "Členové a týmové prostory",
|
||||
"recurring_work_items": "Opakující se pracovní položky",
|
||||
"milestones": "Milníky",
|
||||
"open_in_full_screen": "Otevřít {page} na celou obrazovku",
|
||||
"details": "Podrobnosti",
|
||||
"project_structure": "Struktura projektu",
|
||||
"custom_properties": "Vlastní vlastnosti",
|
||||
"your_profile": "Your profile",
|
||||
"developer": "Developer",
|
||||
"work_structure": "Work structure",
|
||||
"execution": "Execution",
|
||||
"administration": "Administration"
|
||||
},
|
||||
"chart": {
|
||||
"x_axis": "Osa X",
|
||||
"y_axis": "Osa Y",
|
||||
"metric": "Metrika"
|
||||
},
|
||||
"form": {
|
||||
"title": {
|
||||
"required": "Název je povinný",
|
||||
"max_length": "Název by měl být kratší než {length} znaků"
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"grouping_title": "Seskupení {entity}",
|
||||
"priority": "Priorita {entity}",
|
||||
"all": "Všechny {entity}",
|
||||
"drop_here_to_move": "Přetáhněte sem pro přesunutí {entity}",
|
||||
"delete": {
|
||||
"label": "Smazat {entity}",
|
||||
"success": "{entity} úspěšně smazána",
|
||||
"failed": "Mazání {entity} se nezdařilo"
|
||||
},
|
||||
"update": {
|
||||
"failed": "Aktualizace {entity} se nezdařila",
|
||||
"success": "{entity} úspěšně aktualizována"
|
||||
},
|
||||
"link_copied_to_clipboard": "Odkaz na {entity} zkopírován do schránky",
|
||||
"fetch": {
|
||||
"failed": "Chyba při načítání {entity}"
|
||||
},
|
||||
"add": {
|
||||
"success": "{entity} úspěšně přidána",
|
||||
"failed": "Chyba při přidávání {entity}"
|
||||
},
|
||||
"remove": {
|
||||
"success": "{entity} úspěšně odebrána",
|
||||
"failed": "Chyba při odebírání {entity}"
|
||||
}
|
||||
},
|
||||
"attachment": {
|
||||
"error": "Soubor nelze připojit. Zkuste to prosím znovu.",
|
||||
"only_one_file_allowed": "Je možné nahrát pouze jeden soubor najednou.",
|
||||
"file_size_limit": "Soubor musí být menší než {size}MB.",
|
||||
"drag_and_drop": "Přetáhněte soubor kamkoli pro nahrání",
|
||||
"delete": "Smazat přílohu"
|
||||
},
|
||||
"label": {
|
||||
"select": "Vybrat štítek",
|
||||
"create": {
|
||||
"success": "Štítek úspěšně vytvořen",
|
||||
"failed": "Vytvoření štítku se nezdařilo",
|
||||
"already_exists": "Štítek již existuje",
|
||||
"type": "Zadejte pro vytvoření nového štítku"
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"label": "{count, plural, one {Pohled} few {Pohledy} other {Pohledů}}",
|
||||
"create": {
|
||||
"label": "Vytvořit pohled"
|
||||
},
|
||||
"update": {
|
||||
"label": "Aktualizovat pohled"
|
||||
}
|
||||
},
|
||||
"role_details": {
|
||||
"guest": {
|
||||
"title": "Host",
|
||||
"description": "Externí členové mohou být pozváni jako hosté."
|
||||
},
|
||||
"member": {
|
||||
"title": "Člen",
|
||||
"description": "Může číst, psát, upravovat a mazat entity."
|
||||
},
|
||||
"admin": {
|
||||
"title": "Správce",
|
||||
"description": "Má všechna oprávnění v prostoru."
|
||||
}
|
||||
},
|
||||
"user_roles": {
|
||||
"product_or_project_manager": "Produktový/Projektový manažer",
|
||||
"development_or_engineering": "Vývoj/Inženýrství",
|
||||
"founder_or_executive": "Zakladatel/Vedoucí pracovník",
|
||||
"freelancer_or_consultant": "Freelancer/Konzultant",
|
||||
"marketing_or_growth": "Marketing/Růst",
|
||||
"sales_or_business_development": "Prodej/Business Development",
|
||||
"support_or_operations": "Podpora/Operace",
|
||||
"student_or_professor": "Student/Profesor",
|
||||
"human_resources": "Lidské zdroje",
|
||||
"other": "Jiné"
|
||||
},
|
||||
"default_global_view": {
|
||||
"all_issues": "Všechny položky",
|
||||
"assigned": "Přiřazeno",
|
||||
"created": "Vytvořeno",
|
||||
"subscribed": "Odebíráno"
|
||||
},
|
||||
"description_versions": {
|
||||
"last_edited_by": "Naposledy upraveno uživatelem",
|
||||
"previously_edited_by": "Dříve upraveno uživatelem",
|
||||
"edited_by": "Upraveno uživatelem"
|
||||
},
|
||||
"self_hosted_maintenance_message": {
|
||||
"plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane se nespustil. To může být způsobeno tím, že se jeden nebo více služeb Plane nepodařilo spustit.",
|
||||
"choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Vyberte View Logs z setup.sh a Docker logů, abyste si byli jisti."
|
||||
},
|
||||
"customize_navigation": "Přizpůsobit navigaci",
|
||||
"personal": "Osobní",
|
||||
"accordion_navigation_control": "Harmonikové postranní navigační menu",
|
||||
"horizontal_navigation_bar": "Navigace se záložkami",
|
||||
"show_limited_projects_on_sidebar": "Zobrazit omezený počet projektů v postranním panelu",
|
||||
"enter_number_of_projects": "Zadejte počet projektů",
|
||||
"pin": "Připnout",
|
||||
"unpin": "Odepnout",
|
||||
"workspace_dashboards": "Dashboards",
|
||||
"pi_chat": "Plane AI",
|
||||
"in_app": "V aplikaci",
|
||||
"forms": "Formuláře",
|
||||
"milestones": "Milníky",
|
||||
"milestones_description": "Milníky poskytují vrstvu pro sladění pracovních položek směrem ke společným termínům dokončení.",
|
||||
"file_upload": {
|
||||
"upload_text": "Klikněte zde pro nahrání souboru",
|
||||
"drag_drop_text": "Přetáhnout a upustit",
|
||||
"processing": "Zpracovává se",
|
||||
"invalid_file_type": "Neplatný typ souboru",
|
||||
"missing_fields": "Chybějící pole",
|
||||
"success": "{fileName} nahráno!"
|
||||
},
|
||||
"date": "Datum",
|
||||
"exporter": {
|
||||
"csv": {
|
||||
"title": "CSV",
|
||||
"description": "Exportujte položky do CSV.",
|
||||
"short_description": "Exportovat jako CSV"
|
||||
},
|
||||
"excel": {
|
||||
"title": "Excel",
|
||||
"description": "Exportujte položky do Excelu.",
|
||||
"short_description": "Exportovat jako Excel"
|
||||
},
|
||||
"xlsx": {
|
||||
"title": "Excel",
|
||||
"description": "Exportujte položky do Excelu.",
|
||||
"short_description": "Exportovat jako Excel"
|
||||
},
|
||||
"json": {
|
||||
"title": "JSON",
|
||||
"description": "Exportujte položky do JSON.",
|
||||
"short_description": "Exportovat jako JSON"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"active_cycle": {
|
||||
"empty_state": {
|
||||
"progress": {
|
||||
"title": "Přidejte položky pro sledování pokroku"
|
||||
},
|
||||
"chart": {
|
||||
"title": "Přidejte položky pro zobrazení burndown grafu."
|
||||
},
|
||||
"priority_issue": {
|
||||
"title": "Zobrazí se vysoce prioritní položky."
|
||||
},
|
||||
"assignee": {
|
||||
"title": "Přiřaďte položky pro přehled přiřazení."
|
||||
},
|
||||
"label": {
|
||||
"title": "Přidejte štítky pro analýzu podle štítků."
|
||||
}
|
||||
}
|
||||
},
|
||||
"cycle": {
|
||||
"label": "{count, plural, one {Cyklus} few {Cykly} other {Cyklů}}",
|
||||
"no_cycle": "Žádný cyklus"
|
||||
},
|
||||
"active_cycle_analytics": {
|
||||
"empty_state": {
|
||||
"progress": {
|
||||
"title": "Přidejte pracovní položky do cyklu, abyste viděli jeho\n pokrok"
|
||||
},
|
||||
"priority": {
|
||||
"title": "Pozorujte vysoce prioritní pracovní položky řešené v\n cyklu na první pohled."
|
||||
},
|
||||
"assignee": {
|
||||
"title": "Přidejte přiřazení k pracovním položkám, abyste viděli\n rozdělení práce podle přiřazení."
|
||||
},
|
||||
"label": {
|
||||
"title": "Přidejte štítky k pracovním položkám, abyste viděli\n rozdělení práce podle štítků."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"attachmentComponent": {
|
||||
"uploader": {
|
||||
"drag_and_drop": "Přetáhněte soubory pro nahrání externích souborů"
|
||||
},
|
||||
"errors": {
|
||||
"file_too_large": {
|
||||
"title": "Soubor je příliš velký.",
|
||||
"description": "Maximální velikost na soubor je {maxFileSize} MB"
|
||||
},
|
||||
"unsupported_file_type": {
|
||||
"title": "Nepodporovaný typ souboru.",
|
||||
"description": "Zobrazit podporované formáty"
|
||||
},
|
||||
"default": {
|
||||
"title": "Nahrávání selhalo.",
|
||||
"description": "Něco se pokazilo. Zkuste to znovu."
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"description": "Upgradujte svůj plán pro zobrazení této přílohy."
|
||||
},
|
||||
"aria": {
|
||||
"click_to_upload": "Klikněte pro nahrání přílohy"
|
||||
}
|
||||
},
|
||||
"externalEmbedComponent": {
|
||||
"block_menu": {
|
||||
"convert_to_embed": "Převést na vložený obsah",
|
||||
"convert_to_link": "Převést na odkaz",
|
||||
"convert_to_richcard": "Převést na bohatou kartu"
|
||||
},
|
||||
"placeholder": {
|
||||
"insert_embed": "Vložte svůj preferovaný odkaz pro vložení, například video YouTube, design Figma atd.",
|
||||
"link": "Zadejte nebo vložte odkaz"
|
||||
},
|
||||
"input_modal": {
|
||||
"embed": "Vložit",
|
||||
"works_with_links": "Funguje s YouTube, Figma, Google Docs a dalšími"
|
||||
},
|
||||
"error": {
|
||||
"not_valid_link": "Zadejte prosím platnou URL adresu."
|
||||
}
|
||||
},
|
||||
"ai_block": {
|
||||
"content": {
|
||||
"placeholder": "Popište obsah tohoto bloku",
|
||||
"generated_here": "Zde bude vygenerován obsah AI"
|
||||
},
|
||||
"block_types": {
|
||||
"placeholder": "Vyberte typ bloku",
|
||||
"summarize_page": "Shrnout stránku",
|
||||
"custom_prompt": "Vlastní prompt"
|
||||
},
|
||||
"actions": {
|
||||
"discard": "Zahodit",
|
||||
"generate": "Vygenerovat",
|
||||
"generating": "Generování",
|
||||
"rewriting": "Přepisování",
|
||||
"rewrite": "Přepsat",
|
||||
"use_this": "Použít toto",
|
||||
"refine": "Upřesnit"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export default {} as const;
|
||||
@@ -0,0 +1,270 @@
|
||||
{
|
||||
"common_empty_state": {
|
||||
"progress": {
|
||||
"title": "Zatím nejsou k dispozici žádné metriky pokroku.",
|
||||
"description": "Začněte nastavovat hodnoty vlastností v pracovních položkách, abyste zde viděli metriky pokroku."
|
||||
},
|
||||
"updates": {
|
||||
"title": "Zatím žádné aktualizace.",
|
||||
"description": "Jakmile členové projektu přidají aktualizace, zobrazí se zde"
|
||||
},
|
||||
"search": {
|
||||
"title": "Žádné odpovídající výsledky.",
|
||||
"description": "Nebyly nalezeny žádné výsledky. Zkuste upravit vyhledávací výrazy."
|
||||
},
|
||||
"not_found": {
|
||||
"title": "Jejda! Něco se zdá být v nepořádku",
|
||||
"description": "Momentálně se nám nedaří načíst váš účet plane. Může se jednat o chybu sítě.",
|
||||
"cta_primary": "Zkuste znovu načíst"
|
||||
},
|
||||
"server_error": {
|
||||
"title": "Chyba serveru",
|
||||
"description": "Nemůžeme se připojit a načíst data z našeho serveru. Nebojte se, pracujeme na tom.",
|
||||
"cta_primary": "Zkuste znovu načíst"
|
||||
}
|
||||
},
|
||||
"project_empty_state": {
|
||||
"no_access": {
|
||||
"title": "Vypadá to, že nemáte přístup k tomuto projektu",
|
||||
"restricted_description": "Kontaktujte administrátora a požádejte o přístup, abyste zde mohli pokračovat.",
|
||||
"join_description": "Klikněte na tlačítko níže pro připojení k projektu.",
|
||||
"cta_primary": "Připojit se k projektu",
|
||||
"cta_loading": "Připojování k projektu"
|
||||
},
|
||||
"invalid_project": {
|
||||
"title": "Projekt nebyl nalezen",
|
||||
"description": "Projekt, který hledáte, neexistuje."
|
||||
},
|
||||
"work_items": {
|
||||
"title": "Začněte s vaší první pracovní položkou.",
|
||||
"description": "Pracovní položky jsou stavebními kameny vašeho projektu — přiřazujte vlastníky, nastavujte priority a snadno sledujte pokrok.",
|
||||
"cta_primary": "Vytvořte svou první pracovní položku"
|
||||
},
|
||||
"cycles": {
|
||||
"title": "Seskupujte a časově omezte svou práci v cyklech.",
|
||||
"description": "Rozdělte práci do časově omezených bloků, pracujte zpětně od termínu projektu pro nastavení dat a dosahujte hmatatelného pokroku jako tým.",
|
||||
"cta_primary": "Nastavte svůj první cyklus"
|
||||
},
|
||||
"cycle_work_items": {
|
||||
"title": "V tomto cyklu nejsou žádné pracovní položky k zobrazení",
|
||||
"description": "Vytvořte pracovní položky pro zahájení sledování pokroku vašeho týmu v tomto cyklu a dosažení vašich cílů včas.",
|
||||
"cta_primary": "Vytvořit pracovní položku",
|
||||
"cta_secondary": "Přidat existující pracovní položku"
|
||||
},
|
||||
"modules": {
|
||||
"title": "Namapujte cíle vašeho projektu na moduly a snadno sledujte.",
|
||||
"description": "Moduly se skládají z propojených pracovních položek. Pomáhají sledovat pokrok prostřednictvím fází projektu, z nichž každá má specifické termíny a analytiku, která ukazuje, jak blízko jste dosažení těchto fází.",
|
||||
"cta_primary": "Nastavte svůj první modul"
|
||||
},
|
||||
"module_work_items": {
|
||||
"title": "V tomto modulu nejsou žádné pracovní položky k zobrazení",
|
||||
"description": "Vytvořte pracovní položky pro zahájení sledování tohoto modulu.",
|
||||
"cta_primary": "Vytvořit pracovní položku",
|
||||
"cta_secondary": "Přidat existující pracovní položku"
|
||||
},
|
||||
"views": {
|
||||
"title": "Uložte vlastní pohledy pro váš projekt",
|
||||
"description": "Pohledy jsou uložené filtry, které vám pomáhají rychle přistupovat k informacím, které používáte nejčastěji. Spolupracujte bez námahy, zatímco spolupracovníci sdílejí a přizpůsobují pohledy svým specifickým potřebám.",
|
||||
"cta_primary": "Vytvořit pohled"
|
||||
},
|
||||
"no_work_items_in_project": {
|
||||
"title": "V projektu zatím nejsou žádné pracovní položky",
|
||||
"description": "Přidejte pracovní položky do svého projektu a rozdělte svou práci na sledovatelné části pomocí pohledů.",
|
||||
"cta_primary": "Přidat pracovní položku"
|
||||
},
|
||||
"work_item_filter": {
|
||||
"title": "Nebyly nalezeny žádné pracovní položky",
|
||||
"description": "Váš aktuální filtr nevrátil žádné výsledky. Zkuste změnit filtry.",
|
||||
"cta_primary": "Přidat pracovní položku"
|
||||
},
|
||||
"pages": {
|
||||
"title": "Dokumentujte vše — od poznámek po PRD",
|
||||
"description": "Stránky vám umožňují zachytit a organizovat informace na jednom místě. Pište poznámky ze schůzek, projektovou dokumentaci a PRD, vkládejte pracovní položky a strukturujte je pomocí připravených komponent.",
|
||||
"cta_primary": "Vytvořte svou první stránku"
|
||||
},
|
||||
"archive_pages": {
|
||||
"title": "Zatím žádné archivované stránky",
|
||||
"description": "Archivujte stránky, které nejsou na vašem radaru. Přistupte k nim zde, když budete potřebovat."
|
||||
},
|
||||
"intake_sidebar": {
|
||||
"title": "Zaznamenejte příchozí požadavky",
|
||||
"description": "Odesílejte nové požadavky k přezkoumání, stanovení priorit a sledování v rámci pracovního postupu vašeho projektu.",
|
||||
"cta_primary": "Vytvořit příchozí požadavek"
|
||||
},
|
||||
"intake_main": {
|
||||
"title": "Vyberte příchozí pracovní položku pro zobrazení jejích podrobností"
|
||||
},
|
||||
"epics": {
|
||||
"title": "Přeměňte složité projekty na strukturované epiky.",
|
||||
"description": "Epik vám pomůže organizovat velké cíle do menších, sledovatelných úkolů.",
|
||||
"cta_primary": "Vytvořit epik",
|
||||
"cta_secondary": "Dokumentace"
|
||||
},
|
||||
"epic_work_items": {
|
||||
"title": "K tomuto epiku jste ještě nepřidali pracovní položky.",
|
||||
"description": "Začněte přidáním některých pracovních položek k tomuto epiku a sledujte je zde.",
|
||||
"cta_secondary": "Přidat pracovní položky"
|
||||
}
|
||||
},
|
||||
"workspace_empty_state": {
|
||||
"archive_epics": {
|
||||
"title": "Zatím žádné archivované epiky",
|
||||
"description": "Můžete archivovat dokončené nebo zrušené epiky. Najdete je zde po archivaci."
|
||||
},
|
||||
"archive_work_items": {
|
||||
"title": "Zatím žádné archivované pracovní položky",
|
||||
"description": "Ručně nebo pomocí automatizace můžete archivovat dokončené nebo zrušené pracovní položky. Najdete je zde, jakmile budou archivovány.",
|
||||
"cta_primary": "Nastavit automatizaci"
|
||||
},
|
||||
"archive_cycles": {
|
||||
"title": "Zatím žádné archivované cykly",
|
||||
"description": "Pro úklid vašeho projektu archivujte dokončené cykly. Najdete je zde, jakmile budou archivovány."
|
||||
},
|
||||
"archive_modules": {
|
||||
"title": "Zatím žádné archivované moduly",
|
||||
"description": "Pro úklid vašeho projektu archivujte dokončené nebo zrušené moduly. Najdete je zde, jakmile budou archivovány."
|
||||
},
|
||||
"home_widget_quick_links": {
|
||||
"title": "Mějte po ruce důležité odkazy, zdroje nebo dokumenty pro vaši práci"
|
||||
},
|
||||
"inbox_sidebar_all": {
|
||||
"title": "Aktualizace pro vaše odebírané pracovní položky se zobrazí zde"
|
||||
},
|
||||
"inbox_sidebar_mentions": {
|
||||
"title": "Zmínky o vašich pracovních položkách se zobrazí zde"
|
||||
},
|
||||
"your_work_by_priority": {
|
||||
"title": "Zatím není přiřazena žádná pracovní položka"
|
||||
},
|
||||
"your_work_by_state": {
|
||||
"title": "Zatím není přiřazena žádná pracovní položka"
|
||||
},
|
||||
"views": {
|
||||
"title": "Zatím žádné pohledy",
|
||||
"description": "Přidejte pracovní položky do svého projektu a používejte pohledy pro snadné filtrování, třídění a sledování pokroku.",
|
||||
"cta_primary": "Přidat pracovní položku"
|
||||
},
|
||||
"drafts": {
|
||||
"title": "Napůl napsané pracovní položky",
|
||||
"description": "Chcete-li to vyzkoušet, začněte přidávat pracovní položku a nechte ji nedokončenou nebo vytvořte svůj první koncept níže. 😉",
|
||||
"cta_primary": "Vytvořit koncept pracovní položky"
|
||||
},
|
||||
"projects_archived": {
|
||||
"title": "Žádné archivované projekty",
|
||||
"description": "Vypadá to, že všechny vaše projekty jsou stále aktivní—skvělá práce!"
|
||||
},
|
||||
"analytics_projects": {
|
||||
"title": "Vytvořte projekty pro vizualizaci metrik projektu zde."
|
||||
},
|
||||
"analytics_work_items": {
|
||||
"title": "Vytvořte projekty s pracovními položkami a přiřazenými osobami pro zahájení sledování výkonu, pokroku a dopadu týmu zde."
|
||||
},
|
||||
"analytics_no_cycle": {
|
||||
"title": "Vytvořte cykly pro organizaci práce do časově omezených fází a sledování pokroku napříč sprinty."
|
||||
},
|
||||
"analytics_no_module": {
|
||||
"title": "Vytvořte moduly pro organizaci své práce a sledování pokroku napříč různými fázemi."
|
||||
},
|
||||
"analytics_no_intake": {
|
||||
"title": "Nastavte příjem pro správu příchozích požadavků a sledování, jak jsou přijímány a odmítány"
|
||||
},
|
||||
"home_widget_stickies": {
|
||||
"title": "Poznamenejte si nápad, zachyťte aha moment nebo zaznamenejte náhlý nápad. Přidejte poznámku a začněte."
|
||||
},
|
||||
"stickies": {
|
||||
"title": "Zachyťte nápady okamžitě",
|
||||
"description": "Vytvářejte poznámky pro rychlé poznámky a úkoly a mějte je u sebe, kamkoli jdete.",
|
||||
"cta_primary": "Vytvořit první poznámku",
|
||||
"cta_secondary": "Dokumentace"
|
||||
},
|
||||
"active_cycles": {
|
||||
"title": "Žádné aktivní cykly",
|
||||
"description": "Momentálně nemáte žádné probíhající cykly. Aktivní cykly se zde zobrazí, když budou zahrnovat dnešní datum."
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Vizualizujte svůj pokrok pomocí přehledů",
|
||||
"description": "Vytvářejte přizpůsobitelné přehledy pro sledování metrik, měření výsledků a efektivní prezentaci poznatků.",
|
||||
"cta_primary": "Vytvořit nový přehled"
|
||||
},
|
||||
"wiki": {
|
||||
"title": "Napište poznámku, dokument nebo celou znalostní bázi.",
|
||||
"description": "Stránky jsou prostorem pro zachycení myšlenek v Plane. Pořizujte poznámky ze schůzek, snadno je formátujte, vkládejte pracovní položky, uspořádejte je pomocí knihovny komponent a udržujte vše v kontextu vašeho projektu.",
|
||||
"cta_primary": "Vytvořte svou stránku"
|
||||
},
|
||||
"project_overview_state_sidebar": {
|
||||
"title": "Povolit stavy projektu",
|
||||
"description": "Povolte stavy projektu pro zobrazení a správu vlastností jako stav, priorita, termíny a další."
|
||||
}
|
||||
},
|
||||
"settings_empty_state": {
|
||||
"estimates": {
|
||||
"title": "Zatím žádné odhady",
|
||||
"description": "Definujte, jak váš tým měří úsilí, a sledujte to konzistentně napříč všemi pracovními položkami.",
|
||||
"cta_primary": "Přidat systém odhadů"
|
||||
},
|
||||
"labels": {
|
||||
"title": "Zatím žádné štítky",
|
||||
"description": "Vytvořte personalizované štítky pro efektivní kategorizaci a správu vašich pracovních položek.",
|
||||
"cta_primary": "Vytvořte svůj první štítek"
|
||||
},
|
||||
"exports": {
|
||||
"title": "Zatím žádné exporty",
|
||||
"description": "Momentálně nemáte žádné záznamy exportu. Jakmile exportujete data, všechny záznamy se zobrazí zde."
|
||||
},
|
||||
"tokens": {
|
||||
"title": "Zatím žádný osobní token",
|
||||
"description": "Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
|
||||
"cta_primary": "Přidat přístupový token"
|
||||
},
|
||||
"workspace_tokens": {
|
||||
"title": "Zatím žádný přístupový token",
|
||||
"description": "Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
|
||||
"cta_primary": "Přidat přístupový token"
|
||||
},
|
||||
"webhooks": {
|
||||
"title": "Zatím nebyl přidán žádný Webhook",
|
||||
"description": "Automatizujte oznámení externím službám při výskytu událostí projektu.",
|
||||
"cta_primary": "Přidat webhook"
|
||||
},
|
||||
"work_item_types": {
|
||||
"title": "Vytvářejte a přizpůsobujte typy pracovních položek",
|
||||
"description": "Definujte jedinečné typy pracovních položek pro váš projekt. Každý typ může mít své vlastní vlastnosti, pracovní postupy a pole - přizpůsobené potřebám vašeho projektu a týmu.",
|
||||
"cta_primary": "Povolit"
|
||||
},
|
||||
"work_item_type_properties": {
|
||||
"title": "Definujte vlastnost a podrobnosti, které chcete zachytit pro tento typ pracovní položky. Přizpůsobte jej pracovnímu postupu vašeho projektu.",
|
||||
"cta_secondary": "Přidat vlastnost"
|
||||
},
|
||||
"templates": {
|
||||
"title": "Zatím žádné šablony",
|
||||
"description": "Zkraťte dobu nastavení vytvářením šablon pro pracovní položky a stránky — a začněte novou práci během několika sekund.",
|
||||
"cta_primary": "Vytvořte svou první šablonu"
|
||||
},
|
||||
"recurring_work_items": {
|
||||
"title": "Zatím žádná opakující se pracovní položka",
|
||||
"description": "Nastavte opakující se pracovní položky pro automatizaci opakujících se úkolů a snadné dodržování harmonogramu.",
|
||||
"cta_primary": "Vytvořit opakující se pracovní položku"
|
||||
},
|
||||
"worklogs": {
|
||||
"title": "Sledujte časové výkazy pro všechny členy",
|
||||
"description": "Zaznamenávejte čas na pracovních položkách pro zobrazení podrobných časových výkazů pro jakéhokoli člena týmu napříč projekty."
|
||||
},
|
||||
"group_syncing": {
|
||||
"title": "Zatím žádná mapování skupin"
|
||||
},
|
||||
"template_setting": {
|
||||
"title": "Zatím žádné šablony",
|
||||
"description": "Zkraťte dobu nastavení vytvářením šablon pro projekty, pracovní položky a stránky — a začněte novou práci během několika sekund.",
|
||||
"cta_primary": "Vytvořit šablonu"
|
||||
},
|
||||
"workflows": {
|
||||
"title": "Zatím žádné workflow",
|
||||
"description": "Vytvářejte workflow pro správu průběhu vašich pracovních položek.",
|
||||
"cta_primary": "Přidat nové workflow",
|
||||
"states": {
|
||||
"title": "Přidat stavy",
|
||||
"description": "Vyberte stavy, kterými pracovní položka prochází."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,203 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export default {
|
||||
common_empty_state: {
|
||||
progress: {
|
||||
title: "Zatím nejsou k dispozici žádné metriky pokroku.",
|
||||
description: "Začněte nastavovat hodnoty vlastností v pracovních položkách, abyste zde viděli metriky pokroku.",
|
||||
},
|
||||
updates: {
|
||||
title: "Zatím žádné aktualizace.",
|
||||
description: "Jakmile členové projektu přidají aktualizace, zobrazí se zde",
|
||||
},
|
||||
search: {
|
||||
title: "Žádné odpovídající výsledky.",
|
||||
description: "Nebyly nalezeny žádné výsledky. Zkuste upravit vyhledávací výrazy.",
|
||||
},
|
||||
not_found: {
|
||||
title: "Jejda! Něco se zdá být v nepořádku",
|
||||
description: "Momentálně se nám nedaří načíst váš účet plane. Může se jednat o chybu sítě.",
|
||||
cta_primary: "Zkuste znovu načíst",
|
||||
},
|
||||
server_error: {
|
||||
title: "Chyba serveru",
|
||||
description: "Nemůžeme se připojit a načíst data z našeho serveru. Nebojte se, pracujeme na tom.",
|
||||
cta_primary: "Zkuste znovu načíst",
|
||||
},
|
||||
},
|
||||
project_empty_state: {
|
||||
no_access: {
|
||||
title: "Vypadá to, že nemáte přístup k tomuto projektu",
|
||||
restricted_description: "Kontaktujte administrátora a požádejte o přístup, abyste zde mohli pokračovat.",
|
||||
join_description: "Klikněte na tlačítko níže pro připojení k projektu.",
|
||||
cta_primary: "Připojit se k projektu",
|
||||
cta_loading: "Připojování k projektu",
|
||||
},
|
||||
invalid_project: {
|
||||
title: "Projekt nebyl nalezen",
|
||||
description: "Projekt, který hledáte, neexistuje.",
|
||||
},
|
||||
work_items: {
|
||||
title: "Začněte s vaší první pracovní položkou.",
|
||||
description:
|
||||
"Pracovní položky jsou stavebními kameny vašeho projektu — přiřazujte vlastníky, nastavujte priority a snadno sledujte pokrok.",
|
||||
cta_primary: "Vytvořte svou první pracovní položku",
|
||||
},
|
||||
cycles: {
|
||||
title: "Seskupujte a časově omezte svou práci v cyklech.",
|
||||
description:
|
||||
"Rozdělte práci do časově omezených bloků, pracujte zpětně od termínu projektu pro nastavení dat a dosahujte hmatatelného pokroku jako tým.",
|
||||
cta_primary: "Nastavte svůj první cyklus",
|
||||
},
|
||||
cycle_work_items: {
|
||||
title: "V tomto cyklu nejsou žádné pracovní položky k zobrazení",
|
||||
description:
|
||||
"Vytvořte pracovní položky pro zahájení sledování pokroku vašeho týmu v tomto cyklu a dosažení vašich cílů včas.",
|
||||
cta_primary: "Vytvořit pracovní položku",
|
||||
cta_secondary: "Přidat existující pracovní položku",
|
||||
},
|
||||
modules: {
|
||||
title: "Namapujte cíle vašeho projektu na moduly a snadno sledujte.",
|
||||
description:
|
||||
"Moduly se skládají z propojených pracovních položek. Pomáhají sledovat pokrok prostřednictvím fází projektu, z nichž každá má specifické termíny a analytiku, která ukazuje, jak blízko jste dosažení těchto fází.",
|
||||
cta_primary: "Nastavte svůj první modul",
|
||||
},
|
||||
module_work_items: {
|
||||
title: "V tomto modulu nejsou žádné pracovní položky k zobrazení",
|
||||
description: "Vytvořte pracovní položky pro zahájení sledování tohoto modulu.",
|
||||
cta_primary: "Vytvořit pracovní položku",
|
||||
cta_secondary: "Přidat existující pracovní položku",
|
||||
},
|
||||
views: {
|
||||
title: "Uložte vlastní pohledy pro váš projekt",
|
||||
description:
|
||||
"Pohledy jsou uložené filtry, které vám pomáhají rychle přistupovat k informacím, které používáte nejčastěji. Spolupracujte bez námahy, zatímco spolupracovníci sdílejí a přizpůsobují pohledy svým specifickým potřebám.",
|
||||
cta_primary: "Vytvořit pohled",
|
||||
},
|
||||
no_work_items_in_project: {
|
||||
title: "V projektu zatím nejsou žádné pracovní položky",
|
||||
description:
|
||||
"Přidejte pracovní položky do svého projektu a rozdělte svou práci na sledovatelné části pomocí pohledů.",
|
||||
cta_primary: "Přidat pracovní položku",
|
||||
},
|
||||
work_item_filter: {
|
||||
title: "Nebyly nalezeny žádné pracovní položky",
|
||||
description: "Váš aktuální filtr nevrátil žádné výsledky. Zkuste změnit filtry.",
|
||||
cta_primary: "Přidat pracovní položku",
|
||||
},
|
||||
pages: {
|
||||
title: "Dokumentujte vše — od poznámek po PRD",
|
||||
description:
|
||||
"Stránky vám umožňují zachytit a organizovat informace na jednom místě. Pište poznámky ze schůzek, projektovou dokumentaci a PRD, vkládejte pracovní položky a strukturujte je pomocí připravených komponent.",
|
||||
cta_primary: "Vytvořte svou první stránku",
|
||||
},
|
||||
archive_pages: {
|
||||
title: "Zatím žádné archivované stránky",
|
||||
description: "Archivujte stránky, které nejsou na vašem radaru. Přistupte k nim zde, když budete potřebovat.",
|
||||
},
|
||||
intake_sidebar: {
|
||||
title: "Zaznamenejte příchozí požadavky",
|
||||
description:
|
||||
"Odesílejte nové požadavky k přezkoumání, stanovení priorit a sledování v rámci pracovního postupu vašeho projektu.",
|
||||
cta_primary: "Vytvořit příchozí požadavek",
|
||||
},
|
||||
intake_main: {
|
||||
title: "Vyberte příchozí pracovní položku pro zobrazení jejích podrobností",
|
||||
},
|
||||
},
|
||||
workspace_empty_state: {
|
||||
archive_work_items: {
|
||||
title: "Zatím žádné archivované pracovní položky",
|
||||
description:
|
||||
"Ručně nebo pomocí automatizace můžete archivovat dokončené nebo zrušené pracovní položky. Najdete je zde, jakmile budou archivovány.",
|
||||
cta_primary: "Nastavit automatizaci",
|
||||
},
|
||||
archive_cycles: {
|
||||
title: "Zatím žádné archivované cykly",
|
||||
description: "Pro úklid vašeho projektu archivujte dokončené cykly. Najdete je zde, jakmile budou archivovány.",
|
||||
},
|
||||
archive_modules: {
|
||||
title: "Zatím žádné archivované moduly",
|
||||
description:
|
||||
"Pro úklid vašeho projektu archivujte dokončené nebo zrušené moduly. Najdete je zde, jakmile budou archivovány.",
|
||||
},
|
||||
home_widget_quick_links: {
|
||||
title: "Mějte po ruce důležité odkazy, zdroje nebo dokumenty pro vaši práci",
|
||||
},
|
||||
inbox_sidebar_all: {
|
||||
title: "Aktualizace pro vaše odebírané pracovní položky se zobrazí zde",
|
||||
},
|
||||
inbox_sidebar_mentions: {
|
||||
title: "Zmínky o vašich pracovních položkách se zobrazí zde",
|
||||
},
|
||||
your_work_by_priority: {
|
||||
title: "Zatím není přiřazena žádná pracovní položka",
|
||||
},
|
||||
your_work_by_state: {
|
||||
title: "Zatím není přiřazena žádná pracovní položka",
|
||||
},
|
||||
views: {
|
||||
title: "Zatím žádné pohledy",
|
||||
description:
|
||||
"Přidejte pracovní položky do svého projektu a používejte pohledy pro snadné filtrování, třídění a sledování pokroku.",
|
||||
cta_primary: "Přidat pracovní položku",
|
||||
},
|
||||
drafts: {
|
||||
title: "Napůl napsané pracovní položky",
|
||||
description:
|
||||
"Chcete-li to vyzkoušet, začněte přidávat pracovní položku a nechte ji nedokončenou nebo vytvořte svůj první koncept níže. 😉",
|
||||
cta_primary: "Vytvořit koncept pracovní položky",
|
||||
},
|
||||
projects_archived: {
|
||||
title: "Žádné archivované projekty",
|
||||
description: "Vypadá to, že všechny vaše projekty jsou stále aktivní—skvělá práce!",
|
||||
},
|
||||
analytics_projects: {
|
||||
title: "Vytvořte projekty pro vizualizaci metrik projektu zde.",
|
||||
},
|
||||
analytics_work_items: {
|
||||
title:
|
||||
"Vytvořte projekty s pracovními položkami a přiřazenými osobami pro zahájení sledování výkonu, pokroku a dopadu týmu zde.",
|
||||
},
|
||||
analytics_no_cycle: {
|
||||
title: "Vytvořte cykly pro organizaci práce do časově omezených fází a sledování pokroku napříč sprinty.",
|
||||
},
|
||||
analytics_no_module: {
|
||||
title: "Vytvořte moduly pro organizaci své práce a sledování pokroku napříč různými fázemi.",
|
||||
},
|
||||
analytics_no_intake: {
|
||||
title: "Nastavte příjem pro správu příchozích požadavků a sledování, jak jsou přijímány a odmítány",
|
||||
},
|
||||
},
|
||||
settings_empty_state: {
|
||||
estimates: {
|
||||
title: "Zatím žádné odhady",
|
||||
description: "Definujte, jak váš tým měří úsilí, a sledujte to konzistentně napříč všemi pracovními položkami.",
|
||||
cta_primary: "Přidat systém odhadů",
|
||||
},
|
||||
labels: {
|
||||
title: "Zatím žádné štítky",
|
||||
description: "Vytvořte personalizované štítky pro efektivní kategorizaci a správu vašich pracovních položek.",
|
||||
cta_primary: "Vytvořte svůj první štítek",
|
||||
},
|
||||
exports: {
|
||||
title: "Zatím žádné exporty",
|
||||
description: "Momentálně nemáte žádné záznamy exportu. Jakmile exportujete data, všechny záznamy se zobrazí zde.",
|
||||
},
|
||||
tokens: {
|
||||
title: "Zatím žádný osobní token",
|
||||
description:
|
||||
"Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
|
||||
cta_primary: "Přidat API token",
|
||||
},
|
||||
webhooks: {
|
||||
title: "Zatím nebyl přidán žádný Webhook",
|
||||
description: "Automatizujte oznámení externím službám při výskytu událostí projektu.",
|
||||
cta_primary: "Přidat webhook",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"home": {
|
||||
"empty": {
|
||||
"quickstart_guide": "Váš průvodce rychlým startem",
|
||||
"not_right_now": "Teď ne",
|
||||
"create_project": {
|
||||
"title": "Vytvořit projekt",
|
||||
"description": "Většina věcí začíná projektem v Plane.",
|
||||
"cta": "Začít"
|
||||
},
|
||||
"invite_team": {
|
||||
"title": "Pozvat tým",
|
||||
"description": "Spolupracujte s kolegy na tvorbě, dodávkách a správě.",
|
||||
"cta": "Pozvat je"
|
||||
},
|
||||
"configure_workspace": {
|
||||
"title": "Nastavte svůj pracovní prostor.",
|
||||
"description": "Aktivujte nebo deaktivujte funkce nebo jděte dále.",
|
||||
"cta": "Konfigurovat tento prostor"
|
||||
},
|
||||
"personalize_account": {
|
||||
"title": "Přizpůsobte si Plane.",
|
||||
"description": "Vyberte si obrázek, barvy a další.",
|
||||
"cta": "Personalizovat nyní"
|
||||
},
|
||||
"widgets": {
|
||||
"title": "Je ticho bez widgetů, zapněte je",
|
||||
"description": "Vypadá to, že všechny vaše widgety jsou vypnuté. Zapněte je\npro lepší zážitek!",
|
||||
"primary_button": {
|
||||
"text": "Spravovat widgety"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quick_links": {
|
||||
"empty": "Uložte si odkazy na důležité věci, které chcete mít po ruce.",
|
||||
"add": "Přidat rychlý odkaz",
|
||||
"title": "Rychlý odkaz",
|
||||
"title_plural": "Rychlé odkazy"
|
||||
},
|
||||
"recents": {
|
||||
"title": "Nedávné",
|
||||
"empty": {
|
||||
"project": "Vaše nedávné projekty se zde zobrazí po návštěvě.",
|
||||
"page": "Vaše nedávné stránky se zde zobrazí po návštěvě.",
|
||||
"issue": "Vaše nedávné pracovní položky se zde zobrazí po návštěvě.",
|
||||
"default": "Zatím nemáte žádné nedávné položky."
|
||||
},
|
||||
"filters": {
|
||||
"all": "Vše",
|
||||
"projects": "Projekty",
|
||||
"pages": "Stránky",
|
||||
"issues": "Úkoly"
|
||||
}
|
||||
},
|
||||
"new_at_plane": {
|
||||
"title": "Novinky v Plane"
|
||||
},
|
||||
"quick_tutorial": {
|
||||
"title": "Rychlý tutoriál"
|
||||
},
|
||||
"widget": {
|
||||
"reordered_successfully": "Widget úspěšně přesunut.",
|
||||
"reordering_failed": "Při přesouvání widgetu došlo k chybě."
|
||||
},
|
||||
"manage_widgets": "Spravovat widgety",
|
||||
"title": "Domů",
|
||||
"star_us_on_github": "Ohodnoťte nás na GitHubu",
|
||||
"business_trial_banner": {
|
||||
"title": "Vaše 14denní zkušební verze plánu Business je aktivní!",
|
||||
"description": "Prozkoumejte všechny funkce Business. Až budete připraveni, zvolte předplatné. Nebudete automaticky účtováni.",
|
||||
"trial_ends_today": "Zkušební verze končí dnes",
|
||||
"trial_ends_in_days": "Zkušební verze končí za {days, plural, one {# den} few {# dny} other {# dní}}",
|
||||
"start_subscription": "Zahájit předplatné",
|
||||
"explore_business_features": "Prozkoumat funkce Business"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"inbox_issue": {
|
||||
"status": {
|
||||
"pending": {
|
||||
"title": "Čekající",
|
||||
"description": "Čekající"
|
||||
},
|
||||
"declined": {
|
||||
"title": "Odmítnuto",
|
||||
"description": "Odmítnuto"
|
||||
},
|
||||
"snoozed": {
|
||||
"title": "Odloženo",
|
||||
"description": "Zbývá {days, plural, one{# den} few{# dny} other{# dnů}}"
|
||||
},
|
||||
"accepted": {
|
||||
"title": "Přijato",
|
||||
"description": "Přijato"
|
||||
},
|
||||
"duplicate": {
|
||||
"title": "Duplikát",
|
||||
"description": "Duplikát"
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"decline": {
|
||||
"title": "Odmítnout pracovní položku",
|
||||
"content": "Opravdu chcete odmítnout pracovní položku {value}?"
|
||||
},
|
||||
"delete": {
|
||||
"title": "Smazat pracovní položku",
|
||||
"content": "Opravdu chcete smazat pracovní položku {value}?",
|
||||
"success": "Pracovní položka úspěšně smazána"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"snooze_permission": "Pouze správci projektu mohou odkládat/zrušit odložení pracovních položek",
|
||||
"accept_permission": "Pouze správci projektu mohou přijímat pracovní položky",
|
||||
"decline_permission": "Pouze správci projektu mohou odmítnout pracovní položky"
|
||||
},
|
||||
"actions": {
|
||||
"accept": "Přijmout",
|
||||
"decline": "Odmítnout",
|
||||
"snooze": "Odložit",
|
||||
"unsnooze": "Zrušit odložení",
|
||||
"copy": "Kopírovat odkaz na pracovní položku",
|
||||
"delete": "Smazat",
|
||||
"open": "Otevřít pracovní položku",
|
||||
"mark_as_duplicate": "Označit jako duplikát",
|
||||
"move": "Přesunout {value} do pracovních položek projektu"
|
||||
},
|
||||
"source": {
|
||||
"in-app": "v aplikaci"
|
||||
},
|
||||
"order_by": {
|
||||
"created_at": "Vytvořeno dne",
|
||||
"updated_at": "Aktualizováno dne",
|
||||
"id": "ID"
|
||||
},
|
||||
"label": "Příjem",
|
||||
"page_label": "{workspace} - Příjem",
|
||||
"modal": {
|
||||
"title": "Vytvořit přijatou pracovní položku"
|
||||
},
|
||||
"tabs": {
|
||||
"open": "Otevřené",
|
||||
"closed": "Uzavřené"
|
||||
},
|
||||
"empty_state": {
|
||||
"sidebar_open_tab": {
|
||||
"title": "Žádné otevřené pracovní položky",
|
||||
"description": "Zde najdete otevřené pracovní položky. Vytvořte novou."
|
||||
},
|
||||
"sidebar_closed_tab": {
|
||||
"title": "Žádné uzavřené pracovní položky",
|
||||
"description": "Všechny přijaté nebo odmítnuté pracovní položky najdete zde."
|
||||
},
|
||||
"sidebar_filter": {
|
||||
"title": "Žádné odpovídající pracovní položky",
|
||||
"description": "Žádná položka neodpovídá filtru v příjmu. Vytvořte novou."
|
||||
},
|
||||
"detail": {
|
||||
"title": "Vyberte pracovní položku pro zobrazení podrobností."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,331 @@
|
||||
{
|
||||
"integrations": {
|
||||
"integrations": "Integrace",
|
||||
"loading": "Načítání",
|
||||
"unauthorized": "Nemáte oprávnění k zobrazení této stránky.",
|
||||
"configure": "Nastavit",
|
||||
"not_enabled": "{name} není pro tento workspace povoleno.",
|
||||
"not_configured": "Není nakonfigurováno",
|
||||
"disconnect_personal_account": "Odpojit osobní účet {providerName}",
|
||||
"not_configured_message_admin": "Integrace {name} není nakonfigurována. Prosím, kontaktujte správce instance, aby ji nakonfiguroval.",
|
||||
"not_configured_message_support": "Integrace {name} není nakonfigurována. Prosím, kontaktujte podporu, aby ji nakonfigurovala.",
|
||||
"external_api_unreachable": "Nelze přistupovat k externímu API. Zkuste to prosím znovu později.",
|
||||
"error_fetching_supported_integrations": "Nelze načíst podporované integrace. Zkuste to prosím znovu později.",
|
||||
"back_to_integrations": "Zpět k integracím",
|
||||
"select_state": "Vyberte stav",
|
||||
"set_state": "Nastavit stav",
|
||||
"choose_project": "Vyberte projekt...",
|
||||
"skip_backward_state_movement": "Zabránit přesunu problémů do dřívějšího stavu kvůli aktualizacím PR"
|
||||
},
|
||||
"github_integration": {
|
||||
"name": "GitHub",
|
||||
"description": "Připojte a synchronizujte svou pracovní položku GitHub s Plane",
|
||||
"connect_org": "Připojit organizaci",
|
||||
"connect_org_description": "Připojte svou GitHub organizaci s Plane",
|
||||
"processing": "Spracovává se",
|
||||
"org_added_desc": "GitHub org přidána kým a kdy",
|
||||
"connection_fetch_error": "Chyba při načítání detailů připojení ze serveru",
|
||||
"personal_account_connected": "Osobní účet připojen",
|
||||
"personal_account_connected_description": "Váš GitHub účet je nyní připojen k Plane",
|
||||
"connect_personal_account": "Připojit osobní účet",
|
||||
"connect_personal_account_description": "Připojte svůj osobní GitHub účet s Plane.",
|
||||
"repo_mapping": "Mapování repozitářů",
|
||||
"repo_mapping_description": "Mapujte své GitHub repozitáře s projekty Plane.",
|
||||
"project_issue_sync": "Synchronizace problémů projektu",
|
||||
"project_issue_sync_description": "Synchronizujte problémy z GitHub do vašeho projektu Plane",
|
||||
"project_issue_sync_empty_state": "Namapované synchronizace problémů projektu se zobrazí zde",
|
||||
"configure_project_issue_sync_state": "Nastavte stav synchronizace problémů",
|
||||
"select_issue_sync_direction": "Vyberte směr synchronizace problémů",
|
||||
"allow_bidirectional_sync": "Bidirectional - Synchronizujte problémy a komentáře oběma směry mezi GitHub a Plane",
|
||||
"allow_unidirectional_sync": "Unidirectional - Synchronizujte problémy a komentáře z GitHub do Plane pouze",
|
||||
"allow_unidirectional_sync_warning": "Data z GitHub Issue nahradí data v propojené Plane pracovní položce (GitHub → Plane pouze)",
|
||||
"remove_project_issue_sync": "Odstranit tuto synchronizaci problémů projektu",
|
||||
"remove_project_issue_sync_confirmation": "Jste si jisti, že chcete odstranit tuto synchronizaci problémů projektu?",
|
||||
"add_pr_state_mapping": "Přidat mapování stavu žádosti o sloučení pro projekt Plane",
|
||||
"edit_pr_state_mapping": "Upravit mapování stavu žádosti o sloučení pro projekt Plane",
|
||||
"pr_state_mapping": "Mapování stavu žádosti o sloučení",
|
||||
"pr_state_mapping_description": "Mapujte stavy žádosti o sloučení z GitHub do vašeho projektu Plane",
|
||||
"pr_state_mapping_empty_state": "Namapované stavy PR se zobrazí zde",
|
||||
"remove_pr_state_mapping": "Odstranit toto mapování stavu žádosti o sloučení",
|
||||
"remove_pr_state_mapping_confirmation": "Jste si jisti, že chcete odstranit tuto mapování stavu žádosti o sloučení?",
|
||||
"issue_sync_message": "Pracovní položky jsou synchronizovány do {project}",
|
||||
"link": "Propojit GitHub repozitář s projektem Plane",
|
||||
"pull_request_automation": "Automatizace žádosti o sloučení",
|
||||
"pull_request_automation_description": "Nastavte mapování stavu žádosti o sloučení z GitHub do vašeho projektu Plane",
|
||||
"DRAFT_MR_OPENED": "Při otevření návrhu MR nastavte stav na",
|
||||
"MR_OPENED": "Při otevření MR nastavte stav na",
|
||||
"MR_READY_FOR_MERGE": "Při připravenosti MR ke sloučení nastavte stav na",
|
||||
"MR_REVIEW_REQUESTED": "Při žádosti o revizi MR nastavte stav na",
|
||||
"MR_MERGED": "Při sloučení MR nastavte stav na",
|
||||
"MR_CLOSED": "Při uzavření MR nastavte stav na",
|
||||
"ISSUE_OPEN": "Při otevření problému nastavte stav na",
|
||||
"ISSUE_CLOSED": "Při uzavření problému nastavte stav na",
|
||||
"save": "Uložit",
|
||||
"start_sync": "Spustit synchronizaci",
|
||||
"choose_repository": "Vyberte repozitář..."
|
||||
},
|
||||
"gitlab_integration": {
|
||||
"name": "Gitlab",
|
||||
"description": "Připojte a synchronizujte své žádosti o sloučení Gitlab s Plane.",
|
||||
"connection_fetch_error": "Chyba při načítání podrobností o připojení ze serveru",
|
||||
"connect_org": "Připojit organizaci",
|
||||
"connect_org_description": "Připojte svou organizaci Gitlab k Plane.",
|
||||
"project_connections": "Připojení projektů Gitlab",
|
||||
"project_connections_description": "Synchronizujte žádosti o sloučení z Gitlabu do projektů Plane.",
|
||||
"plane_project_connection": "Připojení projektu Plane",
|
||||
"plane_project_connection_description": "Nastavte mapování stavu žádosti o sloučení z Gitlabu do projektů Plane",
|
||||
"remove_connection": "Odstranit připojení",
|
||||
"remove_connection_confirmation": "Opravdu chcete odstranit toto připojení?",
|
||||
"link": "Propojit repozitář Gitlab s projektem Plane",
|
||||
"pull_request_automation": "Automatizace žádosti o sloučení",
|
||||
"pull_request_automation_description": "Nastavte mapování stavu žádosti o sloučení z Gitlabu do Plane",
|
||||
"DRAFT_MR_OPENED": "Při otevření návrhu MR nastavte stav na",
|
||||
"MR_OPENED": "Při otevření MR nastavte stav na",
|
||||
"MR_REVIEW_REQUESTED": "Při žádosti o revizi MR nastavte stav na",
|
||||
"MR_READY_FOR_MERGE": "Při připravenosti MR ke sloučení nastavte stav na",
|
||||
"MR_MERGED": "Při sloučení MR nastavte stav na",
|
||||
"MR_CLOSED": "Při uzavření MR nastavte stav na",
|
||||
"integration_enabled_text": "S povolenou integrací Gitlab můžete automatizovat pracovní postupy pracovních položek",
|
||||
"choose_entity": "Vyberte entitu",
|
||||
"choose_project": "Vyberte projekt",
|
||||
"link_plane_project": "Propojit projekt Plane",
|
||||
"project_issue_sync": "Synchronizace problémů projektu",
|
||||
"project_issue_sync_description": "Synchronizujte problémy z Gitlab do vašeho projektu Plane",
|
||||
"project_issue_sync_empty_state": "Mapovaná synchronizace problémů projektu se zobrazí zde",
|
||||
"configure_project_issue_sync_state": "Konfigurovat stav synchronizace problémů",
|
||||
"select_issue_sync_direction": "Vyberte směr synchronizace problémů",
|
||||
"allow_bidirectional_sync": "Obousměrná - Synchronizovat problémy a komentáře oběma směry mezi Gitlab a Plane",
|
||||
"allow_unidirectional_sync": "Jednosměrná - Synchronizovat problémy a komentáře pouze z Gitlab do Plane",
|
||||
"allow_unidirectional_sync_warning": "Data z Gitlab Issue nahradí data v propojeném pracovním prvku Plane (pouze Gitlab → Plane)",
|
||||
"remove_project_issue_sync": "Odstranit tuto synchronizaci problémů projektu",
|
||||
"remove_project_issue_sync_confirmation": "Opravdu chcete odstranit tuto synchronizaci problémů projektu?",
|
||||
"ISSUE_OPEN": "Problém otevřen",
|
||||
"ISSUE_CLOSED": "Problém uzavřen",
|
||||
"save": "Uložit",
|
||||
"start_sync": "Spustit synchronizaci",
|
||||
"choose_repository": "Vyberte repozitář..."
|
||||
},
|
||||
"gitlab_enterprise_integration": {
|
||||
"name": "Gitlab Enterprise",
|
||||
"description": "Připojte a synchronizujte svou instanci Gitlab Enterprise s Plane.",
|
||||
"app_form_title": "Konfigurace Gitlab Enterprise",
|
||||
"app_form_description": "Nakonfigurujte Gitlab Enterprise pro připojení k Plane.",
|
||||
"base_url_title": "Základní URL",
|
||||
"base_url_description": "Základní URL vaší instance Gitlab Enterprise.",
|
||||
"base_url_placeholder": "např. \"https://glab.plane.town\"",
|
||||
"base_url_error": "Základní URL je povinné",
|
||||
"invalid_base_url_error": "Neplatné základní URL",
|
||||
"client_id_title": "ID aplikace",
|
||||
"client_id_description": "ID aplikace, kterou jste vytvořili ve své instanci Gitlab Enterprise.",
|
||||
"client_id_placeholder": "např. \"7cd732xxxxxxxxxxxxxx\"",
|
||||
"client_id_error": "ID aplikace je povinné",
|
||||
"client_secret_title": "Client Secret",
|
||||
"client_secret_description": "Client secret aplikace, kterou jste vytvořili ve své instanci Gitlab Enterprise.",
|
||||
"client_secret_placeholder": "např. \"gloas-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"",
|
||||
"client_secret_error": "Client secret je povinný",
|
||||
"webhook_secret_title": "Webhook Secret",
|
||||
"webhook_secret_description": "Náhodný webhook secret, který bude použit k ověření webhooku z instance Gitlab Enterprise.",
|
||||
"webhook_secret_placeholder": "např. \"webhook1234567890\"",
|
||||
"webhook_secret_error": "Webhook secret je povinný",
|
||||
"connect_app": "Připojit aplikaci"
|
||||
},
|
||||
"slack_integration": {
|
||||
"name": "Slack",
|
||||
"description": "Propojte svůj Slack workspace s Plane.",
|
||||
"connect_personal_account": "Propojte svůj osobní Slack účet s Plane.",
|
||||
"personal_account_connected": "Váš osobní účet {providerName} je nyní propojen s Plane.",
|
||||
"link_personal_account": "Propojte svůj osobní účet {providerName} s Plane.",
|
||||
"connected_slack_workspaces": "Propojené Slack workspaces",
|
||||
"connected_on": "Propojeno dne {date}",
|
||||
"disconnect_workspace": "Odpojit {name} workspace",
|
||||
"alerts": {
|
||||
"dm_alerts": {
|
||||
"title": "Získejte upozornění v soukromých zprávách Slack pro důležité aktualizace, připomenutí a výstrahy jen pro vás."
|
||||
}
|
||||
},
|
||||
"project_updates": {
|
||||
"title": "Aktualizace Projektu",
|
||||
"description": "Nakonfigurujte oznámení o aktualizacích projektů pro vaše projekty",
|
||||
"add_new_project_update": "Přidat nové oznámení o aktualizacích projektu",
|
||||
"project_updates_empty_state": "Projekty propojené s kanály Slack se zobrazí zde.",
|
||||
"project_updates_form": {
|
||||
"title": "Konfigurovat Aktualizace Projektu",
|
||||
"description": "Přijímejte oznámení o aktualizacích projektu ve Slack, když jsou vytvořeny pracovní položky",
|
||||
"failed_to_load_channels": "Nepodařilo se načíst kanály ze Slack",
|
||||
"project_dropdown": {
|
||||
"placeholder": "Vyberte projekt",
|
||||
"label": "Plane Projekt",
|
||||
"no_projects": "Žádné dostupné projekty"
|
||||
},
|
||||
"channel_dropdown": {
|
||||
"label": "Slack Kanál",
|
||||
"placeholder": "Vyberte kanál",
|
||||
"no_channels": "Žádné dostupné kanály"
|
||||
},
|
||||
"all_projects_connected": "Všechny projekty jsou již propojeny s kanály Slack.",
|
||||
"all_channels_connected": "Všechny kanály Slack jsou již propojeny s projekty.",
|
||||
"project_connection_success": "Propojení projektu úspěšně vytvořeno",
|
||||
"project_connection_updated": "Propojení projektu úspěšně aktualizováno",
|
||||
"project_connection_deleted": "Propojení projektu úspěšně odstraněno",
|
||||
"failed_delete_project_connection": "Nepodařilo se odstranit propojení projektu",
|
||||
"failed_create_project_connection": "Nepodařilo se vytvořit propojení projektu",
|
||||
"failed_upserting_project_connection": "Nepodařilo se aktualizovat propojení projektu",
|
||||
"failed_loading_project_connections": "Nemohli jsme načíst vaše propojení projektu. Může to být způsobeno problémem se sítí nebo problémem s integrací."
|
||||
}
|
||||
}
|
||||
},
|
||||
"sentry_integration": {
|
||||
"name": "Sentry",
|
||||
"description": "Připojte svůj Sentry pracovní prostor k Plane.",
|
||||
"connected_sentry_workspaces": "Připojené Sentry pracovní prostory",
|
||||
"connected_on": "Připojeno {date}",
|
||||
"disconnect_workspace": "Odpojit pracovní prostor {name}",
|
||||
"state_mapping": {
|
||||
"title": "Mapování stavů",
|
||||
"description": "Mapujte stavy incidentů Sentry na stavy vašeho projektu. Nakonfigurujte, které stavy použít, když je incident Sentry vyřešen nebo nevyřešen.",
|
||||
"add_new_state_mapping": "Přidat nové mapování stavu",
|
||||
"empty_state": "Nejsou nakonfigurována žádná mapování stavů. Vytvořte své první mapování pro synchronizaci stavů incidentů Sentry se stavy vašeho projektu.",
|
||||
"failed_loading_state_mappings": "Nepodařilo se nám načíst vaše mapování stavů. Může to být způsobeno problémem se sítí nebo problémem s integrací.",
|
||||
"loading_project_states": "Načítání stavů projektu...",
|
||||
"error_loading_states": "Chyba při načítání stavů",
|
||||
"no_states_available": "Nejsou dostupné žádné stavy",
|
||||
"no_permission_states": "Nemáte oprávnění k přístupu ke stavům pro tento projekt",
|
||||
"states_not_found": "Stavy projektu nebyly nalezeny",
|
||||
"server_error_states": "Chyba serveru při načítání stavů"
|
||||
}
|
||||
},
|
||||
"bitbucket_dc_integration": {
|
||||
"name": "Bitbucket Data Center",
|
||||
"description": "Připojte a synchronizujte své repozitáře Bitbucket Data Center s Plane."
|
||||
},
|
||||
"oauth_bridge_integration": {
|
||||
"name": "OAuth Bridge",
|
||||
"description": "Ověření tokenů externích IdP pro přístup k API.",
|
||||
"header_description": "Ověřujte externě vydané OIDC/JWT tokeny z vašeho IdP (Azure AD, Okta atd.) pro přístup k API Plane.",
|
||||
"connected": "Připojeno",
|
||||
"connect": "Připojit",
|
||||
"uninstall": "Odinstalovat",
|
||||
"uninstalling": "Odinstalace...",
|
||||
"install_success": "OAuth Bridge úspěšně nainstalován.",
|
||||
"install_error": "Nepodařilo se nainstalovat OAuth Bridge.",
|
||||
"uninstall_success": "OAuth Bridge odinstalován.",
|
||||
"uninstall_error": "Nepodařilo se odinstalovat OAuth Bridge.",
|
||||
"token_providers": "Poskytovatelé tokenů",
|
||||
"token_providers_description": "Nakonfigurujte externí IdP, jejichž JWT jsou přijímány jako API přihlašovací údaje.",
|
||||
"add_provider": "Přidat poskytovatele",
|
||||
"edit_provider": "Upravit poskytovatele",
|
||||
"enabled": "Povoleno",
|
||||
"disabled": "Zakázáno",
|
||||
"test": "Test",
|
||||
"no_providers_title": "Žádní poskytovatelé nejsou nakonfigurováni.",
|
||||
"no_providers_description": "Přidejte IdP pro povolení ověřování externími tokeny.",
|
||||
"provider_updated": "Poskytovatel aktualizován.",
|
||||
"provider_added": "Poskytovatel přidán.",
|
||||
"provider_save_error": "Nepodařilo se uložit poskytovatele.",
|
||||
"provider_deleted": "Poskytovatel smazán.",
|
||||
"provider_delete_error": "Nepodařilo se smazat poskytovatele.",
|
||||
"provider_update_error": "Nepodařilo se aktualizovat poskytovatele.",
|
||||
"jwks_reachable": "JWKS dostupný",
|
||||
"jwks_unreachable": "JWKS nedostupný",
|
||||
"jwks_test_error": "Nepodařilo se získat JWKS z nakonfigurované URL.",
|
||||
"provider_form": {
|
||||
"name_label": "Název",
|
||||
"name_placeholder": "např. Azure AD Production",
|
||||
"name_description": "Čitelný popisek pro tohoto poskytovatele identity",
|
||||
"name_required": "Název je povinný.",
|
||||
"issuer_label": "Vydavatel",
|
||||
"issuer_placeholder": "https://login.microsoftonline.com/tenant-id/v2.0",
|
||||
"issuer_description": "Očekávaná hodnota claim iss v JWT",
|
||||
"issuer_required": "Vydavatel je povinný.",
|
||||
"jwks_url_label": "URL JWKS",
|
||||
"jwks_url_placeholder": "https://login.microsoftonline.com/tenant-id/discovery/v2.0/keys",
|
||||
"jwks_url_description": "HTTPS endpoint poskytující JSON Web Key Set poskytovatele",
|
||||
"jwks_url_required": "URL JWKS je povinná.",
|
||||
"jwks_url_https": "URL JWKS musí používat HTTPS.",
|
||||
"audience_label": "Publikum",
|
||||
"audience_placeholder": "api://my-app-id",
|
||||
"audience_description": "Očekávané claim(y) aud v JWT, oddělené čárkami.",
|
||||
"user_claims_label": "Claim uživatele",
|
||||
"user_claims_placeholder": "email",
|
||||
"user_claims_description": "JWT claim obsahující e-mailovou adresu uživatele",
|
||||
"user_claims_required": "Claim uživatele je povinný.",
|
||||
"allowed_algorithms_label": "Povolené podpisové algoritmy",
|
||||
"allowed_algorithms_description": "Asymetrické algoritmy pro ověření podpisu JWT",
|
||||
"allowed_algorithms_required": "Je vyžadován alespoň jeden algoritmus.",
|
||||
"select_algorithms": "Vyberte algoritmy",
|
||||
"jwks_cache_ttl_label": "TTL mezipaměti JWKS (sekundy)",
|
||||
"jwks_cache_ttl_description": "Doba ukládání klíčů JWKS poskytovatele do mezipaměti (minimum 60s, výchozí 24 hodin)",
|
||||
"jwks_cache_ttl_min": "TTL mezipaměti musí být alespoň 60 sekund.",
|
||||
"rate_limit_label": "Limit požadavků",
|
||||
"rate_limit_placeholder": "120/minute",
|
||||
"rate_limit_description": "Omezení požadavků jako počet/období (např. 120/minute). Ponechte prázdné pro výchozí limit.",
|
||||
"enable_provider": "Povolit tohoto poskytovatele",
|
||||
"saving": "Ukládání...",
|
||||
"update": "Aktualizovat"
|
||||
}
|
||||
},
|
||||
"github_enterprise_integration": {
|
||||
"name": "GitHub Enterprise",
|
||||
"description": "Připojte a synchronizujte svou organizaci GitHub Enterprise s Plane.",
|
||||
"app_form_title": "Konfigurace GitHub Enterprise",
|
||||
"app_form_description": "Konfigurujte GitHub Enterprise pro připojení s Plane.",
|
||||
"app_id_title": "App ID",
|
||||
"app_id_description": "ID aplikace, kterou jste vytvořili v organizaci GitHub Enterprise.",
|
||||
"app_id_placeholder": "např., \"1234567890\"",
|
||||
"app_id_error": "App ID je povinné pole",
|
||||
"app_name_title": "App Slug",
|
||||
"app_name_description": "Slug aplikace, kterou jste vytvořili v organizaci GitHub Enterprise.",
|
||||
"app_name_error": "App slug je povinné pole",
|
||||
"app_name_placeholder": "např., \"plane-github-enterprise\"",
|
||||
"base_url_title": "Základní URL",
|
||||
"base_url_description": "Základní URL vaší organizace GitHub Enterprise.",
|
||||
"base_url_placeholder": "např., \"https://plane.github.com\"",
|
||||
"base_url_error": "Základní URL je povinné pole",
|
||||
"invalid_base_url_error": "Neplatná základní URL",
|
||||
"client_id_title": "ID klienta",
|
||||
"client_id_description": "ID klienta aplikace, kterou jste vytvořili v organizaci GitHub Enterprise.",
|
||||
"client_id_placeholder": "např., \"1234567890\"",
|
||||
"client_id_error": "ID klienta je povinné pole",
|
||||
"client_secret_title": "Client Secret",
|
||||
"client_secret_description": "Secret klienta aplikace, kterou jste vytvořili v organizaci GitHub Enterprise.",
|
||||
"client_secret_placeholder": "např., \"1234567890\"",
|
||||
"client_secret_error": "Secret klienta je povinné pole",
|
||||
"webhook_secret_title": "Webhook Secret",
|
||||
"webhook_secret_description": "Secret webhooku aplikace, kterou jste vytvořili v organizaci GitHub Enterprise.",
|
||||
"webhook_secret_placeholder": "např., \"1234567890\"",
|
||||
"webhook_secret_error": "Secret webhooku je povinné pole",
|
||||
"private_key_title": "Soukromý klíč (Base64 encoded)",
|
||||
"private_key_description": "Base64 encoded private key of the app you created in your GitHub Enterprise organization.",
|
||||
"private_key_placeholder": "např., \"MIIEpAIBAAKCAQEA...",
|
||||
"private_key_error": "Soukromý klíč je povinné pole",
|
||||
"connect_app": "Připojit aplikaci"
|
||||
},
|
||||
"silo_errors": {
|
||||
"invalid_query_params": "Poskytnuté dotazové parametry jsou neplatné nebo chybí povinná pole",
|
||||
"invalid_installation_account": "Poskytnutý instalační účet není platný",
|
||||
"generic_error": "Při zpracování vaší žádosti došlo k neočekávané chybě",
|
||||
"connection_not_found": "Požadované připojení nebylo nalezeno",
|
||||
"multiple_connections_found": "Bylo nalezeno více připojení, když bylo očekáváno pouze jedno",
|
||||
"cannot_create_multiple_connections": "Už jste připojili svou organizaci s pracovním prostorem. Prosím, odpojte existující připojení před připojením nového.",
|
||||
"installation_not_found": "Požadovaná instalace nebyla nalezena",
|
||||
"user_not_found": "Požadovaný uživatel nebyl nalezen",
|
||||
"error_fetching_token": "Nepodařilo se získat autentizační token",
|
||||
"invalid_app_credentials": "Poskytnuté přihlašovací údaje aplikace jsou neplatné",
|
||||
"invalid_app_installation_id": "Nepodařilo se nainstalovat aplikaci"
|
||||
},
|
||||
"import_status": {
|
||||
"queued": "V pořádku",
|
||||
"created": "Vytvořeno",
|
||||
"initiated": "Zahájeno",
|
||||
"pulling": "Stahování",
|
||||
"timed_out": "Časový limit vypršel",
|
||||
"pulled": "Staženo",
|
||||
"progressing": "Probíhá",
|
||||
"transforming": "Transformace",
|
||||
"transformed": "Transformováno",
|
||||
"pushing": "Odesílání",
|
||||
"finished": "Dokončeno",
|
||||
"error": "Chyba",
|
||||
"cancelled": "Zrušeno"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"module": {
|
||||
"label": "{count, plural, one {Modul} few {Moduly} other {Modulů}}",
|
||||
"no_module": "Žádný modul",
|
||||
"select": "Přidat moduly"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"command_k": {
|
||||
"empty_state": {
|
||||
"search": {
|
||||
"title": "Nenalezeny výsledky"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
"stickies": "Poznámky",
|
||||
"your_work": "Vaše práce",
|
||||
"projects": "Projekty",
|
||||
"pages": "Stránky",
|
||||
"new_work_item": "Nová pracovní položka",
|
||||
"home": "Domov",
|
||||
"inbox": "Doručená pošta",
|
||||
"workspace": "Pracovní prostor",
|
||||
"views": "Pohledy",
|
||||
"analytics": "Analytika",
|
||||
"work_items": "Pracovní položky",
|
||||
"cycles": "Cykly",
|
||||
"modules": "Moduly",
|
||||
"intake": "Příjem",
|
||||
"drafts": "Koncepty",
|
||||
"favorites": "Oblíbené",
|
||||
"pro": "Pro",
|
||||
"upgrade": "Upgrade",
|
||||
"pi_chat": "Plane AI",
|
||||
"epics": "Epiky",
|
||||
"upgrade_plan": "Plán upgradu",
|
||||
"plane_pro": "Plane Pro",
|
||||
"business": "Byznys"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"notification": {
|
||||
"label": "Schránka",
|
||||
"page_label": "{workspace} - Schránka",
|
||||
"options": {
|
||||
"mark_all_as_read": "Označit vše jako přečtené",
|
||||
"mark_read": "Označit jako přečtené",
|
||||
"mark_unread": "Označit jako nepřečtené",
|
||||
"refresh": "Obnovit",
|
||||
"filters": "Filtry schránky",
|
||||
"show_unread": "Zobrazit nepřečtené",
|
||||
"show_snoozed": "Zobrazit odložené",
|
||||
"show_archived": "Zobrazit archivované",
|
||||
"mark_archive": "Archivovat",
|
||||
"mark_unarchive": "Zrušit archivaci",
|
||||
"mark_snooze": "Odložit",
|
||||
"mark_unsnooze": "Zrušit odložení"
|
||||
},
|
||||
"toasts": {
|
||||
"read": "Oznámení přečteno",
|
||||
"unread": "Označeno jako nepřečtené",
|
||||
"archived": "Archivováno",
|
||||
"unarchived": "Zrušena archivace",
|
||||
"snoozed": "Odloženo",
|
||||
"unsnoozed": "Zrušeno odložení"
|
||||
},
|
||||
"empty_state": {
|
||||
"detail": {
|
||||
"title": "Vyberte pro podrobnosti."
|
||||
},
|
||||
"all": {
|
||||
"title": "Žádné přiřazené položky",
|
||||
"description": "Zobrazí se zde aktualizace přiřazených položek."
|
||||
},
|
||||
"mentions": {
|
||||
"title": "Žádné zmínky",
|
||||
"description": "Zobrazí se zde zmínky o vás."
|
||||
}
|
||||
},
|
||||
"tabs": {
|
||||
"all": "Vše",
|
||||
"mentions": "Zmínky"
|
||||
},
|
||||
"filter": {
|
||||
"assigned": "Přiřazeno mě",
|
||||
"created": "Vytvořil jsem",
|
||||
"subscribed": "Odebírám"
|
||||
},
|
||||
"snooze": {
|
||||
"1_day": "1 den",
|
||||
"3_days": "3 dny",
|
||||
"5_days": "5 dní",
|
||||
"1_week": "1 týden",
|
||||
"2_weeks": "2 týdny",
|
||||
"custom": "Vlastní"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"page_navigation_pane": {
|
||||
"tabs": {
|
||||
"outline": {
|
||||
"label": "Osnova",
|
||||
"empty_state": {
|
||||
"title": "Chybí nadpisy",
|
||||
"description": "Přidejte na tuto stránku nějaké nadpisy, aby se zde zobrazily."
|
||||
}
|
||||
},
|
||||
"info": {
|
||||
"label": "Info",
|
||||
"document_info": {
|
||||
"words": "Slova",
|
||||
"characters": "Znaky",
|
||||
"paragraphs": "Odstavce",
|
||||
"read_time": "Doba čtení"
|
||||
},
|
||||
"actors_info": {
|
||||
"edited_by": "Upravil",
|
||||
"created_by": "Vytvořil"
|
||||
},
|
||||
"version_history": {
|
||||
"label": "Historie verzí",
|
||||
"current_version": "Aktuální verze",
|
||||
"highlight_changes": "Zvýraznit změny"
|
||||
}
|
||||
},
|
||||
"assets": {
|
||||
"label": "Přílohy",
|
||||
"download_button": "Stáhnout",
|
||||
"empty_state": {
|
||||
"title": "Chybí obrázky",
|
||||
"description": "Přidejte obrázky, aby se zde zobrazily."
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"label": "Komentáře",
|
||||
"empty_state": {
|
||||
"title": "Žádné komentáře",
|
||||
"description": "Přidejte komentáře, aby se zde zobrazily."
|
||||
}
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"errors": {
|
||||
"wrong_name": "Název poznámky nesmí být delší než 100 znaků.",
|
||||
"already_exists": "Již existuje poznámka bez popisu"
|
||||
},
|
||||
"created": {
|
||||
"title": "Poznámka vytvořena",
|
||||
"message": "Poznámka byla úspěšně vytvořena"
|
||||
},
|
||||
"not_created": {
|
||||
"title": "Poznámka nebyla vytvořena",
|
||||
"message": "Poznámku se nepodařilo vytvořit"
|
||||
},
|
||||
"updated": {
|
||||
"title": "Poznámka aktualizována",
|
||||
"message": "Poznámka byla úspěšně aktualizována"
|
||||
},
|
||||
"not_updated": {
|
||||
"title": "Poznámka nebyla aktualizována",
|
||||
"message": "Poznámku se nepodařilo aktualizovat"
|
||||
},
|
||||
"removed": {
|
||||
"title": "Poznámka odstraněna",
|
||||
"message": "Poznámka byla úspěšně odstraněna"
|
||||
},
|
||||
"not_removed": {
|
||||
"title": "Poznámka nebyla odstraněna",
|
||||
"message": "Poznámku se nepodařilo odstranit"
|
||||
}
|
||||
},
|
||||
"open_button": "Otevřít navigační panel",
|
||||
"close_button": "Zavřít navigační panel",
|
||||
"outline_floating_button": "Otevřít osnovu"
|
||||
},
|
||||
"page_actions": {
|
||||
"move_page": {
|
||||
"submit_button": {
|
||||
"default": "Přesunout",
|
||||
"loading": "Přesouvání"
|
||||
},
|
||||
"cannot_move_to_teamspace": "Soukromé a sdílené stránky nelze přesunout do týmového prostoru.",
|
||||
"placeholders": {
|
||||
"workspace_to_all": "Hledat projekty a týmové prostory",
|
||||
"workspace_to_project": "Hledat projekty",
|
||||
"project_to_all": "Hledat projekty a týmové prostory",
|
||||
"project_to_project": "Hledat projekty",
|
||||
"project_to_all_with_wiki": "Hledat wiki kolekce, projekty a týmové prostory",
|
||||
"project_to_project_with_wiki": "Hledat wiki kolekce a projekty"
|
||||
},
|
||||
"toasts": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Stránka byla úspěšně přesunuta."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Stránku se nepodařilo přesunout. Zkuste to prosím později."
|
||||
},
|
||||
"collection_error": {
|
||||
"title": "Přesunuto do wiki",
|
||||
"message": "Stránka byla přesunuta do wiki, ale nepodařilo se ji přidat do vybrané kolekce. Zůstává v General."
|
||||
}
|
||||
}
|
||||
},
|
||||
"remove_from_collection": {
|
||||
"label": "Odebrat z kolekce",
|
||||
"success_message": "Stránka byla odebrána z kolekce.",
|
||||
"error_message": "Stránku se nepodařilo odebrat z kolekce. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"power_k": {
|
||||
"actions_commands": {
|
||||
"bulk_delete_work_items": "Hromadně smazat pracovní položky"
|
||||
},
|
||||
"contextual_actions": {
|
||||
"work_item": {
|
||||
"title": "Akce pracovní položky",
|
||||
"indicator": "Pracovní položka",
|
||||
"change_state": "Změnit stav",
|
||||
"change_priority": "Změnit prioritu",
|
||||
"change_assignees": "Přiřadit",
|
||||
"assign_to_me": "Přiřadit mně",
|
||||
"unassign_from_me": "Zrušit přiřazení ode mě",
|
||||
"change_estimate": "Změnit odhad",
|
||||
"add_to_cycle": "Přidat do cyklu",
|
||||
"add_to_modules": "Přidat do modulů",
|
||||
"add_labels": "Přidat štítky",
|
||||
"subscribe": "Odebírat oznámení",
|
||||
"unsubscribe": "Zrušit odběr oznámení",
|
||||
"delete": "Smazat",
|
||||
"copy_id": "Kopírovat ID",
|
||||
"copy_id_toast_success": "ID pracovní položky zkopírováno do schránky.",
|
||||
"copy_id_toast_error": "Při kopírování ID pracovní položky do schránky došlo k chybě.",
|
||||
"copy_title": "Kopírovat název",
|
||||
"copy_title_toast_success": "Název pracovní položky zkopírován do schránky.",
|
||||
"copy_title_toast_error": "Při kopírování názvu pracovní položky do schránky došlo k chybě.",
|
||||
"copy_url": "Kopírovat URL",
|
||||
"copy_url_toast_success": "URL pracovní položky zkopírována do schránky.",
|
||||
"copy_url_toast_error": "Při kopírování URL pracovní položky do schránky došlo k chybě."
|
||||
},
|
||||
"cycle": {
|
||||
"title": "Akce cyklu",
|
||||
"indicator": "Cyklus",
|
||||
"add_to_favorites": "Přidat do oblíbených",
|
||||
"remove_from_favorites": "Odebrat z oblíbených",
|
||||
"copy_url": "Kopírovat URL",
|
||||
"copy_url_toast_success": "URL cyklu zkopírována do schránky.",
|
||||
"copy_url_toast_error": "Při kopírování URL cyklu do schránky došlo k chybě."
|
||||
},
|
||||
"module": {
|
||||
"title": "Akce modulu",
|
||||
"indicator": "Modul",
|
||||
"add_remove_members": "Přidat/odebrat členy",
|
||||
"change_status": "Změnit stav",
|
||||
"add_to_favorites": "Přidat do oblíbených",
|
||||
"remove_from_favorites": "Odebrat z oblíbených",
|
||||
"copy_url": "Kopírovat URL",
|
||||
"copy_url_toast_success": "URL modulu zkopírována do schránky.",
|
||||
"copy_url_toast_error": "Při kopírování URL modulu do schránky došlo k chybě."
|
||||
},
|
||||
"page": {
|
||||
"title": "Akce stránky",
|
||||
"indicator": "Stránka",
|
||||
"lock": "Uzamknout",
|
||||
"unlock": "Odemknout",
|
||||
"make_private": "Nastavit jako soukromé",
|
||||
"make_public": "Nastavit jako veřejné",
|
||||
"archive": "Archivovat",
|
||||
"restore": "Obnovit",
|
||||
"add_to_favorites": "Přidat do oblíbených",
|
||||
"remove_from_favorites": "Odebrat z oblíbených",
|
||||
"copy_url": "Kopírovat URL",
|
||||
"copy_url_toast_success": "URL stránky zkopírována do schránky.",
|
||||
"copy_url_toast_error": "Při kopírování URL stránky do schránky došlo k chybě."
|
||||
}
|
||||
},
|
||||
"creation_actions": {
|
||||
"create_work_item": "Nová pracovní položka",
|
||||
"create_page": "Nová stránka",
|
||||
"create_view": "Nový pohled",
|
||||
"create_cycle": "Nový cyklus",
|
||||
"create_module": "Nový modul",
|
||||
"create_project": "Nový projekt",
|
||||
"create_workspace": "Nový pracovní prostor",
|
||||
"create_project_automation": "Nová automatizace"
|
||||
},
|
||||
"navigation_actions": {
|
||||
"open_workspace": "Otevřít pracovní prostor",
|
||||
"nav_home": "Přejít na domovskou stránku",
|
||||
"nav_inbox": "Přejít do doručené pošty",
|
||||
"nav_your_work": "Přejít na vaši práci",
|
||||
"nav_account_settings": "Přejít do nastavení účtu",
|
||||
"open_project": "Otevřít projekt",
|
||||
"nav_projects_list": "Přejít na seznam projektů",
|
||||
"nav_all_workspace_work_items": "Přejít na všechny pracovní položky",
|
||||
"nav_assigned_workspace_work_items": "Přejít na přiřazené pracovní položky",
|
||||
"nav_created_workspace_work_items": "Přejít na vytvořené pracovní položky",
|
||||
"nav_subscribed_workspace_work_items": "Přejít na odebírané pracovní položky",
|
||||
"nav_workspace_analytics": "Přejít na analytiku pracovního prostoru",
|
||||
"nav_workspace_drafts": "Přejít na koncepty pracovního prostoru",
|
||||
"nav_workspace_archives": "Přejít na archivy pracovního prostoru",
|
||||
"open_workspace_setting": "Otevřít nastavení pracovního prostoru",
|
||||
"nav_workspace_settings": "Přejít do nastavení pracovního prostoru",
|
||||
"nav_project_work_items": "Přejít na pracovní položky",
|
||||
"open_project_cycle": "Otevřít cyklus",
|
||||
"nav_project_cycles": "Přejít na cykly",
|
||||
"open_project_module": "Otevřít modul",
|
||||
"nav_project_modules": "Přejít na moduly",
|
||||
"open_project_view": "Otevřít pohled projektu",
|
||||
"nav_project_views": "Přejít na pohledy projektu",
|
||||
"nav_project_pages": "Přejít na stránky",
|
||||
"nav_project_intake": "Přejít do příjmu",
|
||||
"nav_project_archives": "Přejít na archivy projektu",
|
||||
"open_project_setting": "Otevřít nastavení projektu",
|
||||
"nav_project_settings": "Přejít do nastavení projektu",
|
||||
"nav_workspace_active_cycle": "Přejít na všechny aktivní cykly",
|
||||
"nav_project_overview": "Přejít na přehled projektu"
|
||||
},
|
||||
"account_actions": {
|
||||
"sign_out": "Odhlásit se",
|
||||
"workspace_invites": "Pozvánky do pracovního prostoru"
|
||||
},
|
||||
"miscellaneous_actions": {
|
||||
"toggle_app_sidebar": "Přepnout postranní panel aplikace",
|
||||
"copy_current_page_url": "Kopírovat URL aktuální stránky",
|
||||
"copy_current_page_url_toast_success": "URL aktuální stránky zkopírována do schránky.",
|
||||
"copy_current_page_url_toast_error": "Při kopírování URL aktuální stránky do schránky došlo k chybě.",
|
||||
"focus_top_nav_search": "Zaměřit se na vyhledávání"
|
||||
},
|
||||
"preferences_actions": {
|
||||
"update_theme": "Změnit téma rozhraní",
|
||||
"update_timezone": "Změnit časové pásmo",
|
||||
"update_start_of_week": "Změnit první den v týdnu",
|
||||
"update_language": "Změnit jazyk rozhraní",
|
||||
"toast": {
|
||||
"theme": {
|
||||
"success": "Téma úspěšně aktualizováno.",
|
||||
"error": "Aktualizace tématu se nezdařila. Zkuste to prosím znovu."
|
||||
},
|
||||
"timezone": {
|
||||
"success": "Časové pásmo úspěšně aktualizováno.",
|
||||
"error": "Aktualizace časového pásma se nezdařila. Zkuste to prosím znovu."
|
||||
},
|
||||
"generic": {
|
||||
"success": "Předvolby úspěšně aktualizovány.",
|
||||
"error": "Aktualizace předvoleb se nezdařila. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"help_actions": {
|
||||
"open_keyboard_shortcuts": "Otevřít klávesové zkratky",
|
||||
"open_plane_documentation": "Otevřít dokumentaci Plane",
|
||||
"join_forum": "Připojte se k našemu fóru",
|
||||
"report_bug": "Nahlásit chybu",
|
||||
"chat_with_us": "Chatovat s námi"
|
||||
},
|
||||
"page_placeholders": {
|
||||
"default": "Zadejte příkaz nebo hledejte",
|
||||
"open_workspace": "Otevřít pracovní prostor",
|
||||
"open_project": "Otevřít projekt",
|
||||
"open_workspace_setting": "Otevřít nastavení pracovního prostoru",
|
||||
"open_project_cycle": "Otevřít cyklus",
|
||||
"open_project_module": "Otevřít modul",
|
||||
"open_project_view": "Otevřít pohled projektu",
|
||||
"open_project_setting": "Otevřít nastavení projektu",
|
||||
"update_work_item_state": "Změnit stav",
|
||||
"update_work_item_priority": "Změnit prioritu",
|
||||
"update_work_item_assignee": "Přiřadit",
|
||||
"update_work_item_estimate": "Změnit odhad",
|
||||
"update_work_item_cycle": "Přidat do cyklu",
|
||||
"update_work_item_module": "Přidat do modulů",
|
||||
"update_work_item_labels": "Přidat štítky",
|
||||
"update_module_member": "Změnit členy",
|
||||
"update_module_status": "Změnit stav",
|
||||
"update_theme": "Změnit téma",
|
||||
"update_timezone": "Změnit časové pásmo",
|
||||
"update_start_of_week": "Změnit první den v týdnu",
|
||||
"update_language": "Změnit jazyk"
|
||||
},
|
||||
"search_menu": {
|
||||
"no_results": "Nenalezeny žádné výsledky",
|
||||
"clear_search": "Vymazat hledání",
|
||||
"go_to_advanced_search": "Přejít na pokročilé hledání"
|
||||
},
|
||||
"footer": {
|
||||
"workspace_level": "Úroveň pracovního prostoru"
|
||||
},
|
||||
"group_titles": {
|
||||
"actions": "Akce",
|
||||
"contextual": "Kontextové",
|
||||
"navigation": "Navigovat",
|
||||
"create": "Vytvořit",
|
||||
"general": "Obecné",
|
||||
"settings": "Nastavení",
|
||||
"account": "Účet",
|
||||
"miscellaneous": "Různé",
|
||||
"preferences": "Předvolby",
|
||||
"help": "Nápověda"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"comment_submit_shortcut": {
|
||||
"label": "Klávesová zkratka pro odeslání komentáře",
|
||||
"description": "Vyberte klávesovou zkratku pro odesílání komentářů."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,526 @@
|
||||
{
|
||||
"project_settings": {
|
||||
"general": {
|
||||
"enter_project_id": "Zadejte ID projektu",
|
||||
"please_select_a_timezone": "Vyberte časové pásmo",
|
||||
"archive_project": {
|
||||
"title": "Archivovat projekt",
|
||||
"description": "Archivace skryje projekt z menu. Přístup zůstane přes stránku projektů.",
|
||||
"button": "Archivovat projekt"
|
||||
},
|
||||
"delete_project": {
|
||||
"title": "Smazat projekt",
|
||||
"description": "Smazáním projektu odstraníte všechna data. Akce je nevratná.",
|
||||
"button": "Smazat projekt"
|
||||
},
|
||||
"toast": {
|
||||
"success": "Projekt aktualizován",
|
||||
"error": "Aktualizace se nezdařila. Zkuste to znovu."
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"label": "Členové",
|
||||
"project_lead": "Vedoucí projektu",
|
||||
"project_lead_description": "Vyberte vedoucího projektu.",
|
||||
"default_assignee": "Výchozí přiřazení",
|
||||
"default_assignee_description": "Vyberte výchozího přiřazeného pro projekt.",
|
||||
"project_subscribers": "Odběratelé projektu",
|
||||
"project_subscribers_description": "Vyberte členy, kteří budou dostávat oznámení pro tento projekt.",
|
||||
"guest_super_permissions": {
|
||||
"title": "Udělit hostům přístup ke všem položkám:",
|
||||
"sub_heading": "Hosté uvidí všechny položky v projektu."
|
||||
},
|
||||
"invite_members": {
|
||||
"title": "Pozvat členy",
|
||||
"sub_heading": "Pozvěte členy do projektu.",
|
||||
"select_co_worker": "Vybrat spolupracovníka"
|
||||
}
|
||||
},
|
||||
"states": {
|
||||
"heading": "Stavy",
|
||||
"description": "Definujte a přizpůsobte stavy workflow pro sledování průběhu vašich pracovních položek.",
|
||||
"describe_this_state_for_your_members": "Popište tento stav členům.",
|
||||
"empty_state": {
|
||||
"title": "Žádné stavy pro skupinu {groupKey}",
|
||||
"description": "Vytvořte nový stav"
|
||||
}
|
||||
},
|
||||
"labels": {
|
||||
"heading": "Štítky",
|
||||
"description": "Vytvářejte vlastní štítky pro kategorizaci a organizaci vašich pracovních položek",
|
||||
"label_title": "Název štítku",
|
||||
"label_title_is_required": "Název štítku je povinný",
|
||||
"label_max_char": "Název štítku nesmí přesáhnout 255 znaků",
|
||||
"toast": {
|
||||
"error": "Chyba při aktualizaci štítku"
|
||||
}
|
||||
},
|
||||
"estimates": {
|
||||
"heading": "Odhady",
|
||||
"description": "Nastavte systémy odhadů pro sledování a komunikaci úsilí potřebného pro každou pracovní položku.",
|
||||
"label": "Odhady",
|
||||
"title": "Povolit odhady pro můj projekt",
|
||||
"enable_description": "Pomáhají vám komunikovat složitost a pracovní zátěž týmu.",
|
||||
"no_estimate": "Bez odhadu",
|
||||
"new": "Nový systém odhadů",
|
||||
"create": {
|
||||
"custom": "Vlastní",
|
||||
"start_from_scratch": "Začít od nuly",
|
||||
"choose_template": "Vybrat šablonu",
|
||||
"choose_estimate_system": "Vybrat systém odhadů",
|
||||
"enter_estimate_point": "Zadat odhad",
|
||||
"step": "Krok {step} z {total}",
|
||||
"label": "Vytvořit odhad"
|
||||
},
|
||||
"toasts": {
|
||||
"created": {
|
||||
"success": {
|
||||
"title": "Odhad vytvořen",
|
||||
"message": "Odhad byl úspěšně vytvořen"
|
||||
},
|
||||
"error": {
|
||||
"title": "Vytvoření odhadu selhalo",
|
||||
"message": "Nepodařilo se vytvořit nový odhad, zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"updated": {
|
||||
"success": {
|
||||
"title": "Odhad upraven",
|
||||
"message": "Odhad byl aktualizován ve vašem projektu."
|
||||
},
|
||||
"error": {
|
||||
"title": "Úprava odhadu selhala",
|
||||
"message": "Nepodařilo se upravit odhad, zkuste to prosím znovu"
|
||||
}
|
||||
},
|
||||
"enabled": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Odhady byly povoleny."
|
||||
}
|
||||
},
|
||||
"disabled": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Odhady byly zakázány."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Odhad nemohl být zakázán. Zkuste to prosím znovu"
|
||||
}
|
||||
},
|
||||
"reorder": {
|
||||
"success": {
|
||||
"title": "Odhady přeuspořádány",
|
||||
"message": "Odhady byly přeuspořádány ve vašem projektu."
|
||||
},
|
||||
"error": {
|
||||
"title": "Přeuspořádání odhadů selhalo",
|
||||
"message": "Nepodařilo se přeuspořádat odhady, zkuste to prosím znovu"
|
||||
}
|
||||
},
|
||||
"switch": {
|
||||
"success": {
|
||||
"title": "Systém odhadů vytvořen",
|
||||
"message": "Úspěšně vytvořeno a povoleno"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba",
|
||||
"message": "Něco se pokazilo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"validation": {
|
||||
"min_length": "Odhad musí být větší než 0.",
|
||||
"unable_to_process": "Nemůžeme zpracovat váš požadavek, zkuste to prosím znovu.",
|
||||
"numeric": "Odhad musí být číselná hodnota.",
|
||||
"character": "Odhad musí být znakový.",
|
||||
"empty": "Hodnota odhadu nemůže být prázdná.",
|
||||
"already_exists": "Hodnota odhadu již existuje.",
|
||||
"unsaved_changes": "Máte neuložené změny. Před kliknutím na hotovo je prosím uložte",
|
||||
"remove_empty": "Odhad nemůže být prázdný. Zadejte hodnotu do každého pole nebo odstraňte ta, pro která nemáte hodnoty.",
|
||||
"fill": "Vyplňte prosím toto pole odhadu",
|
||||
"repeat": "Hodnota odhadu se nemůže opakovat"
|
||||
},
|
||||
"systems": {
|
||||
"points": {
|
||||
"label": "Body",
|
||||
"fibonacci": "Fibonacci",
|
||||
"linear": "Lineární",
|
||||
"squares": "Čtverce",
|
||||
"custom": "Vlastní"
|
||||
},
|
||||
"categories": {
|
||||
"label": "Kategorie",
|
||||
"t_shirt_sizes": "Velikosti triček",
|
||||
"easy_to_hard": "Od snadného po těžké",
|
||||
"custom": "Vlastní"
|
||||
},
|
||||
"time": {
|
||||
"label": "Čas",
|
||||
"hours": "Hodiny"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "Upravit systém odhadů",
|
||||
"add_or_update": {
|
||||
"title": "Přidat, upravit nebo odebrat odhady",
|
||||
"description": "Spravujte aktuální systém přidáním, úpravou nebo odebráním bodů či kategorií."
|
||||
},
|
||||
"switch": {
|
||||
"title": "Změnit typ odhadu",
|
||||
"description": "Převeďte váš bodový systém na systém kategorií a naopak."
|
||||
}
|
||||
},
|
||||
"switch": "Přepnout systém odhadů",
|
||||
"current": "Aktuální systém odhadů",
|
||||
"select": "Vyberte systém odhadů"
|
||||
},
|
||||
"automations": {
|
||||
"label": "Automatizace",
|
||||
"heading": "Automatizace",
|
||||
"description": "Konfigurujte automatické akce pro zefektivnění procesu řízení projektu a snížení manuálních úkolů.",
|
||||
"auto-archive": {
|
||||
"title": "Automaticky archivovat uzavřené pracovní položky",
|
||||
"description": "Plane bude automaticky archivovat pracovní položky, které byly dokončeny nebo zrušeny.",
|
||||
"duration": "Automaticky archivovat pracovní položky, které jsou uzavřené po dobu"
|
||||
},
|
||||
"auto-close": {
|
||||
"title": "Automaticky uzavírat pracovní položky",
|
||||
"description": "Plane automaticky uzavře pracovní položky, které nebyly dokončeny nebo zrušeny.",
|
||||
"duration": "Automaticky uzavřít pracovní položky, které jsou neaktivní po dobu",
|
||||
"auto_close_status": "Stav automatického uzavření"
|
||||
},
|
||||
"auto-remind": {
|
||||
"title": "Automatické upozornění",
|
||||
"description": "Plane automaticky pošle upozornění přes e-mail a v aplikaci, aby vaše tým zůstal na cestě s termíny.",
|
||||
"duration": "Odeslat upozornění před"
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"labels": {
|
||||
"title": "Zatím žádné štítky",
|
||||
"description": "Vytvořte štítky pro organizaci a filtrování pracovních položek ve vašem projektu."
|
||||
},
|
||||
"estimates": {
|
||||
"title": "Zatím žádné systémy odhadů",
|
||||
"description": "Vytvořte sadu odhadů pro komunikaci množství práce na pracovní položku.",
|
||||
"primary_button": "Přidat systém odhadů"
|
||||
},
|
||||
"integrations": {
|
||||
"title": "Žádné integrace nejsou nakonfigurovány",
|
||||
"description": "Nakonfigurujte GitHub a další integrace pro synchronizaci vašich pracovních položek projektu."
|
||||
}
|
||||
},
|
||||
"workflows": {
|
||||
"toggle": {
|
||||
"title": "Povolit workflow",
|
||||
"description": "Nastavte workflow pro řízení pohybu pracovních položek",
|
||||
"no_states_tooltip": "Do workflow nejsou přidány žádné stavy.",
|
||||
"no_work_item_types_tooltip": "Do workflow nejsou přidány žádné typy pracovních položek.",
|
||||
"no_states_or_work_item_types_tooltip": "Do workflow nejsou přidány žádné stavy nebo typy pracovních položek.",
|
||||
"toast": {
|
||||
"loading": {
|
||||
"enabling": "Povolování workflow",
|
||||
"disabling": "Zakazování workflow"
|
||||
},
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Workflow úspěšně povolena."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Povolení workflow se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"heading": "Workflow",
|
||||
"description": "Automatizujte přechody pracovních položek a nastavte pravidla pro řízení toho, jak se úkoly pohybují vaším projektem.",
|
||||
"add_button": "Přidat nové workflow",
|
||||
"search": "Hledat workflow",
|
||||
"detail": {
|
||||
"define": "Definovat workflow",
|
||||
"add_states": "Přidat stavy",
|
||||
"unmapped_states": {
|
||||
"title": "Detekovány nenamapované stavy",
|
||||
"description": "Některé pracovní položky vybraných typů jsou aktuálně ve stavech, které v tomto workflow neexistují.",
|
||||
"note": "Pokud toto workflow povolíte, budou tyto položky automaticky přesunuty do počátečního stavu tohoto workflow.",
|
||||
"label": "Chybějící stavy",
|
||||
"tooltip": "Některé pracovní položky jsou ve stavech, které nejsou namapovány do tohoto workflow. Otevřete workflow pro kontrolu."
|
||||
}
|
||||
},
|
||||
"select_states": {
|
||||
"empty_state": {
|
||||
"title": "Všechny stavy se používají",
|
||||
"description": "Všechny definované stavy pro tento projekt jsou již přítomny ve vašem aktuálním workflow."
|
||||
}
|
||||
},
|
||||
"default_footer": {
|
||||
"fallback_message": "Toto workflow se vztahuje na jakýkoli typ pracovní položky, který není přiřazen k workflow."
|
||||
},
|
||||
"create": {
|
||||
"heading": "Vytvořit nové workflow",
|
||||
"name": {
|
||||
"placeholder": "Přidejte jedinečný název",
|
||||
"validation": {
|
||||
"max_length": "Název musí mít méně než 255 znaků",
|
||||
"required": "Název je povinný",
|
||||
"invalid": "Název může obsahovat pouze písmena, číslice, mezery, pomlčky a apostrofy"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Přidejte krátký popis",
|
||||
"validation": {
|
||||
"invalid": "Popis může obsahovat pouze písmena, číslice, mezery, pomlčky a apostrofy"
|
||||
}
|
||||
},
|
||||
"work_item_type": {
|
||||
"label": "Typ pracovní položky"
|
||||
},
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Workflow úspěšně vytvořeno."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Vytvoření workflow se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Workflow úspěšně aktualizováno."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Aktualizace workflow se nezdařila. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"loading": "Mazání workflow",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Workflow úspěšně smazáno."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Smazání workflow se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"add_states": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Stavy úspěšně přidány."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Přidání stavů se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"work_item_types": {
|
||||
"heading": "Typy pracovních položek",
|
||||
"description": "Vytvářejte a přizpůsobujte různé typy pracovních položek s jedinečnými vlastnostmi"
|
||||
},
|
||||
"features": {
|
||||
"cycles": {
|
||||
"title": "Cykly",
|
||||
"short_title": "Cykly",
|
||||
"description": "Naplánujte práci v flexibilních obdobích, která se přizpůsobí jedinečnému rytmu a tempu tohoto projektu.",
|
||||
"toggle_title": "Povolit cykly",
|
||||
"toggle_description": "Naplánujte práci v soustředěných časových rámcích."
|
||||
},
|
||||
"modules": {
|
||||
"title": "Moduly",
|
||||
"short_title": "Moduly",
|
||||
"description": "Organizujte práci do dílčích projektů s vyhrazenými vedoucími a přiřazenými osobami.",
|
||||
"toggle_title": "Povolit moduly",
|
||||
"toggle_description": "Členové projektu budou moci vytvářet a upravovat moduly."
|
||||
},
|
||||
"views": {
|
||||
"title": "Zobrazení",
|
||||
"short_title": "Zobrazení",
|
||||
"description": "Uložte vlastní řazení, filtry a možnosti zobrazení nebo je sdílejte se svým týmem.",
|
||||
"toggle_title": "Povolit zobrazení",
|
||||
"toggle_description": "Členové projektu budou moci vytvářet a upravovat zobrazení."
|
||||
},
|
||||
"pages": {
|
||||
"title": "Stránky",
|
||||
"short_title": "Stránky",
|
||||
"description": "Vytvářejte a upravujte volný obsah: poznámky, dokumenty, cokoliv.",
|
||||
"toggle_title": "Povolit stránky",
|
||||
"toggle_description": "Členové projektu budou moci vytvářet a upravovat stránky."
|
||||
},
|
||||
"intake": {
|
||||
"intake_responsibility": "Odpovědnost za příjem",
|
||||
"intake_sources": "Zdroje příjmu",
|
||||
"title": "Příjem",
|
||||
"short_title": "Příjem",
|
||||
"description": "Umožněte nečlenům sdílet chyby, zpětnou vazbu a návrhy; bez narušení vašeho pracovního postupu.",
|
||||
"toggle_title": "Povolit příjem",
|
||||
"toggle_description": "Povolit členům projektu vytvářet žádosti o příjem v aplikaci.",
|
||||
"toggle_tooltip_on": "Požádejte správce projektu, aby to zapnul.",
|
||||
"toggle_tooltip_off": "Požádejte správce projektu, aby to vypnul.",
|
||||
"notify_assignee": {
|
||||
"title": "Upozornit přiřazené",
|
||||
"description": "Pro novou žádost o příjem budou výchozí přiřazení upozorněni prostřednictvím oznámení"
|
||||
},
|
||||
"in_app": {
|
||||
"title": "V aplikaci",
|
||||
"description": "Získejte nové pracovní položky od členů a hostů ve vašem pracovním prostoru bez narušení stávajících."
|
||||
},
|
||||
"email": {
|
||||
"title": "E-mail",
|
||||
"description": "Sbírejte nové pracovní položky od kohokoli, kdo pošle e-mail na adresu Plane.",
|
||||
"fieldName": "ID e-mailu"
|
||||
},
|
||||
"form": {
|
||||
"title": "Formuláře",
|
||||
"description": "Umožněte lidem mimo váš pracovní prostor vytvářet potenciální nové pracovní položky prostřednictvím vyhrazeného a zabezpečeného formuláře.",
|
||||
"fieldName": "Výchozí URL formuláře",
|
||||
"create_forms": "Vytvářejte formuláře pomocí typů pracovních položek",
|
||||
"manage_forms": "Spravovat formuláře",
|
||||
"manage_forms_tooltip": "Požádejte správce pracovního prostoru o správu.",
|
||||
"create_form": "Vytvořit formulář",
|
||||
"edit_form": "Upravit podrobnosti formuláře",
|
||||
"form_title": "Název formuláře",
|
||||
"form_title_required": "Název formuláře je povinný",
|
||||
"work_item_type": "Typ pracovní položky",
|
||||
"remove_property": "Odebrat vlastnost",
|
||||
"select_properties": "Vybrat vlastnosti",
|
||||
"search_placeholder": "Hledat vlastnosti",
|
||||
"toasts": {
|
||||
"success_create": "Formulář příjmu byl úspěšně vytvořen",
|
||||
"success_update": "Formulář příjmu byl úspěšně aktualizován",
|
||||
"error_create": "Nepodařilo se vytvořit formulář příjmu",
|
||||
"error_update": "Nepodařilo se aktualizovat formulář příjmu"
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"set": {
|
||||
"loading": "Nastavování přiřazených...",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Přiřazení úspěšně nastaveno."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Při nastavování přiřazených se něco pokazilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"time_tracking": {
|
||||
"title": "Sledování času",
|
||||
"short_title": "Sledování času",
|
||||
"description": "Zaznamenávejte čas strávený na pracovních položkách a projektech.",
|
||||
"toggle_title": "Povolit sledování času",
|
||||
"toggle_description": "Členové projektu budou moci zaznamenávat odpracovaný čas."
|
||||
},
|
||||
"milestones": {
|
||||
"title": "Milníky",
|
||||
"short_title": "Milníky",
|
||||
"description": "Milníky poskytují vrstvu pro sladění pracovních položek směrem ke sdíleným termínům dokončení.",
|
||||
"toggle_title": "Povolit milníky",
|
||||
"toggle_description": "Organizujte pracovní položky podle termínů milníků."
|
||||
},
|
||||
"toasts": {
|
||||
"loading": "Aktualizace funkce projektu...",
|
||||
"success": "Funkce projektu byla úspěšně aktualizována.",
|
||||
"error": "Při aktualizaci funkce projektu se něco pokazilo. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"project_updates": {
|
||||
"heading": "Aktualizace projektu",
|
||||
"description": "Konsolidované sledování a monitorování pokroku tohoto projektu"
|
||||
},
|
||||
"templates": {
|
||||
"heading": "Šablony",
|
||||
"description": "Ušetřete 80 % času stráveného vytvářením projektů, pracovních položek a stránek, když použijete šablony."
|
||||
},
|
||||
"cycles": {
|
||||
"auto_schedule": {
|
||||
"heading": "Automatické plánování cyklů",
|
||||
"description": "Udržujte cykly v pohybu bez manuálního nastavení.",
|
||||
"tooltip": "Automaticky vytvářejte nové cykly na základě zvoleného rozvrhu.",
|
||||
"edit_button": "Upravit",
|
||||
"form": {
|
||||
"cycle_title": {
|
||||
"label": "Název cyklu",
|
||||
"placeholder": "Název",
|
||||
"tooltip": "K názvu budou přidána čísla pro následné cykly. Například: Design - 1/2/3",
|
||||
"validation": {
|
||||
"required": "Název cyklu je povinný",
|
||||
"max_length": "Název nesmí přesáhnout 255 znaků"
|
||||
}
|
||||
},
|
||||
"cycle_duration": {
|
||||
"label": "Trvání cyklu",
|
||||
"unit": "Týdny",
|
||||
"validation": {
|
||||
"required": "Trvání cyklu je povinné",
|
||||
"min": "Trvání cyklu musí být alespoň 1 týden",
|
||||
"max": "Trvání cyklu nemůže přesáhnout 30 týdnů",
|
||||
"positive": "Trvání cyklu musí být kladné"
|
||||
}
|
||||
},
|
||||
"cooldown_period": {
|
||||
"label": "Období chlazení",
|
||||
"unit": "dny",
|
||||
"tooltip": "Pauza mezi cykly před začátkem dalšího.",
|
||||
"validation": {
|
||||
"required": "Období chlazení je povinné",
|
||||
"negative": "Období chlazení nemůže být záporné"
|
||||
}
|
||||
},
|
||||
"start_date": {
|
||||
"label": "Den zahájení cyklu",
|
||||
"validation": {
|
||||
"required": "Datum zahájení je povinné",
|
||||
"past": "Datum zahájení nemůže být v minulosti"
|
||||
}
|
||||
},
|
||||
"number_of_cycles": {
|
||||
"label": "Počet budoucích cyklů",
|
||||
"validation": {
|
||||
"required": "Počet cyklů je povinný",
|
||||
"min": "Je vyžadován alespoň 1 cyklus",
|
||||
"max": "Nelze naplánovat více než 3 cykly"
|
||||
}
|
||||
},
|
||||
"auto_rollover": {
|
||||
"label": "Automatický převod pracovních položek",
|
||||
"tooltip": "V den dokončení cyklu přesunout všechny nedokončené pracovní položky do dalšího cyklu."
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"toggle": {
|
||||
"loading_enable": "Povolování automatického plánování cyklů",
|
||||
"loading_disable": "Zakazování automatického plánování cyklů",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Automatické plánování cyklů bylo úspěšně přepnuto."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se přepnout automatické plánování cyklů."
|
||||
}
|
||||
},
|
||||
"save": {
|
||||
"loading": "Ukládání konfigurace automatického plánování cyklů",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message_create": "Konfigurace automatického plánování cyklů byla úspěšně uložena.",
|
||||
"message_update": "Konfigurace automatického plánování cyklů byla úspěšně aktualizována."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message_create": "Nepodařilo se uložit konfiguraci automatického plánování cyklů.",
|
||||
"message_update": "Nepodařilo se aktualizovat konfiguraci automatického plánování cyklů."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,418 @@
|
||||
{
|
||||
"project_view": {
|
||||
"sort_by": {
|
||||
"created_at": "Vytvořeno dne",
|
||||
"updated_at": "Aktualizováno dne",
|
||||
"name": "Název"
|
||||
}
|
||||
},
|
||||
"project_cycles": {
|
||||
"add_cycle": "Přidat cyklus",
|
||||
"more_details": "Více detailů",
|
||||
"cycle": "Cyklus",
|
||||
"update_cycle": "Aktualizovat cyklus",
|
||||
"create_cycle": "Vytvořit cyklus",
|
||||
"no_matching_cycles": "Žádné odpovídající cykly",
|
||||
"remove_filters_to_see_all_cycles": "Odeberte filtry pro zobrazení všech cyklů",
|
||||
"remove_search_criteria_to_see_all_cycles": "Odeberte kritéria pro zobrazení všech cyklů",
|
||||
"only_completed_cycles_can_be_archived": "Lze archivovat pouze dokončené cykly",
|
||||
"start_date": "Začátek data",
|
||||
"end_date": "Konec data",
|
||||
"in_your_timezone": "V časovém pásmu",
|
||||
"transfer_work_items": "Převést {count} pracovních položek",
|
||||
"transfer": {
|
||||
"no_cycles_available": "Žádné jiné cykly nejsou k dispozici pro přenos pracovních položek."
|
||||
},
|
||||
"date_range": "Období data",
|
||||
"add_date": "Přidat datum",
|
||||
"active_cycle": {
|
||||
"label": "Aktivní cyklus",
|
||||
"progress": "Pokrok",
|
||||
"chart": "Burndown graf",
|
||||
"priority_issue": "Vysoce prioritní položky",
|
||||
"assignees": "Přiřazení",
|
||||
"issue_burndown": "Burndown pracovních položek",
|
||||
"ideal": "Ideální",
|
||||
"current": "Aktuální",
|
||||
"labels": "Štítky",
|
||||
"trailing": "Zpoždění",
|
||||
"leading": "Předstih"
|
||||
},
|
||||
"upcoming_cycle": {
|
||||
"label": "Nadcházející cyklus"
|
||||
},
|
||||
"completed_cycle": {
|
||||
"label": "Dokončený cyklus"
|
||||
},
|
||||
"status": {
|
||||
"days_left": "Zbývá dnů",
|
||||
"completed": "Dokončeno",
|
||||
"yet_to_start": "Ještě nezačato",
|
||||
"in_progress": "V průběhu",
|
||||
"draft": "Koncept"
|
||||
},
|
||||
"action": {
|
||||
"restore": {
|
||||
"title": "Obnovit cyklus",
|
||||
"success": {
|
||||
"title": "Cyklus obnoven",
|
||||
"description": "Cyklus byl obnoven."
|
||||
},
|
||||
"failed": {
|
||||
"title": "Obnovení selhalo",
|
||||
"description": "Obnovení cyklu se nezdařilo."
|
||||
}
|
||||
},
|
||||
"favorite": {
|
||||
"loading": "Přidávání do oblíbených",
|
||||
"success": {
|
||||
"description": "Cyklus přidán do oblíbených.",
|
||||
"title": "Úspěch!"
|
||||
},
|
||||
"failed": {
|
||||
"description": "Přidání do oblíbených selhalo.",
|
||||
"title": "Chyba!"
|
||||
}
|
||||
},
|
||||
"unfavorite": {
|
||||
"loading": "Odebírání z oblíbených",
|
||||
"success": {
|
||||
"description": "Cyklus odebrán z oblíbených.",
|
||||
"title": "Úspěch!"
|
||||
},
|
||||
"failed": {
|
||||
"description": "Odebrání selhalo.",
|
||||
"title": "Chyba!"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"loading": "Aktualizace cyklu",
|
||||
"success": {
|
||||
"description": "Cyklus aktualizován.",
|
||||
"title": "Úspěch!"
|
||||
},
|
||||
"failed": {
|
||||
"description": "Aktualizace selhala.",
|
||||
"title": "Chyba!"
|
||||
},
|
||||
"error": {
|
||||
"already_exists": "Cyklus s těmito daty již existuje. Pro koncept odstraňte data."
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Seskupujte práci do cyklů.",
|
||||
"description": "Časově ohraničte práci, sledujte termíny a dělejte pokroky.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořte první cyklus",
|
||||
"comic": {
|
||||
"title": "Cykly jsou opakovaná časová období.",
|
||||
"description": "Sprint, iterace nebo jakékoli jiné časové období pro sledování práce."
|
||||
}
|
||||
}
|
||||
},
|
||||
"no_issues": {
|
||||
"title": "Žádné položky v cyklu",
|
||||
"description": "Přidejte položky, které chcete sledovat.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit položku"
|
||||
},
|
||||
"secondary_button": {
|
||||
"text": "Přidat existující položku"
|
||||
}
|
||||
},
|
||||
"completed_no_issues": {
|
||||
"title": "Žádné položky v cyklu",
|
||||
"description": "Položky byly přesunuty nebo skryty. Pro zobrazení upravte vlastnosti."
|
||||
},
|
||||
"active": {
|
||||
"title": "Žádný aktivní cyklus",
|
||||
"description": "Aktivní cyklus zahrnuje dnešní datum. Sledujte jeho průběh zde."
|
||||
},
|
||||
"archived": {
|
||||
"title": "Žádné archivované cykly",
|
||||
"description": "Archivujte dokončené cykly pro úklid."
|
||||
}
|
||||
}
|
||||
},
|
||||
"project_views": {
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Ukládejte filtry jako pohledy.",
|
||||
"description": "Pohledy jsou uložené filtry pro snadný přístup. Sdílejte je v týmu.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit první pohled",
|
||||
"comic": {
|
||||
"title": "Pohledy pracují s vlastnostmi položek.",
|
||||
"description": "Vytvořte pohled s požadovanými filtry."
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
"title": "Žádné odpovídající pohledy",
|
||||
"description": "Žádné pohledy neodpovídají kritériím hledání.\n Místo toho vytvořte nový pohled."
|
||||
}
|
||||
},
|
||||
"no_archived_issues": {
|
||||
"title": "Zatím žádné archivované pracovní položky",
|
||||
"description": "Ručně nebo pomocí automatizace můžete archivovat pracovní položky, které jsou dokončené nebo zrušené. Jakmile budou archivovány, najdete je zde.",
|
||||
"primary_button": {
|
||||
"text": "Nastavit automatizaci"
|
||||
}
|
||||
},
|
||||
"issues_empty_filter": {
|
||||
"title": "Nebyly nalezeny žádné pracovní položky odpovídající použitým filtrům",
|
||||
"secondary_button": {
|
||||
"text": "Vymazat všechny filtry"
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"title": "Zatím žádné veřejné stránky",
|
||||
"description": "Zde uvidíte stránky sdílené se všemi ve vašem projektu.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořte svou první stránku"
|
||||
}
|
||||
},
|
||||
"archived": {
|
||||
"title": "Zatím žádné archivované stránky",
|
||||
"description": "Archivujte stránky, které nejsou na vašem radaru. Přistupujte k nim odtud, když je budete potřebovat."
|
||||
},
|
||||
"shared": {
|
||||
"title": "Zatím žádné sdílené stránky",
|
||||
"description": "Stránky, které s vámi ostatní sdíleli, se objeví zde."
|
||||
}
|
||||
},
|
||||
"delete_view": {
|
||||
"title": "Opravdu chcete smazat tento pohled?",
|
||||
"content": "Pokud potvrdíte, všechny možnosti řazení, filtrování a zobrazení + rozvržení, které jste vybrali pro tento pohled, budou trvale odstraněny a nelze je obnovit."
|
||||
}
|
||||
},
|
||||
"project_issues": {
|
||||
"empty_state": {
|
||||
"no_issues": {
|
||||
"title": "Vytvořte a přiřaďte pracovní položku",
|
||||
"description": "Položky jsou úkoly, které přiřazujete sobě nebo týmu. Sledujte jejich postup.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit první položku",
|
||||
"comic": {
|
||||
"title": "Položky jsou stavebními kameny",
|
||||
"description": "Příklady: Redesign UI, Rebranding, Nový systém."
|
||||
}
|
||||
}
|
||||
},
|
||||
"no_archived_issues": {
|
||||
"title": "Žádné archivované položky",
|
||||
"description": "Archivujte dokončené nebo zrušené položky. Nastavte automatizaci.",
|
||||
"primary_button": {
|
||||
"text": "Nastavit automatizaci"
|
||||
}
|
||||
},
|
||||
"issues_empty_filter": {
|
||||
"title": "Žádné odpovídající položky",
|
||||
"secondary_button": {
|
||||
"text": "Vymazat filtry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"project_module": {
|
||||
"add_module": "Přidat modul",
|
||||
"update_module": "Aktualizovat modul",
|
||||
"create_module": "Vytvořit modul",
|
||||
"archive_module": "Archivovat modul",
|
||||
"restore_module": "Obnovit modul",
|
||||
"delete_module": "Smazat modul",
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Seskupujte milníky do modulů.",
|
||||
"description": "Moduly seskupují položky pod logického nadřazeného. Sledujte termíny a pokrok.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořte první modul",
|
||||
"comic": {
|
||||
"title": "Moduly skupinují hierarchicky.",
|
||||
"description": "Příklady: Modul košíku, podvozku, skladu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"no_issues": {
|
||||
"title": "Žádné položky v modulu",
|
||||
"description": "Přidejte položky do modulu.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit položky"
|
||||
},
|
||||
"secondary_button": {
|
||||
"text": "Přidat existující položku"
|
||||
}
|
||||
},
|
||||
"archived": {
|
||||
"title": "Žádné archivované moduly",
|
||||
"description": "Archivujte dokončené nebo zrušené moduly."
|
||||
},
|
||||
"sidebar": {
|
||||
"in_active": "Modul není aktivní.",
|
||||
"invalid_date": "Neplatné datum. Zadejte platné."
|
||||
}
|
||||
},
|
||||
"quick_actions": {
|
||||
"archive_module": "Archivovat modul",
|
||||
"archive_module_description": "Lze archivovat pouze dokončené/zrušené moduly.",
|
||||
"delete_module": "Smazat modul"
|
||||
},
|
||||
"toast": {
|
||||
"copy": {
|
||||
"success": "Odkaz na modul zkopírován"
|
||||
},
|
||||
"delete": {
|
||||
"success": "Modul smazán",
|
||||
"error": "Mazání selhalo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"project_page": {
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Pište poznámky, dokumenty nebo znalostní báze. Využijte AI Galileo.",
|
||||
"description": "Stránky jsou prostorem pro myšlenky. Pište, formátujte, vkládejte položky a využívejte komponenty.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit první stránku"
|
||||
}
|
||||
},
|
||||
"private": {
|
||||
"title": "Žádné soukromé stránky",
|
||||
"description": "Uchovávejte soukromé myšlenky. Sdílejte, až budete připraveni.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit stránku"
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"title": "Žádné veřejné stránky",
|
||||
"description": "Zde uvidíte stránky sdílené v projektu.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit stránku"
|
||||
}
|
||||
},
|
||||
"archived": {
|
||||
"title": "Žádné archivované stránky",
|
||||
"description": "Archivujte stránky pro pozdější přístup."
|
||||
}
|
||||
}
|
||||
},
|
||||
"disabled_project": {
|
||||
"empty_state": {
|
||||
"inbox": {
|
||||
"title": "Příjem není povolen",
|
||||
"description": "Aktivujte příjem v nastavení projektu pro správu požadavků.",
|
||||
"primary_button": {
|
||||
"text": "Spravovat funkce"
|
||||
}
|
||||
},
|
||||
"cycle": {
|
||||
"title": "Cykly nejsou povoleny",
|
||||
"description": "Aktivujte cykly pro časové ohraničení práce.",
|
||||
"primary_button": {
|
||||
"text": "Spravovat funkce"
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"title": "Moduly nejsou povoleny",
|
||||
"description": "Aktivujte moduly v nastavení projektu.",
|
||||
"primary_button": {
|
||||
"text": "Spravovat funkce"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"title": "Stránky nejsou povoleny",
|
||||
"description": "Aktivujte stránky v nastavení projektu.",
|
||||
"primary_button": {
|
||||
"text": "Spravovat funkce"
|
||||
}
|
||||
},
|
||||
"view": {
|
||||
"title": "Pohledy nejsou povoleny",
|
||||
"description": "Aktivujte pohledy v nastavení projektu.",
|
||||
"primary_button": {
|
||||
"text": "Spravovat funkce"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"project_modules": {
|
||||
"status": {
|
||||
"backlog": "Backlog",
|
||||
"planned": "Plánováno",
|
||||
"in_progress": "V průběhu",
|
||||
"paused": "Pozastaveno",
|
||||
"completed": "Dokončeno",
|
||||
"cancelled": "Zrušeno"
|
||||
},
|
||||
"layout": {
|
||||
"list": "Seznam",
|
||||
"board": "Nástěnka",
|
||||
"timeline": "Časová osa"
|
||||
},
|
||||
"order_by": {
|
||||
"name": "Název",
|
||||
"progress": "Pokrok",
|
||||
"issues": "Počet položek",
|
||||
"due_date": "Termín",
|
||||
"created_at": "Datum vytvoření",
|
||||
"manual": "Ručně"
|
||||
}
|
||||
},
|
||||
"project_members": {
|
||||
"full_name": "Celé jméno",
|
||||
"display_name": "Zobrazované jméno",
|
||||
"email": "E-mail",
|
||||
"joining_date": "Datum připojení",
|
||||
"role": "Role"
|
||||
},
|
||||
"project": {
|
||||
"members_import": {
|
||||
"title": "Importovat členy z CSV",
|
||||
"description": "Nahrajte CSV se sloupci: E-mail a Role (5=Host, 15=Člen, 20=Správce). Uživatelé musí být již členy pracovního prostoru.",
|
||||
"download_sample": "Stáhnout ukázkové CSV",
|
||||
"dropzone": {
|
||||
"active": "Přetáhněte CSV soubor sem",
|
||||
"inactive": "Přetáhněte nebo klikněte pro nahrání",
|
||||
"file_type": "Podporovány jsou pouze soubory .csv"
|
||||
},
|
||||
"buttons": {
|
||||
"cancel": "Zrušit",
|
||||
"import": "Importovat",
|
||||
"try_again": "Zkusit znovu",
|
||||
"close": "Zavřít",
|
||||
"done": "Hotovo"
|
||||
},
|
||||
"progress": {
|
||||
"uploading": "Nahrávání...",
|
||||
"importing": "Importování..."
|
||||
},
|
||||
"summary": {
|
||||
"title": {
|
||||
"complete": "Import dokončen"
|
||||
},
|
||||
"message": {
|
||||
"success": "Úspěšně importováno {count} člen{plural} do projektu.",
|
||||
"no_imports": "Ze souboru CSV nebyli importováni žádní noví členové."
|
||||
},
|
||||
"stats": {
|
||||
"added": "Přidáno",
|
||||
"reactivated": "Znovu aktivováno",
|
||||
"already_members": "Již členové",
|
||||
"skipped": "Přeskočeno"
|
||||
},
|
||||
"download_errors": "Stáhnout podrobnosti přeskočených"
|
||||
},
|
||||
"toast": {
|
||||
"invalid_file": {
|
||||
"title": "Neplatný soubor",
|
||||
"message": "Podporovány jsou pouze CSV soubory."
|
||||
},
|
||||
"import_failed": {
|
||||
"title": "Import selhal",
|
||||
"message": "Něco se pokazilo."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"account_settings": {
|
||||
"profile": {
|
||||
"change_email_modal": {
|
||||
"title": "Změnit e-mail",
|
||||
"description": "Zadejte novou e-mailovou adresu a obdržíte ověřovací odkaz.",
|
||||
"toasts": {
|
||||
"success_title": "Úspěch!",
|
||||
"success_message": "E-mail byl úspěšně aktualizován. Přihlaste se znovu."
|
||||
},
|
||||
"form": {
|
||||
"email": {
|
||||
"label": "Nový e-mail",
|
||||
"placeholder": "Zadejte svůj e-mail",
|
||||
"errors": {
|
||||
"required": "E-mail je povinný",
|
||||
"invalid": "E-mail je neplatný",
|
||||
"exists": "E-mail již existuje. Použijte jiný.",
|
||||
"validation_failed": "Ověření e-mailu se nezdařilo. Zkuste to znovu."
|
||||
}
|
||||
},
|
||||
"code": {
|
||||
"label": "Jedinečný kód",
|
||||
"placeholder": "123456",
|
||||
"helper_text": "Ověřovací kód byl odeslán na váš nový e-mail.",
|
||||
"errors": {
|
||||
"required": "Jedinečný kód je povinný",
|
||||
"invalid": "Neplatný ověřovací kód. Zkuste to znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"continue": "Pokračovat",
|
||||
"confirm": "Potvrdit",
|
||||
"cancel": "Zrušit"
|
||||
},
|
||||
"states": {
|
||||
"sending": "Odesílání…"
|
||||
}
|
||||
}
|
||||
},
|
||||
"preferences": {
|
||||
"heading": "Předvolby",
|
||||
"description": "Přizpůsobte si prostředí aplikace podle toho, jak pracujete"
|
||||
},
|
||||
"notifications": {
|
||||
"heading": "E-mailová oznámení",
|
||||
"description": "Zůstaňte v obraze u pracovních položek, které odebíráte. Aktivujte toto pro zasílání oznámení.",
|
||||
"select_default_view": "Vybrat výchozí zobrazení",
|
||||
"compact": "Kompaktní",
|
||||
"full": "Celá obrazovka"
|
||||
},
|
||||
"security": {
|
||||
"heading": "Zabezpečení"
|
||||
},
|
||||
"api_tokens": {
|
||||
"title": "Osobní přístupové tokeny",
|
||||
"description": "Generujte bezpečné API tokeny pro integraci vašich dat s externími systémy a aplikacemi."
|
||||
},
|
||||
"activity": {
|
||||
"heading": "Aktivita",
|
||||
"description": "Sledujte vaše nedávné akce a změny napříč všemi projekty a pracovními položkami."
|
||||
},
|
||||
"connections": {
|
||||
"title": "Spojení",
|
||||
"heading": "Spojení",
|
||||
"description": "Spravujte nastavení spojení vašeho pracovního prostoru."
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"label": "Profil",
|
||||
"page_label": "Vaše práce",
|
||||
"work": "Práce",
|
||||
"details": {
|
||||
"joined_on": "Připojeno dne",
|
||||
"time_zone": "Časové pásmo"
|
||||
},
|
||||
"stats": {
|
||||
"workload": "Vytížení",
|
||||
"overview": "Přehled",
|
||||
"created": "Vytvořené položky",
|
||||
"assigned": "Přiřazené položky",
|
||||
"subscribed": "Odebírané položky",
|
||||
"state_distribution": {
|
||||
"title": "Položky podle stavu",
|
||||
"empty": "Vytvářejte položky pro analýzu stavů."
|
||||
},
|
||||
"priority_distribution": {
|
||||
"title": "Položky podle priority",
|
||||
"empty": "Vytvářejte položky pro analýzu priorit."
|
||||
},
|
||||
"recent_activity": {
|
||||
"title": "Nedávná aktivita",
|
||||
"empty": "Nenalezena žádná aktivita.",
|
||||
"button": "Stáhnout dnešní aktivitu",
|
||||
"button_loading": "Stahování"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"profile": "Profil",
|
||||
"security": "Zabezpečení",
|
||||
"activity": "Aktivita",
|
||||
"preferences": "Předvolby",
|
||||
"notifications": "Oznámení",
|
||||
"api-tokens": "Osobní přístupové tokeny",
|
||||
"connections": "Spojení"
|
||||
},
|
||||
"tabs": {
|
||||
"summary": "Shrnutí",
|
||||
"assigned": "Přiřazeno",
|
||||
"created": "Vytvořeno",
|
||||
"subscribed": "Odebíráno",
|
||||
"activity": "Aktivita"
|
||||
},
|
||||
"empty_state": {
|
||||
"activity": {
|
||||
"title": "Žádná aktivita",
|
||||
"description": "Vytvořte pracovní položku pro začátek."
|
||||
},
|
||||
"assigned": {
|
||||
"title": "Žádné přiřazené pracovní položky",
|
||||
"description": "Zde uvidíte přiřazené pracovní položky."
|
||||
},
|
||||
"created": {
|
||||
"title": "Žádné vytvořené pracovní položky",
|
||||
"description": "Zde jsou pracovní položky, které jste vytvořili."
|
||||
},
|
||||
"subscribed": {
|
||||
"title": "Žádné odebírané pracovní položky",
|
||||
"description": "Odebírejte pracovní položky, které vás zajímají, a sledujte je zde."
|
||||
}
|
||||
}
|
||||
},
|
||||
"themes": {
|
||||
"theme_options": {
|
||||
"system_preference": {
|
||||
"label": "Systémové předvolby"
|
||||
},
|
||||
"light": {
|
||||
"label": "Světlé"
|
||||
},
|
||||
"dark": {
|
||||
"label": "Tmavé"
|
||||
},
|
||||
"light_contrast": {
|
||||
"label": "Světlý vysoký kontrast"
|
||||
},
|
||||
"dark_contrast": {
|
||||
"label": "Tmavý vysoký kontrast"
|
||||
},
|
||||
"custom": {
|
||||
"label": "Vlastní téma"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"stickies": {
|
||||
"title": "Vaše poznámky",
|
||||
"placeholder": "kliknutím začněte psát",
|
||||
"all": "Všechny poznámky",
|
||||
"no-data": "Zapisujte nápady a myšlenky. Přidejte první poznámku.",
|
||||
"add": "Přidat poznámku",
|
||||
"search_placeholder": "Hledat podle názvu",
|
||||
"delete": "Smazat poznámku",
|
||||
"delete_confirmation": "Opravdu chcete smazat tuto poznámku?",
|
||||
"empty_state": {
|
||||
"simple": "Zapisujte nápady a myšlenky. Přidejte první poznámku.",
|
||||
"general": {
|
||||
"title": "Poznámky jsou rychlé záznamy.",
|
||||
"description": "Zapisujte myšlenky a přistupujte k nim odkudkoli.",
|
||||
"primary_button": {
|
||||
"text": "Přidat poznámku"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"title": "Nenalezeny žádné poznámky.",
|
||||
"description": "Zkuste jiný termín nebo vytvořte novou.",
|
||||
"primary_button": {
|
||||
"text": "Přidat poznámku"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"errors": {
|
||||
"wrong_name": "Název poznámky může mít max. 100 znaků.",
|
||||
"already_exists": "Poznámka bez popisu již existuje"
|
||||
},
|
||||
"created": {
|
||||
"title": "Poznámka vytvořena",
|
||||
"message": "Poznámka úspěšně vytvořena"
|
||||
},
|
||||
"not_created": {
|
||||
"title": "Vytvoření selhalo",
|
||||
"message": "Poznámku nelze vytvořit"
|
||||
},
|
||||
"updated": {
|
||||
"title": "Poznámka aktualizována",
|
||||
"message": "Poznámka úspěšně aktualizována"
|
||||
},
|
||||
"not_updated": {
|
||||
"title": "Aktualizace selhala",
|
||||
"message": "Poznámku nelze aktualizovat"
|
||||
},
|
||||
"removed": {
|
||||
"title": "Poznámka smazána",
|
||||
"message": "Poznámka úspěšně smazána"
|
||||
},
|
||||
"not_removed": {
|
||||
"title": "Mazání selhalo",
|
||||
"message": "Poznámku nelze smazat"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,333 @@
|
||||
{
|
||||
"templates": {
|
||||
"settings": {
|
||||
"title": "Šablony",
|
||||
"description": "Ušetřete 80 % času stráveného vytvářením projektů, pracovních položek a stránek, když používáte šablony.",
|
||||
"new_project_template": "Nová šablona projektu",
|
||||
"new_work_item_template": "Nová šablona pracovní položky",
|
||||
"new_page_template": "Nová šablona stránky",
|
||||
"options": {
|
||||
"project": {
|
||||
"label": "Šablony projektů"
|
||||
},
|
||||
"work_item": {
|
||||
"label": "Šablony pracovních položek"
|
||||
},
|
||||
"page": {
|
||||
"label": "Šablony stránek"
|
||||
}
|
||||
},
|
||||
"create_template": {
|
||||
"label": "Vytvořit šablonu",
|
||||
"no_permission": {
|
||||
"project": "Kontaktujte správce projektu, abyste vytvořili šablony",
|
||||
"workspace": "Kontaktujte správce workspace, abyste vytvořili šablony"
|
||||
}
|
||||
},
|
||||
"use_template": {
|
||||
"button": {
|
||||
"default": "Použít šablonu",
|
||||
"loading": "Používání"
|
||||
}
|
||||
},
|
||||
"template_source": {
|
||||
"workspace": {
|
||||
"info": "Odvozeno z workspace"
|
||||
},
|
||||
"project": {
|
||||
"info": "Odvozeno z projektu"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
"project": {
|
||||
"template": {
|
||||
"name": {
|
||||
"placeholder": "Pojmenujte svou šablonu projektu.",
|
||||
"validation": {
|
||||
"required": "Název šablony je povinný",
|
||||
"maxLength": "Název šablony by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište, kdy a jak tuto šablonu použít."
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Pojmenujte svůj projekt.",
|
||||
"validation": {
|
||||
"required": "Název projektu je povinný",
|
||||
"maxLength": "Název projektu by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište účel a cíle tohoto projektu."
|
||||
},
|
||||
"button": {
|
||||
"create": "Vytvořit šablonu projektu",
|
||||
"update": "Aktualizovat šablonu projektu"
|
||||
}
|
||||
},
|
||||
"work_item": {
|
||||
"template": {
|
||||
"name": {
|
||||
"placeholder": "Pojmenujte svou šablonu pracovních položek.",
|
||||
"validation": {
|
||||
"required": "Název šablony je povinný",
|
||||
"maxLength": "Název šablony by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište, kdy a jak tuto šablonu použít."
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Dejte této pracovní položce název.",
|
||||
"validation": {
|
||||
"required": "Název pracovní položky je povinný",
|
||||
"maxLength": "Název pracovní položky by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište tuto pracovní položku, aby bylo jasné, co dosáhnete, když ji dokončíte."
|
||||
},
|
||||
"button": {
|
||||
"create": "Vytvořit šablonu pracovní položky",
|
||||
"update": "Aktualizovat šablonu pracovní položky"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"template": {
|
||||
"name": {
|
||||
"placeholder": "Pojmenujte svou šablonu stránky.",
|
||||
"validation": {
|
||||
"required": "Název šablony je povinný",
|
||||
"maxLength": "Název šablony by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište, kdy a jak tuto šablonu použít."
|
||||
}
|
||||
},
|
||||
"name": {
|
||||
"placeholder": "Neznámá stránka",
|
||||
"validation": {
|
||||
"maxLength": "Název stránky by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"create": "Vytvořit šablonu stránky",
|
||||
"update": "Aktualizovat šablonu stránky"
|
||||
}
|
||||
},
|
||||
"publish": {
|
||||
"action": "{isPublished, select, true {Nastavení publikování} other {Publikovat na Marketplace}}",
|
||||
"unpublish_action": "Odebrat z Marketplace",
|
||||
"title": "Uložte svou šablonu, aby byla pro vaše uživatele dostupná.",
|
||||
"name": {
|
||||
"label": "Název šablony",
|
||||
"placeholder": "Pojmenujte svou šablonu",
|
||||
"validation": {
|
||||
"required": "Název šablony je povinný",
|
||||
"maxLength": "Název šablony by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"short_description": {
|
||||
"label": "Kráký popis",
|
||||
"placeholder": "Tato šablona je skvělá pro manažery projektů, kteří spravují několik projektů najednou.",
|
||||
"validation": {
|
||||
"required": "Kráký popis je povinný"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"label": "Popis",
|
||||
"placeholder": "Vylepšete produktivitu a zjednodušte komunikaci s naší integrací rozpoznávání řeči.\n• Instantní přepis: Převádí hlas na přesný text okamžitě.\n• Vytvoření úkolu a komentáře: Vytvořte úkoly, popisy a komentáře pomocí hlasových příkazů.",
|
||||
"validation": {
|
||||
"required": "Popis je povinný"
|
||||
}
|
||||
},
|
||||
"category": {
|
||||
"label": "Category",
|
||||
"placeholder": "Choose where you think this fits best. You can choose more than one.",
|
||||
"validation": {
|
||||
"required": "Musíte vybrat alespoň jednu kategorii"
|
||||
}
|
||||
},
|
||||
"keywords": {
|
||||
"label": "Klíčová slova",
|
||||
"placeholder": "Použijte termíny, které si myslíte, že vaši uživatele při hledání této šablony použijí.",
|
||||
"helperText": "Zadejte klíčová slova oddělená čárkami, která pomůžou lidem najít tuto šablonu z hledání.",
|
||||
"validation": {
|
||||
"required": "Alespoň jedno klíčové slovo je povinné"
|
||||
}
|
||||
},
|
||||
"website": {
|
||||
"label": "URL webové stránky",
|
||||
"placeholder": "https://plane.so",
|
||||
"validation": {
|
||||
"invalid": "Neplatná URL",
|
||||
"maxLength": "URL by měla být kratší než 800 znaků"
|
||||
}
|
||||
},
|
||||
"company_name": {
|
||||
"label": "Název společnosti",
|
||||
"placeholder": "Plane",
|
||||
"validation": {
|
||||
"required": "Název společnosti je povinný",
|
||||
"maxLength": "Název společnosti by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"contact_email": {
|
||||
"label": "Email podpory",
|
||||
"placeholder": "help@plane.so",
|
||||
"validation": {
|
||||
"invalid": "Neplatná emailová adresa",
|
||||
"maxLength": "Email podpory by měl být kratší než 255 znaků"
|
||||
}
|
||||
},
|
||||
"privacy_policy_url": {
|
||||
"label": "Odkaz na vaši ochranu osobních údajů",
|
||||
"placeholder": "https://planes.so/privacy-policy",
|
||||
"validation": {
|
||||
"invalid": "Neplatná URL",
|
||||
"maxLength": "URL by měla být kratší než 800 znaků"
|
||||
}
|
||||
},
|
||||
"terms_of_service_url": {
|
||||
"label": "Odkaz na vaše podmínky použití",
|
||||
"placeholder": "https://planes.so/terms-of-use",
|
||||
"validation": {
|
||||
"invalid": "Neplatná URL",
|
||||
"maxLength": "URL by měla být kratší než 800 znaků"
|
||||
}
|
||||
},
|
||||
"cover_image": {
|
||||
"label": "Přidejte obrázek, který bude zobrazen na Marketplace",
|
||||
"upload_title": "Nahrát obrázek",
|
||||
"upload_placeholder": "Klikněte pro nahrání nebo přetáhněte a upustěte obrázek",
|
||||
"drop_here": "Sem",
|
||||
"click_to_upload": "Klikněte pro nahrání",
|
||||
"invalid_file_or_exceeds_size_limit": "Neplatný soubor nebo překročen limit velikosti. Zkuste to znovu.",
|
||||
"upload_and_save": "Nahrát a uložit",
|
||||
"uploading": "Nahrávání",
|
||||
"remove": "Odstranit",
|
||||
"removing": "Odstraňování",
|
||||
"validation": {
|
||||
"required": "Obrázek je povinný"
|
||||
}
|
||||
},
|
||||
"attach_screenshots": {
|
||||
"label": "Připojte dokumenty a obrázky, které si myslíte, že vypadnou při zobrazení této šablony.",
|
||||
"validation": {
|
||||
"required": "Musíte přidat alespoň jeden screenshot"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"upgrade": {
|
||||
"title": "Šablony",
|
||||
"description": "S šablonami projektů, pracovních položek a stránek v Plane nemusíte vytvářet projekt od nuly nebo nastavovat vlastnosti pracovních položek ručně.",
|
||||
"sub_description": "Získejte 80 % svého administrativního času zpět, když používáte šablony."
|
||||
},
|
||||
"no_templates": {
|
||||
"button": "Vytvořte svou první šablonu"
|
||||
},
|
||||
"no_labels": {
|
||||
"description": "Zatím žádné štítky. Vytvořte štítky, abyste pomohli organizovat a filtrovat pracovní položky v projektu."
|
||||
},
|
||||
"no_modules": {
|
||||
"description": "Zatím žádné moduly. Organizujte práci do dílčích projektů s vyhrazenými vedoucími a přiřazenými osobami."
|
||||
},
|
||||
"no_work_items": {
|
||||
"description": "Zatím žádné pracovní položky. Přidejte jednu, abyste strukturovali svou práci lépe."
|
||||
},
|
||||
"no_sub_work_items": {
|
||||
"description": "Zatím žádné podpracovní položky. Přidejte jednu, abyste strukturovali svou práci lépe."
|
||||
},
|
||||
"page": {
|
||||
"no_templates": {
|
||||
"title": "Neexistují žádné šablony, ke kterým máte přístup.",
|
||||
"description": "Prosím vytvořte šablonu"
|
||||
},
|
||||
"no_results": {
|
||||
"title": "To neodpovídá žádné šabloně.",
|
||||
"description": "Zkuste hledat s jinými termíny."
|
||||
}
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Šablona byla úspěšně vytvořena",
|
||||
"message": "{templateName} byla úspěšně vytvořena a je nyní k dispozici pro váš workspace. Můžete ji nyní použít k vytvoření nových pracovních položek."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se vytvořit šablonu. Zkuste to znovu!"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Šablona byla úspěšně aktualizována",
|
||||
"message": "{templateName} byla úspěšně aktualizována. Můžete ji nyní použít k vytvoření nových pracovních položek."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se aktualizovat šablonu. Zkuste to znovu!"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Šablona byla úspěšně smazána!"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se smazat šablonu. Zkuste to znovu!"
|
||||
}
|
||||
},
|
||||
"unpublish": {
|
||||
"success": {
|
||||
"title": "Šablona stažena",
|
||||
"message": "{templateName}, šablona typu {templateType}, byla stažena z marketplace."
|
||||
},
|
||||
"error": {
|
||||
"title": "Nepodařilo se stáhnout šablonu.",
|
||||
"message": "Zkuste ji stáhnout znovu nebo se k ní vraťte později. Pokud ji stále nemůžete stáhnout, kontaktujte nás."
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete_confirmation": {
|
||||
"title": "Smazat šablonu",
|
||||
"description": {
|
||||
"prefix": "Opravdu chcete smazat šablonu-",
|
||||
"suffix": "? Všechna data související se šablonou budou trvale odstraněna. Tuto akci nelze vrátit zpět."
|
||||
}
|
||||
},
|
||||
"unpublish_confirmation": {
|
||||
"title": "Stáhnout šablonu",
|
||||
"description": {
|
||||
"prefix": "Opravdu chcete stáhnout šablonu-",
|
||||
"suffix": "? Šablona bude stažena z marketplace a nebude více dostupná pro ostatní."
|
||||
}
|
||||
},
|
||||
"dropdown": {
|
||||
"add": {
|
||||
"work_item": "Přidat novou šablonu",
|
||||
"project": "Přidat novou šablonu"
|
||||
},
|
||||
"label": {
|
||||
"project": "Vybrat šablonu projektu",
|
||||
"page": "Vybrat šablonu"
|
||||
},
|
||||
"tooltip": {
|
||||
"work_item": "Vybrat šablonu pracovní položky"
|
||||
},
|
||||
"no_results": {
|
||||
"work_item": "Nebyly nalezeny žádné šablony.",
|
||||
"project": "Nebyly nalezeny žádné šablony."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"product_tour": {
|
||||
"workitems": {
|
||||
"step_zero": {
|
||||
"title": "Vítejte ve vašem pracovním prostoru",
|
||||
"description": "Abychom vám pomohli začít, vytvořili jsme pro vás Demo projekt. Přidejme vaši první pracovní položku."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Klikněte na \"+ Přidat pracovní položku\"",
|
||||
"description": "Začněte kliknutím na tlačítko \"+ Nová pracovní položka\". Můžete vytvářet úkoly, chyby nebo vlastní typ podle vašich potřeb."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Filtrujte své pracovní položky",
|
||||
"description": "Použijte filtry k rychlému zúžení seznamu. Můžete filtrovat podle stavu, priority nebo členů týmu. "
|
||||
},
|
||||
"step_three": {
|
||||
"title": "Prohlížejte, seskupujte a řaďte pracovní položky podle potřeby.",
|
||||
"description": "Zobrazte požadované vlastnosti a seskupte nebo seřaďte pracovní položky podle svých potřeb."
|
||||
},
|
||||
"step_four": {
|
||||
"title": "Vizualizujte podle libosti",
|
||||
"description": "Vyberte, které vlastnosti chcete v seznamu vidět. Můžete také seskupit a seřadit pracovní položky podle svého."
|
||||
}
|
||||
},
|
||||
"cycle": {
|
||||
"step_zero": {
|
||||
"title": "Dosahujte pokroku s Cykly",
|
||||
"description": "Stiskněte Q pro vytvoření Cyklu. Pojmenujte ho a nastavte data—pouze jeden cyklus na projekt."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Vytvořte nový cyklus",
|
||||
"description": "Stiskněte Q pro vytvoření Cyklu. Pojmenujte ho a nastavte data—pouze jeden cyklus na projekt."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Klikněte na \"+\"",
|
||||
"description": "Začněte kliknutím na tlačítko \"+\". Přidejte nové nebo existující pracovní položky přímo ze stránky Cyklu."
|
||||
},
|
||||
"step_three": {
|
||||
"title": "Souhrn cyklu",
|
||||
"description": "Sledujte průběh cyklu, produktivitu týmu a priority—a zjistěte, jestli něco zaostává."
|
||||
},
|
||||
"step_four": {
|
||||
"title": "Přenos pracovních položek",
|
||||
"description": "Po termínu dokončení se cyklus automaticky dokončí. Přesuňte nedokončenou práci do jiného cyklu."
|
||||
}
|
||||
},
|
||||
"module": {
|
||||
"step_zero": {
|
||||
"title": "Rozdělte svůj projekt do Modulů",
|
||||
"description": "Moduly jsou menší, zaměřené projekty, které pomáhají uživatelům seskupovat a organizovat pracovní položky v určitých časových rámcích."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Vytvořit Modul",
|
||||
"description": "Moduly jsou menší, zaměřené projekty, které pomáhají uživatelům seskupovat a organizovat pracovní položky v určitých časových rámcích."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Klikněte na \"+\"",
|
||||
"description": "Začněte kliknutím na tlačítko \"+\". Přidejte nové nebo existující pracovní položky přímo ze stránky Modulu."
|
||||
},
|
||||
"step_three": {
|
||||
"title": "Stavy modulu",
|
||||
"description": "Moduly používají tyto stavy, aby pomohly uživatelům plánovat a jasně sledovat průběh a fázi."
|
||||
},
|
||||
"step_four": {
|
||||
"title": "Průběh modulu",
|
||||
"description": "Průběh modulu se sleduje prostřednictvím dokončených položek s analytickými nástroji pro monitorování výkonu."
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
"step_zero": {
|
||||
"title": "Dokumentujte s AI stránkami",
|
||||
"description": "Stránky v Plane vám umožňují zachytit, organizovat a spolupracovat na projektových informacích—bez externích nástrojů."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Nastavte stránku jako Veřejnou nebo Soukromou",
|
||||
"description": "Stránky lze nastavit jako veřejné, viditelné pro všechny ve vašem pracovním prostoru, nebo soukromé, přístupné pouze vám."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Použijte příkaz /",
|
||||
"description": "Použijte / na stránce pro přidání obsahu z 16 typů bloků, včetně seznamů, obrázků, tabulek a vložení."
|
||||
},
|
||||
"step_three": {
|
||||
"title": "Akce stránky",
|
||||
"description": "Jakmile je vaše stránka vytvořena, můžete kliknout na menu ••• v pravém horním rohu a provést následující akce."
|
||||
},
|
||||
"step_four": {
|
||||
"title": "Obsah",
|
||||
"description": "Získejte pohled z výšky na svou stránku kliknutím na ikonu panelu a zobrazením všech nadpisů."
|
||||
},
|
||||
"step_five": {
|
||||
"title": "Historie verzí",
|
||||
"description": "Stránky sledují všechny úpravy s historií verzí, což vám umožňuje obnovit předchozí verze v případě potřeby."
|
||||
}
|
||||
},
|
||||
"intake": {
|
||||
"step_zero": {
|
||||
"title": "Zefektivněte požadavky s příjmem",
|
||||
"description": "Funkce pouze v Plane, která umožňuje hostům vytvářet pracovní položky pro chyby, požadavky nebo tikety."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Otevřené/uzavřené požadavky příjmu",
|
||||
"description": "Čekající požadavky zůstávají na kartě Otevřené a jakmile je vyřeší správce nebo člen, přesunou se do Zavřené."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Přijměte/odmítněte čekající požadavek",
|
||||
"description": "Přijměte pro úpravu a přesunutí pracovní položky do vašeho projektu nebo ji odmítněte a označte ji jako Zrušenou."
|
||||
},
|
||||
"step_three": {
|
||||
"title": "Odložit prozatím",
|
||||
"description": "Pracovní položku lze odložit, abyste ji zkontrolovali později. Přesune se na konec seznamu otevřených požadavků."
|
||||
}
|
||||
},
|
||||
"mcp_connectors": {
|
||||
"step_zero": {
|
||||
"title": "Přestaňte přepínat záložky. Propojte svůj svět.",
|
||||
"description": "Propojte GitHub, Slack pro sledování PR a shrnutí chatů přímo v Plane AI."
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"modal": {
|
||||
"title": "Navigace, nově promyšlená",
|
||||
"sub_title": "Váš pracovní prostor je nyní snazší prozkoumat s chytřejší, zjednodušenou navigací.",
|
||||
"highlight_1": "Zjednodušená struktura levého panelu pro rychlejší objevování",
|
||||
"highlight_2": "Vylepšené globální vyhledávání pro okamžitý přesun kamkoli",
|
||||
"highlight_3": "Chytřejší seskupování kategorií pro jasnost a zaměření",
|
||||
"footer": "Chcete rychlý průvodce?"
|
||||
},
|
||||
"step_zero": {
|
||||
"title": "Najděte cokoli okamžitě",
|
||||
"description": "Použijte univerzální vyhledávání pro přeskok k úkolům, projektům, stránkám a lidem—bez přerušení vaší práce."
|
||||
},
|
||||
"step_one": {
|
||||
"title": "Mějte kontrolu nad aktualizacemi",
|
||||
"description": "Vaše doručená pošta uchovává všechny zmínky, schválení a aktivitu na jednom místě, takže nikdy nezmešk áte důležitou práci."
|
||||
},
|
||||
"step_two": {
|
||||
"title": "Přizpůsobte si navigaci",
|
||||
"description": "Přizpůsobte si, co vidíte a jak se pohybujete v Předvolbách."
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"close": "Zavřít",
|
||||
"next": "Další",
|
||||
"back": "Zpět",
|
||||
"done": "Hotovo",
|
||||
"take_a_tour": "Prohlídka",
|
||||
"get_started": "Začít",
|
||||
"got_it": "Rozumím"
|
||||
},
|
||||
"seed_data": {
|
||||
"title": "Zde je váš demo projekt",
|
||||
"description": "Projekty vám umožňují spravovat vaše týmy, úkoly a vše, co potřebujete k dokončení práce ve vašem pracovním prostoru."
|
||||
}
|
||||
},
|
||||
"get_started": {
|
||||
"title": "Ahoj {name}, vítej na palubě!",
|
||||
"description": "Zde je vše, co potřebujete k nastartování vaší cesty s Plane.",
|
||||
"checklist_section": {
|
||||
"title": "Začít",
|
||||
"description": "Začněte s nastavením a uvidíte své nápady ožít rychleji.",
|
||||
"checklist_items": {
|
||||
"item_1": {
|
||||
"title": "Vytvořit projekt"
|
||||
},
|
||||
"item_2": {
|
||||
"title": "Vytvořit pracovní položku"
|
||||
},
|
||||
"item_3": {
|
||||
"title": "Pozvat členy týmu"
|
||||
},
|
||||
"item_4": {
|
||||
"title": "Vytvořit stránku"
|
||||
},
|
||||
"item_5": {
|
||||
"title": "Vyzkoušet Plane AI chat"
|
||||
},
|
||||
"item_6": {
|
||||
"title": "Propojit integrace"
|
||||
}
|
||||
}
|
||||
},
|
||||
"team_section": {
|
||||
"title": "Pozvěte svůj tým",
|
||||
"description": "Pozvěte spolupracovníky a začněte společně budovat."
|
||||
},
|
||||
"integrations_section": {
|
||||
"title": "Vylepšete svůj pracovní prostor",
|
||||
"more_integrations": "Procházet další integrace"
|
||||
},
|
||||
"switch_to_plane_section": {
|
||||
"title": "Objevte, proč týmy přecházejí na Plane",
|
||||
"description": "Porovnejte Plane s nástroji, které dnes používáte, a uvidíte rozdíl."
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"updates": {
|
||||
"progress": {
|
||||
"title": "Průběh",
|
||||
"since_last_update": "Od poslední aktualizace",
|
||||
"comments": "{count, plural, one{# komentář} other{# komentářů}}"
|
||||
},
|
||||
"add_update": "Přidat aktualizaci",
|
||||
"add_update_placeholder": "Napište svou aktualizaci zde",
|
||||
"empty": {
|
||||
"title": "Zatím žádné aktualizace",
|
||||
"description": "Můžete zde vidět aktualizace."
|
||||
},
|
||||
"reaction": {
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Reakce vytvořena",
|
||||
"message": "Reakce byla úspěšně vytvořena"
|
||||
},
|
||||
"error": {
|
||||
"title": "Reakce nebyla vytvořena",
|
||||
"message": "Reakce se nepodařilo vytvořit"
|
||||
}
|
||||
},
|
||||
"remove": {
|
||||
"success": {
|
||||
"title": "Reakce odstraněna",
|
||||
"message": "Reakce byla úspěšně odstraněna"
|
||||
},
|
||||
"error": {
|
||||
"title": "Reakce nebyla odstraněna",
|
||||
"message": "Reakce se nepodařilo odstranit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Aktualizace vytvořena",
|
||||
"message": "Aktualizace byla úspěšně vytvořena"
|
||||
},
|
||||
"error": {
|
||||
"title": "Aktualizace nebyla vytvořena",
|
||||
"message": "Aktualizace se nepodařilo vytvořit"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "Smazat aktualizaci",
|
||||
"confirmation": "Opravdu chcete smazat tuto aktualizaci? Tato akce je nevratná.",
|
||||
"success": {
|
||||
"title": "Aktualizace smazána",
|
||||
"message": "Aktualizace byla úspěšně smazána"
|
||||
},
|
||||
"error": {
|
||||
"title": "Aktualizace nebyla smazána",
|
||||
"message": "Aktualizace se nepodařilo smazat"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Aktualizace aktualizována",
|
||||
"message": "Aktualizace byla úspěšně aktualizována"
|
||||
},
|
||||
"error": {
|
||||
"title": "Aktualizace nebyla aktualizována",
|
||||
"message": "Aktualizace se nepodařilo aktualizovat"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"wiki_collections": {
|
||||
"predefined": {
|
||||
"general": "Obecné",
|
||||
"private": "Soukromé",
|
||||
"shared": "Sdílené",
|
||||
"archived": "Archivované"
|
||||
},
|
||||
"fallback_name": "Kolekce",
|
||||
"form": {
|
||||
"name_required": "Název kolekce je povinný",
|
||||
"name_max_length": "Název kolekce musí mít méně než 255 znaků",
|
||||
"name_placeholder_create": "Zadejte název kolekce",
|
||||
"name_placeholder_edit": "Název kolekce"
|
||||
},
|
||||
"create_modal": {
|
||||
"title": "Vytvořit kolekci",
|
||||
"submit": "Vytvořit kolekci"
|
||||
},
|
||||
"edit_modal": {
|
||||
"title": "Upravit kolekci"
|
||||
},
|
||||
"delete_modal": {
|
||||
"title": "Smazat kolekci",
|
||||
"page_count": "Tato kolekce obsahuje {pageCount} stránek. Zvolte, co se s nimi stane.",
|
||||
"transfer_title": "Přesunout stránky a smazat kolekci",
|
||||
"transfer_description": "Před smazáním přesuňte všechny stránky do jiné kolekce. Stránky i jejich oprávnění zůstanou zachovány.",
|
||||
"transfer_warning": "Přesunuté stránky převezmou oprávnění vybrané kolekce.",
|
||||
"transfer_target_label": "Přesunout stránky do",
|
||||
"transfer_target_placeholder": "Vyberte kolekci",
|
||||
"delete_with_pages_title": "Smazat kolekci i se stránkami",
|
||||
"delete_with_pages_description": "Trvale smaže kolekci i všechny její stránky. Tuto akci nelze vrátit zpět.",
|
||||
"submit": "Smazat kolekci"
|
||||
},
|
||||
"header": {
|
||||
"add_page": "Přidat stránku"
|
||||
},
|
||||
"menu": {
|
||||
"create_new_page": "Vytvořit novou stránku",
|
||||
"add_existing_page": "Přidat existující stránku",
|
||||
"edit_collection": "Upravit kolekci",
|
||||
"collection_options": "Možnosti kolekce"
|
||||
},
|
||||
"add_existing_page_modal": {
|
||||
"search_placeholder": "Hledat stránky",
|
||||
"success_message": "Do kolekce bylo přidáno {count} stránek.",
|
||||
"error_message": "Stránky se nepodařilo přesunout. Zkuste to prosím znovu.",
|
||||
"no_pages_found": "Nebyly nalezeny žádné stránky odpovídající vašemu hledání",
|
||||
"no_pages_available": "Žádné stránky k přesunu",
|
||||
"submit": "Přesunout"
|
||||
},
|
||||
"list": {
|
||||
"invite_only": "Pouze na pozvání",
|
||||
"remove_error": "Nepodařilo se odebrat stránku z kolekce.",
|
||||
"no_matching_pages": "Žádné odpovídající stránky",
|
||||
"remove_search_criteria": "Odstraňte kritéria vyhledávání a zobrazí se všechny stránky",
|
||||
"remove_filters": "Odstraňte filtry a zobrazí se všechny stránky",
|
||||
"no_pages_title": "Zatím žádné stránky",
|
||||
"no_pages_description": "Tato kolekce zatím neobsahuje žádné stránky.",
|
||||
"untitled": "Bez názvu",
|
||||
"restricted_access": "Omezený přístup",
|
||||
"collapse_page": "Sbalit stránku",
|
||||
"expand_page": "Rozbalit stránku",
|
||||
"page_actions": "Akce stránky",
|
||||
"page_link_copied": "Odkaz na stránku byl zkopírován do schránky.",
|
||||
"columns": {
|
||||
"page_name": "Název stránky",
|
||||
"owner": "Vlastník",
|
||||
"nested_pages": "Vnořené stránky",
|
||||
"last_activity": "Poslední aktivita",
|
||||
"actions": "Akce"
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"created": "Kolekce byla úspěšně vytvořena.",
|
||||
"create_error": "Kolekci se nepodařilo vytvořit. Zkuste to prosím znovu.",
|
||||
"renamed": "Kolekce byla úspěšně přejmenována.",
|
||||
"rename_error": "Kolekci se nepodařilo aktualizovat. Zkuste to prosím znovu.",
|
||||
"transferred_deleted": "Stránky byly přesunuty a kolekce smazána.",
|
||||
"deleted_with_pages": "Kolekce i její stránky byly smazány.",
|
||||
"delete_error": "Kolekci se nepodařilo smazat. Zkuste to prosím znovu.",
|
||||
"target_required": "Vyberte prosím kolekci, do které chcete stránky přesunout.",
|
||||
"create_page_error": "Stránku se nepodařilo vytvořit. Zkuste to prosím znovu.",
|
||||
"create_page_in_collection_error": "Stránku se nepodařilo vytvořit nebo přidat do kolekce. Zkuste to prosím znovu.",
|
||||
"collection_link_copied": "Odkaz na kolekci byl zkopírován do schránky."
|
||||
}
|
||||
},
|
||||
"wiki": {
|
||||
"upgrade_flow": {
|
||||
"title": "Upgradujte pro odemčení Wiki",
|
||||
"description": "Odemkněte veřejné stránky, historii verzí, sdílené stránky, spolupráci v reálném čase a stránky pracovního prostoru pro wiki, firemní dokumentaci a znalostní báze s Plane Pro.",
|
||||
"upgrade_button": {
|
||||
"text": "Upgradovat"
|
||||
},
|
||||
"learn_more_button": {
|
||||
"text": "Zjistit více"
|
||||
},
|
||||
"download_button": {
|
||||
"text": "Stáhnout data",
|
||||
"loading": "Stahování"
|
||||
},
|
||||
"tabs": {
|
||||
"nested_pages": "Vnořené stránky",
|
||||
"add_embeds": "Přidat vložený obsah",
|
||||
"publish_pages": "Publikovat stránky",
|
||||
"comments": "Komentáře"
|
||||
}
|
||||
},
|
||||
"nested_pages_download_banner": {
|
||||
"title": "Vnořené stránky vyžadují placený plán. Upgradujte pro jejich odemčení."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,477 @@
|
||||
{
|
||||
"work_item_types": {
|
||||
"label": "Typy pracovních položek",
|
||||
"label_lowercase": "typy pracovních položek",
|
||||
"settings": {
|
||||
"description": "Přizpůsobte si a přidejte vlastní vlastnosti, abyste to upravili podle potřeb vašeho týmu.",
|
||||
"cant_delete_default_message": "Tento typ pracovního položky nelze odstranit, protože je nastaven jako výchozí pro tento projekt.",
|
||||
"set_as_default": "Nastavit jako výchozí",
|
||||
"cant_set_default_inactive_message": "Před nastavením jako výchozí tento typ aktivujte",
|
||||
"set_default_confirmation": {
|
||||
"title": "Nastavit jako výchozí typ pracovní položky",
|
||||
"description": "Nastavením {name} jako výchozího se tento typ importuje do všech projektů v tomto pracovním prostoru. Všechny nové pracovní položky budou tento typ používat ve výchozím nastavení.",
|
||||
"confirm_button": "Nastavit jako výchozí"
|
||||
},
|
||||
"properties": {
|
||||
"title": "Vlastní vlastnosti",
|
||||
"description": "Vytvářejte a přizpůsobujte vlastnosti.",
|
||||
"tooltip": "Každý typ pracovních položek má výchozí sadu vlastností jako Název, Popis, Přiřazený, Stav, Priorita, Datum zahájení, Datum splatnosti, Modul, Cyklus atd. Můžete také přizpůsobit a přidat své vlastní vlastnosti, aby vyhovovaly potřebám vašeho týmu.",
|
||||
"add_button": "Přidat novou vlastnost",
|
||||
"project": {
|
||||
"add_button": {
|
||||
"import_from_workspace": "Importovat z pracovního prostoru"
|
||||
}
|
||||
},
|
||||
"dropdown": {
|
||||
"label": "Typ vlastnosti",
|
||||
"placeholder": "Vyberte typ"
|
||||
},
|
||||
"property_type": {
|
||||
"text": {
|
||||
"label": "Text"
|
||||
},
|
||||
"number": {
|
||||
"label": "Číslo"
|
||||
},
|
||||
"dropdown": {
|
||||
"label": "Rozbalovací seznam"
|
||||
},
|
||||
"boolean": {
|
||||
"label": "Boolean"
|
||||
},
|
||||
"date": {
|
||||
"label": "Datum"
|
||||
},
|
||||
"member_picker": {
|
||||
"label": "Výběr člena"
|
||||
},
|
||||
"formula": {
|
||||
"label": "Vzorec"
|
||||
}
|
||||
},
|
||||
"attributes": {
|
||||
"label": "Atributy",
|
||||
"text": {
|
||||
"single_line": {
|
||||
"label": "Jednoduchý řádek"
|
||||
},
|
||||
"multi_line": {
|
||||
"label": "Odstavec"
|
||||
},
|
||||
"readonly": {
|
||||
"label": "Pouze pro čtení",
|
||||
"header": "Data pouze pro čtení"
|
||||
},
|
||||
"invalid_text_format": {
|
||||
"label": "Neplatný formát textu"
|
||||
}
|
||||
},
|
||||
"number": {
|
||||
"default": {
|
||||
"placeholder": "Přidat číslo"
|
||||
}
|
||||
},
|
||||
"relation": {
|
||||
"single_select": {
|
||||
"label": "Jednoduchý výběr"
|
||||
},
|
||||
"multi_select": {
|
||||
"label": "Vícenásobný výběr"
|
||||
},
|
||||
"no_default_value": {
|
||||
"label": "Žádná výchozí hodnota"
|
||||
}
|
||||
},
|
||||
"boolean": {
|
||||
"label": "Pravda | Nepravda",
|
||||
"no_default": "Žádná výchozí hodnota"
|
||||
},
|
||||
"option": {
|
||||
"create_update": {
|
||||
"label": "Možnosti",
|
||||
"form": {
|
||||
"placeholder": "Přidat možnost",
|
||||
"errors": {
|
||||
"name": {
|
||||
"required": "Název možnosti je povinný.",
|
||||
"integrity": "Možnost se stejným názvem již existuje."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"placeholder": {
|
||||
"single": "Vyberte možnost",
|
||||
"multi": {
|
||||
"default": "Vyberte možnosti",
|
||||
"variable": "{count} vybraných možností"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Vlastnost {name} byla úspěšně vytvořena."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se vytvořit vlastnost. Zkuste to prosím znovu!"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Vlastnost {name} byla úspěšně aktualizována."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se aktualizovat vlastnost. Zkuste to prosím znovu!"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Vlastnost {name} byla úspěšně smazána."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se smazat vlastnost. Zkuste to prosím znovu!"
|
||||
}
|
||||
},
|
||||
"enable_disable": {
|
||||
"loading": "{action} {name} vlastnost",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Vlastnost {name} byla {action} úspěšně."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se {action} vlastnost. Zkuste to prosím znovu!"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create_update": {
|
||||
"title": {
|
||||
"create": "Vytvořit novou vlastní vlastnost",
|
||||
"update": "Aktualizovat vlastní vlastnost"
|
||||
},
|
||||
"form": {
|
||||
"display_name": {
|
||||
"placeholder": "Název"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popis"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"name": {
|
||||
"required": "Musíte pojmenovat svou vlastnost.",
|
||||
"max_length": "Název vlastnosti by neměl překročit 255 znaků."
|
||||
},
|
||||
"property_type": {
|
||||
"required": "Musíte vybrat typ vlastnosti."
|
||||
},
|
||||
"options": {
|
||||
"required": "Musíte přidat alespoň jednu možnost."
|
||||
},
|
||||
"formula": {
|
||||
"required": "Výraz vzorce je vyžadován.",
|
||||
"invalid": "Neplatný vzorec: {error}",
|
||||
"circular_reference": "Zjištěna cyklická reference. Vzorec nemůže odkazovat sám na sebe přímo ani nepřímo.",
|
||||
"invalid_reference": "Vzorec odkazuje na neexistující vlastnost."
|
||||
}
|
||||
}
|
||||
},
|
||||
"formula": {
|
||||
"field_label": "Pole vzorce",
|
||||
"tooltip": "Zadejte vzorec pomocí syntaxe '{'Název pole'}'. Podporuje operátory +, -, *, / a &.",
|
||||
"placeholder": "Napište vzorec",
|
||||
"test_button": "Test",
|
||||
"validating": "Ověřování",
|
||||
"validation_success": "Vzorec je platný! Vrací {resultType}",
|
||||
"validation_success_with_refs": "Vzorec je platný! Vrací {resultType} ({count} odkazovaných polí)",
|
||||
"error": {
|
||||
"empty": "Zadejte prosím vzorec",
|
||||
"missing_context": "Chybí kontext pracovního prostoru, projektu nebo typu pracovní položky",
|
||||
"validation_failed": "Ověření se nezdařilo"
|
||||
},
|
||||
"picker": {
|
||||
"no_match": "Žádné odpovídající vlastnosti",
|
||||
"no_available": "Žádné dostupné vlastnosti"
|
||||
}
|
||||
},
|
||||
"enable_disable": {
|
||||
"label": "Aktivní",
|
||||
"tooltip": {
|
||||
"disabled": "Klikněte pro zakázání",
|
||||
"enabled": "Klikněte pro povolení"
|
||||
}
|
||||
},
|
||||
"delete_confirmation": {
|
||||
"title": "Smazat tuto vlastnost",
|
||||
"description": "Smazání vlastností může vést ke ztrátě existujících dat.",
|
||||
"secondary_description": "Chcete místo toho vlastnost zakázat?",
|
||||
"primary_button": "{action}, smazat ji",
|
||||
"secondary_button": "Ano, zakázat ji"
|
||||
},
|
||||
"mandate_confirmation": {
|
||||
"label": "Povinná vlastnost",
|
||||
"content": "Zdá se, že pro tuto vlastnost existuje výchozí možnost. Učinění vlastnosti povinnou odstraní výchozí hodnotu a uživatelé budou muset přidat hodnotu podle svého výběru.",
|
||||
"tooltip": {
|
||||
"disabled": "Tento typ vlastnosti nelze učinit povinným",
|
||||
"enabled": "Zrušte zaškrtnutí pro označení pole jako volitelného",
|
||||
"checked": "Zaškrtněte pro označení pole jako povinného"
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"title": "Přidat vlastní vlastnosti",
|
||||
"description": "Nové vlastnosti, které přidáte pro tento typ pracovních položek, se zde zobrazí."
|
||||
}
|
||||
},
|
||||
"types": {
|
||||
"title": "Typy",
|
||||
"description": "Vytvářejte a přizpůsobujte typy pracovních položek s vlastnostmi.",
|
||||
"sort_options": {
|
||||
"project_count": "Počet projektů, do kterých patří"
|
||||
},
|
||||
"filter_options": {
|
||||
"show_active": "Zobrazit aktivní",
|
||||
"show_inactive": "Zobrazit neaktivní"
|
||||
},
|
||||
"project": {
|
||||
"add_button": {
|
||||
"create_new": "Vytvořit nový",
|
||||
"import_from_workspace": "Importovat z pracovního prostoru"
|
||||
},
|
||||
"banner": {
|
||||
"with_access": "Povolte typy pracovních položek pro import typů z úrovně pracovního prostoru",
|
||||
"without_access": "Typy pracovních položek jsou zakázány. Kontaktujte správce pracovního prostoru, aby je povolil v nastavení pracovního prostoru."
|
||||
}
|
||||
}
|
||||
},
|
||||
"linked_properties": {
|
||||
"title": "Vlastní vlastnosti",
|
||||
"add_button": "Přidat vlastnosti",
|
||||
"modal": {
|
||||
"title": "Přidat vlastnosti",
|
||||
"empty": {
|
||||
"title": "Žádné vlastnosti nejsou k dispozici",
|
||||
"description": "Všechny vlastnosti jsou již propojeny s tímto typem."
|
||||
}
|
||||
},
|
||||
"unlink_confirmation": {
|
||||
"title": "Zrušit propojení vlastnosti",
|
||||
"description": "Zrušení propojení této vlastnosti trvale odstraní všechny její hodnoty napříč každou pracovní položkou používající tento typ. Tuto akci nelze vrátit zpět.",
|
||||
"input_label": "Napište",
|
||||
"input_label_suffix": "pro pokračování:",
|
||||
"confirm": "Zrušit propojení vlastnosti",
|
||||
"loading": "Rušení propojení"
|
||||
}
|
||||
},
|
||||
"item_delete_confirmation": {
|
||||
"title": "Smazat tento typ",
|
||||
"description": "Odstranění typů může vést ke ztrátě stávajících dat.",
|
||||
"can_disable_warning": "Chcete místo toho zakázat tento typ?",
|
||||
"primary_button": "Ano, smazat",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Typ pracovního položky byl úspěšně odstraněn."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se odstranit typ pracovního položky. Zkuste to prosím znovu!"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"cannot_delete_default_work_item_type": "Výchozí typ pracovní položky nelze odstranit",
|
||||
"cannot_delete_work_item_type_with_associated_work_items": "Typ pracovní položky s přidruženými pracovními položkami nelze odstranit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "Vytvořit typ pracovních položek",
|
||||
"button": "Přidat typ pracovních položek",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Typ pracovních položek byl úspěšně vytvořen."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": {
|
||||
"default": "Nepodařilo se vytvořit typ pracovní položky. Zkuste to prosím znovu!",
|
||||
"conflict": "Typ {name} již existuje. Zvolte jiné jméno."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"title": "Aktualizovat typ pracovních položek",
|
||||
"button": "Aktualizovat typ pracovních položek",
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Typ pracovních položek {name} byl úspěšně aktualizován."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": {
|
||||
"default": "Nepodařilo se aktualizovat typ pracovní položky. Zkuste to prosím znovu!",
|
||||
"conflict": "Typ {name} již existuje. Zvolte jiné jméno."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"create_update": {
|
||||
"form": {
|
||||
"name": {
|
||||
"placeholder": "Dejte tomuto typu pracovních položek jedinečný název"
|
||||
},
|
||||
"description": {
|
||||
"placeholder": "Popište, k čemu je tento typ pracovních položek určen a kdy se má používat."
|
||||
}
|
||||
}
|
||||
},
|
||||
"enable_disable": {
|
||||
"toast": {
|
||||
"loading": "{action} {name} typ pracovních položek",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Typ pracovních položek {name} byl {action} úspěšně."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se {action} typ pracovních položek. Zkuste to prosím znovu!"
|
||||
}
|
||||
},
|
||||
"tooltip": "Klikněte pro {action}"
|
||||
},
|
||||
"change_confirmation": {
|
||||
"title": "Změnit typ pracovních položek?",
|
||||
"description": "Změna typu pracovních položek může vést ke ztrátě hodnot vlastních vlastností, které jsou specifické pro aktuální typ. Tuto akci nelze vrátit zpět.",
|
||||
"button": {
|
||||
"loading": "Mění se",
|
||||
"default": "Změnit typ"
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"enable": {
|
||||
"title": "Povolit typy pracovních položek",
|
||||
"description": "Upravte pracovní položky podle svých potřeb s typy pracovních položek. Přizpůsobte je ikonami, pozadím a vlastnostmi a nakonfigurujte je pro tento projekt.",
|
||||
"primary_button": {
|
||||
"text": "Povolit"
|
||||
},
|
||||
"confirmation": {
|
||||
"title": "Jakmile budou povoleny, typy pracovních položek nelze zakázat.",
|
||||
"description": "Typ pracovních položek Plane se stane výchozím typem pracovních položek pro tento projekt a zobrazí se s ikonou a pozadím v tomto projektu.",
|
||||
"button": {
|
||||
"default": "Povolit",
|
||||
"loading": "Nastavuji"
|
||||
}
|
||||
}
|
||||
},
|
||||
"get_pro": {
|
||||
"title": "Získejte Pro pro povolení typů pracovních položek.",
|
||||
"description": "Upravte pracovní položky podle svých potřeb s typy pracovních položek. Přizpůsobte je ikonami, pozadím a vlastnostmi a nakonfigurujte je pro tento projekt.",
|
||||
"primary_button": {
|
||||
"text": "Získejte Pro"
|
||||
}
|
||||
},
|
||||
"upgrade": {
|
||||
"title": "Upgradujte pro povolení typů pracovních položek.",
|
||||
"description": "Upravte pracovní položky podle svých potřeb s typy pracovních položek. Přizpůsobte je ikonami, pozadím a vlastnostmi a nakonfigurujte je pro tento projekt.",
|
||||
"primary_button": {
|
||||
"text": "Upgradovat"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"work_item_type_hierarchy": {
|
||||
"settings": {
|
||||
"title": "Hierarchie",
|
||||
"tab_label": "Hierarchie",
|
||||
"description": "Nastavte úrovně hierarchie pro organizaci vaší práce. Každá úroveň definuje nadřazený vztah s položkou přímo nad ní a podřazený vztah s položkou přímo pod ní. ",
|
||||
"sidebar_label": "Hierarchie",
|
||||
"enable_control": {
|
||||
"title": "Povolit hierarchii",
|
||||
"description": "Vytvářejte vztahy nadřazený-podřazený mezi různými typy pracovních položek.",
|
||||
"tooltip": "Hierarchii nelze deaktivovat po jejím aktivování."
|
||||
},
|
||||
"workspace_work_item_types_disabled_banner": {
|
||||
"content": "Nejprve definujte typy pracovních položek pro vytvoření nové hierarchie.",
|
||||
"cta": "Nastavení typů pracovních položek"
|
||||
}
|
||||
},
|
||||
"levels": {
|
||||
"max_level_placeholder": "Přetáhněte typ pro přidání nové úrovně hierarchie",
|
||||
"empty_level_placeholder": "Přetáhněte typ pracovní položky na úroveň {level}",
|
||||
"drag_tooltip": "Přetáhněte pro změnu úrovně",
|
||||
"quick_actions": {
|
||||
"set_as_default": {
|
||||
"label": "Nastavit jako výchozí",
|
||||
"toast": {
|
||||
"loading": "Nastavení jako výchozí...",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Úroveň hierarchie {level} byla úspěšně nastavena jako výchozí."
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se nastavit úroveň hierarchie {level} jako výchozí. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"update_level_toast": {
|
||||
"loading": "Přesouvání {workItemTypeName} do úrovně {level}...",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "{workItemTypeName} byl úspěšně přesunut do úrovně {level}."
|
||||
}
|
||||
}
|
||||
},
|
||||
"break_hierarchy_modal": {
|
||||
"title": "Uložením se přeruší stávající vazby",
|
||||
"content": {
|
||||
"intro": "Typ pracovní položky {workItemTypeName} obsahuje:",
|
||||
"parent_items": "{count, plural, one {Bude odstraněna # nadřazená vazba} few {Budou odstraněny # nadřazené vazby} other {Bude odstraněno # nadřazených vazeb}}.",
|
||||
"child_items": "{count, plural, one {podřazenou pracovní položku} few {podřazené pracovní položky} other {podřazených pracovních položek}}",
|
||||
"parent_line_suffix_when_also_children": ", a ",
|
||||
"footer": "Tato změna odstraní nadřazené a podřazené vztahy u stávajících pracovních položek typu {workItemTypeName}."
|
||||
},
|
||||
"confirm_input": {
|
||||
"label": "Pro pokračování napište „potvrdit“.",
|
||||
"placeholder": "potvrdit"
|
||||
},
|
||||
"error_toast": {
|
||||
"title": "Chyba!",
|
||||
"message": "Nepodařilo se zrušit propojení a uložit. Zkuste to prosím znovu."
|
||||
},
|
||||
"confirm_button": {
|
||||
"loading": "Ukládání",
|
||||
"default": "Uložit přesto"
|
||||
}
|
||||
},
|
||||
"work_item_modal": {
|
||||
"invalid_work_item_type_create_toast": {
|
||||
"title": "Chyba!",
|
||||
"message": "Vybraný typ pracovní položky nelze použít k vytvoření nové pracovní položky, protože porušuje pravidla hierarchie."
|
||||
},
|
||||
"invalid_work_item_type_update_toast": {
|
||||
"title": "Chyba!",
|
||||
"message": "Typ pracovní položky nelze aktualizovat, protože porušuje pravidla hierarchie."
|
||||
}
|
||||
},
|
||||
"work_item_type_modal": {
|
||||
"level": "Úroveň hierarchie",
|
||||
"invalid_level_toast": {
|
||||
"title": "Chyba!",
|
||||
"message": "Typ pracovní položky nelze aktualizovat, protože to porušuje pravidla hierarchie."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,426 @@
|
||||
{
|
||||
"issue": {
|
||||
"label": "{count, plural, one {Pracovní položka} few {Pracovní položky} other {Pracovních položek}}",
|
||||
"all": "Všechny pracovní položky",
|
||||
"edit": "Upravit pracovní položku",
|
||||
"title": {
|
||||
"label": "Název pracovní položky",
|
||||
"required": "Název pracovní položky je povinný."
|
||||
},
|
||||
"add": {
|
||||
"press_enter": "Stiskněte 'Enter' pro přidání další pracovní položky",
|
||||
"label": "Přidat pracovní položku",
|
||||
"cycle": {
|
||||
"failed": "Přidání pracovní položky do cyklu se nezdařilo. Zkuste to prosím znovu.",
|
||||
"success": "{count, plural, one {Pracovní položka} few {Pracovní položky} other {Pracovních položek}} přidána do cyklu.",
|
||||
"loading": "Přidávání {count, plural, one {pracovní položky} few {pracovních položek} other {pracovních položek}} do cyklu"
|
||||
},
|
||||
"assignee": "Přidat přiřazené",
|
||||
"start_date": "Přidat datum začátku",
|
||||
"due_date": "Přidat termín",
|
||||
"parent": "Přidat nadřazenou pracovní položku",
|
||||
"sub_issue": "Přidat podřízenou pracovní položku",
|
||||
"dependency": "Přidat závislost",
|
||||
"relation": "Přidat vztah",
|
||||
"link": "Přidat odkaz",
|
||||
"existing": "Přidat existující pracovní položku"
|
||||
},
|
||||
"remove": {
|
||||
"label": "Odebrat pracovní položku",
|
||||
"cycle": {
|
||||
"loading": "Odebírání pracovní položky z cyklu",
|
||||
"success": "Pracovní položka odebrána z cyklu.",
|
||||
"failed": "Odebrání pracovní položky z cyklu se nezdařilo. Zkuste to prosím znovu."
|
||||
},
|
||||
"module": {
|
||||
"loading": "Odebírání pracovní položky z modulu",
|
||||
"success": "Pracovní položka odebrána z modulu.",
|
||||
"failed": "Odebrání pracovní položky z modulu se nezdařilo. Zkuste to prosím znovu."
|
||||
},
|
||||
"parent": {
|
||||
"label": "Odebrat nadřazenou pracovní položku"
|
||||
}
|
||||
},
|
||||
"new": "Nová pracovní položka",
|
||||
"adding": "Přidávání pracovní položky",
|
||||
"create": {
|
||||
"success": "Pracovní položka úspěšně vytvořena"
|
||||
},
|
||||
"priority": {
|
||||
"urgent": "Naléhavá",
|
||||
"high": "Vysoká",
|
||||
"medium": "Střední",
|
||||
"low": "Nízká"
|
||||
},
|
||||
"display": {
|
||||
"properties": {
|
||||
"label": "Zobrazované vlastnosti",
|
||||
"id": "ID",
|
||||
"issue_type": "Typ pracovní položky",
|
||||
"sub_issue_count": "Počet podřízených položek",
|
||||
"attachment_count": "Počet příloh",
|
||||
"created_on": "Vytvořeno dne",
|
||||
"sub_issue": "Podřízená položka",
|
||||
"work_item_count": "Počet pracovních položek"
|
||||
},
|
||||
"extra": {
|
||||
"show_sub_issues": "Zobrazit podřízené položky",
|
||||
"show_empty_groups": "Zobrazit prázdné skupiny"
|
||||
}
|
||||
},
|
||||
"layouts": {
|
||||
"ordered_by_label": "Toto rozložení je řazeno podle",
|
||||
"list": "Seznam",
|
||||
"kanban": "Nástěnka",
|
||||
"calendar": "Kalendář",
|
||||
"spreadsheet": "Tabulka",
|
||||
"gantt": "Časová osa",
|
||||
"title": {
|
||||
"list": "Seznamové rozložení",
|
||||
"kanban": "Nástěnkové rozložení",
|
||||
"calendar": "Kalendářové rozložení",
|
||||
"spreadsheet": "Tabulkové rozložení",
|
||||
"gantt": "Rozložení časové osy"
|
||||
}
|
||||
},
|
||||
"states": {
|
||||
"active": "Aktivní",
|
||||
"backlog": "Backlog"
|
||||
},
|
||||
"comments": {
|
||||
"placeholder": "Přidat komentář",
|
||||
"switch": {
|
||||
"private": "Přepnout na soukromý komentář",
|
||||
"public": "Přepnout na veřejný komentář"
|
||||
},
|
||||
"create": {
|
||||
"success": "Komentář úspěšně vytvořen",
|
||||
"error": "Vytvoření komentáře se nezdařilo. Zkuste to prosím později."
|
||||
},
|
||||
"update": {
|
||||
"success": "Komentář úspěšně aktualizován",
|
||||
"error": "Aktualizace komentáře se nezdařila. Zkuste to prosím později."
|
||||
},
|
||||
"remove": {
|
||||
"success": "Komentář úspěšně odstraněn",
|
||||
"error": "Odstranění komentáře se nezdařilo. Zkuste to prosím později."
|
||||
},
|
||||
"upload": {
|
||||
"error": "Nahrání přílohy se nezdařilo. Zkuste to prosím později."
|
||||
},
|
||||
"copy_link": {
|
||||
"success": "Odkaz na komentář byl zkopírován do schránky",
|
||||
"error": "Chyba při kopírování odkazu na komentář. Zkuste to prosím později."
|
||||
},
|
||||
"replies": {
|
||||
"create": {
|
||||
"submit_button": "Přidat odpověď",
|
||||
"placeholder": "Přidat odpověď"
|
||||
},
|
||||
"toast": {
|
||||
"fetch": {
|
||||
"error": {
|
||||
"message": "Načtení odpovědí se nezdařilo"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"success": {
|
||||
"message": "Odpověď úspěšně vytvořena"
|
||||
},
|
||||
"error": {
|
||||
"message": "Vytvoření odpovědi se nezdařilo"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"message": "Odpověď úspěšně aktualizována"
|
||||
},
|
||||
"error": {
|
||||
"message": "Aktualizace odpovědi se nezdařila"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"success": {
|
||||
"message": "Odpověď úspěšně smazána"
|
||||
},
|
||||
"error": {
|
||||
"message": "Smazání odpovědi se nezdařilo"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"issue_detail": {
|
||||
"title": "Pracovní položka neexistuje",
|
||||
"description": "Pracovní položka, kterou hledáte, neexistuje, byla archivována nebo smazána.",
|
||||
"primary_button": {
|
||||
"text": "Zobrazit další pracovní položky"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sibling": {
|
||||
"label": "Související pracovní položky"
|
||||
},
|
||||
"archive": {
|
||||
"description": "Lze archivovat pouze dokončené nebo zrušené\npracovní položky",
|
||||
"label": "Archivovat pracovní položku",
|
||||
"confirm_message": "Opravdu chcete archivovat tuto pracovní položku? Všechny archivované položky lze později obnovit.",
|
||||
"success": {
|
||||
"label": "Archivace úspěšná",
|
||||
"message": "Vaše archivy najdete v archivech projektu."
|
||||
},
|
||||
"failed": {
|
||||
"message": "Archivace pracovní položky se nezdařila. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"restore": {
|
||||
"success": {
|
||||
"title": "Obnovení úspěšné",
|
||||
"message": "Vaše pracovní položka je k nalezení v pracovních položkách projektu."
|
||||
},
|
||||
"failed": {
|
||||
"message": "Obnovení pracovní položky se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"relation": {
|
||||
"relates_to": "Související s",
|
||||
"duplicate": "Duplikát",
|
||||
"blocked_by": "Blokováno",
|
||||
"blocking": "Blokující",
|
||||
"start_before": "Začíná před",
|
||||
"start_after": "Začíná po",
|
||||
"finish_before": "Končí před",
|
||||
"finish_after": "Končí po",
|
||||
"implements": "Implementuje",
|
||||
"implemented_by": "Implementováno"
|
||||
},
|
||||
"copy_link": "Kopírovat odkaz na pracovní položku",
|
||||
"delete": {
|
||||
"label": "Smazat pracovní položku",
|
||||
"error": "Chyba při mazání pracovní položky"
|
||||
},
|
||||
"subscription": {
|
||||
"actions": {
|
||||
"subscribed": "Pracovní položka úspěšně přihlášena k odběru",
|
||||
"unsubscribed": "Odběr pracovní položky zrušen"
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
"error": "Vyberte alespoň jednu pracovní položku",
|
||||
"empty": "Nevybrány žádné pracovní položky",
|
||||
"add_selected": "Přidat vybrané pracovní položky",
|
||||
"select_all": "Vybrat vše",
|
||||
"deselect_all": "Zrušit výběr všeho"
|
||||
},
|
||||
"open_in_full_screen": "Otevřít pracovní položku na celou obrazovku",
|
||||
"duplicate": {
|
||||
"modal": {
|
||||
"title": "Vytvořit kopii do jiného projektu",
|
||||
"description1": "Toto vytvoří kopii pracovní položky.",
|
||||
"description2": "Při duplikování budou odstraněna všechna data vlastností.",
|
||||
"placeholder": "Vyberte projekt"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"duplicate": {
|
||||
"success": {
|
||||
"message": "Pracovní položka úspěšně duplikována"
|
||||
},
|
||||
"error": {
|
||||
"message": "Duplikování pracovní položky se nezdařilo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"link_pages": "Propojit stránky",
|
||||
"show_wiki_pages": "Zobrazit wiki stránky",
|
||||
"link_pages_to": "Propojit stránky s",
|
||||
"linked_pages": "Propojené stránky",
|
||||
"no_description": "Toto je prázdná stránka. Napište něco dovnitř a uvidíte to zde jako tento zástupný text",
|
||||
"toasts": {
|
||||
"link": {
|
||||
"success": {
|
||||
"title": "Stránky aktualizovány",
|
||||
"message": "Stránky úspěšně aktualizovány"
|
||||
},
|
||||
"error": {
|
||||
"title": "Aktualizace stránek se nezdařila",
|
||||
"message": "Aktualizace stránek se nezdařila"
|
||||
}
|
||||
},
|
||||
"remove": {
|
||||
"success": {
|
||||
"title": "Stránka odstraněna",
|
||||
"message": "Stránka úspěšně odstraněna"
|
||||
},
|
||||
"error": {
|
||||
"title": "Odstranění stránky se nezdařilo",
|
||||
"message": "Odstranění stránky se nezdařilo"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vote": {
|
||||
"click_to_upvote": "Klikněte pro hlasování nahoru",
|
||||
"click_to_downvote": "Klikněte pro hlasování dolů",
|
||||
"click_to_view_upvotes": "Klikněte pro zobrazení hlasů nahoru",
|
||||
"click_to_view_downvotes": "Klikněte pro zobrazení hlasů dolů"
|
||||
}
|
||||
},
|
||||
"sub_work_item": {
|
||||
"update": {
|
||||
"success": "Podřízená pracovní položka úspěšně aktualizována",
|
||||
"error": "Chyba při aktualizaci podřízené položky"
|
||||
},
|
||||
"remove": {
|
||||
"success": "Podřízená pracovní položka úspěšně odebrána",
|
||||
"error": "Chyba při odebírání podřízené položky"
|
||||
},
|
||||
"empty_state": {
|
||||
"sub_list_filters": {
|
||||
"title": "Nemáte podřízené pracovní položky, které odpovídají použitým filtrům.",
|
||||
"description": "Chcete-li zobrazit všechny podřízené pracovní položky, odstraňte všechny použité filtry.",
|
||||
"action": "Odstranit filtry"
|
||||
},
|
||||
"list_filters": {
|
||||
"title": "Nemáte pracovní položky, které odpovídají použitým filtrům.",
|
||||
"description": "Chcete-li zobrazit všechny pracovní položky, odstraňte všechny použité filtry.",
|
||||
"action": "Odstranit filtry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"issue_relation": {
|
||||
"empty_state": {
|
||||
"search": {
|
||||
"title": "Žádné odpovídající položky"
|
||||
},
|
||||
"no_issues": {
|
||||
"title": "Žádné položky"
|
||||
}
|
||||
}
|
||||
},
|
||||
"issue_comment": {
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Žádné komentáře",
|
||||
"description": "Komentáře slouží k diskusi a sledování položek."
|
||||
}
|
||||
}
|
||||
},
|
||||
"bulk_operations": {
|
||||
"error_details": {
|
||||
"invalid_archive_state_group": {
|
||||
"title": "Nelze archivovat pracovní položky",
|
||||
"message": "Archivovat lze pouze pracovní položky patřící do skupin stavů Dokončeno nebo Zrušeno."
|
||||
},
|
||||
"invalid_issue_start_date": {
|
||||
"title": "Nelze aktualizovat pracovní položky",
|
||||
"message": "Vybrané datum zahájení přesahuje datum splatnosti pro některé pracovní položky. Ujistěte se, že datum zahájení je před datem splatnosti."
|
||||
},
|
||||
"invalid_issue_target_date": {
|
||||
"title": "Nelze aktualizovat pracovní položky",
|
||||
"message": "Vybrané datum splatnosti předchází datu zahájení pro některé pracovní položky. Ujistěte se, že datum splatnosti je po datu zahájení."
|
||||
},
|
||||
"invalid_state_transition": {
|
||||
"title": "Nelze aktualizovat pracovní položky",
|
||||
"message": "Změna stavu není povolena pro některé pracovní položky. Ujistěte se, že je změna stavu povolena."
|
||||
}
|
||||
}
|
||||
},
|
||||
"recurring_work_items": {
|
||||
"settings": {
|
||||
"heading": "Opakující se pracovní položky",
|
||||
"description": "Nastavte to jednou. Připomeneme vám to, až bude čas. Upgradujte na Business a opakující se práce bude bez námahy.",
|
||||
"new_recurring_work_item": "Nová opakující se pracovní položka",
|
||||
"update_recurring_work_item": "Upravit opakující se pracovní položku",
|
||||
"form": {
|
||||
"interval": {
|
||||
"title": "Plán",
|
||||
"start_date": {
|
||||
"validation": {
|
||||
"required": "Počáteční datum je povinné"
|
||||
}
|
||||
},
|
||||
"interval_type": {
|
||||
"validation": {
|
||||
"required": "Typ intervalu je povinný"
|
||||
}
|
||||
}
|
||||
},
|
||||
"button": {
|
||||
"create": "Vytvořit opakující se pracovní položku",
|
||||
"update": "Upravit opakující se pracovní položku"
|
||||
}
|
||||
},
|
||||
"create_button": {
|
||||
"label": "Vytvořit opakující se pracovní položku",
|
||||
"no_permission": "Kontaktujte správce projektu pro vytvoření opakujících se pracovních položek"
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"upgrade": {
|
||||
"title": "Vaše práce na autopilotu",
|
||||
"description": "Nastavte to jednou. Připomeneme vám to, až bude čas. Upgradujte na Business a opakující se práce bude bez námahy."
|
||||
},
|
||||
"no_templates": {
|
||||
"button": "Vytvořte svou první opakující se pracovní položku"
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"create": {
|
||||
"success": {
|
||||
"title": "Opakující se pracovní položka vytvořena",
|
||||
"message": "{name}, opakující se pracovní položka, je nyní dostupná pro váš pracovní prostor."
|
||||
},
|
||||
"error": {
|
||||
"title": "Tuto opakující se pracovní položku se tentokrát nepodařilo vytvořit.",
|
||||
"message": "Zkuste znovu uložit své údaje nebo je zkopírujte do nové opakující se pracovní položky, ideálně v jiném panelu."
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"success": {
|
||||
"title": "Opakující se pracovní položka změněna",
|
||||
"message": "{name}, opakující se pracovní položka, byla změněna."
|
||||
},
|
||||
"error": {
|
||||
"title": "Změny této opakující se pracovní položky se nepodařilo uložit.",
|
||||
"message": "Zkuste znovu uložit své údaje nebo se k této opakující se pracovní položce vraťte později. Pokud potíže přetrvávají, kontaktujte nás."
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"success": {
|
||||
"title": "Opakující se pracovní položka smazána",
|
||||
"message": "{name}, opakující se pracovní položka, byla nyní odstraněna z vašeho pracovního prostoru."
|
||||
},
|
||||
"error": {
|
||||
"title": "Tuto opakující se pracovní položku se nepodařilo smazat.",
|
||||
"message": "Zkuste ji smazat znovu nebo se k ní vraťte později. Pokud ji stále nemůžete smazat, kontaktujte nás."
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete_confirmation": {
|
||||
"title": "Smazat opakující se pracovní položku",
|
||||
"description": {
|
||||
"prefix": "Opravdu chcete smazat opakující se pracovní položku-",
|
||||
"suffix": "? Všechna data související s touto opakující se pracovní položkou budou trvale odstraněna. Tuto akci nelze vrátit zpět."
|
||||
}
|
||||
}
|
||||
},
|
||||
"epic": {
|
||||
"new": "Nový epik",
|
||||
"label": "{count, plural, one {Epik} other {Epiky}}",
|
||||
"adding": "Přidávám epik",
|
||||
"create": {
|
||||
"success": "Epik úspěšně vytvořen"
|
||||
},
|
||||
"add": {
|
||||
"label": "Přidat epik",
|
||||
"press_enter": "Pro přidání dalšího epiku stiskněte 'Enter'"
|
||||
},
|
||||
"title": {
|
||||
"label": "Název epiku",
|
||||
"required": "Název epiku je povinný."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"workflows": {
|
||||
"workflow_states": {
|
||||
"work_item_creation": "Povolit nové pracovní položky",
|
||||
"work_item_creation_disable_tooltip": "Vytváření pracovních položek je pro tento stav zakázáno",
|
||||
"default_state": "Výchozí stav umožňuje všem členům vytvářet nové pracovní položky. To nelze změnit",
|
||||
"state_change_count": "{count, plural, one {1 povolená změna stavu} other {{count} povolené změny stavu}}",
|
||||
"movers_count": "{count, plural, one {1 uvedený recenzent} other {{count} uvedení recenzenti}}",
|
||||
"state_changes": {
|
||||
"label": {
|
||||
"default": "Přidat povolenou změnu stavu",
|
||||
"loading": "Přidávání povolené změny stavu"
|
||||
},
|
||||
"move_to": "Změnit stav na",
|
||||
"movers": {
|
||||
"label": "Když je recenzováno",
|
||||
"tooltip": "Recenzenti jsou lidé, kteří mají povolení přesunout pracovní položky z jednoho stavu do druhého.",
|
||||
"add": "Přidat recenzenty"
|
||||
}
|
||||
}
|
||||
},
|
||||
"workflow_disabled": {
|
||||
"title": "Nemůžete přesunout tuto pracovní položku sem."
|
||||
},
|
||||
"workflow_enabled": {
|
||||
"label": "Změna stavu"
|
||||
},
|
||||
"workflow_tree": {
|
||||
"label": "Pro pracovní položky v",
|
||||
"state_change_label": "může ji přesunout na"
|
||||
},
|
||||
"empty_state": {
|
||||
"upgrade": {
|
||||
"title": "Ovládejte chaos změn a recenzí pomocí pracovních toků.",
|
||||
"description": "Nastavte pravidla pro to, kam se vaše práce přesouvá, kým a kdy pomocí pracovních toků v Plane."
|
||||
}
|
||||
},
|
||||
"quick_actions": {
|
||||
"view_change_history": "Zobrazit historii změn",
|
||||
"reset_workflow": "Resetovat pracovní tok"
|
||||
},
|
||||
"confirmation_modals": {
|
||||
"reset_workflow": {
|
||||
"title": "Opravdu chcete resetovat tento pracovní tok?",
|
||||
"description": "Pokud resetujete tento pracovní tok, všechna vaše pravidla pro změnu stavu budou smazána a budete je muset znovu vytvořit, abyste je mohli v tomto projektu používat."
|
||||
},
|
||||
"delete_state_change": {
|
||||
"title": "Opravdu chcete smazat toto pravidlo změny stavu?",
|
||||
"description": "Jakmile bude smazáno, tuto změnu nelze vrátit zpět a budete muset pravidlo znovu nastavit, pokud ho chcete mít v tomto projektu."
|
||||
}
|
||||
},
|
||||
"toasts": {
|
||||
"enable_disable": {
|
||||
"loading": "{action} pracovní tok",
|
||||
"success": {
|
||||
"title": "Úspěch",
|
||||
"message": "Pracovní tok {action} úspěšně"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba",
|
||||
"message": "Pracovní tok nemohl být {action}. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"reset": {
|
||||
"success": {
|
||||
"title": "Úspěch",
|
||||
"message": "Pracovní tok byl úspěšně resetován"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba při resetování pracovního toku",
|
||||
"message": "Pracovní tok nemohl být resetován. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"add_state_change_rule": {
|
||||
"error": {
|
||||
"title": "Chyba při přidávání pravidla změny stavu",
|
||||
"message": "Pravidlo změny stavu nemohlo být přidáno. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"modify_state_change_rule": {
|
||||
"error": {
|
||||
"title": "Chyba při úpravě pravidla změny stavu",
|
||||
"message": "Pravidlo změny stavu nemohlo být upraveno. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"remove_state_change_rule": {
|
||||
"error": {
|
||||
"title": "Chyba při odstraňování pravidla změny stavu",
|
||||
"message": "Pravidlo změny stavu nemohlo být odstraněno. Zkuste to prosím znovu."
|
||||
}
|
||||
},
|
||||
"modify_state_change_rule_movers": {
|
||||
"error": {
|
||||
"title": "Chyba při úpravě recenzentů pravidla změny stavu",
|
||||
"message": "Recenzenti pravidla změny stavu nemohli být upraveni. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,508 @@
|
||||
{
|
||||
"workspace_settings": {
|
||||
"label": "Nastavení pracovního prostoru",
|
||||
"page_label": "{workspace} - Obecná nastavení",
|
||||
"key_created": "Klíč vytvořen",
|
||||
"copy_key": "Zkopírujte a uložte tento klíč do Plane Pages. Po zavření jej neuvidíte. CSV soubor s klíčem byl stažen.",
|
||||
"token_copied": "Token zkopírován do schránky.",
|
||||
"settings": {
|
||||
"general": {
|
||||
"title": "Obecné",
|
||||
"upload_logo": "Nahrát logo",
|
||||
"edit_logo": "Upravit logo",
|
||||
"name": "Název pracovního prostoru",
|
||||
"company_size": "Velikost společnosti",
|
||||
"url": "URL pracovního prostoru",
|
||||
"workspace_timezone": "Časové pásmo pracovního prostoru",
|
||||
"update_workspace": "Aktualizovat prostor",
|
||||
"delete_workspace": "Smazat tento prostor",
|
||||
"delete_workspace_description": "Smazáním prostoru odstraníte všechna data a zdroje. Akce je nevratná.",
|
||||
"delete_btn": "Smazat prostor",
|
||||
"delete_modal": {
|
||||
"title": "Opravdu chcete smazat tento prostor?",
|
||||
"description": "Máte aktivní zkušební verzi. Nejprve ji zrušte.",
|
||||
"dismiss": "Zavřít",
|
||||
"cancel": "Zrušit zkušební verzi",
|
||||
"success_title": "Prostor smazán.",
|
||||
"success_message": "Budete přesměrováni na profil.",
|
||||
"error_title": "Nepodařilo se.",
|
||||
"error_message": "Zkuste to prosím znovu."
|
||||
},
|
||||
"errors": {
|
||||
"name": {
|
||||
"required": "Název je povinný",
|
||||
"max_length": "Název prostoru nesmí přesáhnout 80 znaků"
|
||||
},
|
||||
"company_size": {
|
||||
"required": "Velikost společnosti je povinná",
|
||||
"select_a_range": "Vyberte velikost organizace"
|
||||
}
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"title": "Členové",
|
||||
"add_member": "Přidat člena",
|
||||
"pending_invites": "Čekající pozvánky",
|
||||
"invitations_sent_successfully": "Pozvánky úspěšně odeslány",
|
||||
"leave_confirmation": "Opravdu chcete opustit prostor? Ztratíte přístup. Akce je nevratná.",
|
||||
"details": {
|
||||
"full_name": "Celé jméno",
|
||||
"display_name": "Zobrazované jméno",
|
||||
"email_address": "E-mailová adresa",
|
||||
"account_type": "Typ účtu",
|
||||
"authentication": "Ověřování",
|
||||
"joining_date": "Datum připojení"
|
||||
},
|
||||
"modal": {
|
||||
"title": "Pozvat spolupracovníky",
|
||||
"description": "Pozvěte lidi ke spolupráci.",
|
||||
"button": "Odeslat pozvánky",
|
||||
"button_loading": "Odesílání pozvánek",
|
||||
"placeholder": "jmeno@spolecnost.cz",
|
||||
"errors": {
|
||||
"required": "Vyžaduje se e-mailová adresa.",
|
||||
"invalid": "E-mail je neplatný"
|
||||
}
|
||||
}
|
||||
},
|
||||
"billing_and_plans": {
|
||||
"heading": "Fakturace a plány",
|
||||
"description": "Vyberte si plán, spravujte předplatná a snadno je upgradujte, jak rostou vaše potřeby.",
|
||||
"title": "Fakturace a plány",
|
||||
"current_plan": "Aktuální plán",
|
||||
"free_plan": "Používáte bezplatný plán",
|
||||
"view_plans": "Zobrazit plány"
|
||||
},
|
||||
"exports": {
|
||||
"heading": "Exporty",
|
||||
"description": "Exportujte data projektu v různých formátech a přistupujte k historii exportů s odkazy ke stažení.",
|
||||
"title": "Exporty",
|
||||
"exporting": "Exportování",
|
||||
"previous_exports": "Předchozí exporty",
|
||||
"export_separate_files": "Exportovat data do samostatných souborů",
|
||||
"exporting_projects": "Export projektu",
|
||||
"format": "Formát",
|
||||
"filters_info": "Použijte filtry k exportu konkrétních pracovních položek podle vašich kritérií.",
|
||||
"modal": {
|
||||
"title": "Exportovat do",
|
||||
"toasts": {
|
||||
"success": {
|
||||
"title": "Export úspěšný",
|
||||
"message": "Exportované {entity} si můžete stáhnout z předchozího exportu."
|
||||
},
|
||||
"error": {
|
||||
"title": "Export selhal",
|
||||
"message": "Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"webhooks": {
|
||||
"heading": "Webhooky",
|
||||
"description": "Automatizujte oznámení externím službám při výskytu událostí projektu.",
|
||||
"title": "Webhooky",
|
||||
"add_webhook": "Přidat webhook",
|
||||
"modal": {
|
||||
"title": "Vytvořit webhook",
|
||||
"details": "Podrobnosti webhooku",
|
||||
"payload": "URL pro payload",
|
||||
"question": "Které události mají spustit tento webhook?",
|
||||
"error": "URL je povinná"
|
||||
},
|
||||
"secret_key": {
|
||||
"title": "Tajný klíč",
|
||||
"message": "Vygenerujte token pro přihlášení k webhooku"
|
||||
},
|
||||
"options": {
|
||||
"all": "Posílat vše",
|
||||
"individual": "Vybrat jednotlivé události"
|
||||
},
|
||||
"toasts": {
|
||||
"created": {
|
||||
"title": "Webhook vytvořen",
|
||||
"message": "Webhook úspěšně vytvořen"
|
||||
},
|
||||
"not_created": {
|
||||
"title": "Webhook nebyl vytvořen",
|
||||
"message": "Vytvoření webhooku se nezdařilo"
|
||||
},
|
||||
"updated": {
|
||||
"title": "Webhook aktualizován",
|
||||
"message": "Webhook úspěšně aktualizován"
|
||||
},
|
||||
"not_updated": {
|
||||
"title": "Aktualizace webhooku selhala",
|
||||
"message": "Webhook se nepodařilo aktualizovat"
|
||||
},
|
||||
"removed": {
|
||||
"title": "Webhook odstraněn",
|
||||
"message": "Webhook úspěšně odstraněn"
|
||||
},
|
||||
"not_removed": {
|
||||
"title": "Odstranění webhooku selhalo",
|
||||
"message": "Webhook se nepodařilo odstranit"
|
||||
},
|
||||
"secret_key_copied": {
|
||||
"message": "Tajný klíč zkopírován do schránky."
|
||||
},
|
||||
"secret_key_not_copied": {
|
||||
"message": "Chyba při kopírování klíče."
|
||||
}
|
||||
}
|
||||
},
|
||||
"api_tokens": {
|
||||
"heading": "API Tokeny",
|
||||
"description": "Generujte bezpečné API tokeny pro integraci vašich dat s externími systémy a aplikacemi.",
|
||||
"title": "API Tokeny",
|
||||
"add_token": "Přidat token přístupu",
|
||||
"create_token": "Vytvořit token",
|
||||
"never_expires": "Nikdy neexpiruje",
|
||||
"generate_token": "Generovat token",
|
||||
"generating": "Generování",
|
||||
"delete": {
|
||||
"title": "Smazat API token",
|
||||
"description": "Aplikace používající tento token ztratí přístup. Akce je nevratná.",
|
||||
"success": {
|
||||
"title": "Úspěch!",
|
||||
"message": "Token úspěšně smazán"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba!",
|
||||
"message": "Mazání tokenu selhalo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integrations": {
|
||||
"title": "Integrace",
|
||||
"heading": "Integrace",
|
||||
"description": "Propojte se s oblíbenými nástroji a službami pro synchronizaci vaší práce napříč celým ekosystémem.",
|
||||
"page_title": "Pracujte se svými daty Plane v dostupných aplikacích nebo ve svých vlastních.",
|
||||
"page_description": "Zobrazte všechny integrace používané tímto pracovním prostorem nebo vámi."
|
||||
},
|
||||
"imports": {
|
||||
"title": "Importy",
|
||||
"heading": "Importy",
|
||||
"description": "Propojte a importujte data z vašich stávajících nástrojů pro řízení projektů pro zefektivnění integrace pracovního postupu."
|
||||
},
|
||||
"worklogs": {
|
||||
"title": "Pracovní záznamy",
|
||||
"heading": "Pracovní záznamy",
|
||||
"description": "Stáhněte si pracovní záznamy neboli časové výkazy pro kohokoli v jakémkoli projektu."
|
||||
},
|
||||
"group_syncing": {
|
||||
"title": "Synchronizace skupin",
|
||||
"heading": "Synchronizace skupin",
|
||||
"description": "Propojte skupiny poskytovatele identity s projekty a rolemi. Přístup uživatelů se automaticky aktualizuje při změnách členství ve skupině ve vašem IdP, což zjednodušuje onboarding a offboarding.",
|
||||
"enable": {
|
||||
"title": "Povolit synchronizaci skupin",
|
||||
"description": "Automaticky přidávejte uživatele do projektů na základě skupin poskytovatele identity."
|
||||
},
|
||||
"config": {
|
||||
"title": "Konfigurovat synchronizaci skupin",
|
||||
"description": "Nastavte, jak jsou skupiny poskytovatele identity mapovány na projekty a role.",
|
||||
"sync_on_login": {
|
||||
"title": "Synchronizace při přihlášení",
|
||||
"description": "Aktualizujte členství ve skupině a přístup k projektu při přihlášení uživatele."
|
||||
},
|
||||
"sync_offline": {
|
||||
"title": "Offline synchronizace",
|
||||
"description": "Spouští synchronizaci každých šest hodin automaticky, bez čekání na přihlášení uživatelů."
|
||||
},
|
||||
"auto_remove": {
|
||||
"title": "Automatické odebrání",
|
||||
"description": "Automaticky odeberte uživatele z projektů, když již neodpovídají skupině."
|
||||
},
|
||||
"group_attribute_key": {
|
||||
"title": "Klíč atributu skupiny",
|
||||
"description": "Atribut poskytovatele identity používaný k identifikaci a synchronizaci uživatelských skupin.",
|
||||
"placeholder": "Skupiny"
|
||||
}
|
||||
},
|
||||
"group_mapping": {
|
||||
"title": "Mapování skupin",
|
||||
"description": "Propojte skupiny poskytovatele identity s projekty a rolemi.",
|
||||
"button_text": "Přidat novou synchronizaci skupin"
|
||||
},
|
||||
"toast": {
|
||||
"updating": "Aktualizace funkce synchronizace skupin",
|
||||
"success": "Funkce synchronizace skupin byla úspěšně aktualizována.",
|
||||
"error": "Nepodařilo se aktualizovat funkci synchronizace skupin!"
|
||||
},
|
||||
"delete_modal": {
|
||||
"title": "Smazat synchronizaci skupin",
|
||||
"content": "Noví uživatelé z této skupiny identity již nebudou přidáváni do projektu. Již přidaní uživatelé si zachovají svou současnou roli."
|
||||
},
|
||||
"modal": {
|
||||
"idp_group_name": {
|
||||
"text": "Uživatelská skupina",
|
||||
"required": "Uživatelská skupina je povinná",
|
||||
"placeholder": "Zadejte názvy skupin IdP"
|
||||
},
|
||||
"project": {
|
||||
"text": "Projekt",
|
||||
"required": "Projekt je povinný",
|
||||
"placeholder": "Vyberte projekt"
|
||||
},
|
||||
"default_role": {
|
||||
"text": "Role projektu",
|
||||
"required": "Role projektu je povinná",
|
||||
"placeholder": "Vyberte roli projektu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"identity": {
|
||||
"title": "Identita",
|
||||
"heading": "Identita",
|
||||
"description": "Nakonfigurujte svou doménu a povolte jednotné přihlašování"
|
||||
},
|
||||
"project_states": {
|
||||
"title": "Stavy projektů",
|
||||
"heading": "Zobrazit přehled pokroku pro všechny projekty.",
|
||||
"description": "Stavy projektů jsou funkce výhradně Plane pro sledování pokroku všech vašich projektů podle libovolné vlastnosti projektu.",
|
||||
"go_to_settings": "Přejít do nastavení"
|
||||
},
|
||||
"projects": {
|
||||
"title": "Projekty",
|
||||
"description": "Správa stavů projektů, povolení štítků projektů a další konfigurace.",
|
||||
"tabs": {
|
||||
"states": "Stavy projektů",
|
||||
"labels": "Štítky projektů"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Šablony",
|
||||
"heading": "Šablony",
|
||||
"description": "Ušetřete 80 % času stráveného vytvářením projektů, pracovních položek a stránek, když použijete šablony."
|
||||
},
|
||||
"relations": {
|
||||
"title": "Vztahy",
|
||||
"heading": "Vztahy",
|
||||
"description": "Vytvářejte a spravujte typy vztahů, které propojují pracovní položky napříč vaším pracovním prostorem."
|
||||
},
|
||||
"cancel_trial": {
|
||||
"title": "Nejprve zrušte svou zkušební verzi.",
|
||||
"description": "Máte aktivní zkušební verzi jednoho z našich placených plánů. Nejprve ji prosím zrušte, abyste mohli pokračovat.",
|
||||
"dismiss": "Zavřít",
|
||||
"cancel": "Zrušit zkušební verzi",
|
||||
"cancel_success_title": "Zkušební verze zrušena.",
|
||||
"cancel_success_message": "Nyní můžete workspace smazat.",
|
||||
"cancel_error_title": "To nefungovalo.",
|
||||
"cancel_error_message": "Zkuste to prosím znovu."
|
||||
},
|
||||
"applications": {
|
||||
"internal": "Interní",
|
||||
"title": "Aplikace",
|
||||
"applicationId_copied": "ID aplikace zkopírováno do schránky",
|
||||
"clientId_copied": "ID klienta zkopírováno do schránky",
|
||||
"clientSecret_copied": "Tajemství klienta zkopírováno do schránky",
|
||||
"third_party_apps": "Aplikace třetích stran",
|
||||
"your_apps": "Vaše aplikace",
|
||||
"connect": "Připojit",
|
||||
"connected": "Připojeno",
|
||||
"disconnect": "Odpojit",
|
||||
"install": "Instalovat",
|
||||
"installed": "Instalováno",
|
||||
"configure": "Konfigurovat",
|
||||
"app_available": "Tuto aplikaci jste zpřístupnili pro použití s pracovním prostorem Plane",
|
||||
"app_credentials_regenrated": {
|
||||
"title": "Přihlašovací údaje aplikace byly úspěšně znovu vygenerovány",
|
||||
"description": "Nahraďte klientský klíč všude, kde je používán. Předchozí klíč již není platný."
|
||||
},
|
||||
"app_created": {
|
||||
"title": "Aplikace byla úspěšně vytvořena",
|
||||
"description": "Použijte přihlašovací údaje k instalaci aplikace do pracovního prostoru Plane"
|
||||
},
|
||||
"installed_apps": "Nainstalované aplikace",
|
||||
"all_apps": "Všechny aplikace",
|
||||
"internal_apps": "Interní aplikace",
|
||||
"app_name_title": "Jak pojmenujete tuto aplikaci",
|
||||
"app_description_title": {
|
||||
"label": "Dlouhý popis",
|
||||
"placeholder": "Napište dlouhý popis pro tržiště. Stiskněte '/' pro příkazy."
|
||||
},
|
||||
"authorization_grant_type": {
|
||||
"title": "Typ připojení",
|
||||
"description": "Vyberte, zda má být vaše aplikace nainstalována jednou pro pracovní prostor nebo zda má každý uživatel připojit svůj vlastní účet"
|
||||
},
|
||||
"website": {
|
||||
"title": "Webová stránka",
|
||||
"description": "Odkaz na webové stránky vaší aplikace.",
|
||||
"placeholder": "https://example.com"
|
||||
},
|
||||
"app_maker": {
|
||||
"title": "Tvůrce aplikací",
|
||||
"description": "Osoba nebo organizace, která vytváří aplikaci."
|
||||
},
|
||||
"app_maker_error": "Tvůrce aplikace je povinný",
|
||||
"setup_url": {
|
||||
"label": "URL nastavení",
|
||||
"description": "Uživatelé budou po instalaci aplikace přesměrováni na tuto URL.",
|
||||
"placeholder": "https://example.com/setup"
|
||||
},
|
||||
"webhook_url": {
|
||||
"label": "Webhook URL",
|
||||
"description": "Sem budeme odesílat události webhook a aktualizace z pracovních prostorů, kde je vaše aplikace nainstalována.",
|
||||
"placeholder": "https://example.com/webhook"
|
||||
},
|
||||
"webhook_secret": {
|
||||
"label": "Tajný klíč webhooku",
|
||||
"description": "Tajný klíč používaný k ověření příchozích požadavků webhooku.",
|
||||
"placeholder": "Zadejte náhodný tajný klíč"
|
||||
},
|
||||
"redirect_uris": {
|
||||
"label": "Přesměrovací URI (oddělené mezerou)",
|
||||
"description": "Uživatelé budou po ověření pomocí Plane přesměrováni na tuto cestu.",
|
||||
"placeholder": "https://example.com https://example.com/"
|
||||
},
|
||||
"app_available_description": "Připojte pracovní prostor Plane pro začátek používání",
|
||||
"client_id_and_secret": "ID a Tajemství Klienta",
|
||||
"client_id_and_secret_description": "Zkopírujte a uložte tento tajný klíč. Po kliknutí na Zavřít tento klíč již neuvidíte.",
|
||||
"client_id_and_secret_download": "Můžete si stáhnout CSV s klíčem odsud.",
|
||||
"application_id": "ID Aplikace",
|
||||
"client_id": "ID Klienta",
|
||||
"client_secret": "Tajemství Klienta",
|
||||
"export_as_csv": "Exportovat jako CSV",
|
||||
"slug_already_exists": "Slug již existuje",
|
||||
"failed_to_create_application": "Nepodařilo se vytvořit aplikaci",
|
||||
"upload_logo": "Nahrát Logo",
|
||||
"app_name_error": "Název aplikace je povinný",
|
||||
"app_short_description_title": "Dejte této aplikaci krátký popis",
|
||||
"app_short_description_error": "Krátký popis aplikace je povinný",
|
||||
"app_description_error": "Popis aplikace je povinný",
|
||||
"app_slug_title": "Slug aplikace",
|
||||
"app_slug_error": "Slug aplikace je povinný",
|
||||
"invalid_website_error": "Neplatná webová stránka",
|
||||
"webhook_url_title": "URL Webhooku",
|
||||
"webhook_url_error": "URL webhooku je povinné",
|
||||
"invalid_webhook_url_error": "Neplatné URL webhooku",
|
||||
"redirect_uris_title": "URI přesměrování",
|
||||
"redirect_uris_error": "URI přesměrování jsou povinné",
|
||||
"invalid_redirect_uris_error": "Neplatné URI přesměrování",
|
||||
"redirect_uris_description": "Zadejte URI oddělené mezerami, kam aplikace přesměruje po uživateli, např. https://example.com https://example.com/",
|
||||
"authorized_javascript_origins_title": "Autorizované JavaScript původy",
|
||||
"authorized_javascript_origins_error": "Autorizované JavaScript původy jsou povinné",
|
||||
"invalid_authorized_javascript_origins_error": "Neplatné autorizované JavaScript původy",
|
||||
"authorized_javascript_origins_description": "Zadejte původy oddělené mezerami, odkud bude moci aplikace dělat požadavky, např. app.com example.com",
|
||||
"create_app": "Vytvořit aplikaci",
|
||||
"update_app": "Aktualizovat aplikaci",
|
||||
"build_your_own_app": "Vytvořte si vlastní aplikaci",
|
||||
"edit_app_details": "Upravit detaily aplikace",
|
||||
"regenerate_client_secret_description": "Znovu vygenerovat tajemství klienta. Po regeneraci můžete klíč zkopírovat nebo stáhnout do CSV souboru.",
|
||||
"regenerate_client_secret": "Znovu vygenerovat tajemství klienta",
|
||||
"regenerate_client_secret_confirm_title": "Jste si jisti, že chcete znovu vygenerovat tajemství klienta?",
|
||||
"regenerate_client_secret_confirm_description": "Aplikace používající toto tajemství přestane fungovat. Budete muset aktualizovat tajemství v aplikaci.",
|
||||
"regenerate_client_secret_confirm_cancel": "Zrušit",
|
||||
"regenerate_client_secret_confirm_regenerate": "Znovu vygenerovat",
|
||||
"read_only_access_to_workspace": "Přístup pouze pro čtení k vašemu pracovnímu prostoru",
|
||||
"write_access_to_workspace": "Přístup pro zápis k vašemu pracovnímu prostoru",
|
||||
"read_only_access_to_user_profile": "Přístup pouze pro čtení k vašemu uživatelskému profilu",
|
||||
"write_access_to_user_profile": "Přístup pro zápis k vašemu uživatelskému profilu",
|
||||
"connect_app_to_workspace": "Připojit {app} k vašemu pracovnímu prostoru {workspace}",
|
||||
"user_permissions": "Uživatelská oprávnění",
|
||||
"user_permissions_description": "Uživatelská oprávnění se používají k udělení přístupu k profilu uživatele.",
|
||||
"workspace_permissions": "Oprávnění pracovního prostoru",
|
||||
"workspace_permissions_description": "Oprávnění pracovního prostoru se používají k udělení přístupu k pracovnímu prostoru.",
|
||||
"with_the_permissions": "s oprávněními",
|
||||
"app_consent_title": "{app} žádá o přístup k vašemu pracovnímu prostoru a profilu Plane.",
|
||||
"choose_workspace_to_connect_app_with": "Vyberte pracovní prostor pro připojení aplikace",
|
||||
"app_consent_workspace_permissions_title": "{app} by chtěl",
|
||||
"app_consent_user_permissions_title": "{app} může také požádat o povolení uživatele pro následující zdroje. Tato oprávnění budou vyžádána a autorizována pouze uživatelem.",
|
||||
"app_consent_accept_title": "Přijetím",
|
||||
"app_consent_accept_1": "Udělujete aplikaci přístup k vašim datům Plane kdekoli, kde můžete používat aplikaci uvnitř nebo mimo Plane",
|
||||
"app_consent_accept_2": "Souhlasíte s Zásadami ochrany osobních údajů a Podmínkami použití {app}",
|
||||
"accepting": "Přijímání...",
|
||||
"accept": "Přijmout",
|
||||
"categories": "Kategorie",
|
||||
"select_app_categories": "Vyberte kategorie aplikace",
|
||||
"categories_title": "Kategorie",
|
||||
"categories_error": "Kategorie jsou povinné",
|
||||
"invalid_categories_error": "Neplatné kategorie",
|
||||
"categories_description": "Vyberte kategorie, které nejlépe popisují aplikaci",
|
||||
"supported_plans": "Podporované Plány",
|
||||
"supported_plans_description": "Vyberte plány pracovního prostoru, které mohou nainstalovat tuto aplikaci. Ponechte prázdné, chcete-li povolit všechny plány.",
|
||||
"select_plans": "Vybrat Plány",
|
||||
"privacy_policy_url_title": "URL Zásad ochrany osobních údajů",
|
||||
"privacy_policy_url_error": "URL Zásad ochrany osobních údajů je povinné",
|
||||
"invalid_privacy_policy_url_error": "Neplatné URL Zásad ochrany osobních údajů",
|
||||
"terms_of_service_url_title": "URL Podmínek služby",
|
||||
"terms_of_service_url_error": "URL Podmínek služby je povinné",
|
||||
"invalid_terms_of_service_url_error": "Neplatné URL Podmínek služby",
|
||||
"support_url_title": "URL Podpory",
|
||||
"support_url_error": "URL Podpory je povinné",
|
||||
"invalid_support_url_error": "Neplatné URL Podpory",
|
||||
"video_url_title": "URL Video",
|
||||
"video_url_error": "URL Video je povinné",
|
||||
"invalid_video_url_error": "Neplatné URL Video",
|
||||
"setup_url_error": "URL Nastavení je povinné",
|
||||
"invalid_setup_url_error": "Neplatné URL Nastavení",
|
||||
"configuration_url_title": "URL Konfigurace",
|
||||
"configuration_url_error": "URL Konfigurace je povinné",
|
||||
"invalid_configuration_url_error": "Neplatné URL Konfigurace",
|
||||
"contact_email_title": "Kontaktní email",
|
||||
"contact_email_error": "Kontaktní email je povinný",
|
||||
"invalid_contact_email_error": "Neplatný kontaktní email",
|
||||
"upload_attachments": "Nahrát přílohy",
|
||||
"uploading_images": "Nahrávání {count} Obrázku{count, plural, one {s} other {s}}",
|
||||
"drop_images_here": "Přetáhněte obrázky sem",
|
||||
"click_to_upload_images": "Klikněte pro nahrávání obrázků",
|
||||
"invalid_file_or_exceeds_size_limit": "Neplatný soubor nebo překračuje limit velikosti ({size} MB)",
|
||||
"uploading": "Nahrávání...",
|
||||
"upload_and_save": "Nahrát a uložit",
|
||||
"app_consent_no_access_title": "Žádost o instalaci",
|
||||
"app_consent_no_access_description": "Tato aplikace může být nainstalována pouze po jejím nainstalování správcem pracovního prostoru. Kontaktujte svého správce pracovního prostoru, abyste mohli pokračovat.",
|
||||
"app_consent_unapproved_title": "Tato aplikace zatím nebyla zkontrolována ani schválena společností Plane.",
|
||||
"app_consent_unapproved_description": "Před připojením této aplikace k vašemu pracovnímu prostoru se ujistěte, že jí důvěřujete.",
|
||||
"go_to_app": "Přejít na aplikaci",
|
||||
"enable_app_mentions": "Povolit zmínky o aplikaci",
|
||||
"enable_app_mentions_tooltip": "Když je tato možnost povolena, uživatelé mohou zmínit nebo přiřadit pracovní položky této aplikaci.",
|
||||
"scopes": "Rozsahy",
|
||||
"select_scopes": "Vybrat rozsahy",
|
||||
"read_access_to": "Přístup pouze pro čtení k",
|
||||
"write_access_to": "Přístup pro zápis k",
|
||||
"global_permission_expiration": "Globální rozsahy brzy vyprší. Místo toho použijte granulární rozsahy. Například použijte project:read místo globálního čtení.",
|
||||
"selected_scopes": "{count} vybráno",
|
||||
"scopes_and_permissions": "Rozsahy a oprávnění",
|
||||
"read": "Čtení",
|
||||
"write": "Zápis",
|
||||
"scope_description": {
|
||||
"projects": "Přístup k projektům a všem souvisejícím entitám",
|
||||
"wiki": "Přístup k wiki a všem souvisejícím entitám",
|
||||
"workspaces": "Přístup k pracovním prostorům a všem souvisejícím entitám",
|
||||
"stickies": "Přístup k poznámkám a všem souvisejícím entitám",
|
||||
"profile": "Přístup k informacím o profilu uživatele",
|
||||
"agents": "Přístup k agentům a všem souvisejícím entitám",
|
||||
"assets": "Přístup k aktivům a všem souvisejícím entitám"
|
||||
}
|
||||
},
|
||||
"plane-intelligence": {
|
||||
"title": "Plane AI",
|
||||
"heading": "Plane AI",
|
||||
"description": "Sledujte, jak se vaše práce stává chytřejší a rychlejší s AI, která je nativně propojena s vaší prací a znalostní základnou."
|
||||
},
|
||||
"runners": {
|
||||
"title": "Plane Runner",
|
||||
"heading": "Skripty",
|
||||
"new_script": "Nový skript",
|
||||
"description": "Automatizujte své pracovní postupy pomocí vlastních skriptů a pravidel automatizace."
|
||||
}
|
||||
},
|
||||
"empty_state": {
|
||||
"api_tokens": {
|
||||
"title": "Žádné API tokeny",
|
||||
"description": "Používejte API pro integraci Plane s externími systémy."
|
||||
},
|
||||
"webhooks": {
|
||||
"title": "Žádné webhooky",
|
||||
"description": "Vytvořte webhooky pro automatizaci akcí."
|
||||
},
|
||||
"exports": {
|
||||
"title": "Žádné exporty",
|
||||
"description": "Zde najdete historii exportů."
|
||||
},
|
||||
"imports": {
|
||||
"title": "Žádné importy",
|
||||
"description": "Zde najdete historii importů."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,378 @@
|
||||
{
|
||||
"workspace_creation": {
|
||||
"heading": "Vytvořte si pracovní prostor",
|
||||
"subheading": "Pro používání Plane musíte vytvořit nebo se připojit k pracovnímu prostoru.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": "Pojmenujte svůj pracovní prostor",
|
||||
"placeholder": "Vhodné je použít něco známého a rozpoznatelného."
|
||||
},
|
||||
"url": {
|
||||
"label": "Nastavte URL vašeho prostoru",
|
||||
"placeholder": "Zadejte nebo vložte URL",
|
||||
"edit_slug": "Můžete upravit pouze část URL (slug)"
|
||||
},
|
||||
"organization_size": {
|
||||
"label": "Kolik lidí bude tento prostor používat?",
|
||||
"placeholder": "Vyberte rozsah"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"creation_disabled": {
|
||||
"title": "Pouze správce instance může vytvářet pracovní prostory",
|
||||
"description": "Pokud znáte e-mail správce instance, klikněte na tlačítko níže pro kontakt.",
|
||||
"request_button": "Požádat správce instance"
|
||||
},
|
||||
"validation": {
|
||||
"name_alphanumeric": "Názvy pracovních prostorů mohou obsahovat pouze (' '), ('-'), ('_') a alfanumerické znaky.",
|
||||
"name_length": "Název omezen na 80 znaků.",
|
||||
"url_alphanumeric": "URL mohou obsahovat pouze ('-') a alfanumerické znaky.",
|
||||
"url_length": "URL omezena na 48 znaků.",
|
||||
"url_already_taken": "URL pracovního prostoru je již obsazena!"
|
||||
}
|
||||
},
|
||||
"request_email": {
|
||||
"subject": "Žádost o nový pracovní prostor",
|
||||
"body": "Ahoj správci,\n\nProsím vytvořte nový pracovní prostor s URL [/workspace-name] pro [účel vytvoření].\n\nDíky,\n{firstName} {lastName}\n{email}"
|
||||
},
|
||||
"button": {
|
||||
"default": "Vytvořit pracovní prostor",
|
||||
"loading": "Vytváření pracovního prostoru"
|
||||
},
|
||||
"toast": {
|
||||
"success": {
|
||||
"title": "Úspěch",
|
||||
"message": "Pracovní prostor úspěšně vytvořen"
|
||||
},
|
||||
"error": {
|
||||
"title": "Chyba",
|
||||
"message": "Vytvoření pracovního prostoru se nezdařilo. Zkuste to prosím znovu."
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace_dashboard": {
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Přehled projektů, aktivit a metrik",
|
||||
"description": "Vítejte v Plane, jsme rádi, že jste zde. Vytvořte první projekt, sledujte pracovní položky a tato stránka se promění v prostor pro váš pokrok. Správci zde uvidí i položky pomáhající týmu.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořte první projekt",
|
||||
"comic": {
|
||||
"title": "Vše začíná projektem v Plane",
|
||||
"description": "Projektem může být roadmapa produktu, marketingová kampaň nebo uvedení nového auta."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace_analytics": {
|
||||
"label": "Analytika",
|
||||
"page_label": "{workspace} - Analytika",
|
||||
"open_tasks": "Celkem otevřených úkolů",
|
||||
"error": "Při načítání dat došlo k chybě.",
|
||||
"work_items_closed_in": "Pracovní položky uzavřené v",
|
||||
"selected_projects": "Vybrané projekty",
|
||||
"total_members": "Celkem členů",
|
||||
"total_cycles": "Celkem cyklů",
|
||||
"total_modules": "Celkem modulů",
|
||||
"pending_work_items": {
|
||||
"title": "Čekající pracovní položky",
|
||||
"empty_state": "Zde se zobrazí analýza čekajících položek podle spolupracovníků."
|
||||
},
|
||||
"work_items_closed_in_a_year": {
|
||||
"title": "Pracovní položky uzavřené v roce",
|
||||
"empty_state": "Uzavírejte položky pro zobrazení analýzy v grafu."
|
||||
},
|
||||
"most_work_items_created": {
|
||||
"title": "Nejvíce vytvořených položek",
|
||||
"empty_state": "Zobrazí se spolupracovníci a počet jimi vytvořených položek."
|
||||
},
|
||||
"most_work_items_closed": {
|
||||
"title": "Nejvíce uzavřených položek",
|
||||
"empty_state": "Zobrazí se spolupracovníci a počet jimi uzavřených položek."
|
||||
},
|
||||
"tabs": {
|
||||
"scope_and_demand": "Rozsah a poptávka",
|
||||
"custom": "Vlastní analytika"
|
||||
},
|
||||
"total": "Celkový počet {entity}",
|
||||
"started_work_items": "Zahájené {entity}",
|
||||
"backlog_work_items": "Backlog {entity}",
|
||||
"un_started_work_items": "Nezahájené {entity}",
|
||||
"completed_work_items": "Dokončené {entity}",
|
||||
"project_insights": "Přehled projektu",
|
||||
"summary_of_projects": "Souhrn projektů",
|
||||
"all_projects": "Všechny projekty",
|
||||
"trend_on_charts": "Trend na grafech",
|
||||
"active_projects": "Aktivní projekty",
|
||||
"customized_insights": "Přizpůsobené přehledy",
|
||||
"created_vs_resolved": "Vytvořeno vs Vyřešeno",
|
||||
"empty_state": {
|
||||
"project_insights": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Pracovní položky přiřazené vám, rozdělené podle stavu, se zde zobrazí."
|
||||
},
|
||||
"created_vs_resolved": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Pracovní položky vytvořené a vyřešené v průběhu času se zde zobrazí."
|
||||
},
|
||||
"customized_insights": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Pracovní položky přiřazené vám, rozdělené podle stavu, se zde zobrazí."
|
||||
},
|
||||
"general": {
|
||||
"title": "Sledujte pokrok, pracovní zátěž a alokace. Odhalte trendy, odstraňte překážky a zrychlete práci",
|
||||
"description": "Porovnávejte rozsah s poptávkou, odhady a rozšiřování rozsahu. Získejte výkonnost podle členů týmu a týmů a zajistěte, aby váš projekt běžel včas.",
|
||||
"primary_button": {
|
||||
"text": "Začněte svůj první projekt",
|
||||
"comic": {
|
||||
"title": "Analytika funguje nejlépe s Cykly + Moduly",
|
||||
"description": "Nejprve časově ohraničte své problémy do Cyklů a pokud můžete, seskupte problémy, které trvají déle než jeden cyklus, do Modulů. Podívejte se na obojí v levé navigaci."
|
||||
}
|
||||
}
|
||||
},
|
||||
"cycle_progress": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Analýza postupu cyklu se zobrazí zde. Přidejte pracovní položky do cyklů, abyste mohli sledovat postup."
|
||||
},
|
||||
"module_progress": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Analýza postupu modulu se zobrazí zde. Přidejte pracovní položky do modulů, abyste mohli sledovat postup."
|
||||
},
|
||||
"intake_trends": {
|
||||
"title": "Zatím žádná data",
|
||||
"description": "Analýza trendů příjmu se zobrazí zde. Přidejte pracovní položky do příjmu, abyste mohli sledovat trendy."
|
||||
}
|
||||
},
|
||||
"upgrade_to_plan": "Přejděte na plán {plan}, abyste odemkli kartu {tab}",
|
||||
"workitem_resolved_vs_pending": "Vyřešené vs. čekající pracovní položky",
|
||||
"projects_by_status": "Projekty podle stavu",
|
||||
"active_users": "Aktivní uživatelé",
|
||||
"intake_trends": "Trendy příjmů"
|
||||
},
|
||||
"workspace_projects": {
|
||||
"label": "{count, plural, one {Projekt} few {Projekty} other {Projektů}}",
|
||||
"create": {
|
||||
"label": "Přidat projekt"
|
||||
},
|
||||
"network": {
|
||||
"label": "Síť",
|
||||
"private": {
|
||||
"title": "Soukromý",
|
||||
"description": "Přístupné pouze na pozvání"
|
||||
},
|
||||
"public": {
|
||||
"title": "Veřejný",
|
||||
"description": "Kdokoli v prostoru kromě hostů se může připojit"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"permission": "Nemáte oprávnění k této akci.",
|
||||
"cycle_delete": "Odstranění cyklu se nezdařilo",
|
||||
"module_delete": "Odstranění modulu se nezdařilo",
|
||||
"issue_delete": "Odstranění pracovní položky se nezdařilo"
|
||||
},
|
||||
"state": {
|
||||
"backlog": "Backlog",
|
||||
"unstarted": "Nezačato",
|
||||
"started": "Zahájeno",
|
||||
"completed": "Dokončeno",
|
||||
"cancelled": "Zrušeno"
|
||||
},
|
||||
"sort": {
|
||||
"manual": "Ručně",
|
||||
"name": "Název",
|
||||
"created_at": "Datum vytvoření",
|
||||
"members_length": "Počet členů"
|
||||
},
|
||||
"scope": {
|
||||
"my_projects": "Moje projekty",
|
||||
"archived_projects": "Archivované"
|
||||
},
|
||||
"common": {
|
||||
"months_count": "{months, plural, one{# měsíc} few{# měsíce} other{# měsíců}}",
|
||||
"days_count": "{days, plural, one{# den} few{# dny} other{# dní}}"
|
||||
},
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Žádné aktivní projekty",
|
||||
"description": "Projekt je nadřazený cílům. Projekty obsahují Úkoly, Cykly a Moduly. Vytvořte nový nebo filtrujte archivované.",
|
||||
"primary_button": {
|
||||
"text": "Začněte první projekt",
|
||||
"comic": {
|
||||
"title": "Vše začíná projektem v Plane",
|
||||
"description": "Projektem může být roadmapa produktu, marketingová kampaň nebo uvedení nového auta."
|
||||
}
|
||||
}
|
||||
},
|
||||
"no_projects": {
|
||||
"title": "Žádné projekty",
|
||||
"description": "Pro vytváření pracovních položek potřebujete vytvořit nebo být součástí projektu.",
|
||||
"primary_button": {
|
||||
"text": "Začněte první projekt",
|
||||
"comic": {
|
||||
"title": "Vše začíná projektem v Plane",
|
||||
"description": "Projektem může být roadmapa produktu, marketingová kampaň nebo uvedení nového auta."
|
||||
}
|
||||
}
|
||||
},
|
||||
"filter": {
|
||||
"title": "Žádné odpovídající projekty",
|
||||
"description": "Nenalezeny projekty odpovídající kritériím.\n Vytvořte nový."
|
||||
},
|
||||
"search": {
|
||||
"description": "Nenalezeny projekty odpovídající kritériím.\nVytvořte nový."
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace_views": {
|
||||
"add_view": "Přidat pohled",
|
||||
"empty_state": {
|
||||
"all-issues": {
|
||||
"title": "Žádné pracovní položky v projektu",
|
||||
"description": "Vytvořte první položku a sledujte svůj pokrok!",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit pracovní položku"
|
||||
}
|
||||
},
|
||||
"assigned": {
|
||||
"title": "Žádné přiřazené položky",
|
||||
"description": "Zde uvidíte položky přiřazené vám.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit pracovní položku"
|
||||
}
|
||||
},
|
||||
"created": {
|
||||
"title": "Žádné vytvořené položky",
|
||||
"description": "Zde jsou položky, které jste vytvořili.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit pracovní položku"
|
||||
}
|
||||
},
|
||||
"subscribed": {
|
||||
"title": "Žádné odebírané položky",
|
||||
"description": "Přihlaste se k odběru položek, které vás zajímají."
|
||||
},
|
||||
"custom-view": {
|
||||
"title": "Žádné odpovídající položky",
|
||||
"description": "Zobrazí se položky odpovídající filtru."
|
||||
}
|
||||
},
|
||||
"delete_view": {
|
||||
"title": "Opravdu chcete smazat tento pohled?",
|
||||
"content": "Pokud potvrdíte, všechny možnosti řazení, filtrování a zobrazení + rozvržení, které jste vybrali pro tento pohled, budou trvale odstraněny a nelze je obnovit."
|
||||
}
|
||||
},
|
||||
"workspace_draft_issues": {
|
||||
"draft_an_issue": "Vytvořit koncept položky",
|
||||
"empty_state": {
|
||||
"title": "Rozpracované položky a komentáře se zde zobrazí.",
|
||||
"description": "Začněte vytvářet položku a nechte ji rozpracovanou.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit první koncept"
|
||||
}
|
||||
},
|
||||
"delete_modal": {
|
||||
"title": "Smazat koncept",
|
||||
"description": "Opravdu chcete smazat tento koncept? Akce je nevratná."
|
||||
},
|
||||
"toasts": {
|
||||
"created": {
|
||||
"success": "Koncept vytvořen",
|
||||
"error": "Vytvoření se nezdařilo"
|
||||
},
|
||||
"deleted": {
|
||||
"success": "Koncept smazán"
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace_pages": {
|
||||
"empty_state": {
|
||||
"general": {
|
||||
"title": "Napište poznámku, dokument nebo celou znalostní bázi. Získejte pomoc od Galilea, AI asistenta Plane, abyste začali",
|
||||
"description": "Stránky jsou prostor pro myšlenky v Plane. Zaznamenejte si poznámky z jednání, snadno je naformátujte, vložte pracovní položky, uspořádejte je pomocí knihovny komponent a udržujte je všechny v kontextu vašeho projektu. Abychom usnadnili práci s jakýmkoli dokumentem, vyvolejte Galilea, AI Plane, pomocí zkratky nebo kliknutím na tlačítko.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit svou první stránku"
|
||||
}
|
||||
},
|
||||
"private": {
|
||||
"title": "Zatím žádné soukromé stránky",
|
||||
"description": "Udržujte své soukromé myšlenky zde. Až budete připraveni sdílet, tým je jen na kliknutí daleko.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit svou první stránku"
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"title": "Zatím žádné stránky pracovního prostoru",
|
||||
"description": "Zde uvidíte stránky sdílené se všemi ve vašem pracovním prostoru.",
|
||||
"primary_button": {
|
||||
"text": "Vytvořit svou první stránku"
|
||||
}
|
||||
},
|
||||
"archived": {
|
||||
"title": "Zatím žádné archivované stránky",
|
||||
"description": "Archivujte stránky, které nejsou na vašem radaru. Zde k nim získáte přístup, když je potřebujete."
|
||||
},
|
||||
"shared": {
|
||||
"title": "Zatím žádné sdílené stránky",
|
||||
"description": "Stránky, které s vámi ostatní sdíleli, se objeví zde."
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace_cycles": {
|
||||
"empty_state": {
|
||||
"active": {
|
||||
"title": "Žádné aktivní cykly",
|
||||
"description": "Cyklus vašich projektů, který zahrnuje jakékoli období, které zahrnuje dnešní datum ve svém rozsahu. Najděte pokrok a detaily všech vašich aktivních cyklů zde."
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspace": {
|
||||
"members_import": {
|
||||
"title": "Importovat členy z CSV",
|
||||
"description": "Nahrajte CSV se sloupci: Email, Display Name, First Name, Last Name, Role (5, 15 nebo 20)",
|
||||
"dropzone": {
|
||||
"active": "Přetáhněte CSV soubor sem",
|
||||
"inactive": "Přetáhněte nebo klikněte pro nahrání",
|
||||
"file_type": "Podporovány jsou pouze soubory .csv"
|
||||
},
|
||||
"buttons": {
|
||||
"cancel": "Zrušit",
|
||||
"import": "Importovat",
|
||||
"try_again": "Zkusit znovu",
|
||||
"close": "Zavřít",
|
||||
"done": "Hotovo"
|
||||
},
|
||||
"progress": {
|
||||
"uploading": "Nahrávání...",
|
||||
"importing": "Importování..."
|
||||
},
|
||||
"summary": {
|
||||
"title": {
|
||||
"failed": "Import selhal",
|
||||
"complete": "Import dokončen"
|
||||
},
|
||||
"message": {
|
||||
"seat_limit": "Nelze importovat členy kvůli omezení počtu míst.",
|
||||
"success": "Úspěšně přidáno {count} člen{plural} do pracovního prostoru.",
|
||||
"no_imports": "Ze souboru CSV nebyli importováni žádní členové."
|
||||
},
|
||||
"stats": {
|
||||
"successful": "Úspěšné",
|
||||
"failed": "Neúspěšné"
|
||||
},
|
||||
"download_errors": "Stáhnout chyby"
|
||||
},
|
||||
"toast": {
|
||||
"invalid_file": {
|
||||
"title": "Neplatný soubor",
|
||||
"message": "Podporovány jsou pouze CSV soubory."
|
||||
},
|
||||
"import_failed": {
|
||||
"title": "Import selhal",
|
||||
"message": "Něco se pokazilo."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"aria_labels": {
|
||||
"projects_sidebar": {
|
||||
"workspace_logo": "Arbeitsbereich-Logo",
|
||||
"open_workspace_switcher": "Arbeitsbereich-Umschalter öffnen",
|
||||
"open_user_menu": "Benutzermenü öffnen",
|
||||
"open_command_palette": "Befehlspalette öffnen",
|
||||
"open_extended_sidebar": "Erweiterte Seitenleiste öffnen",
|
||||
"close_extended_sidebar": "Erweiterte Seitenleiste schließen",
|
||||
"create_favorites_folder": "Favoriten-Ordner erstellen",
|
||||
"open_folder": "Ordner öffnen",
|
||||
"close_folder": "Ordner schließen",
|
||||
"open_favorites_menu": "Favoriten-Menü öffnen",
|
||||
"close_favorites_menu": "Favoriten-Menü schließen",
|
||||
"enter_folder_name": "Ordnername eingeben",
|
||||
"create_new_project": "Neues Projekt erstellen",
|
||||
"open_projects_menu": "Projekte-Menü öffnen",
|
||||
"close_projects_menu": "Projekte-Menü schließen",
|
||||
"toggle_quick_actions_menu": "Schnellaktionen-Menü umschalten",
|
||||
"open_project_menu": "Projekt-Menü öffnen",
|
||||
"close_project_menu": "Projekt-Menü schließen",
|
||||
"collapse_sidebar": "Seitenleiste einklappen",
|
||||
"expand_sidebar": "Seitenleiste ausklappen",
|
||||
"edition_badge": "Modal für kostenpflichtige Pläne öffnen"
|
||||
},
|
||||
"auth_forms": {
|
||||
"clear_email": "E-Mail löschen",
|
||||
"show_password": "Passwort anzeigen",
|
||||
"hide_password": "Passwort verbergen",
|
||||
"close_alert": "Warnung schließen",
|
||||
"close_popover": "Popover schließen"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export default {
|
||||
aria_labels: {
|
||||
projects_sidebar: {
|
||||
workspace_logo: "Arbeitsbereich-Logo",
|
||||
open_workspace_switcher: "Arbeitsbereich-Umschalter öffnen",
|
||||
open_user_menu: "Benutzermenü öffnen",
|
||||
open_command_palette: "Befehlspalette öffnen",
|
||||
open_extended_sidebar: "Erweiterte Seitenleiste öffnen",
|
||||
close_extended_sidebar: "Erweiterte Seitenleiste schließen",
|
||||
create_favorites_folder: "Favoriten-Ordner erstellen",
|
||||
open_folder: "Ordner öffnen",
|
||||
close_folder: "Ordner schließen",
|
||||
open_favorites_menu: "Favoriten-Menü öffnen",
|
||||
close_favorites_menu: "Favoriten-Menü schließen",
|
||||
enter_folder_name: "Ordnername eingeben",
|
||||
create_new_project: "Neues Projekt erstellen",
|
||||
open_projects_menu: "Projekt-Menü öffnen",
|
||||
close_projects_menu: "Projekt-Menü schließen",
|
||||
toggle_quick_actions_menu: "Schnellaktionen-Menü umschalten",
|
||||
open_project_menu: "Projekt-Menü öffnen",
|
||||
close_project_menu: "Projekt-Menü schließen",
|
||||
collapse_sidebar: "Seitenleiste einklappen",
|
||||
expand_sidebar: "Seitenleiste ausklappen",
|
||||
edition_badge: "Modal für kostenpflichtige Pläne öffnen",
|
||||
},
|
||||
auth_forms: {
|
||||
clear_email: "E-Mail löschen",
|
||||
show_password: "Passwort anzeigen",
|
||||
hide_password: "Passwort verbergen",
|
||||
close_alert: "Warnung schließen",
|
||||
close_popover: "Popover schließen",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user