@object-ui/i18n 17.2.0 → 17.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +1817 -1
  2. package/README.md +26 -13
  3. package/dist/index.d.ts +3 -1
  4. package/dist/index.js +14 -1
  5. package/dist/locales/ar.d.ts +550 -107
  6. package/dist/locales/ar.js +646 -156
  7. package/dist/locales/de.d.ts +550 -107
  8. package/dist/locales/de.js +661 -178
  9. package/dist/locales/en.d.ts +586 -143
  10. package/dist/locales/en.js +851 -143
  11. package/dist/locales/es.d.ts +550 -107
  12. package/dist/locales/es.js +647 -160
  13. package/dist/locales/fr.d.ts +550 -107
  14. package/dist/locales/fr.js +640 -155
  15. package/dist/locales/index.d.ts +5587 -1157
  16. package/dist/locales/ja.d.ts +550 -107
  17. package/dist/locales/ja.js +632 -149
  18. package/dist/locales/ko.d.ts +550 -107
  19. package/dist/locales/ko.js +638 -156
  20. package/dist/locales/pt.d.ts +550 -107
  21. package/dist/locales/pt.js +639 -157
  22. package/dist/locales/ru.d.ts +550 -107
  23. package/dist/locales/ru.js +650 -156
  24. package/dist/locales/zh.d.ts +588 -145
  25. package/dist/locales/zh.js +629 -145
  26. package/dist/pickLocalized.d.ts +21 -0
  27. package/dist/pickLocalized.js +40 -7
  28. package/dist/provider.d.ts +125 -1
  29. package/dist/provider.js +380 -4
  30. package/dist/useDisplayLocale.d.ts +49 -0
  31. package/dist/useDisplayLocale.js +55 -0
  32. package/dist/useObjectLabel.d.ts +8 -2
  33. package/dist/useObjectLabel.js +28 -8
  34. package/dist/useSafeTranslation.js +67 -3
  35. package/dist/utils/index.d.ts +1 -0
  36. package/dist/utils/index.js +1 -0
  37. package/dist/utils/number-display.d.ts +32 -0
  38. package/dist/utils/number-display.js +32 -0
  39. package/dist/utils/spec-formatters.d.ts +39 -13
  40. package/dist/utils/spec-formatters.js +3 -3
  41. package/package.json +5 -4
