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>
294 lines
15 KiB
JSON
294 lines
15 KiB
JSON
{
|
|
"string": {
|
|
"TrackerApplication": "トラッカー",
|
|
"Projects": "あなたのプロジェクト",
|
|
"More": "その他",
|
|
"Default": "デフォルト",
|
|
"MakeDefault": "デフォルトに設定",
|
|
"Delete": "削除",
|
|
"Open": "開く",
|
|
"Members": "メンバー",
|
|
"Inbox": "受信箱",
|
|
"MyIssues": "自分のイシュー",
|
|
"ViewIssue": "イシューを表示",
|
|
"IssueCreated": "イシューが作成されました",
|
|
"Issues": "イシュー",
|
|
"Views": "ビュー",
|
|
"Active": "アクティブ",
|
|
"AllIssues": "すべてのイシュー",
|
|
"ActiveIssues": "アクティブなイシュー",
|
|
"BacklogIssues": "バックログ",
|
|
"Backlog": "バックログ",
|
|
"Board": "ボード",
|
|
"Components": "コンポーネント",
|
|
"AllComponents": "すべて",
|
|
"BacklogComponents": "バックログ",
|
|
"ActiveComponents": "アクティブ",
|
|
"ClosedComponents": "完了",
|
|
"NewComponent": "新しいコンポーネント",
|
|
"CreateComponent": "コンポーネントを作成",
|
|
"ComponentNamePlaceholder": "コンポーネント名",
|
|
"ComponentDescriptionPlaceholder": "説明 (オプション)",
|
|
"ComponentLead": "リーダー",
|
|
"ComponentMembers": "メンバー",
|
|
"StartDate": "開始日",
|
|
"TargetDate": "目標日",
|
|
"Planned": "計画済み",
|
|
"InProgress": "進行中",
|
|
"Paused": "一時停止",
|
|
"Completed": "完了",
|
|
"Canceled": "キャンセル",
|
|
"CreateProject": "プロジェクトを作成",
|
|
"NewProject": "新しいプロジェクト",
|
|
"ProjectTitle": "プロジェクトタイトル",
|
|
"ProjectTitlePlaceholder": "新しいプロジェクト",
|
|
"UsedInIssueIDs": "イシューIDで使用",
|
|
"Identifier": "識別子",
|
|
"Import": "インポート",
|
|
"ProjectIdentifier": "プロジェクト識別子",
|
|
"IdentifierExists": "プロジェクト識別子はすでに存在します",
|
|
"ProjectIdentifierPlaceholder": "PRJCT",
|
|
"ChooseIcon": "アイコンを選択",
|
|
"AddIssue": "イシューを追加",
|
|
"NewIssue": "新しいイシュー",
|
|
"NewIssuePlaceholder": "新規",
|
|
"ResumeDraft": "下書きを再開",
|
|
"SaveIssue": "イシューを作成",
|
|
"SetPriority": "優先度を設定\u2026",
|
|
"SetStatus": "ステータスを設定\u2026",
|
|
"SelectIssue": "イシューを選択",
|
|
"Priority": "優先度",
|
|
"NoPriority": "優先度なし",
|
|
"Urgent": "緊急",
|
|
"High": "高",
|
|
"Medium": "中",
|
|
"Low": "低",
|
|
"Unassigned": "未割り当て",
|
|
"Back": "戻る",
|
|
"List": "リスト",
|
|
"NumberLabels": "{count, plural, =0 {ラベルなし} =1 {1 ラベル} other {# ラベル}}",
|
|
"CategoryBacklog": "バックログ",
|
|
"CategoryUnstarted": "未着手",
|
|
"CategoryStarted": "開始",
|
|
"CategoryCompleted": "完了",
|
|
"CategoryCanceled": "キャンセル",
|
|
"Title": "タイトル",
|
|
"Name": "名前",
|
|
"Description": "説明",
|
|
"Status": "ステータス",
|
|
"Number": "番号",
|
|
"Assignee": "担当者",
|
|
"AssignTo": "担当者を設定...",
|
|
"AssignedTo": "{value} に割り当て",
|
|
"Parent": "親イシュー",
|
|
"SetParent": "親イシューを設定\u2026",
|
|
"ChangeParent": "親イシューを変更\u2026",
|
|
"RemoveParent": "親イシューを削除",
|
|
"OpenParent": "親イシューを開く",
|
|
"SubIssues": "子イシュー",
|
|
"SubIssuesList": "子イシュー ({subIssues})",
|
|
"OpenSubIssues": "子イシューを開く",
|
|
"AddSubIssues": "子イシューを追加",
|
|
"BlockedBy": "ブロックされている",
|
|
"RelatedTo": "関連する",
|
|
"Comments": "コメント",
|
|
"Attachments": "添付ファイル",
|
|
"Labels": "ラベル",
|
|
"Component": "コンポーネント",
|
|
"Space": "",
|
|
"SetDueDate": "期日を設定\u2026",
|
|
"ChangeDueDate": "期日を変更\u2026",
|
|
"ModificationDate": "更新日 {value}",
|
|
"Project": "プロジェクト",
|
|
"Issue": "イシュー",
|
|
"SubIssue": "子イシュー",
|
|
"Document": "",
|
|
"DocumentIcon": "",
|
|
"DocumentColor": "",
|
|
"Rank": "ランク",
|
|
"TypeIssuePriority": "イシューの優先度",
|
|
"IssueTitlePlaceholder": "イシューのタイトル",
|
|
"SubIssueTitlePlaceholder": "子イシューのタイトル",
|
|
"IssueDescriptionPlaceholder": "説明を追加\u2026",
|
|
"SubIssueDescriptionPlaceholder": "子イシューの説明を追加",
|
|
"AddIssueTooltip": "イシューを追加...",
|
|
"NewIssueDialogClose": "このダイアログを閉じますか?",
|
|
"NewIssueDialogCloseNote": "すべての変更は失われます",
|
|
"RemoveComponentDialogClose": "コンポーネントを削除しますか?",
|
|
"RemoveComponentDialogCloseNote": "本当にこのコンポーネントを削除しますか?この操作は元に戻せません",
|
|
"Grouping": "グループ化",
|
|
"Ordering": "順序",
|
|
"CompletedIssues": "完了したイシュー",
|
|
"NoGrouping": "グループ化なし",
|
|
"NoAssignee": "担当者なし",
|
|
"LastUpdated": "最終更新日",
|
|
"DueDate": "期日",
|
|
"IssueStartDate": "開始日",
|
|
"GanttDependency": "Dependency",
|
|
"GanttLag": "Lag",
|
|
"Manual": "手動",
|
|
"All": "すべて",
|
|
"PastWeek": "先週",
|
|
"PastMonth": "先月",
|
|
"CopyIssueUrl": "イシューのURLをクリップボードにコピー",
|
|
"CopyIssueId": "イシューIDをクリップボードにコピー",
|
|
"CopyIssueBranch": "Gitブランチ名をクリップボードにコピー",
|
|
"CopyIssueTitle": "イシューのタイトルをクリップボードにコピー",
|
|
"AssetLabel": "アセット",
|
|
"AddToComponent": "コンポーネントに追加\u2026",
|
|
"MoveToComponent": "コンポーネントに移動\u2026",
|
|
"NoComponent": "コンポーネントなし",
|
|
"ComponentLeadTitle": "コンポーネントリーダー",
|
|
"ComponentMembersTitle": "コンポーネントメンバー",
|
|
"ComponentLeadSearchPlaceholder": "コンポーネントリーダーを設定\u2026",
|
|
"ComponentMembersSearchPlaceholder": "コンポーネントメンバーを変更\u2026",
|
|
"MoveToProject": "プロジェクトに移動",
|
|
"Duplicate": "複製",
|
|
"GotoIssues": "イシューへ移動",
|
|
"GotoActive": "アクティブなイシューへ移動",
|
|
"GotoBacklog": "バックログへ移動",
|
|
"GotoComponents": "コンポーネントへ移動",
|
|
"GotoMyIssues": "自分のイシューへ移動",
|
|
"GotoTrackerApplication": "トラッカーアプリケーションに切り替え",
|
|
"CreatedOne": "作成済み",
|
|
"MoveIssues": "イシューを移動",
|
|
"MoveIssuesDescription": "イシューを移動するプロジェクトを選択します",
|
|
"ManageAttributes": "属性を管理",
|
|
"KeepOriginalAttributes": "元の属性を保持",
|
|
"KeepOriginalAttributesTooltip": "元のイシューステータスとコンポーネントは新しいプロジェクトに保持されます",
|
|
"SelectReplacement": "次のアイテムは新しいプロジェクトで利用できません。代替を選択してください。",
|
|
"MissingItem": "不足しているアイテム",
|
|
"Replacement": "代替",
|
|
"Original": "オリジナル",
|
|
"OriginalDescription": "このセクションのアイテムは新しいプロジェクトで作成されます",
|
|
"Relations": "関連",
|
|
"RemoveRelation": "関連を削除...",
|
|
"AddBlockedBy": "ブロックされているとしてマーク...",
|
|
"AddIsBlocking": "ブロックしているとしてマーク...",
|
|
"AddRelatedIssue": "別のイシューを参照...",
|
|
"RelatedIssue": "関連するイシュー {id} - {title}",
|
|
"BlockedIssue": "ブロックされているイシュー {id} - {title}",
|
|
"BlockingIssue": "ブロックしているイシュー {id} - {title}",
|
|
"BlockedBySearchPlaceholder": "ブロックされているとしてマークするイシューを検索...",
|
|
"IsBlockingSearchPlaceholder": "ブロックしているとしてマークするイシューを検索...",
|
|
"RelatedIssueSearchPlaceholder": "参照するイシューを検索...",
|
|
"Blocks": "ブロック",
|
|
"Related": "関連",
|
|
"RelatedIssues": "関連するイシュー",
|
|
"EditIssue": "{title} を編集",
|
|
"EditWorkflowStatuses": "イシューステータスを編集",
|
|
"EditProject": "プロジェクトを編集",
|
|
"DeleteProject": "プロジェクトを削除",
|
|
"ArchiveProjectName": "プロジェクト {name} をアーカイブしますか?",
|
|
"ArchiveProjectConfirm": "このプロジェクトをアーカイブしますか?",
|
|
"DeleteProjectConfirm": "このプロジェクトとすべてのイシューを削除しますか?",
|
|
"ProjectHasIssues": "このプロジェクトには既存のイシューがあります。アーカイブしてもよろしいですか?",
|
|
"ManageWorkflowStatuses": "プロジェクトタイプを管理",
|
|
"AddWorkflowStatus": "イシューステータスを追加",
|
|
"EditWorkflowStatus": "イシューステータスを編集",
|
|
"DeleteWorkflowStatus": "イシューステータスを削除",
|
|
"DeleteWorkflowStatusConfirm": "\"{status}\" ステータスを削除しますか?",
|
|
"DeleteWorkflowStatusErrorDescription": "\"{status}\" ステータスには {count, plural, =1 {1 イシュー} other {# イシュー}} が割り当てられています。移動先のステータスを選択してください",
|
|
"Save": "保存",
|
|
"IncludeItemsThatMatch": "一致するアイテムを含める",
|
|
"AnyFilter": "いずれかのフィルター",
|
|
"AllFilters": "すべてのフィルター",
|
|
"NoDescription": "説明なし",
|
|
"SearchIssue": "タスクを検索...",
|
|
"StatusHistory": "状態履歴",
|
|
"NewSubIssue": "子イシューを追加...",
|
|
"AddLabel": "ラベルを追加",
|
|
"DeleteIssue": "{issueCount, plural, =1 {イシュー} other {イシュー}} を削除",
|
|
"DeleteIssueConfirm": "{issueCount, plural, =1 {イシュー} other {イシュー}}{subIssueCount, plural, =0 {?} =1 { と子イシュー?} other { と子イシュー?}} を削除しますか?",
|
|
"Milestone": "マイルストーン",
|
|
"NoMilestone": "マイルストーンなし",
|
|
"MoveToMilestone": "マイルストーンを選択",
|
|
"Milestones": "マイルストーン",
|
|
"AllMilestones": "すべて",
|
|
"PlannedMilestones": "計画済み",
|
|
"ActiveMilestones": "アクティブ",
|
|
"ClosedMilestones": "完了",
|
|
"AddToMilestone": "マイルストーンに追加",
|
|
"MilestoneNamePlaceholder": "マイルストーン名",
|
|
"NewMilestone": "新しいマイルストーン",
|
|
"CreateMilestone": "作成",
|
|
"MoveAndDeleteMilestone": "イシューを {newMilestone} に移動し、{deleteMilestone} を削除",
|
|
"MoveAndDeleteMilestoneConfirm": "マイルストーンを削除し、イシューを別のマイルストーンに移動しますか?",
|
|
"Estimation": "見積もり",
|
|
"ReportedTime": "消費時間",
|
|
"RemainingTime": "残り時間",
|
|
"TimeSpendReports": "時間消費レポート",
|
|
"TimeSpendReport": "時間",
|
|
"TimeSpendReportAdd": "時間レポートを追加",
|
|
"TimeSpendReportDate": "日付",
|
|
"TimeSpendReportValue": "消費時間",
|
|
"TimeSpendReportValueTooltip": "消費時間 (時間)",
|
|
"TimeSpendReportDescription": "説明",
|
|
"TimeSpendDays": "{value}日",
|
|
"TimeSpendHours": "{value}時間",
|
|
"TimeSpendMinutes": "{value}分",
|
|
"ChildEstimation": "子イシューの見積もり",
|
|
"ChildReportedTime": "子イシューの時間",
|
|
"CapacityValue": "うち {value}日",
|
|
"NewRelatedIssue": "新しい関連イシュー",
|
|
"RelatedIssuesNotFound": "関連イシューが見つかりません",
|
|
"AddedReference": "参照を追加",
|
|
"AddedAsBlocked": "ブロックされているとしてマーク",
|
|
"AddedAsBlocking": "ブロックしているとしてマーク",
|
|
"IssueTemplate": "テンプレート",
|
|
"IssueTemplates": "テンプレート",
|
|
"NewProcess": "新しいテンプレート",
|
|
"SaveProcess": "テンプレートを保存",
|
|
"NoIssueTemplate": "テンプレートなし",
|
|
"TemplateReplace": "新しいテンプレートを適用しますか?",
|
|
"TemplateReplaceConfirm": "すべてのフィールドが新しいテンプレートの値で上書きされます",
|
|
"Apply": "適用",
|
|
"CurrentWorkDay": "現在の営業日",
|
|
"PreviousWorkDay": "前の営業日",
|
|
"TimeReportDayTypeLabel": "時間レポートの日種別を選択",
|
|
"DefaultAssignee": "イシューのデフォルトの担当者",
|
|
"SevenHoursLength": "7時間",
|
|
"EightHoursLength": "8時間",
|
|
"HourLabel": "時間",
|
|
"MinuteLabel": "分",
|
|
"Saved": "保存済み...",
|
|
"CreatedIssue": "イシューを作成しました",
|
|
"CreatedSubIssue": "子イシューを作成しました",
|
|
"ChangeStatus": "ステータスを変更",
|
|
"ConfigLabel": "トラッカー",
|
|
"ConfigDescription": "作業項目を管理し、すべてのジョブを完了するための拡張機能。",
|
|
"NoStatusFound": "一致するステータスが見つかりません",
|
|
"CreateMissingStatus": "不足しているステータスを作成",
|
|
"UnsetParent": "親イシューが設定されなくなります",
|
|
"AllProjects": "すべてのプロジェクト",
|
|
"IssueNotificationTitle": "{issueTitle}",
|
|
"IssueNotificationBody": "{senderName} が更新しました",
|
|
"IssueNotificationChanged": "{senderName} が {property} を変更しました",
|
|
"IssueNotificationChangedProperty": "{senderName} が {property} を \"{newValue}\" に変更しました",
|
|
"IssueNotificationMessage": "{senderName}: {message}",
|
|
"PreviousAssigned": "以前に割り当てられた",
|
|
"IssueAssignedToYou": "あなたに割り当てられました",
|
|
"RelatedIssueTargetDescription": "クラスまたはスペースの関連イシュープロジェクトターゲット",
|
|
"MapRelatedIssues": "関連イシューのデフォルトプロジェクトを構成",
|
|
"DefaultIssueStatus": "デフォルトのイシューステータス",
|
|
"IssueStatus": "ステータス",
|
|
"Extensions": "拡張機能",
|
|
"UnsetParentIssue": "親イシューの設定を解除",
|
|
"ForbidCreateProjectPermission": "プロジェクト作成禁止",
|
|
"ForbidCreateProjectPermissionDescription": "ユーザーが新しいプロジェクトを作成することを禁止します",
|
|
"AllowCreatingIssues": "イシューの作成を許可",
|
|
"ModeSelectorDisabledByFilter": "ステータスはアクティブなフィルターで制御されています。このショートカットを使用するにはステータスフィルターを解除してください。",
|
|
"ShowQuickModeSelector": "クイックフィルター:すべて / アクティブ / バックログ",
|
|
"SearchScopeLabel": "検索対象…",
|
|
"SearchScopeTitle": "タイトルのみ",
|
|
"SearchScopeTitleDescription": "タイトル + 説明",
|
|
"SearchScopeAll": "タイトル + 説明 + コメント",
|
|
"SearchHighlight": "検索結果をハイライト表示",
|
|
"SearchEmptyTitle": "\"{query}\" に一致するイシューが見つかりません",
|
|
"SearchEmptyActiveFilters": "アクティブなフィルター:{filters}",
|
|
"SearchEmptyClearFilters": "フィルターなしで検索",
|
|
"SearchEmptyAllProjects": "すべてのプロジェクトを検索"
|
|
},
|
|
"status": {}
|
|
}
|