mirror of
https://github.com/hcengineering/platform.git
synced 2026-08-21 11:52:23 +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>
167 lines
6.2 KiB
JSON
167 lines
6.2 KiB
JSON
{
|
|
"string": {
|
|
"Contains": "包含",
|
|
"NotContains": "不包含",
|
|
"MoveClass": "移动 {class}",
|
|
"SelectToMove": "选择要将 {class} 移动到的 {classLabel}。",
|
|
"Delete": "删除",
|
|
"Move": "移动",
|
|
"Cancel": "取消",
|
|
"LabelYes": "是",
|
|
"LabelNo": "否",
|
|
"LabelNA": "不适用",
|
|
"ChooseAColor": "选择颜色",
|
|
"Table": "表格",
|
|
"Role": "角色",
|
|
"DeleteObject": "删除对象",
|
|
"DeleteObjectConfirm": "您想要删除 {count, plural, =1 {这个对象} other {这些 # 个对象}} 吗?",
|
|
"NoCreatePermissionTitle": "没有足够的权限创建",
|
|
"DeletePopupNoPermissionTitle": "没有足够的权限删除。",
|
|
"DeletePopupNoPermissionLabel": "请联系以下列表中的人员以便他们执行此操作。",
|
|
"DeletePopupCreatorLabel": "创建者(只能删除他们创建的):",
|
|
"DeletePopupOwnerLabel": "所有者(可以删除所有的):",
|
|
"Archive": "归档",
|
|
"ArchiveConfirm": "您想要归档这个 {count, plural, =1 {对象} other {# 个对象}} 吗?",
|
|
"Open": "打开",
|
|
"OpenInNewTab": "在新标签页中打开",
|
|
"Assignees": "受托人",
|
|
"Labels": "标签",
|
|
"MoveLeft": "向左移动",
|
|
"MoveRight": "向右移动",
|
|
"MoveUp": "向上移动",
|
|
"MoveDown": "向下移动",
|
|
"RestoreDefaults": "恢复默认",
|
|
"SelectItem": "选择焦点项目",
|
|
"SelectItemAll": "选择所有项目",
|
|
"SelectItemNone": "取消选择所有项目",
|
|
"NumberItems": "{count, plural, =0 {没有项目} =1 {1 个项目} other {# 个项目}}",
|
|
|
|
"Assigned": "已分配",
|
|
"Created": "已创建",
|
|
"Subscribed": "已订阅",
|
|
|
|
"ShowPreview": "显示文档预览",
|
|
"ShowActions": "显示操作弹窗",
|
|
|
|
"ActionPlaceholder": "搜索或运行命令...",
|
|
"General": "常规",
|
|
"Navigation": "导航",
|
|
"Editor": "编辑器",
|
|
"MarkdownFormatting": "格式化",
|
|
"CustomizeView": "自定义视图",
|
|
"Filter": "筛选",
|
|
"ClearFilters": "清除筛选",
|
|
"FilterLessThan": "小于",
|
|
"FilterGreaterThan": "大于",
|
|
"FilterIsNot": "不是",
|
|
"FilterIsEither": "是",
|
|
"FilterIsEitherPlural": "是",
|
|
"FilterStatesCount": "{value, plural, =1 {1 个状态} other {# 个状态}}",
|
|
"FilterUpdated": "筛选已更新",
|
|
"FilterRemoved": "{count, plural, =1 {# 个不存在的值} other {# 个不存在的值}} 已从筛选中移除",
|
|
"Before": "之前",
|
|
"After": "之后",
|
|
"Apply": "应用",
|
|
"Save": "保存",
|
|
"IncludeItemsThatMatch": "包括符合条件的项目",
|
|
"AnyFilter": "任意筛选",
|
|
"AllFilters": "所有筛选",
|
|
"MatchCriteria": "匹配条件",
|
|
"DontMatchCriteria": "不匹配条件",
|
|
"View": "视图",
|
|
"MarkupEditor": "富文本编辑器",
|
|
"List": "列表",
|
|
"Grid": "网格",
|
|
"Timeline": "时间线",
|
|
"Select": "选择",
|
|
"NoGrouping": "无分组",
|
|
"Grouping": "分组",
|
|
"Ordering": "排序",
|
|
"Manual": "手动",
|
|
|
|
"FilteredViews": "筛选视图",
|
|
"NewFilteredView": "新筛选视图",
|
|
"FilteredViewName": "筛选视图名称",
|
|
"Then": "然后",
|
|
"ShowPreviewOnClick": "请点击显示文档索引预览...",
|
|
"Shown": "显示 {len} 结果 {total, plural, =-1 {} other {共筛选 # 个项目}}",
|
|
"Total": "总计: {total, plural, other {#}}",
|
|
"ShowEmptyGroups": "显示空组",
|
|
"Overdue": "逾期",
|
|
"Today": "今天",
|
|
"Yesterday": "昨天",
|
|
"ThisWeek": "本周",
|
|
"NextWeek": "下周",
|
|
"ThisMonth": "本月",
|
|
"NextMonth": "下月",
|
|
"NotSpecified": "未指定",
|
|
"ExactDate": "确切日期",
|
|
"BeforeDate": "日期之前",
|
|
"AfterDate": "日期之后",
|
|
"BetweenDates": "日期之间",
|
|
"AddSavedView": "添加保存的视图",
|
|
"Public": "公开",
|
|
"Hide": "隐藏",
|
|
"Rename": "重命名",
|
|
"SaveAs": "另存为",
|
|
"And": "和",
|
|
"Between": "之间",
|
|
"ShowColors": "使用颜色",
|
|
"Show": "显示",
|
|
"FilterArrayAll": "包括全部",
|
|
"FilterArrayAny": "包括任意",
|
|
"Or": "或",
|
|
"HyperlinkPlaceholder": "https://jappleseed.com",
|
|
"CopyToClipboard": "复制到剪贴板",
|
|
"CopyAll": "复制全部",
|
|
"CopyDocumentMarkdown": "复制为 Markdown",
|
|
"CopyAsMarkdownTable": "复制为 Markdown 表格",
|
|
"TableCopiedToClipboard": "表格已复制到剪贴板",
|
|
"TableCopyFailed": "复制表格到剪贴板失败",
|
|
"PublicView": "公开视图",
|
|
|
|
"ChooseIcon": "选择图标",
|
|
"IconColor": "选择图标颜色",
|
|
"IconCategory": "图标",
|
|
"EmojiCategory": "表情",
|
|
"Type": "类型",
|
|
"ToViewCommands": "查看可用命令",
|
|
"UnArchive": "取消归档",
|
|
"UnArchiveConfirm": "您想要取消归档这个 {count, plural, =1 {对象} other {# 个对象}} 吗?",
|
|
"Pin": "固定",
|
|
"Unpin": "取消固定",
|
|
"Archived": "已归档",
|
|
"MoreActions": "更多操作",
|
|
"Leave": "离开",
|
|
"Join": "加入",
|
|
"Copied": "已复制",
|
|
"Title": "标题",
|
|
"HideArchived": "隱藏已存檔",
|
|
"RemoveRelation": "移除关系",
|
|
"RemoveRelationConfirmation": "您要移除关系吗?",
|
|
"MasterDetail": "主要-详细",
|
|
"Tree": "树",
|
|
"Document": "文档",
|
|
"Loading": "加载中...",
|
|
"NoRelations": "无关系",
|
|
"ReadOnlyWarningTitle": "✨ 匿名访客演示",
|
|
"ReadOnlyWarningMessage": "您处于只读模式。选择您的路径:加入此工作区协作(作为访客)或创建您自己的空间来完全管理项目 — 任务、截止日期、团队!",
|
|
"ReadOnlyJoinWorkspace": "加入工作区",
|
|
"ReadOnlySignUp": "创建工作区",
|
|
"PermissionWarningTitle": "✨ 提升您的访问权限!",
|
|
"PermissionWarningMessage": "您当前角色的权限有限。要解锁此功能和其他高级功能,请让您的工作区管理员升级您的访问权限!",
|
|
"Icon": "图标",
|
|
"Color": "颜色",
|
|
"AutomationOnly": "仅限自动化",
|
|
"CopyLink": "复制链接",
|
|
"ValueIsSet": "值已设置",
|
|
"RoleLabel": "角色:{role}",
|
|
"ForbidAttributeChanges": "禁止更改属性: ",
|
|
"AllowAttributeChanges": "允许更改属性: ",
|
|
"RelationshipTable": "关系表",
|
|
"FilterOverflowBadge": "+{count}",
|
|
"AddFilter": "添加过滤器",
|
|
"HiddenFilters": "隐藏的过滤器"
|
|
}
|
|
}
|