@@ -1,4 +1,18 @@
1
1
  const ja = {
2
+ // objectui#4467 — the impersonation banner (app-shell ImpersonationBanner).
3
+ // Raised by `session.impersonatedBy`, so it survives SPA reboots; it names
4
+ // BOTH parties because the audit trail attributes the work to the impersonated
5
+ // user, and the exit states its own failure rather than appearing to succeed.
6
+ impersonation: {
7
+ banner: {
8
+ message: '{{user}} になりすまして操作しています。すべての操作はこのユーザーとして記録されます。',
9
+ startedBy: '管理者 {{admin}} が開始しました。',
10
+ stop: 'なりすましを終了',
11
+ stopping: '終了しています…',
12
+ stopFailed: 'なりすましを終了できませんでした: {{reason}}',
13
+ notRestored: 'サーバーはリクエストを受け付けましたが、管理者セッションを復元しませんでした。まだ {{user}} として操作しています。サインアウトして再度サインインして終了してください。',
14
+ },
15
+ },
2
16
  // objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
3
17
  capability: {
4
18
  label: {
@@ -16,6 +30,26 @@ const ja = {
16
30
  other: 'その他',
17
31
  },
18
32
  },
33
+ // objectui#3546 slice six — PermissionFacetLink の授権ファセット要約。
34
+ // 数量ラベルは appDesigner.objectManager.fieldCount と同じ「{{count}} + 単位」形。
35
+ // 日本語に単複はないため `_one` は基底キーと同値(意図的)。
36
+ perm: {
37
+ facet: {
38
+ none: "なし",
39
+ more: "+{{count}} 件",
40
+ objects: "{{count}} オブジェクト",
41
+ objects_one: "{{count}} オブジェクト",
42
+ fields: "{{count}} フィールドルール",
43
+ fields_one: "{{count}} フィールドルール",
44
+ rls: "{{count}} RLS ポリシー",
45
+ rls_one: "{{count}} RLS ポリシー",
46
+ tabs: "{{count}} タブルール",
47
+ tabs_one: "{{count}} タブルール",
48
+ adminScope: "委任管理を設定済み",
49
+ designInStudio: "Studio でデザイン →",
50
+ designInStudioHint: "Studio でデザイン",
51
+ },
52
+ },
19
53
  lookup: {
20
54
  recentlyUsed: '最近使用したもの',
21
55
  allResults: 'すべての結果',
@@ -46,13 +80,12 @@ const ja = {
46
80
  common: {
47
81
  addToFavorites: "お気に入りに追加",
48
82
  removeFromFavorites: "お気に入りから削除",
49
- loading: "読み込み中...",
83
+ loading: "読み込み中…",
50
84
  save: "保存",
51
85
  cancel: "キャンセル",
52
86
  delete: "削除",
53
87
  edit: "編集",
54
88
  create: "作成",
55
- search: "検索",
56
89
  filter: "フィルター",
57
90
  reset: "リセット",
58
91
  confirm: "確認",
@@ -76,11 +109,20 @@ const ja = {
76
109
  required: "必須",
77
110
  optional: "任意",
78
111
  selectOption: "選択してください",
79
- select: "選択...",
112
+ select: "選択…",
80
113
  openChat: "チャットを開く",
81
114
  closeChat: "チャットを閉じる",
115
+ closePanel: "パネルを閉じる",
116
+ resizeDrawer: "パネル幅を調整",
117
+ itemCount: "{{count}} 件",
118
+ itemCountOne: "{{count}} 件",
82
119
  toggleSidebar: "サイドバーを切り替え",
83
120
  package: "パッケージ",
121
+ done: "完了",
122
+ editInStudio: "Studio で編集",
123
+ record: "レコード",
124
+ retry: "再試行",
125
+ printDialogHint: "ブラウザーの印刷ダイアログを開きます(PDF エクスポートではありません)",
84
126
  },
85
127
  actions: {
86
128
  decisionOutput: {
@@ -103,6 +145,7 @@ const ja = {
103
145
  url: "有効なURLを入力してください",
104
146
  pattern: "{{field}}の形式が正しくありません",
105
147
  formInvalid: "ハイライトされた項目を確認してください: {{fields}}",
148
+ formInvalidJoiner: "、",
106
149
  unique: "{{field}}は一意である必要があります",
107
150
  type: "{{field}}は有効な{{type}}である必要があります",
108
151
  },
@@ -111,6 +154,9 @@ const ja = {
111
154
  submitFailed: "保存できませんでした。もう一度お試しください。",
112
155
  discardTitle: "変更を破棄しますか?",
113
156
  discardMessage: "保存されていない変更があります。このままフォームを閉じると編集内容は失われます。",
157
+ // objectui#4024 — the create/edit dialog's `sr-only` accessible
158
+ // description, used when the form declares no `description` of its own.
159
+ dialogDescriptionFallback: "フォームの項目を入力してから、送信またはキャンセルしてください。",
114
160
  keepEditing: "編集を続ける",
115
161
  discard: "破棄",
116
162
  conflictTitle: "保存の競合",
@@ -127,12 +173,21 @@ const ja = {
127
173
  stepOf: "ステップ {{current}} / {{total}}",
128
174
  createTitle: "{{object}}を作成",
129
175
  editTitle: "{{object}}を編集",
176
+ viewTitle: "{{object}}を表示",
177
+ createTargetOrg: "作成先: {{org}}",
130
178
  saveRecord: "レコードを保存",
131
179
  create: "作成",
132
180
  update: "更新",
133
181
  createSuccess: "{{object}}が作成されました",
134
182
  updateSuccess: "{{object}}が更新されました",
135
183
  deleteSuccess: "{{object}}が削除されました",
184
+ fullscreen: {
185
+ title: "テキストを編集",
186
+ description: "テキスト全体を編集してから、変更を保存またはキャンセルしてください。",
187
+ done: "完了",
188
+ toggle: "{{label}}を全画面で編集",
189
+ textFallback: "テキスト",
190
+ },
136
191
  },
137
192
  fields: {
138
193
  image: {
@@ -170,7 +225,11 @@ const ja = {
170
225
  richText: {
171
226
  format: "フォーマット: {{format}}",
172
227
  basicEditorHint: "リッチテキストエディター(基本)",
173
- placeholder: "テキストを入力...",
228
+ placeholder: "テキストを入力…",
229
+ },
230
+ options: {
231
+ empty: "選択できる項目がありません",
232
+ selectFirst: "まず {{fields}} を選択してください",
174
233
  },
175
234
  objectRef: {
176
235
  loading: "オブジェクトを読み込み中…",
@@ -199,6 +258,13 @@ const ja = {
199
258
  editAsJson: "JSON で編集",
200
259
  useVisualBuilder: "ビジュアルビルダーを使用",
201
260
  },
261
+ tags: {
262
+ placeholder: "入力してEnterキーで追加…",
263
+ },
264
+ textarea: {
265
+ characterCount: "文字数: {{max}} 文字中 {{count}} 文字",
266
+ charactersRemaining: "残り {{count}} 文字",
267
+ },
202
268
  },
203
269
  table: {
204
270
  rowsPerPage: "1ページの行数",
@@ -225,7 +291,7 @@ const ja = {
225
291
  saveAll: "すべて保存 ({{count}})",
226
292
  addRecord: "レコードを追加",
227
293
  open: "開く",
228
- search: "検索...",
294
+ search: "検索…",
229
295
  modified: "{{count}} 行が変更されました",
230
296
  saveFailed: '保存に失敗しました',
231
297
  selected: "{{count}} 件選択中",
@@ -269,7 +335,7 @@ const ja = {
269
335
  delete: "削除",
270
336
  export: "エクスポート",
271
337
  exportAs: "{{format}}でエクスポート",
272
- loading: "グリッドを読み込み中...",
338
+ loading: "グリッドを読み込み中…",
273
339
  errorLoading: "グリッドの読み込みエラー",
274
340
  pullToRefresh: "引っ張って更新",
275
341
  refreshing: "更新中…",
@@ -280,6 +346,22 @@ const ja = {
280
346
  yes: "はい",
281
347
  no: "いいえ",
282
348
  systemFields: "システム",
349
+ // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
350
+ // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
351
+ // pack controls its own separator and word order.
352
+ summary: {
353
+ pattern: "{{label}}: {{value}}",
354
+ count: "件数",
355
+ countEmpty: "空欄",
356
+ countFilled: "入力済み",
357
+ countUnique: "一意",
358
+ percentEmpty: "空欄",
359
+ percentFilled: "入力済み",
360
+ sum: "合計",
361
+ avg: "平均",
362
+ min: "最小",
363
+ max: "最大",
364
+ },
283
365
  toolbar: {
284
366
  densityMode: "密度",
285
367
  densityCompact: "コンパクト",
@@ -458,6 +540,8 @@ const ja = {
458
540
  loadErrorUnauthorizedMessage: "セッションの有効期限が切れたか、サインアウトしています。再度サインインしてください。",
459
541
  loadErrorRejectedTitle: "このビューのクエリは拒否されました",
460
542
  loadErrorRejectedMessage: "サーバーはこのビューのフィルターまたはクエリ設定を処理できませんでした。フィルターを解除すると解消することがほとんどです。ビューがこの状態で保存されている場合は、管理者による修正が必要です。",
543
+ loadErrorApiDisabledTitle: "このオブジェクトは API から利用できません",
544
+ loadErrorApiDisabledMessage: "このオブジェクトが API に公開されていないため、このページはレコードを読み込めません。これは権限ではなくオブジェクト自体の設定です。管理者が API アクセスを有効にするまで、このページは動作しません。",
461
545
  retry: "再試行",
462
546
  managedBy: {
463
547
  system: {
@@ -482,7 +566,7 @@ const ja = {
482
566
  },
483
567
  },
484
568
  refresh: "更新",
485
- loading: 'Loading records...',
569
+ loading: "レコードを読み込み中…",
486
570
  recordCount: "{{count}} 件のレコード",
487
571
  recordCountOne: "{{count}} 件のレコード",
488
572
  addRecord: "レコードを追加",
@@ -494,7 +578,8 @@ const ja = {
494
578
  sort: "並べ替え",
495
579
  sortRecords: "レコードを並べ替え",
496
580
  sortByIdSuffix: "(ID順)",
497
- sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称を保持する数式項目を追加してください。",
581
+ sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称をこのオブジェクトに非正規化し、参照元が変更されたときに書き込まれる保存項目として持たせたうえで、その項目で並べ替えてください。数式項目は使えません。数式は仮想的で、対応する列が保存されないため、サーバーは並べ替えを拒否します。",
582
+ resetSortToDefault: "ビューの既定の並び順に戻す",
498
583
  group: "グループ",
499
584
  groupBy: "グループ化",
500
585
  export: "エクスポート",
@@ -552,13 +637,16 @@ const ja = {
552
637
  },
553
638
  kanban: {
554
639
  uncategorized: "未分類",
640
+ columns: "カラム",
555
641
  addCard: "カードを追加",
556
642
  addColumn: "カラムを追加",
557
643
  moveCard: "カードを移動",
558
644
  deleteCard: "カードを削除",
559
645
  deleteColumn: "カラムを削除",
560
646
  noCards: "カードがありません",
561
- cardTitlePlaceholder: "カードのタイトルを入力...",
647
+ cardTitlePlaceholder: "カードのタイトルを入力…",
648
+ requiredFieldsTitle: "必須項目を入力してください",
649
+ requiredFieldsDescription: "この移動により以下の項目が必須になります。入力して続行してください。",
562
650
  },
563
651
  timeline: {
564
652
  bucket: {
@@ -571,6 +659,13 @@ const ja = {
571
659
  noDate: "日付なし",
572
660
  unassigned: "未割当",
573
661
  },
662
+ scale: {
663
+ week: "第{{n}}週",
664
+ quarter: "{{year}}年第{{quarter}}四半期",
665
+ },
666
+ gantt: {
667
+ rowLabel: "項目",
668
+ },
574
669
  },
575
670
  gantt: {
576
671
  viewMode: {
@@ -617,6 +712,18 @@ const ja = {
617
712
  ff: "終了 → 終了",
618
713
  sf: "開始 → 終了",
619
714
  },
715
+ linkEnd: {
716
+ start: "開始",
717
+ end: "終了",
718
+ },
719
+ link: {
720
+ rejected: {
721
+ self: "タスクを自分自身に依存させることはできません。",
722
+ locked: "この行はロックされているため、依存関係を追加できません。",
723
+ group: "サマリー行は依存先にできません。配下のタスクに接続してください。",
724
+ cycle: "この接続は循環依存になります。",
725
+ },
726
+ },
620
727
  conflict: {
621
728
  title: "スケジュールの競合",
622
729
  body: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
@@ -625,8 +732,8 @@ const ja = {
625
732
  },
626
733
  autoScheduleDlg: {
627
734
  title: "自動スケジュール",
628
- body: "依存リンクを満たすため {count} 件のタスクを後ろにずらしますか?",
629
- skipped: "ロックされた {count} 件のタスクもリンクに違反していますが、スキップされました。",
735
+ body: "依存リンクを満たすため {{count}} 件のタスクを後ろにずらしますか?",
736
+ skipped: "ロックされた {{count}} 件のタスクもリンクに違反していますが、スキップされました。",
630
737
  confirm: "適用",
631
738
  cancel: "キャンセル",
632
739
  none: "依存関係はすべて満たされています — 再スケジュールの必要はありません。",
@@ -637,6 +744,12 @@ const ja = {
637
744
  over: "過負荷",
638
745
  empty: "割り当てるタスクがありません。",
639
746
  },
747
+ quickFilter: {
748
+ all: "すべて",
749
+ clear: "フィルターをクリア",
750
+ empty: "選択肢がありません",
751
+ resultSummary: "{shown} / {total} 件のタスクを表示",
752
+ },
640
753
  readOnly: "読み取り専用",
641
754
  readOnlyHint: "このビューでは編集できません。",
642
755
  lockedHint: "編集権限がありません",
@@ -657,6 +770,7 @@ const ja = {
657
770
  exportPng: "PNG で書き出す",
658
771
  exportPdf: "PDF で書き出す",
659
772
  saveLayout: "レイアウトを保存",
773
+ refresh: "更新",
660
774
  undo: "元に戻す",
661
775
  redo: "やり直す",
662
776
  prevPeriod: "前の期間",
@@ -697,11 +811,11 @@ const ja = {
697
811
  defaultBadge: "デフォルト",
698
812
  tabActionsFor: "{{name}} のビュー操作",
699
813
  readonlyAriaLabel: "読み取り専用ビュー",
700
- readonlyTooltip: "システムビュー — 複製してカスタマイズしてください。",
814
+ readonlyTooltip: "システムビュー — コードで定義され、読み取り専用です。",
701
815
  },
702
816
  designer: {
703
- undo: 'Undo',
704
- redo: 'Redo',
817
+ undo: "元に戻す",
818
+ redo: "やり直す",
705
819
  },
706
820
  detail: {
707
821
  editInlineHint: "ダブルクリックで編集",
@@ -719,6 +833,15 @@ const ja = {
719
833
  viewHistory: "履歴を表示",
720
834
  delete: "削除",
721
835
  moreActions: "その他の操作",
836
+ addReaction: "リアクションを追加",
837
+ pageHeaderActions: "ページヘッダーの操作",
838
+ emojiPicker: "絵文字ピッカー",
839
+ reactionCount: "{{emoji}} {{count}} 件のリアクション",
840
+ reactionCountOne: "{{emoji}} {{count}} 件のリアクション",
841
+ recordDetail: "レコード詳細",
842
+ recordDetailWithLabel: "{{label}}の詳細",
843
+ openAsFullPage: "フルページで開く",
844
+ recordDetailOverlay: "{{title}} のレコード詳細オーバーレイ。",
722
845
  addToFavorites: "お気に入りに追加",
723
846
  removeFromFavorites: "お気に入りから削除",
724
847
  previousRecord: "前のレコード",
@@ -732,13 +855,15 @@ const ja = {
732
855
  relatedRecords: "{{count}} 件のレコード",
733
856
  relatedRecordOne: "{{count}} 件のレコード",
734
857
  noRelatedRecords: "関連レコードが見つかりません",
735
- loading: "読み込み中...",
858
+ loading: "読み込み中…",
736
859
  copyToClipboard: "クリップボードにコピー",
737
860
  copied: "コピーしました!",
738
861
  deleteConfirmation: "このレコードを削除してもよろしいですか?",
862
+ deleted: "レコードを削除しました",
739
863
  editRecord: "レコードを編集",
740
864
  viewAll: "すべて表示",
741
865
  new: "新規",
866
+ add: "追加",
742
867
  emptyValue: "—",
743
868
  activity: "アクティビティ",
744
869
  editRow: "編集",
@@ -749,7 +874,7 @@ const ja = {
749
874
  nextPage: "次へ",
750
875
  pageOf: "ページ {{current}} / {{total}}",
751
876
  sortBy: "並べ替え",
752
- filterPlaceholder: "フィルター...",
877
+ filterPlaceholder: "フィルター…",
753
878
  highlightFields: "主要フィールド",
754
879
  comments: "コメント",
755
880
  searchComments: "コメントを検索…",
@@ -814,6 +939,7 @@ const ja = {
814
939
  loadMore: "さらに読み込む",
815
940
  edited: "(編集済み)",
816
941
  via: "{{source}} 経由",
942
+ viewSource: "ソースを表示",
817
943
  replyCount: "{{count}} 件の返信",
818
944
  replyCountPlural: "{{count}} 件の返信",
819
945
  replyPlaceholder: "返信…",
@@ -826,14 +952,15 @@ const ja = {
826
952
  saving: "保存中…",
827
953
  lockedByApproval: "承認のためロック中",
828
954
  lockedTooltip: "このレコードには承認待ちのリクエストがあります。編集はロックされています",
829
- writeStrippedTitle: "保存されなかった項目があります",
830
- writeStrippedReadonly: "次の項目は読み取り専用のため保存されませんでした: {{fields}}",
831
- writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため保存されませんでした: {{fields}}",
955
+ writeStrippedTitle: "保存しました(一部の項目は反映されていません)",
956
+ writeStrippedReadonly: "次の項目は読み取り専用のため反映されませんでした: {{fields}}",
957
+ writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため反映されませんでした: {{fields}}",
832
958
  approvalPendingEditable: "承認中 · 編集可能",
833
959
  approvalPendingTooltip: "このレコードには承認待ちのリクエストがありますが、このステップでは編集できます",
834
960
  approvalProgress: "承認 — {{need}} 件中 {{got}} 件",
835
961
  approvalProgressGroups: "合議 — {{need}} グループ中 {{got}} グループ",
836
962
  approvalProgressLabel: "承認の進捗",
963
+ approvalsPanelTitle: "承認",
837
964
  cancelApproval: "承認を取り消す",
838
965
  cancelApprovalInFlight: "取り消し中…",
839
966
  cancelApprovalTooltip: "承認待ちリクエストを取り消してレコードのロックを解除する",
@@ -854,13 +981,18 @@ const ja = {
854
981
  concurrentUpdateReload: "最新を読み込む",
855
982
  concurrentUpdateOverwrite: "上書きする",
856
983
  concurrentUpdateCancel: "キャンセル",
984
+ concurrentUpdateRecordLabel: "このレコード",
857
985
  openInNewTab: "新しいタブで開く",
858
986
  history: "履歴",
987
+ historyEmpty: "履歴はまだありません",
859
988
  deleteRowTitle: "レコードを削除",
860
989
  createdBy: "作成者",
861
990
  updatedBy: "更新者",
862
991
  created: "作成",
863
992
  updated: "更新",
993
+ // objectui#3863 — base key. ja has a single plural category (`other`), so this
994
+ // slot is unreachable here and equals `_other` for key-set parity.
995
+ showEmptyRelated: "+ {{count}} 件(空)",
864
996
  showEmptyRelated_one: "+ {{count}} 件(空)",
865
997
  showEmptyRelated_other: "+ {{count}} 件(空)",
866
998
  copyEmail: "メールをコピー",
@@ -872,7 +1004,8 @@ const ja = {
872
1004
  },
873
1005
  chart: {
874
1006
  noData: "チャートデータがありません",
875
- loading: "チャート読み込み中...",
1007
+ loading: "チャート読み込み中…",
1008
+ nullCategory: "(未設定)",
876
1009
  },
877
1010
  map: {
878
1011
  searchLocations: "場所を検索…",
@@ -894,8 +1027,8 @@ const ja = {
894
1027
  properties: "プロパティ",
895
1028
  connections: "接続",
896
1029
  quickConnect: "クイック接続",
897
- fromPlaceholder: "開始...",
898
- toPlaceholder: "終了...",
1030
+ fromPlaceholder: "開始…",
1031
+ toPlaceholder: "終了…",
899
1032
  connect: "接続",
900
1033
  label: "ラベル",
901
1034
  type: "タイプ",
@@ -943,6 +1076,7 @@ const ja = {
943
1076
  },
944
1077
  dashboard: {
945
1078
  noRows: "行がありません",
1079
+ loading: "読み込み中…",
946
1080
  pickMeasures: "このデータセットウィジェットの指標(値)を選択してください。",
947
1081
  datasetUnsupported: "このデータソースはデータセットクエリに対応していません。",
948
1082
  details: "詳細",
@@ -1200,6 +1334,7 @@ const ja = {
1200
1334
  },
1201
1335
  },
1202
1336
  console: {
1337
+ saveAdvisoryTitle: "保存しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1203
1338
  settingsHub: {
1204
1339
  title: "設定",
1205
1340
  subtitle: "ワークスペース、連携、機能フラグを設定します。",
@@ -1266,7 +1401,7 @@ const ja = {
1266
1401
  shareTitle: "この会話を共有",
1267
1402
  shareDisabledTitle: "共有するにはチャットを開始してください",
1268
1403
  newChat: "新規",
1269
- searchChats: "チャットを検索...",
1404
+ searchChats: "チャットを検索…",
1270
1405
  noChatsYet: "チャットはまだありません",
1271
1406
  noChatsDescription: "新しい会話を開始するとここに表示されます。",
1272
1407
  noMatchingChats: "一致するチャットはありません。",
@@ -1275,18 +1410,18 @@ const ja = {
1275
1410
  deleteConversation: "会話を削除",
1276
1411
  saveRename: "名前を保存",
1277
1412
  cancelRename: "名前の変更をキャンセル",
1278
- loadingHistory: "会話履歴を読み込んでいます...",
1413
+ loadingHistory: "会話履歴を読み込んでいます…",
1279
1414
  conversationReady: "会話の準備ができました",
1280
1415
  preparingConversation: "新しい会話を準備しています",
1281
1416
  offlineDemoMode: "オフラインデモモード — エージェント一覧は利用できません",
1282
1417
  sendFailedRateLimited: "送信の間隔が短すぎます。メッセージは下に保持されています — 少し待ってから再試行してください。",
1283
1418
  sendFailedGeneric: "メッセージを送信できませんでした。下に保持されています — もう一度お試しください。",
1284
- askAgent: "{{agent}} に質問...",
1419
+ askAgent: "{{agent}} に質問…",
1285
1420
  assistant: "アシスタント",
1286
1421
  liveCanvas: "ライブプレビュー — {{app}}(ドラフト)",
1287
1422
  liveCanvasUnlisted: "ライブアプリ — {{app}}(公開するまで非掲載)",
1288
- loadingAgents: "エージェントを読み込んでいます...",
1289
- askAnything: "何でも質問してください...",
1423
+ loadingAgents: "エージェントを読み込んでいます…",
1424
+ askAnything: "何でも質問してください…",
1290
1425
  emptyTitle: "会話を始める",
1291
1426
  emptyDescription: "何でも質問してください — アシスタントは現在のアプリのコンテキストを参照できます。",
1292
1427
  switchAssistant: "アシスタントを切り替え",
@@ -1389,9 +1524,60 @@ const ja = {
1389
1524
  createSeed: "サンプルデータを生成",
1390
1525
  createPackage: "アプリパッケージを作成",
1391
1526
  },
1527
+ // objectui#3546 slice four — the AI console surfaces: the /ai chat page's app switcher,
1528
+ // connection banner and plan/publish cards, the ChatDock chrome, and the
1529
+ // conversation-list date buckets. `group.*` is the template-key family
1530
+ // `console.ai.group.${key}` (ConversationsSidebar), enumerated from the
1531
+ // ConversationGroupKey union — all five members, no wildcard.
1532
+ collapseToDock: "サイドパネルに収める",
1533
+ switchApp: "アプリを切り替え",
1534
+ switchAppLabel: "アプリ別のビルド会話",
1535
+ newApp: "新しいアプリ",
1536
+ connectionWaiting: "サーバーを待っています…",
1537
+ connectionStalled: "まだ処理しています…",
1538
+ connectionOffline: "接続が切断されました — 再接続しています…",
1539
+ designingPlan: "アプリを設計しています…",
1540
+ designingPlanHint: {
1541
+ data: "追跡するデータを整理しています…",
1542
+ objects: "オブジェクトとそのフィールドを形にしています…",
1543
+ relations: "関連レコードを接続しています…",
1544
+ lookups: "リレーションと参照フィールドを設定しています…",
1545
+ views: "画面とビューを計画しています…",
1546
+ forms: "フォームとリストを配置しています…",
1547
+ defaults: "妥当な既定値と検証を追加しています…",
1548
+ dashboard: "追跡用のダッシュボードを描いています…",
1549
+ review: "構造全体に矛盾がないか再確認しています…",
1550
+ finalize: "プランをまとめています…",
1551
+ },
1552
+ planBuilding: "ビルド中…",
1553
+ planBuilt: "ビルド済み",
1554
+ planDeferred: "まだビルドされていません",
1555
+ planReady: "プランの準備ができました。今すぐビルドするか、調整したい点を教えてください。",
1556
+ published: "公開しました",
1557
+ publishFailed: "公開に失敗しました",
1558
+ unavailableTitle: "AI アシスタントを利用できません",
1559
+ unavailableDescription: "このデプロイでは AI アシスタントが有効になっていません。それ以外の機能は通常どおり動作します。",
1560
+ unavailableError: "AI サービスに接続できませんでした。一時的にオフラインの可能性があります — 再試行するか、ホームに戻ってください。",
1561
+ unavailableRetry: "再試行",
1562
+ unavailableHome: "ホームに戻る",
1563
+ dock: {
1564
+ title: "アシスタント",
1565
+ description: "AI アシスタントのチャット",
1566
+ resize: "チャットのサイズを変更",
1567
+ collapse: "チャットを折りたたむ",
1568
+ maximize: "フルページで開く",
1569
+ open: "アシスタントを開く",
1570
+ },
1571
+ group: {
1572
+ today: "今日",
1573
+ yesterday: "昨日",
1574
+ previous7Days: "過去 7 日間",
1575
+ previous30Days: "過去 30 日間",
1576
+ older: "それ以前",
1577
+ },
1392
1578
  },
1393
1579
  title: "ObjectStack コンソール",
1394
- initializing: "アプリケーションを初期化中...",
1580
+ initializing: "アプリケーションを初期化中…",
1395
1581
  loadingHint: "新しい環境のセットアップには少し時間がかかることがあります。",
1396
1582
  breadcrumb: {
1397
1583
  dashboards: "ダッシュボード",
@@ -1399,6 +1585,31 @@ const ja = {
1399
1585
  reports: "レポート",
1400
1586
  system: "システム",
1401
1587
  },
1588
+ // objectui#4024 — the single-namespace settings screen. Its sibling
1589
+ // `settingsHub` above already resolved through this pack; the view was the
1590
+ // one file still carrying English literals.
1591
+ settingsView: {
1592
+ backToHub: "すべての設定",
1593
+ back: "戻る",
1594
+ noNamespace: "名前空間が選択されていません。",
1595
+ loadError: "設定の読み込みに失敗しました",
1596
+ saved: "設定を保存しました",
1597
+ saveFailed: "保存に失敗しました",
1598
+ lockedByEnv: "環境によりロックされています: {{key}}",
1599
+ lockedByEnvNoKey: "環境によりロックされています",
1600
+ actionSucceeded: "操作に成功しました",
1601
+ actionFailed: "操作に失敗しました",
1602
+ discard: "破棄",
1603
+ saveChanges: "変更を保存",
1604
+ unsavedCount: "未保存の変更 {{count}} 件",
1605
+ unsavedCount_one: "未保存の変更 {{count}} 件",
1606
+ unsavedCount_other: "未保存の変更 {{count}} 件",
1607
+ cryptoRefusalTitle: "このデプロイメントはシークレットを暗号化できません",
1608
+ cryptoRefusalSubjectSuffix: "は暗号化対象として宣言されているため、何も書き込まれませんでした。",
1609
+ cryptoRefusalNoSubject: "暗号化対象として宣言された値は拒否され、何も書き込まれませんでした。",
1610
+ cryptoRefusalToast: "シークレットを暗号化できません: {{subject}}",
1611
+ cryptoRefusalToastNoSubject: "シークレットを暗号化できません",
1612
+ },
1402
1613
  loadingSteps: {
1403
1614
  connecting: "データソースに接続中",
1404
1615
  loadingConfig: "設定を読み込み中",
@@ -1414,6 +1625,13 @@ const ja = {
1414
1625
  retry: "再試行",
1415
1626
  retrying: "再試行中…",
1416
1627
  },
1628
+ serverAction: {
1629
+ openingTitle: "開いています…",
1630
+ openingBody: "開いています…しばらくお待ちください。",
1631
+ popupBlockedTitle: "ポップアップがブロックされました",
1632
+ popupBlockedDescription: "ブラウザが新しいタブを開くのをブロックしました。",
1633
+ popupBlockedAction: "新しいタブで開く",
1634
+ },
1417
1635
  shortcuts: {
1418
1636
  title: "キーボードショートカット",
1419
1637
  description: "利用可能なすべてのキーボードショートカットのクイックリファレンス。",
@@ -1421,6 +1639,7 @@ const ja = {
1421
1639
  general: "一般",
1422
1640
  navigation: "ナビゲーション",
1423
1641
  dataViews: "データビュー",
1642
+ aiChat: "AI アシスタント",
1424
1643
  preferences: "設定",
1425
1644
  },
1426
1645
  openCommandPalette: "コマンドパレットを開く",
@@ -1431,11 +1650,13 @@ const ja = {
1431
1650
  createRecord: "新しいレコードを作成",
1432
1651
  refreshData: "データを更新",
1433
1652
  editRecord: "選択したレコードを編集",
1653
+ newChat: "新しいチャット",
1654
+ toggleChatsList: "チャット一覧を切り替え",
1434
1655
  toggleDarkMode: "ダークモードを切り替え",
1435
1656
  },
1436
1657
  commandPalette: {
1437
1658
  title: "コマンドパレット",
1438
- placeholder: "コマンドを入力または検索...",
1659
+ placeholder: "コマンドを入力または検索…",
1439
1660
  noResults: "結果が見つかりません。",
1440
1661
  objects: "オブジェクト",
1441
1662
  dashboards: "ダッシュボード",
@@ -1461,6 +1682,12 @@ const ja = {
1461
1682
  goHome: "ホームに戻る",
1462
1683
  errorDetails: "エラー詳細(開発モードのみ)",
1463
1684
  },
1685
+ // objectui#3546 slice four — the console's catch-all route (AppContent `RouteNotFound`).
1686
+ notFound: {
1687
+ title: "ページが見つかりません",
1688
+ description: "アクセスした URL は、このアプリのどのビューにも一致しません。",
1689
+ back: "戻る",
1690
+ },
1464
1691
  theme: {
1465
1692
  toggle: "テーマを切り替え",
1466
1693
  light: "ライト",
@@ -1476,11 +1703,15 @@ const ja = {
1476
1703
  viewNameHelp: "マシンキー(snake_case)。タイトルから自動入力されます — 必要に応じて編集してください。",
1477
1704
  viewNameRequired: "キーを入力してください(英小文字、数字、アンダースコア)。ラテン文字以外のタイトルでは自動入力されません。",
1478
1705
  viewNameInvalid: "英小文字、数字、アンダースコアを使用し、先頭は文字かアンダースコアにしてください。",
1479
- systemViewReadonly: 'System view defined in code - duplicate to customize.',
1480
- expandToPage: 'Open as full page',
1706
+ systemViewReadonly: "システムビューはコードで定義されており、読み取り専用です。",
1707
+ cannotEditMetaView: "このビューはコードで定義された組み込みビューのため、変更できません。",
1708
+ cannotDeleteMetaView: "このビューはコードで定義された組み込みビューのため、削除できません。",
1709
+ expandToPage: "フルページで開く",
1481
1710
  objectNotFound: "オブジェクトが見つかりません",
1482
1711
  objectNotFoundDescription: "オブジェクト「{{objectName}}」は現在の設定に存在しません。",
1483
1712
  objectNotFoundHint: "アプリのナビゲーション設定を確認するか、サイドバーから別のオブジェクトを選択してください。",
1713
+ filterOrNotSavable: "このフィルターは条件間に OR を使用しており、保存済みビューにはまだ保存できません。現在のリストには適用されています。ビューに保存するには OR グループを解除してください。",
1714
+ filterNestedNotSavable: "このフィルターはネストされた条件グループを使用しており、保存済みビューには保存できません。ビューに保存するには単一の条件リストに展開してください。",
1484
1715
  allRecords: "すべてのレコード",
1485
1716
  exitDesignMode: "デザインモードを終了",
1486
1717
  enterDesignMode: "デザインモードに入る",
@@ -1507,7 +1738,7 @@ const ja = {
1507
1738
  exportPrintHint: "エクスポート形式、印刷、レコード数の表示",
1508
1739
  showAllFields: "すべて表示",
1509
1740
  hideAllFields: "すべて非表示",
1510
- searchFields: "フィールドを検索...",
1741
+ searchFields: "フィールドを検索…",
1511
1742
  title: "タイトル",
1512
1743
  description: "説明",
1513
1744
  data: "データ",
@@ -1546,7 +1777,7 @@ const ja = {
1546
1777
  longitudeField: "経度フィールド",
1547
1778
  imageField: "画像フィールド",
1548
1779
  dateField: "日付フィールド",
1549
- selectField: "フィールドを選択...",
1780
+ selectField: "フィールドを選択…",
1550
1781
  gridOptionsHint: "グリッドビューは上記で設定された列を使用します。",
1551
1782
  groupBy: "グループ化",
1552
1783
  prefixField: "プレフィックスフィールド",
@@ -1609,7 +1840,7 @@ const ja = {
1609
1840
  latitudeFieldHelp: "緯度座標を提供するフィールド(地理フィールドのみ)。",
1610
1841
  longitudeFieldHelp: "経度座標を提供するフィールド(地理フィールドのみ)。",
1611
1842
  imageFieldHelp: "ギャラリーのカバーはこの画像または添付フィールドから取得されます。",
1612
- selectOption: "選択...",
1843
+ selectOption: "選択…",
1613
1844
  noEligibleFieldForType: "このタイプに適したフィールドがありません。最初にオブジェクトに追加してください。",
1614
1845
  viewTypeUnavailable: "このオブジェクトには「{{field}}」として機能するフィールドがありません。",
1615
1846
  viewTypeUnavailableShort: "このオブジェクトではサポートされていません。",
@@ -1659,7 +1890,7 @@ const ja = {
1659
1890
  ufDropdown: "ドロップダウン",
1660
1891
  ufTabs: "タブ",
1661
1892
  ufToggle: "トグル",
1662
- ufAddField: "+ フィルターフィールドを追加...",
1893
+ ufAddField: "+ フィルターフィールドを追加…",
1663
1894
  ufNoFields: "利用可能なフィールドがありません",
1664
1895
  ufAddTab: "+ タブを追加",
1665
1896
  ufTabLabel: "ラベル",
@@ -1719,7 +1950,7 @@ const ja = {
1719
1950
  passwordPlaceholder: "パスワードを入力",
1720
1951
  forgotPasswordText: "パスワードをお忘れですか?",
1721
1952
  submitButton: "サインイン",
1722
- submittingButton: "サインイン中...",
1953
+ submittingButton: "サインイン中…",
1723
1954
  noAccountText: "アカウントをお持ちでないですか?",
1724
1955
  signUpText: "新規登録",
1725
1956
  errors: {
@@ -1727,6 +1958,18 @@ const ja = {
1727
1958
  invalidCredentials: "メールアドレスまたはパスワードが正しくありません。再試行してください。",
1728
1959
  emailNotVerified: "サインインする前にメールアドレスを確認してください。",
1729
1960
  },
1961
+ // objectui#3546 slice three — phone/OTP sign-in. `{seconds}` is LoginForm's own
1962
+ // literal `.replace()` hole, not i18next interpolation: keep the single braces.
1963
+ emailOrPhoneLabel: "メールアドレスまたは電話番号",
1964
+ emailOrPhonePlaceholder: "name@example.com または +1 555 000 0000",
1965
+ phoneLabel: "電話番号",
1966
+ phonePlaceholder: "+1 555 000 0000",
1967
+ otpCodeLabel: "確認コード",
1968
+ otpCodePlaceholder: "6 桁のコード",
1969
+ sendOtpButton: "コードを取得",
1970
+ resendOtpCountdownText: "{seconds} 秒後に再送信",
1971
+ usePhoneOtpText: "確認コードでサインイン",
1972
+ usePasswordSignInText: "パスワードでサインインする",
1730
1973
  },
1731
1974
  register: {
1732
1975
  title: "アカウントを作成",
@@ -1742,7 +1985,7 @@ const ja = {
1742
1985
  passwordMismatchError: "パスワードが一致しません",
1743
1986
  passwordTooShortError: "パスワードは8文字以上必要です",
1744
1987
  submitButton: "アカウント作成",
1745
- submittingButton: "アカウント作成中...",
1988
+ submittingButton: "アカウント作成中…",
1746
1989
  hasAccountText: "すでにアカウントをお持ちですか?",
1747
1990
  signInText: "サインイン",
1748
1991
  errors: {
@@ -1763,12 +2006,26 @@ const ja = {
1763
2006
  emailLabel: "メールアドレス",
1764
2007
  emailPlaceholder: "name@example.com",
1765
2008
  submitButton: "リセットリンクを送信",
1766
- submittingButton: "送信中...",
2009
+ submittingButton: "送信中…",
1767
2010
  successTitle: "メールをご確認ください",
1768
2011
  successDescription: "{{email}} にパスワードリセットリンクを送信しました。受信箱をご確認ください。",
1769
2012
  backToSignInText: "サインインに戻る",
1770
2013
  rememberPasswordText: "パスワードを覚えていますか?",
1771
2014
  signInText: "サインイン",
2015
+ // objectui#3546 slice three — the SMS reset branch of the same form.
2016
+ phoneLabel: "電話番号",
2017
+ phonePlaceholder: "+1 555 000 0000",
2018
+ otpCodeLabel: "確認コード",
2019
+ otpCodePlaceholder: "6 桁のコード",
2020
+ sendOtpButton: "コードを取得",
2021
+ resendOtpCountdownText: "{seconds} 秒後に再送信",
2022
+ newPasswordLabel: "新しいパスワード",
2023
+ newPasswordPlaceholder: "新しいパスワードを入力",
2024
+ resetButton: "パスワードをリセット",
2025
+ usePhoneResetText: "SMS コードでリセット",
2026
+ useEmailResetText: "メールでリセットする",
2027
+ phoneSuccessTitle: "パスワードをリセットしました",
2028
+ phoneSuccessDescription: "パスワードをリセットしました。新しいパスワードでサインインできます。",
1772
2029
  },
1773
2030
  resetPassword: {
1774
2031
  title: "新しいパスワードを設定",
@@ -1807,6 +2064,8 @@ const ja = {
1807
2064
  backToLogin: "ログインに戻る",
1808
2065
  checkSpam: "メールが届きませんか?スパムフォルダーを確認するか、サポートに連絡してください。",
1809
2066
  or: "または",
2067
+ // objectui#3546 slice three.
2068
+ resendUnavailable: "この環境ではメール配信が設定されていない可能性があります。問題が続く場合はサポートに連絡してください。",
1810
2069
  },
1811
2070
  setup: {
1812
2071
  welcomeTitle: "ObjectStackへようこそ",
@@ -1845,6 +2104,9 @@ const ja = {
1845
2104
  invalidDescription: "URLにデバイスコードが指定されていません。",
1846
2105
  loading: "読み込み中…",
1847
2106
  cancel: "キャンセル",
2107
+ // objectui#3546 slice three — device-authorization plugin switched off.
2108
+ disabledTitle: "デバイス認証が有効になっていません",
2109
+ disabledDescription: "このデプロイメントではデバイス認証が有効になっていないため、ここでこのデバイスを承認できません。",
1848
2110
  },
1849
2111
  shell: {
1850
2112
  tenantHostHint: "このワークスペースにサインインしています",
@@ -1884,6 +2146,29 @@ const ja = {
1884
2146
  },
1885
2147
  },
1886
2148
  },
2149
+ // objectui#3546 slice three — the /oauth/consent screen.
2150
+ oauth: {
2151
+ consent: {
2152
+ title: "{{appName}} がアカウントへのアクセスを求めています",
2153
+ request: "{{appName}} が許可を求めています{{suffix}}。",
2154
+ unknownApp: "あるアプリケーション",
2155
+ willAllow: "このアプリは次のことができます:",
2156
+ scope: {
2157
+ openid: "本人確認を行う",
2158
+ profile: "基本プロフィール(名前、画像)を読み取る",
2159
+ email: "メールアドレスを読み取る",
2160
+ offlineAccess: "サインインしたままにする(アクセスの更新)",
2161
+ },
2162
+ deny: "拒否",
2163
+ authorize: "許可",
2164
+ submitting: "許可中…",
2165
+ granted: "アクセスを許可しました",
2166
+ denied: "アクセスが拒否されました",
2167
+ noRedirect: "サーバーからリダイレクト URL が返されませんでした。",
2168
+ failed: "同意に失敗しました",
2169
+ footer: "アクセス権はアカウント設定からいつでも取り消せます。",
2170
+ },
2171
+ },
1887
2172
  profile: {
1888
2173
  title: "プロフィール",
1889
2174
  subtitle: "アカウント設定を管理します",
@@ -1945,6 +2230,8 @@ const ja = {
1945
2230
  invite: "メンバーを招待",
1946
2231
  members: "メンバー",
1947
2232
  settings: "ワークスペース設定",
2233
+ multiOrgDisabled: "このインスタンスでは新しい組織の作成が無効です。",
2234
+ createFailed: 'ワークスペースの作成に失敗しました',
1948
2235
  },
1949
2236
  help: {
1950
2237
  onThisPage: "このページの内容",
@@ -1955,7 +2242,7 @@ const ja = {
1955
2242
  },
1956
2243
  sidebar: {
1957
2244
  packageManagement: "パッケージ管理",
1958
- searchNavigation: "ナビゲーションを検索...",
2245
+ searchNavigation: "ナビゲーションを検索…",
1959
2246
  settings: "設定",
1960
2247
  help: "ヘルプ",
1961
2248
  helpTooltip: "ヘルプとドキュメント",
@@ -1979,8 +2266,8 @@ const ja = {
1979
2266
  switchObject: "オブジェクトを切り替え",
1980
2267
  connection: {
1981
2268
  connected: "接続済み",
1982
- connecting: "接続中...",
1983
- reconnecting: "再接続中...",
2269
+ connecting: "接続中…",
2270
+ reconnecting: "再接続中…",
1984
2271
  disconnected: "切断されました",
1985
2272
  error: "接続エラー",
1986
2273
  },
@@ -2019,6 +2306,14 @@ const ja = {
2019
2306
  publishing: "公開しています…",
2020
2307
  published: "公開しました。変更が反映されています。",
2021
2308
  publishFailed: "公開に失敗しました",
2309
+ // objectui#3546 slice six — seedWarn は console.ai.seedWarn と同一の英文なので
2310
+ // 同じ訳を流用。capabilityWarn の「:」は全角:後続が日本語の文だから
2311
+ // (このパックの中間コロンは、値が単一トークンなら半角、文なら全角)。
2312
+ nothing: "公開するものはありません。",
2313
+ probeWarn: "公開しましたが、検証で問題が見つかりました。",
2314
+ seedWarn: "公開しましたが、一部のサンプルデータを読み込めませんでした。",
2315
+ publishedVerified: "公開して検証しました — サンプルデータ {{count}} 行が反映されています。",
2316
+ capabilityWarn: "作成時チェック:{{count}} 件のケイパビリティ参照が解決できません。",
2022
2317
  },
2023
2318
  title: "ホーム",
2024
2319
  subtitle: "ワークスペースのダッシュボード",
@@ -2032,7 +2327,7 @@ const ja = {
2032
2327
  title: "対応が必要な項目",
2033
2328
  empty: "すべて対応済みです",
2034
2329
  },
2035
- loading: "ワークスペースを読み込み中...",
2330
+ loading: "ワークスペースを読み込み中…",
2036
2331
  recent: "最近",
2037
2332
  starred: "スター付き",
2038
2333
  welcome: "ObjectUI へようこそ",
@@ -2093,6 +2388,9 @@ const ja = {
2093
2388
  roles: "ロール",
2094
2389
  configuration: "構成",
2095
2390
  createApp: "アプリを作成",
2391
+ administration: "管理",
2392
+ datasources: "データソース",
2393
+ documentation: "ドキュメント",
2096
2394
  },
2097
2395
  appSwitcher: {
2098
2396
  switchApplication: "アプリケーションを切り替え",
@@ -2132,7 +2430,7 @@ const ja = {
2132
2430
  search: {
2133
2431
  title: "検索",
2134
2432
  back: "戻る",
2135
- placeholder: "オブジェクト、ダッシュボード、ページ、レポートを検索...",
2433
+ placeholder: "オブジェクト、ダッシュボード、ページ、レポートを検索…",
2136
2434
  inputAriaLabel: "オブジェクト、ダッシュボード、ページ、レポートを検索",
2137
2435
  resultsCount: "\"{{query}}\" の結果 {{count}} 件",
2138
2436
  resultsCountPlural: "\"{{query}}\" の結果 {{count}} 件",
@@ -2151,6 +2449,7 @@ const ja = {
2151
2449
  empty: {
2152
2450
  objectNotFound: "オブジェクトが見つかりません",
2153
2451
  objectNotFoundDescription: "オブジェクト「{{name}}」の定義が見つかりません。設定を確認するか、有効なオブジェクトを選択してください。",
2452
+ interfacePageSourceMissing: "このインターフェースページは「{{name}}」を参照していますが、利用できません。",
2154
2453
  pageNotFound: "ページが見つかりません",
2155
2454
  pageNotFoundDescription: "ページ「{{name}}」が見つかりません。削除または名前変更された可能性があります。",
2156
2455
  dashboardNotFound: "ダッシュボードが見つかりません",
@@ -2159,6 +2458,11 @@ const ja = {
2159
2458
  reportNotFoundDescription: "レポート「{{name}}」が見つかりません。削除または名前変更された可能性があります。",
2160
2459
  noAppsConfigured: "アプリが設定されていません",
2161
2460
  noAppsConfiguredDescription: "登録されているアプリケーションがありません。最初のアプリを作成するか、システム設定を参照してください。",
2461
+ appNotAvailable: "アプリを利用できません",
2462
+ appNotAvailableDescription: "このアプリはまだ利用できません — まだ公開処理中の可能性があります。しばらくしてからもう一度お試しください。",
2463
+ appAccessDenied: "このアプリへのアクセス権限がありません",
2464
+ appAccessDeniedDescription: "このアプリは存在しますが、お使いのアカウントには開く権限がありません。管理者にアクセス権の付与を依頼してください。",
2465
+ appAccessDeniedHome: "ホームに戻る",
2162
2466
  createFirstApp: "最初のアプリを作成",
2163
2467
  systemSettings: "システム設定",
2164
2468
  back: "戻る",
@@ -2230,7 +2534,7 @@ const ja = {
2230
2534
  deleteFailed: "ビューの削除に失敗しました",
2231
2535
  },
2232
2536
  dashboardActions: {
2233
- pdfPreparing: "PDFエクスポートを準備中…",
2537
+ printDialogOpening: "ブラウザーの印刷ダイアログを開いています(PDF エクスポートではありません)",
2234
2538
  exportFailed: "エクスポートに失敗しました:{{message}}",
2235
2539
  forecastSoon: "予測ビューは近日公開予定",
2236
2540
  },
@@ -2274,111 +2578,7 @@ const ja = {
2274
2578
  first: "最初",
2275
2579
  },
2276
2580
  editor: {
2277
- breadcrumb: "設定",
2278
- basic: "基本",
2279
- title: "タイトル",
2280
- titlePlaceholder: "例:四半期別パイプライン",
2281
- description: "説明",
2282
- descriptionPlaceholder: "このレポートは何を示しますか?",
2283
- type: "レポートタイプ",
2284
- typeTabular: "テーブル — フラットなリスト",
2285
- typeSummary: "サマリー — 合計付きグループ化",
2286
- typeMatrix: "マトリックス — 行 × 列のピボット",
2287
- typeJoined: "結合 — 複数ブロック",
2288
- typeHelp: "表示したい内容に合うレイアウトを選択してください。",
2289
- data: "データ",
2290
- objectName: "データソース",
2291
- objectNamePlaceholder: "例:opportunity",
2292
- objectNameHelp: "このレポートはどのオブジェクトを照会しますか?",
2293
- limit: "行数の上限",
2294
- limitPlaceholder: "例:100",
2295
- columns: "列",
2296
- columnsHint: "列として表示するフィールドを選択します。サマリーやマトリックスでは集計(合計、件数…)を追加できます。",
2297
- filters: "フィルタ",
2298
- filtersHint: "このレポートに含める行を絞り込みます。",
2299
- filtersComplex: "このレポートには高度なフィルタが含まれており、ここでは編集できません。保存時は変更されません。",
2300
- groupBy: "グループ化",
2301
- groupByHint: "データをグループ化して小計を計算します。",
2302
- rows: "行",
2303
- rowsHint: "これらのフィールドで行をグループ化します。",
2304
- columnsAxis: "列",
2305
- columnsAxisHint: "これらのフィールドを上部でピボット表示します。",
2306
- values: "値",
2307
- valuesHint: "各セルに表示される数値です。1 つ以上のフィールドを選び、集計(合計、件数…)を指定してください。",
2308
- grouping: "グループ化項目",
2309
- addGrouping: "グループ化を追加",
2310
- dateGranularity: "日付の粒度",
2311
- dateGranularityNone: "(元の値を使用)",
2312
- day: "日",
2313
- week: "週",
2314
- month: "月",
2315
- quarter: "四半期",
2316
- year: "年",
2317
- sortAsc: "昇順",
2318
- sortDesc: "降順",
2319
- chart: "チャート",
2320
- chartHint: "テーブルの横に表示できる任意の可視化です。",
2321
- chartType: "チャートの種類",
2322
- chartTitle: "チャートのタイトル",
2323
- chartTitlePlaceholder: "未指定の場合はレポートのタイトル",
2324
- chartXAxis: "X 軸(カテゴリ)",
2325
- chartYAxis: "Y 軸(値)",
2326
- chartShowLegend: "凡例を表示",
2327
- chartShowDataLabels: "データラベルを表示",
2328
- chartNone: "(チャートなし)",
2329
- chartBar: "棒",
2330
- chartLine: "折れ線",
2331
- chartArea: "エリア",
2332
- chartPie: "円",
2333
- chartDonut: "ドーナツ",
2334
- chartFunnel: "ファネル",
2335
- validationNeedsObject: "列を追加する前にデータソースを選択してください。",
2336
- validationMatrixNeedsRowsCols: "マトリックスレポートには少なくとも 1 つの行と 1 つの列が必要です。",
2337
- validationSummaryNeedsRows: "サマリーレポートには少なくとも 1 つのグループ化フィールドが必要です。",
2338
- blocks: "ブロック",
2339
- blocksHint: "各ブロックは独立したテーブルまたはチャートです。ブロックのフィルタはレポートのフィルタと AND で結合されます。",
2340
- addBlock: "ブロックを追加",
2341
- removeBlock: "ブロックを削除",
2342
- blockName: "ブロック名",
2343
- blockNamePlaceholder: "一意のブロック名",
2344
- blockLabel: "表示ラベル",
2345
- blockLabelPlaceholder: "ブロックの上に表示されます",
2346
- blockDescription: "説明",
2347
- blockDescriptionPlaceholder: "このブロックの任意の補足説明",
2348
- validationJoinedNeedsBlocks: "結合レポートには少なくとも 1 つのブロックが必要です。",
2349
- validationBlockNameRequired: "各ブロックには空でない名前が必要です。",
2350
- validationBlockNameDuplicate: "ブロック名はレポート内で一意である必要があります。",
2351
- validationBlockNeedsColumns: "各ブロックには少なくとも 1 つの列が必要です。",
2352
- noneOption: "(なし)",
2353
- addCondition: "条件を追加",
2354
- combineLogic: "結合方法",
2355
- opContains: "含む",
2356
- opIsEmpty: "空である",
2357
- opIsNotEmpty: "空でない",
2358
- formatAuto: "自動",
2359
- formatCurrency: "通貨",
2360
- formatPercent: "パーセント",
2361
- formatInteger: "整数",
2362
- formatDate: "日付",
2363
- formatDatetime: "日付と時刻",
2364
- columnLabelPlaceholder: "ラベルを上書き",
2365
- aggregateColumn: "集計",
2366
- formatColumn: "フォーマット",
2367
- addColumns: "列を追加",
2368
- searchFields: "フィールドを検索…",
2369
- noMatchingFields: "検索条件に一致するフィールドはありません。",
2370
- noFieldsAvailable: "利用可能なフィールドがありません。",
2371
- columnsCount: "{n} 列選択中",
2372
- columnsEmpty: "列がまだ選択されていません。",
2373
- fieldPickerTitle: "フィールドを選択",
2374
- fieldPickerDescription: "追加するフィールドを1つ以上選択してください。検索ボックスでリストを絞り込めます。",
2375
- fieldPickerChangeTitle: "フィールドを変更",
2376
- fieldPickerAddGroupingTitle: "グループ化を追加",
2377
- fieldPickerEmpty: "(フィールドを選択)",
2378
- fieldPickerSelected: "{n} 件選択中",
2379
- fieldPickerClear: "選択を解除",
2380
- fieldPickerAdd: "追加",
2381
- fieldPickerAddN: "{n} 件追加",
2581
+ panelTitle: "レポートを編集",
2382
2582
  },
2383
2583
  },
2384
2584
  organizations: {
@@ -2395,6 +2595,140 @@ const ja = {
2395
2595
  emptyDescription: "最初の組織を作成して開始してください。",
2396
2596
  noMatches: "検索条件に一致する組織がありません。",
2397
2597
  },
2598
+ organization: {
2599
+ roles: {
2600
+ owner: 'オーナー',
2601
+ admin: '管理者',
2602
+ delegatedAdmin: '委任管理者',
2603
+ member: 'メンバー',
2604
+ },
2605
+ errors: {
2606
+ notAllowedToInvite: 'この組織にユーザーを招待する権限がありません。',
2607
+ notAllowedToInviteWithRole: 'このロールでユーザーを招待する権限がありません。',
2608
+ alreadyInvited: 'このユーザーはすでにこの組織に招待されています。',
2609
+ organizationExists: 'その組織はすでに存在します。',
2610
+ slugTaken: 'そのスラッグはすでに使用されています。',
2611
+ notAllowedToCreate: '新しい組織を作成する権限がありません。',
2612
+ notTheRecipient: 'この招待の宛先はあなたではありません。',
2613
+ invitationNotFound: 'この招待は存在しないか、有効期限が切れています。',
2614
+ unknown: '問題が発生しました。もう一度お試しください。',
2615
+ },
2616
+ backToList: "組織一覧に戻る",
2617
+ notFound: "組織が見つかりません",
2618
+ notFoundDescription: "この組織は存在しないか、アクセス権がありません。",
2619
+ tabs: {
2620
+ members: "メンバー",
2621
+ invitations: "招待",
2622
+ settings: "設定",
2623
+ },
2624
+ members: {
2625
+ title: "メンバー",
2626
+ inviteMember: "メンバーを招待",
2627
+ inviteRestrictedNote: "組織の管理者のみがメンバーを招待できます。",
2628
+ removeMember: "メンバーを削除",
2629
+ removeConfirmTitle: "メンバーを削除しますか?",
2630
+ removeConfirmDescription: "{{name}} を組織から削除します。アクセス権は直ちに失われます。",
2631
+ removeConfirmAction: "削除",
2632
+ memberRemoved: "メンバーを削除しました",
2633
+ removeFailed: "メンバーの削除に失敗しました",
2634
+ roleUpdated: "ロールを更新しました",
2635
+ roleUpdateFailed: "ロールの更新に失敗しました",
2636
+ memberActions: 'メンバーの操作',
2637
+ loadFailed: 'メンバーの読み込みに失敗しました',
2638
+ },
2639
+ invitations: {
2640
+ title: "招待",
2641
+ empty: "招待はありません。",
2642
+ expiresAt: "有効期限",
2643
+ linkCopied: "招待リンクをコピーしました",
2644
+ copyFailed: "リンクのコピーに失敗しました",
2645
+ canceled: "招待を取り消しました",
2646
+ cancelFailed: "招待の取り消しに失敗しました",
2647
+ cancelTitle: "招待を取り消しますか?",
2648
+ cancelDescription: "{{email}} 宛ての招待が無効になります。",
2649
+ cancelAction: "招待を取り消す",
2650
+ inviteTitle: "メンバーを招待",
2651
+ inviteDescription: "この組織への招待が相手に送信されます。",
2652
+ emailLabel: "メールアドレス",
2653
+ roleLabel: "ロール",
2654
+ placementLabel: "配属(任意)",
2655
+ placementDescription: "招待が承諾されたときに適用されます。委任できる事業単位と役職のみが表示されます。",
2656
+ businessUnitLabel: "事業単位",
2657
+ businessUnitPlaceholder: "配属なし",
2658
+ positionsLabel: "役職",
2659
+ sendInvite: "招待を送信",
2660
+ sentTitle: "招待を作成しました",
2661
+ sentDescription: "以下のリンクを招待相手に共有してください。承諾にはサインインが必要です。",
2662
+ linkLabel: "承諾リンク",
2663
+ invitedAs: "{{email}} を {{role}} として招待しました",
2664
+ copyLinkLabel: '招待リンクをコピー',
2665
+ loadFailed: '招待の読み込みに失敗しました',
2666
+ inviteFailed: 'メンバーの招待に失敗しました',
2667
+ status: {
2668
+ all: "すべて",
2669
+ pending: "待機中",
2670
+ accepted: "承諾済み",
2671
+ rejected: "辞退済み",
2672
+ canceled: "取消済み",
2673
+ },
2674
+ },
2675
+ settings: {
2676
+ generalTitle: "一般",
2677
+ generalDescription: "組織の情報を更新します。",
2678
+ readOnlyNote: "設定を変更できるのはオーナーのみです。",
2679
+ nameLabel: "組織名",
2680
+ slugLabel: "スラッグ",
2681
+ logoLabel: "ロゴ",
2682
+ logoUpload: "アップロード",
2683
+ logoReplace: "変更",
2684
+ logoClear: "削除",
2685
+ logoUploaded: "ロゴをアップロードしました。保存すると反映されます",
2686
+ logoUploadFailed: "ロゴのアップロードに失敗しました",
2687
+ save: "変更を保存",
2688
+ saved: "設定を保存しました",
2689
+ saveFailed: "設定の保存に失敗しました",
2690
+ leaveTitle: "組織から脱退",
2691
+ leaveDescription: "この組織へのアクセス権を失います。",
2692
+ leaveAction: "脱退",
2693
+ leaveConfirmTitle: "組織から脱退しますか?",
2694
+ leaveConfirmDescription: "{{name}} から脱退してもよろしいですか?アクセス権は直ちに失われます。",
2695
+ leaveConfirmAction: "脱退",
2696
+ leftOrg: "組織から脱退しました",
2697
+ leaveFailed: "組織からの脱退に失敗しました",
2698
+ dangerZone: "危険な操作",
2699
+ deleteTitle: "組織を削除",
2700
+ deleteDescription: "この組織とすべてのデータを完全に削除します。",
2701
+ deleteAction: "削除",
2702
+ deleteConfirmTitle: "組織を削除しますか?",
2703
+ deleteConfirmDescription: "この操作は取り消せません。すべてのデータが完全に削除されます。確認のため組織のスラッグを入力してください。",
2704
+ deleteConfirmSlugLabel: "確認のため「{{slug}}」と入力してください",
2705
+ deleteConfirmAction: "組織を削除",
2706
+ deleted: "組織を削除しました",
2707
+ deleteFailed: "組織の削除に失敗しました",
2708
+ },
2709
+ accept: {
2710
+ title: "招待が届いています",
2711
+ description: "{{orgName}} に {{role}} として招待されています。",
2712
+ errorTitle: "招待を利用できません",
2713
+ goToOrgs: "組織一覧へ",
2714
+ loading: "招待を読み込んでいます…",
2715
+ organization: "組織",
2716
+ role: "ロール",
2717
+ expiresAt: "有効期限",
2718
+ accept: "招待を承諾",
2719
+ accepted: "招待を承諾しました",
2720
+ acceptFailed: "招待の承諾に失敗しました",
2721
+ decline: "辞退",
2722
+ declined: "招待を辞退しました",
2723
+ declineFailed: "招待の辞退に失敗しました",
2724
+ },
2725
+ switcher: {
2726
+ label: "組織を切り替え",
2727
+ groupLabel: "作業中の組織",
2728
+ groupHint: "新しいレコードはここに作成されます。ビューにはすべての組織のデータが表示されます。",
2729
+ manageMembers: "メンバーを管理",
2730
+ },
2731
+ },
2398
2732
  notifications: {
2399
2733
  regionLabel: "通知",
2400
2734
  groupCount: "通知 {{count}} 件",
@@ -2408,6 +2742,9 @@ const ja = {
2408
2742
  viewApprovals: "承認を表示",
2409
2743
  noPendingApprovals: "承認待ちはありません",
2410
2744
  openApprovalsInbox: "承認ボックスを開く",
2745
+ badgeTotal: "合計 {{total}} 件",
2746
+ badgeNotifications: "通知 {{unread}} 件",
2747
+ badgeApprovals: "承認待ち {{approvals}} 件",
2411
2748
  emptyUnread: "既読にしました",
2412
2749
  filterUnread: "未読",
2413
2750
  filterAll: "すべて",
@@ -2694,6 +3031,7 @@ const ja = {
2694
3031
  dismiss: "閉じる",
2695
3032
  openOnCloud: "クラウドで開く",
2696
3033
  backHome: "ホームに戻る",
3034
+ updateTo: "更新",
2697
3035
  },
2698
3036
  install: {
2699
3037
  dialogTitle: "{{name}} をインストール",
@@ -2710,6 +3048,37 @@ const ja = {
2710
3048
  localManifestConflict: "{{message}}\nヒント:ローカルアプリがすでにこのmanifest_idを使用しています。最初にobjectstack.config.tsから削除してください。",
2711
3049
  localUnauthorized: "最初にこのランタイムにサインインしてから再試行してください。",
2712
3050
  localMarketplaceUnavailable: "このランタイムにはOS_CLOUD_URLが設定されていないため、マーケットプレイスカタログにアクセスできません。",
3051
+ updateTo: "更新 → v{{version}}",
3052
+ installedVersion: "インストール済み v{{version}}",
3053
+ },
3054
+ // objectui#3546 — the MarketplacePage "Your organization" strip.
3055
+ org: {
3056
+ heading: "組織",
3057
+ install: "インストール",
3058
+ installed: "{{name}} をインストールしました",
3059
+ installedBadge: "インストール済み",
3060
+ installing: "インストール中…",
3061
+ },
3062
+ // ADR-0025 PD4 §3.5/§3.11 — the pre-install consent panel
3063
+ // (PluginDisclosure.tsx). `runtime` is a CLOSED enum: spec
3064
+ // PluginRuntimeSchema = z.enum(['node', 'sandbox', 'worker']).
3065
+ disclosure: {
3066
+ containsCode: "このパッケージにはコードが含まれています",
3067
+ reviewed: "審査・承認済み",
3068
+ unreviewed: "未審査",
3069
+ signed: "署名済み",
3070
+ grantsIntro: "インストール時に、このパッケージには次の権限が付与されます:",
3071
+ services: "プラットフォームサービス",
3072
+ hooks: "ライフサイクルフック",
3073
+ network: "ネットワークアクセス",
3074
+ fs: "ファイルシステムアクセス",
3075
+ noPermissions: "特別な権限は要求しません。",
3076
+ acknowledge: "このパッケージがコードを実行し、上記の権限を取得することを理解しました。",
3077
+ runtime: {
3078
+ node: "プロセス内 · 完全信頼",
3079
+ sandbox: "サンドボックス",
3080
+ worker: "プロセス外",
3081
+ },
2713
3082
  },
2714
3083
  uninstall: {
2715
3084
  confirm: "このランタイムから {{manifestId}} v{{version}} をアンインストールしますか?\n\nキャッシュされたマニフェストが削除されます。アプリは次の再起動まで実行中のカーネルに読み込まれたままになります。",
@@ -2959,6 +3328,34 @@ const ja = {
2959
3328
  confirmNote: '公開すると、このパッケージの保留中ドラフト {{count}} 件がまとめて(アトミックに)公開されます。',
2960
3329
  publishConfirm: 'すべて公開',
2961
3330
  },
3331
+ // ADR-0045 — the materialized-but-unlisted app banner
3332
+ // (UnpublishedAppBar.tsx), sibling of draftBar above.
3333
+ unpublishedBar: {
3334
+ message: '未公開のアプリ — 機能はすべて使えますが、ビルダーにしか表示されません。公開するとユーザーに表示されます。',
3335
+ publish: '公開',
3336
+ publishing: '公開中…',
3337
+ published: '公開しました。アプリがユーザーに表示されます。',
3338
+ publishFailed: '公開に失敗しました',
3339
+ },
3340
+ // ADR-0067 — the append-only build/revert timeline (CommitTimeline.tsx);
3341
+ // `button` is the banner's entry point into it.
3342
+ history: {
3343
+ button: '履歴',
3344
+ title: 'ビルド履歴',
3345
+ description: 'このアプリのすべての変更を新しい順に表示します。任意のステップを取り消して元に戻せます — 公開の確認は不要です。',
3346
+ loadFailed: '履歴を読み込めませんでした:',
3347
+ loadFailedUnavailable: 'コミットストアに一時的に接続できません — この読み取りは実行されなかったため、履歴は表示されません。しばらくしてから再試行してください。',
3348
+ loading: '履歴を読み込み中…',
3349
+ empty: 'このアプリの履歴はまだありません。',
3350
+ revertLabel: '変更を取り消しました',
3351
+ applyLabel: 'ビルドによる変更',
3352
+ revert: '取り消し',
3353
+ items: '件',
3354
+ revertAction: '取り消す',
3355
+ reverted: '取り消しました — 変更を元に戻しました。',
3356
+ revertFailed: '取り消しに失敗しました',
3357
+ revertUnavailable: 'コミットストアに一時的に接続できません — この取り消しは適用されていない可能性があります。履歴を開き直して確認してから再試行してください。',
3358
+ },
2962
3359
  },
2963
3360
  filterBuilder: {
2964
3361
  where: "条件",
@@ -3003,5 +3400,91 @@ const ja = {
3003
3400
  addSort: "並べ替えを追加",
3004
3401
  removeSort: "並べ替えを削除",
3005
3402
  },
3403
+ collaboration: {
3404
+ commentCount: "コメント {{count}} 件",
3405
+ commentCountOne: "コメント {{count}} 件",
3406
+ resolvedSuffix: " · 解決済み",
3407
+ sortComments: "コメントの並べ替え",
3408
+ sortOldest: "古い順",
3409
+ sortNewest: "新しい順",
3410
+ resolve: "解決済みにする",
3411
+ reopen: "再オープン",
3412
+ justNow: "たった今",
3413
+ minutesAgo: "{{count}} 分前",
3414
+ hoursAgo: "{{count}} 時間前",
3415
+ daysAgo: "{{count}} 日前",
3416
+ edited: "(編集済み)",
3417
+ reactionCount: "リアクション {{count}} 件",
3418
+ reactionCountOne: "リアクション {{count}} 件",
3419
+ addThumbsUp: "いいねを追加",
3420
+ reply: "返信",
3421
+ reactThumbsUp: "いいねでリアクション",
3422
+ reactHeart: "ハートでリアクション",
3423
+ cancelReply: "返信をキャンセル",
3424
+ replyingTo: "{{name}} に返信中…",
3425
+ replyingToComment: "このコメントに返信中…",
3426
+ commentPlaceholder: "コメントを追加…(@ でメンション)",
3427
+ send: "送信",
3428
+ presentUserCount: "オンライン {{count}} 人",
3429
+ presentUserCountOne: "オンライン {{count}} 人",
3430
+ moreUserCount: "他 {{count}} 人",
3431
+ moreUserCountOne: "他 {{count}} 人",
3432
+ userStatusTitle: "{{name}}({{status}})",
3433
+ statusActive: "アクティブ",
3434
+ statusIdle: "アイドル",
3435
+ statusAway: "離席中",
3436
+ },
3437
+ wizard: {
3438
+ missingRequired: "必須項目を入力してください: {{fields}}",
3439
+ },
3440
+ appManagement: {
3441
+ title: "アプリケーション",
3442
+ subtitle: "設定済みのアプリケーションをすべて管理します",
3443
+ newApp: "新しいアプリ",
3444
+ searchLabel: "アプリを検索",
3445
+ searchPlaceholder: "アプリを検索…",
3446
+ selectedCount: "{{n}} 件選択中",
3447
+ bulkEnable: "有効化",
3448
+ bulkDisable: "無効化",
3449
+ selectAll: "すべて選択({{n}})",
3450
+ empty: "アプリが見つかりません。",
3451
+ defaultBadge: "デフォルト",
3452
+ active: "有効",
3453
+ inactive: "無効",
3454
+ selectApp: "{{name}} を選択",
3455
+ openApp: "アプリを開く",
3456
+ openAppNamed: "{{name}} を開く",
3457
+ editApp: "アプリを編集",
3458
+ editAppNamed: "{{name}} を編集",
3459
+ editWithAi: "AI で編集",
3460
+ editWithAiNamed: "{{name}} を AI で編集",
3461
+ enableApp: "アプリを有効化",
3462
+ disableApp: "アプリを無効化",
3463
+ enableAppNamed: "{{name}} を有効化",
3464
+ disableAppNamed: "{{name}} を無効化",
3465
+ setDefault: "デフォルトに設定",
3466
+ setDefaultNamed: "{{name}} をデフォルトに設定",
3467
+ deleteApp: "アプリを削除",
3468
+ deleteAppNamed: "{{name}} を削除",
3469
+ confirmDelete: "もう一度クリックすると削除します",
3470
+ confirmDeleteNamed: "{{name}} の削除を確認",
3471
+ toast: {
3472
+ noClient: "メタデータサービスに接続できません",
3473
+ unknownError: "不明なエラー",
3474
+ appEnabled: "{{name}} を有効化しました",
3475
+ appDisabled: "{{name}} を無効化しました",
3476
+ toggleFailed: "アプリの状態の切り替えに失敗しました:{{reason}}",
3477
+ setDefaultDone: "{{name}} をデフォルトに設定しました",
3478
+ setDefaultFailed: "デフォルトアプリの設定に失敗しました:{{reason}}",
3479
+ appDeleted: "{{name}} を削除しました",
3480
+ deleteFailed: "アプリの削除に失敗しました:{{reason}}",
3481
+ bulkEnabled: "{{n}} 件のアプリを有効化しました",
3482
+ bulkDisabled: "{{n}} 件のアプリを無効化しました",
3483
+ bulkFailed: "{{n}} 件失敗しました:{{details}}",
3484
+ bulkFailureEntry: "{{name}}({{reason}})",
3485
+ bulkFailureJoiner: "、",
3486
+ bulkOperationFailed: "一括操作に失敗しました:{{reason}}",
3487
+ },
3488
+ },
3006
3489
  };
3007
3490
  export default ja;