mirror of
https://github.com/hcengineering/platform.git
synced 2026-08-20 03:15:41 +02:00
* feat(tracker): field-prefixed search, inline filter chips and zero-hit empty state Adds SearchInputAdvanced (field:value prefixes routed to Elasticsearch query_string), match highlighting, inline filter chips with overflow popover, a reusable zero-hit empty state in view-resources, and search-scope/highlight view options for List and Kanban. Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com> * refactor(tracker-search): address review follow-ups on search/filter rework Shared, non-storage-specific field list, test-folder conventions, locale coverage, single regex source and an owner-token gate for the result count. - core: add shared `fullTextSearchFields` constant next to FullTextSearchContext as the single source of truth for the full-text fields exposed to `field:value` targeting. The client encoder derives ES_NATIVE_FIELDS from it and the elastic adapter derives KNOWN_FIELD_RE from it, replacing the two "KEEP IN SYNC" copies. Per-field boost weights stay a local adapter detail. - tests: move the five co-located tests into each package's existing test folder convention (ui `__test__`, view-resources `__tests__`) and fix the relative imports. - i18n: translate the new tracker search/filter strings in the remaining locales (zh, ja, ko, cs, es, fr, it, pt, pt-br, tr), reusing each file's existing terminology; ICU placeholders left unchanged. - encoder: hoist the reserved-character class into one constant and build two RegExp instances from it (non-global for `.test()`, global for `.replace()`) to avoid the shared-lastIndex trap. - view-resources: guard `resultIssueCountStore` writes with an owner-token gate so a superseded viewlet can no longer clobber the active viewlet's count; List/KanbanView claim and release, IssuesView resets through the current owner. Assumes a single active IssuesView surface. - view-resources: make result-count reporting opt-in via a new `reportResultCount` prop on List (default true). Embedded, non-primary List instances (sub-issues / related issues in the issue edit panel, routed through SubIssueList) pass false and never claim the owner token, so opening and closing an issue can no longer strand the primary Issues viewlet with a dead token — the zero-hit SearchEmptyState card renders again afterwards. Add a regression test covering the opted-out embedded consumer. - elastic: escape every regex metacharacter (not just `.`) when building KNOWN_FIELD_RE from `fullTextSearchFields`, so a future field name carrying another metacharacter cannot silently corrupt the alternation. Behaviour for the current fields is unchanged. Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com> * refactor(tracker-search): centralize regex escaping and lock down result-count store - Share escapeRegExp from @hcengineering/core so the client encoder and the server elastic adapter escape the fulltext field list identically, not just dots on the client. - Export resultIssueCountStore as a read-only Readable; the owner-token gate functions (setResultCount / resetResultCount / releaseResultCountOwner) are now the only write path. Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com> --------- Signed-off-by: Michael Uray <michaeluray@users.noreply.github.com> Co-authored-by: Michael Uray <michaeluray@users.noreply.github.com> Co-authored-by: Artyom Savchenko <armisav@gmail.com>
301 lines
13 KiB
JSON
301 lines
13 KiB
JSON
{
|
|
"string": {
|
|
"TrackerApplication": "Přehled",
|
|
"Projects": "Vaše projekty",
|
|
"More": "Více",
|
|
"Default": "Výchozí",
|
|
"MakeDefault": "Nastavit jako výchozí",
|
|
"Delete": "Smazat",
|
|
"Open": "Otevřít",
|
|
"Members": "Členové",
|
|
"Inbox": "Doručená pošta",
|
|
"MyIssues": "Mé úkoly",
|
|
"ViewIssue": "Zobrazit úkol",
|
|
"IssueCreated": "Úkol vytvořen",
|
|
"Issues": "Úkoly",
|
|
"Views": "Zobrazení",
|
|
"Active": "Aktivní",
|
|
"AllIssues": "Všechny úkoly",
|
|
"ActiveIssues": "Aktivní úkoly",
|
|
"BacklogIssues": "Návrhy",
|
|
"Backlog": "Návrhy",
|
|
"Board": "Tabule",
|
|
"Components": "Komponenty",
|
|
"AllComponents": "Vše",
|
|
"BacklogComponents": "Návrhy",
|
|
"ActiveComponents": "Aktivní",
|
|
"ClosedComponents": "Uzavřené",
|
|
"NewComponent": "Nová komponenta",
|
|
"CreateComponent": "Vytvořit komponentu",
|
|
"ComponentNamePlaceholder": "Název komponenty",
|
|
"ComponentDescriptionPlaceholder": "Popis (volitelné)",
|
|
"ComponentLead": "Vedoucí",
|
|
"ComponentMembers": "Členové",
|
|
"StartDate": "Datum zahájení",
|
|
"TargetDate": "Cílové datum",
|
|
"Planned": "Plánováno",
|
|
"InProgress": "Probíhá",
|
|
"Paused": "Pozastaveno",
|
|
"Completed": "Dokončeno",
|
|
"Canceled": "Zrušeno",
|
|
"CreateProject": "Vytvořit projekt",
|
|
"NewProject": "Nový projekt",
|
|
"ProjectTitle": "Název projektu",
|
|
"ProjectTitlePlaceholder": "Nový projekt",
|
|
"UsedInIssueIDs": "Použito v ID úkolů",
|
|
"Identifier": "Identifikátor",
|
|
"Import": "Importovat",
|
|
"ProjectIdentifier": "Identifikátor projektu",
|
|
"IdentifierExists": "Identifikátor projektu již existuje",
|
|
"ProjectIdentifierPlaceholder": "PROJ",
|
|
"ChooseIcon": "Vybrat ikonu",
|
|
"AddIssue": "Přidat úkol",
|
|
"NewIssue": "Nový úkol",
|
|
"NewIssuePlaceholder": "Nový",
|
|
"ResumeDraft": "Pokračovat v konceptu",
|
|
"SaveIssue": "Vytvořit úkol",
|
|
"SetPriority": "Nastavit prioritu…",
|
|
"SetStatus": "Nastavit stav…",
|
|
"SelectIssue": "Vybrat úkol",
|
|
"Priority": "Priorita",
|
|
"NoPriority": "Bez priority",
|
|
"Urgent": "Naléhavé",
|
|
"High": "Vysoká",
|
|
"Medium": "Střední",
|
|
"Low": "Nízká",
|
|
"Unassigned": "Nepřiřazeno",
|
|
"Back": "Zpět",
|
|
"List": "Seznam",
|
|
"NumberLabels": "{count, plural, =0 {žádné štítky} =1 {1 štítek} other {# štítků}}",
|
|
"CategoryBacklog": "Návrhy",
|
|
"CategoryUnstarted": "Nezahájeno",
|
|
"CategoryStarted": "Zahájeno",
|
|
"CategoryCompleted": "Dokončeno",
|
|
"CategoryCanceled": "Zrušeno",
|
|
"Title": "Název",
|
|
"Name": "Jméno",
|
|
"Description": "Popis",
|
|
"Status": "Stav",
|
|
"Number": "Číslo",
|
|
"Assignee": "Přiřazený",
|
|
"AssignTo": "Přiřadit…",
|
|
"AssignedTo": "Přiřazeno k {value}",
|
|
"Parent": "Nadřazený úkol",
|
|
"SetParent": "Nastavit nadřazený úkol…",
|
|
"ChangeParent": "Změnit nadřazený úkol…",
|
|
"RemoveParent": "Odebrat nadřazený úkol",
|
|
"OpenParent": "Otevřít nadřazený úkol",
|
|
"SubIssues": "Podúkoly",
|
|
"SubIssuesList": "Podúkoly ({subIssues})",
|
|
"OpenSubIssues": "Otevřít podúkoly",
|
|
"AddSubIssues": "Přidat podúkol",
|
|
"BlockedBy": "Blokováno",
|
|
"RelatedTo": "Související s",
|
|
"Comments": "Komentáře",
|
|
"Attachments": "Přílohy",
|
|
"Labels": "Štítky",
|
|
"Component": "Komponenta",
|
|
"SetDueDate": "Nastavit datum splnění…",
|
|
"ChangeDueDate": "Změnit datum splnění…",
|
|
"ModificationDate": "Aktualizováno {value}",
|
|
"Project": "Projekt",
|
|
"Issue": "Úkol",
|
|
"SubIssue": "Podúkol",
|
|
"Rank": "Hodnost",
|
|
"TypeIssuePriority": "Priorita úkolu",
|
|
"IssueTitlePlaceholder": "Název úkolu",
|
|
"SubIssueTitlePlaceholder": "Název podúkolu",
|
|
"IssueDescriptionPlaceholder": "Přidat popis…",
|
|
"SubIssueDescriptionPlaceholder": "Přidat popis podúkolu",
|
|
"AddIssueTooltip": "Přidat úkol…",
|
|
"Grouping": "Seskupení",
|
|
"Ordering": "Řazení",
|
|
"CompletedIssues": "Dokončené úkoly",
|
|
"NoGrouping": "Bez seskupení",
|
|
"NoAssignee": "Bez přiřazení",
|
|
"LastUpdated": "Poslední aktualizace",
|
|
"DueDate": "Datum splnění",
|
|
"IssueStartDate": "Datum zahájení",
|
|
"GanttDependency": "Dependency",
|
|
"GanttLag": "Lag",
|
|
"Manual": "Manuální",
|
|
"All": "Vše",
|
|
"PastWeek": "Minulý týden",
|
|
"PastMonth": "Minulý měsíc",
|
|
"CopyIssueUrl": "Zkopírovat URL úkolu do schránky",
|
|
"CopyIssueId": "Zkopírovat ID úkolu do schránky",
|
|
"CopyIssueBranch": "Zkopírovat název větve Git do schránky",
|
|
"CopyIssueTitle": "Zkopírovat název úkolu do schránky",
|
|
"AssetLabel": "Mějte přehled",
|
|
"AddToComponent": "Přidat do komponenty…",
|
|
"MoveToComponent": "Přesunout do komponenty…",
|
|
"NoComponent": "Bez komponenty",
|
|
"ComponentLeadTitle": "Vedoucí komponenty",
|
|
"ComponentMembersTitle": "Členové komponenty",
|
|
"ComponentLeadSearchPlaceholder": "Nastavit vedoucího komponenty…",
|
|
"ComponentMembersSearchPlaceholder": "Změnit členy komponenty…",
|
|
"MoveToProject": "Přesunout do projektu",
|
|
"Duplicate": "Duplikovat",
|
|
|
|
"GotoIssues": "Přejít na úkoly",
|
|
"GotoActive": "Přejít na aktivní úkoly",
|
|
"GotoBacklog": "Přejít na návrhy",
|
|
"GotoComponents": "Přejít na komponenty",
|
|
"GotoMyIssues": "Přejít na mé úkoly",
|
|
"GotoTrackerApplication": "Přepnout na aplikaci Přehled",
|
|
|
|
"CreatedOne": "Vytvořeno",
|
|
"MoveIssues": "Přesunout úkoly",
|
|
"MoveIssuesDescription": "Vyberte projekt, do kterého chcete úkoly přesunout",
|
|
"ManageAttributes": "Spravovat atributy",
|
|
"KeepOriginalAttributes": "Zachovat původní atributy",
|
|
"KeepOriginalAttributesTooltip": "Původní stavy a komponenty úkolů budou zachovány v novém projektu",
|
|
"SelectReplacement": "Následující položky nejsou dostupné v novém projektu. Vyberte náhradu.",
|
|
"MissingItem": "CHYBĚJÍCÍ POLOŽKA",
|
|
"Replacement": "NÁHRADA",
|
|
"Original": "PŮVODNÍ",
|
|
"OriginalDescription": "Položky z této sekce budou vytvořeny v novém projektu",
|
|
|
|
"Relations": "Vztahy",
|
|
"RemoveRelation": "Odebrat vztah...",
|
|
"AddBlockedBy": "Označit jako blokováno...",
|
|
"AddIsBlocking": "Označit jako blokující...",
|
|
"AddRelatedIssue": "Odkázat na jiný úkol...",
|
|
"RelatedIssue": "Související úkol {id} - {title}",
|
|
"BlockedIssue": "Blokovaný úkol {id} - {title}",
|
|
"BlockingIssue": "Blokující úkol {id} - {title}",
|
|
"BlockedBySearchPlaceholder": "Vyhledat úkol pro označení jako blokováno...",
|
|
"IsBlockingSearchPlaceholder": "Vyhledat úkol pro označení jako blokující...",
|
|
"RelatedIssueSearchPlaceholder": "Vyhledat úkol pro odkazování...",
|
|
"Blocks": "Blokuje",
|
|
"Related": "Související",
|
|
"RelatedIssues": "Související úkoly",
|
|
|
|
"EditIssue": "Upravit {title}",
|
|
"EditWorkflowStatuses": "Upravit stavy úkolů",
|
|
"EditProject": "Upravit projekt",
|
|
"DeleteProject": "Smazat projekt",
|
|
"ArchiveProjectName": "Archivovat projekt {name}?",
|
|
"ArchiveProjectConfirm": "Chcete tento projekt archivovat?",
|
|
"DeleteProjectConfirm": "Chcete tento projekt a všechny jeho úkoly smazat?",
|
|
"ProjectHasIssues": "Tento projekt obsahuje úkoly. Opravdu jej chcete archivovat?",
|
|
"ManageWorkflowStatuses": "Spravovat typy projektů",
|
|
"AddWorkflowStatus": "Přidat stav úkolu",
|
|
"EditWorkflowStatus": "Upravit stav úkolu",
|
|
"DeleteWorkflowStatus": "Smazat stav úkolu",
|
|
"DeleteWorkflowStatusConfirm": "Chcete smazat stav \"{status}\"?",
|
|
"DeleteWorkflowStatusErrorDescription": "Stav \"{status}\" má přiřazeno {count, plural, =1 {1 úkol} other {# úkolů}}. Vyberte stav pro přesun",
|
|
|
|
"Save": "Uložit",
|
|
"IncludeItemsThatMatch": "Zahrnout položky, které odpovídají",
|
|
"AnyFilter": "jakémukoli filtru",
|
|
"AllFilters": "všem filtrům",
|
|
"NoDescription": "Žádný popis",
|
|
"SearchIssue": "Hledat úkol...",
|
|
|
|
"StatusHistory": "Historie stavů",
|
|
"NewSubIssue": "Přidat podúkol...",
|
|
"AddLabel": "Přidat štítek",
|
|
|
|
"DeleteIssue": "Smazat {issueCount, plural, =1 {úkol} other {# úkolů}}",
|
|
"DeleteIssueConfirm": "Chcete smazat {issueCount, plural, =1 {úkol} other {úkoly}}{subIssueCount, plural, =0 {?} =1 { a podúkol?} other { a podúkoly?}}",
|
|
|
|
"Milestone": "Milník",
|
|
"NoMilestone": "Žádný milník",
|
|
"MoveToMilestone": "Vybrat milník",
|
|
"Milestones": "Milníky",
|
|
"AllMilestones": "Vše",
|
|
"PlannedMilestones": "Plánované",
|
|
"ActiveMilestones": "Aktivní",
|
|
"ClosedMilestones": "Dokončené",
|
|
"AddToMilestone": "Přidat do milníku",
|
|
"MilestoneNamePlaceholder": "Název milníku",
|
|
|
|
"NewMilestone": "Nový milník",
|
|
"CreateMilestone": "Vytvořit",
|
|
|
|
"MoveAndDeleteMilestone": "Přesunout úkoly do {newMilestone} a smazat {deleteMilestone}",
|
|
"MoveAndDeleteMilestoneConfirm": "Chcete smazat milník a přesunout úkoly do jiného milníku?",
|
|
|
|
"Estimation": "Odhad",
|
|
"ReportedTime": "Strávený čas",
|
|
"RemainingTime": "Zbývající čas",
|
|
"TimeSpendReports": "Zprávy o stráveném čase",
|
|
"TimeSpendReport": "Čas",
|
|
"TimeSpendReportAdd": "Přidat zprávu o čase",
|
|
"TimeSpendReportDate": "Datum",
|
|
"TimeSpendReportValue": "Strávený čas",
|
|
"TimeSpendReportValueTooltip": "Strávený čas v hodinách",
|
|
"TimeSpendReportDescription": "Popis",
|
|
"TimeSpendDays": "{value}d",
|
|
"TimeSpendHours": "{value}h",
|
|
"TimeSpendMinutes": "{value}m",
|
|
"ChildEstimation": "Odhad podúkolů",
|
|
"ChildReportedTime": "Čas podúkolů",
|
|
"CapacityValue": "z {value}d",
|
|
"NewRelatedIssue": "Nový související úkol",
|
|
"RelatedIssuesNotFound": "Související úkoly nenalezeny",
|
|
|
|
"AddedReference": "Přidán odkaz",
|
|
"AddedAsBlocked": "Označeno jako blokované",
|
|
"AddedAsBlocking": "Označeno jako blokující",
|
|
|
|
"IssueTemplate": "Šablona",
|
|
"IssueTemplates": "Šablony",
|
|
"NewProcess": "Nová šablona",
|
|
"SaveProcess": "Uložit šablonu",
|
|
"NoIssueTemplate": "Žádná šablona",
|
|
"TemplateReplace": "Chcete použít novou šablonu?",
|
|
"TemplateReplaceConfirm": "Všechna pole budou přepsána hodnotami nové šablony",
|
|
"Apply": "Použít",
|
|
|
|
"CurrentWorkDay": "Aktuální pracovní den",
|
|
"PreviousWorkDay": "Předchozí pracovní den",
|
|
"TimeReportDayTypeLabel": "Vyberte typ pracovního dne",
|
|
"DefaultAssignee": "Výchozí přiřazení úkolů",
|
|
|
|
"SevenHoursLength": "Sedm hodin",
|
|
"EightHoursLength": "Osm hodin",
|
|
"HourLabel": "h",
|
|
"MinuteLabel": "m",
|
|
"Saved": "Uloženo...",
|
|
"CreatedIssue": "Úkol vytvořen",
|
|
"CreatedSubIssue": "Podúkol vytvořen",
|
|
"ChangeStatus": "Změnit stav",
|
|
"ConfigLabel": "Přehled",
|
|
"ConfigDescription": "Rozšíření pro správu pracovních úkolů a projektů.",
|
|
"NoStatusFound": "Nebyl nalezen odpovídající stav",
|
|
"CreateMissingStatus": "Vytvořit chybějící stav",
|
|
"UnsetParent": "Nadřazený úkol bude odebrán",
|
|
"AllProjects": "Všechny projekty",
|
|
"IssueNotificationTitle": "{issueTitle}",
|
|
"IssueNotificationBody": "Aktualizováno uživatelem {senderName}",
|
|
"IssueNotificationChanged": "{senderName} změnil {property}",
|
|
"IssueNotificationChangedProperty": "{senderName} změnil {property} na \"{newValue}\"",
|
|
"IssueNotificationMessage": "{senderName}: {message}",
|
|
"PreviousAssigned": "Původně přiřazeno",
|
|
"IssueAssignedToYou": "Přiřazeno vám",
|
|
"RelatedIssueTargetDescription": "Cílový projekt pro související úkol",
|
|
"MapRelatedIssues": "Nastavit výchozí projekty pro související úkoly",
|
|
"DefaultIssueStatus": "Výchozí stav úkolu",
|
|
"IssueStatus": "Stav",
|
|
"Extensions": "Rozšíření",
|
|
"UnsetParentIssue": "Odebrat nadřazený úkol",
|
|
"ForbidCreateProjectPermission": "Zakázat vytvoření projektu",
|
|
"ForbidCreateProjectPermissionDescription": "Zakazuje uživatelům vytvářet nové projekty",
|
|
"AllowCreatingIssues": "Povolit vytváření úkolů",
|
|
"ModeSelectorDisabledByFilter": "Stav je řízen aktivním filtrem. Chcete-li použít tuto zkratku, odstraňte filtr stavu.",
|
|
"ShowQuickModeSelector": "Rychlý filtr: Vše / Aktivní / Návrhy",
|
|
"SearchScopeLabel": "Hledat v…",
|
|
"SearchScopeTitle": "Pouze název",
|
|
"SearchScopeTitleDescription": "Název + popis",
|
|
"SearchScopeAll": "Název + popis + komentáře",
|
|
"SearchHighlight": "Zvýraznit shody hledání",
|
|
"SearchEmptyTitle": "Pro „{query}\" nebyly nalezeny žádné úkoly",
|
|
"SearchEmptyActiveFilters": "Aktivní filtry: {filters}",
|
|
"SearchEmptyClearFilters": "Hledat bez filtrů",
|
|
"SearchEmptyAllProjects": "Hledat ve všech projektech"
|
|
},
|
|
"status": {}
|
|
}
|