@object-ui/i18n 17.3.0 → 17.6.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 (44) hide show
  1. package/CHANGELOG.md +1929 -1
  2. package/README.md +41 -12
  3. package/dist/i18n.d.ts +1 -1
  4. package/dist/i18n.js +1 -2
  5. package/dist/index.d.ts +23 -21
  6. package/dist/index.js +31 -21
  7. package/dist/locales/ar.d.ts +638 -369
  8. package/dist/locales/ar.js +744 -424
  9. package/dist/locales/de.d.ts +638 -369
  10. package/dist/locales/de.js +759 -446
  11. package/dist/locales/en.d.ts +673 -404
  12. package/dist/locales/en.js +899 -406
  13. package/dist/locales/es.d.ts +638 -369
  14. package/dist/locales/es.js +739 -427
  15. package/dist/locales/fr.d.ts +638 -369
  16. package/dist/locales/fr.js +738 -423
  17. package/dist/locales/index.d.ts +6476 -3786
  18. package/dist/locales/index.js +20 -20
  19. package/dist/locales/ja.d.ts +638 -369
  20. package/dist/locales/ja.js +732 -417
  21. package/dist/locales/ko.d.ts +638 -369
  22. package/dist/locales/ko.js +736 -424
  23. package/dist/locales/pt.d.ts +638 -369
  24. package/dist/locales/pt.js +737 -425
  25. package/dist/locales/ru.d.ts +638 -369
  26. package/dist/locales/ru.js +750 -424
  27. package/dist/locales/zh.d.ts +672 -403
  28. package/dist/locales/zh.js +720 -403
  29. package/dist/pickLocalized.d.ts +58 -0
  30. package/dist/pickLocalized.js +115 -7
  31. package/dist/provider.d.ts +84 -2
  32. package/dist/provider.js +305 -31
  33. package/dist/useDisplayLocale.d.ts +49 -0
  34. package/dist/useDisplayLocale.js +55 -0
  35. package/dist/useObjectLabel.d.ts +94 -14
  36. package/dist/useObjectLabel.js +134 -21
  37. package/dist/useSafeTranslation.js +51 -3
  38. package/dist/utils/index.d.ts +4 -3
  39. package/dist/utils/index.js +4 -3
  40. package/dist/utils/number-display.d.ts +32 -0
  41. package/dist/utils/number-display.js +32 -0
  42. package/dist/utils/spec-formatters.d.ts +39 -13
  43. package/dist/utils/spec-formatters.js +3 -3
  44. package/package.json +4 -3
@@ -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,13 @@ const ja = {
46
80
  common: {
47
81
  addToFavorites: "お気に入りに追加",
48
82
  removeFromFavorites: "お気に入りから削除",
49
- loading: "読み込み中...",
83
+ loading: "読み込み中…",
50
84
  save: "保存",
85
+ discard: "破棄",
51
86
  cancel: "キャンセル",
52
87
  delete: "削除",
53
88
  edit: "編集",
54
89
  create: "作成",
55
- search: "検索",
56
90
  filter: "フィルター",
57
91
  reset: "リセット",
58
92
  confirm: "確認",
@@ -76,7 +110,7 @@ const ja = {
76
110
  required: "必須",
77
111
  optional: "任意",
78
112
  selectOption: "選択してください",
79
- select: "選択...",
113
+ select: "選択…",
80
114
  openChat: "チャットを開く",
81
115
  closeChat: "チャットを閉じる",
82
116
  closePanel: "パネルを閉じる",
@@ -85,6 +119,11 @@ const ja = {
85
119
  itemCountOne: "{{count}} 件",
86
120
  toggleSidebar: "サイドバーを切り替え",
87
121
  package: "パッケージ",
122
+ done: "完了",
123
+ editInStudio: "Studio で編集",
124
+ record: "レコード",
125
+ retry: "再試行",
126
+ printDialogHint: "ブラウザーの印刷ダイアログを開きます(PDF エクスポートではありません)",
88
127
  },
89
128
  actions: {
90
129
  decisionOutput: {
@@ -116,6 +155,9 @@ const ja = {
116
155
  submitFailed: "保存できませんでした。もう一度お試しください。",
117
156
  discardTitle: "変更を破棄しますか?",
118
157
  discardMessage: "保存されていない変更があります。このままフォームを閉じると編集内容は失われます。",
158
+ // objectui#4024 — the create/edit dialog's `sr-only` accessible
159
+ // description, used when the form declares no `description` of its own.
160
+ dialogDescriptionFallback: "フォームの項目を入力してから、送信またはキャンセルしてください。",
119
161
  keepEditing: "編集を続ける",
120
162
  discard: "破棄",
121
163
  conflictTitle: "保存の競合",
@@ -184,7 +226,7 @@ const ja = {
184
226
  richText: {
185
227
  format: "フォーマット: {{format}}",
186
228
  basicEditorHint: "リッチテキストエディター(基本)",
187
- placeholder: "テキストを入力...",
229
+ placeholder: "テキストを入力…",
188
230
  },
189
231
  options: {
190
232
  empty: "選択できる項目がありません",
@@ -220,6 +262,14 @@ const ja = {
220
262
  tags: {
221
263
  placeholder: "入力してEnterキーで追加…",
222
264
  },
265
+ // objectui#4028 — `AddressField`'s five sub-labels.
266
+ address: {
267
+ street: "番地・建物名",
268
+ city: "市区町村",
269
+ state: "都道府県",
270
+ postalCode: "郵便番号",
271
+ country: "国",
272
+ },
223
273
  textarea: {
224
274
  characterCount: "文字数: {{max}} 文字中 {{count}} 文字",
225
275
  charactersRemaining: "残り {{count}} 文字",
@@ -250,7 +300,7 @@ const ja = {
250
300
  saveAll: "すべて保存 ({{count}})",
251
301
  addRecord: "レコードを追加",
252
302
  open: "開く",
253
- search: "検索...",
303
+ search: "検索…",
254
304
  modified: "{{count}} 行が変更されました",
255
305
  saveFailed: '保存に失敗しました',
256
306
  selected: "{{count}} 件選択中",
@@ -294,7 +344,7 @@ const ja = {
294
344
  delete: "削除",
295
345
  export: "エクスポート",
296
346
  exportAs: "{{format}}でエクスポート",
297
- loading: "グリッドを読み込み中...",
347
+ loading: "グリッドを読み込み中…",
298
348
  errorLoading: "グリッドの読み込みエラー",
299
349
  pullToRefresh: "引っ張って更新",
300
350
  refreshing: "更新中…",
@@ -305,6 +355,22 @@ const ja = {
305
355
  yes: "はい",
306
356
  no: "いいえ",
307
357
  systemFields: "システム",
358
+ // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
359
+ // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
360
+ // pack controls its own separator and word order.
361
+ summary: {
362
+ pattern: "{{label}}: {{value}}",
363
+ count: "件数",
364
+ countEmpty: "空欄",
365
+ countFilled: "入力済み",
366
+ countUnique: "一意",
367
+ percentEmpty: "空欄",
368
+ percentFilled: "入力済み",
369
+ sum: "合計",
370
+ avg: "平均",
371
+ min: "最小",
372
+ max: "最大",
373
+ },
308
374
  toolbar: {
309
375
  densityMode: "密度",
310
376
  densityCompact: "コンパクト",
@@ -483,6 +549,8 @@ const ja = {
483
549
  loadErrorUnauthorizedMessage: "セッションの有効期限が切れたか、サインアウトしています。再度サインインしてください。",
484
550
  loadErrorRejectedTitle: "このビューのクエリは拒否されました",
485
551
  loadErrorRejectedMessage: "サーバーはこのビューのフィルターまたはクエリ設定を処理できませんでした。フィルターを解除すると解消することがほとんどです。ビューがこの状態で保存されている場合は、管理者による修正が必要です。",
552
+ loadErrorApiDisabledTitle: "このオブジェクトは API から利用できません",
553
+ loadErrorApiDisabledMessage: "このオブジェクトが API に公開されていないため、このページはレコードを読み込めません。これは権限ではなくオブジェクト自体の設定です。管理者が API アクセスを有効にするまで、このページは動作しません。",
486
554
  retry: "再試行",
487
555
  managedBy: {
488
556
  system: {
@@ -507,7 +575,7 @@ const ja = {
507
575
  },
508
576
  },
509
577
  refresh: "更新",
510
- loading: 'Loading records...',
578
+ loading: "レコードを読み込み中…",
511
579
  recordCount: "{{count}} 件のレコード",
512
580
  recordCountOne: "{{count}} 件のレコード",
513
581
  addRecord: "レコードを追加",
@@ -519,7 +587,8 @@ const ja = {
519
587
  sort: "並べ替え",
520
588
  sortRecords: "レコードを並べ替え",
521
589
  sortByIdSuffix: "(ID順)",
522
- sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称を保持する数式項目を追加してください。",
590
+ sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称をこのオブジェクトに非正規化し、参照元が変更されたときに書き込まれる保存項目として持たせたうえで、その項目で並べ替えてください。数式項目は使えません。数式は仮想的で、対応する列が保存されないため、サーバーは並べ替えを拒否します。",
591
+ resetSortToDefault: "ビューの既定の並び順に戻す",
523
592
  group: "グループ",
524
593
  groupBy: "グループ化",
525
594
  export: "エクスポート",
@@ -577,13 +646,16 @@ const ja = {
577
646
  },
578
647
  kanban: {
579
648
  uncategorized: "未分類",
649
+ columns: "カラム",
580
650
  addCard: "カードを追加",
581
651
  addColumn: "カラムを追加",
582
652
  moveCard: "カードを移動",
583
653
  deleteCard: "カードを削除",
584
654
  deleteColumn: "カラムを削除",
585
655
  noCards: "カードがありません",
586
- cardTitlePlaceholder: "カードのタイトルを入力...",
656
+ cardTitlePlaceholder: "カードのタイトルを入力…",
657
+ requiredFieldsTitle: "必須項目を入力してください",
658
+ requiredFieldsDescription: "この移動により以下の項目が必須になります。入力して続行してください。",
587
659
  },
588
660
  timeline: {
589
661
  bucket: {
@@ -596,6 +668,13 @@ const ja = {
596
668
  noDate: "日付なし",
597
669
  unassigned: "未割当",
598
670
  },
671
+ scale: {
672
+ week: "第{{n}}週",
673
+ quarter: "{{year}}年第{{quarter}}四半期",
674
+ },
675
+ gantt: {
676
+ rowLabel: "項目",
677
+ },
599
678
  },
600
679
  gantt: {
601
680
  viewMode: {
@@ -642,6 +721,18 @@ const ja = {
642
721
  ff: "終了 → 終了",
643
722
  sf: "開始 → 終了",
644
723
  },
724
+ linkEnd: {
725
+ start: "開始",
726
+ end: "終了",
727
+ },
728
+ link: {
729
+ rejected: {
730
+ self: "タスクを自分自身に依存させることはできません。",
731
+ locked: "この行はロックされているため、依存関係を追加できません。",
732
+ group: "サマリー行は依存先にできません。配下のタスクに接続してください。",
733
+ cycle: "この接続は循環依存になります。",
734
+ },
735
+ },
645
736
  conflict: {
646
737
  title: "スケジュールの競合",
647
738
  body: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
@@ -650,8 +741,8 @@ const ja = {
650
741
  },
651
742
  autoScheduleDlg: {
652
743
  title: "自動スケジュール",
653
- body: "依存リンクを満たすため {count} 件のタスクを後ろにずらしますか?",
654
- skipped: "ロックされた {count} 件のタスクもリンクに違反していますが、スキップされました。",
744
+ body: "依存リンクを満たすため {{count}} 件のタスクを後ろにずらしますか?",
745
+ skipped: "ロックされた {{count}} 件のタスクもリンクに違反していますが、スキップされました。",
655
746
  confirm: "適用",
656
747
  cancel: "キャンセル",
657
748
  none: "依存関係はすべて満たされています — 再スケジュールの必要はありません。",
@@ -688,6 +779,7 @@ const ja = {
688
779
  exportPng: "PNG で書き出す",
689
780
  exportPdf: "PDF で書き出す",
690
781
  saveLayout: "レイアウトを保存",
782
+ refresh: "更新",
691
783
  undo: "元に戻す",
692
784
  redo: "やり直す",
693
785
  prevPeriod: "前の期間",
@@ -728,11 +820,11 @@ const ja = {
728
820
  defaultBadge: "デフォルト",
729
821
  tabActionsFor: "{{name}} のビュー操作",
730
822
  readonlyAriaLabel: "読み取り専用ビュー",
731
- readonlyTooltip: "システムビュー — 複製してカスタマイズしてください。",
823
+ readonlyTooltip: "システムビュー — コードで定義され、読み取り専用です。",
732
824
  },
733
825
  designer: {
734
- undo: 'Undo',
735
- redo: 'Redo',
826
+ undo: "元に戻す",
827
+ redo: "やり直す",
736
828
  },
737
829
  detail: {
738
830
  editInlineHint: "ダブルクリックで編集",
@@ -772,13 +864,15 @@ const ja = {
772
864
  relatedRecords: "{{count}} 件のレコード",
773
865
  relatedRecordOne: "{{count}} 件のレコード",
774
866
  noRelatedRecords: "関連レコードが見つかりません",
775
- loading: "読み込み中...",
867
+ loading: "読み込み中…",
776
868
  copyToClipboard: "クリップボードにコピー",
777
869
  copied: "コピーしました!",
778
870
  deleteConfirmation: "このレコードを削除してもよろしいですか?",
871
+ deleted: "レコードを削除しました",
779
872
  editRecord: "レコードを編集",
780
873
  viewAll: "すべて表示",
781
874
  new: "新規",
875
+ add: "追加",
782
876
  emptyValue: "—",
783
877
  activity: "アクティビティ",
784
878
  editRow: "編集",
@@ -789,7 +883,7 @@ const ja = {
789
883
  nextPage: "次へ",
790
884
  pageOf: "ページ {{current}} / {{total}}",
791
885
  sortBy: "並べ替え",
792
- filterPlaceholder: "フィルター...",
886
+ filterPlaceholder: "フィルター…",
793
887
  highlightFields: "主要フィールド",
794
888
  comments: "コメント",
795
889
  searchComments: "コメントを検索…",
@@ -819,6 +913,10 @@ const ja = {
819
913
  attachmentDownloadDenied: "この添付ファイルをダウンロードする権限がありません。",
820
914
  attachmentAuthRequired: "この添付ファイルをダウンロードするにはサインインしてください。",
821
915
  attachmentPermissionDenied: "この操作を行う権限がありません。",
916
+ attachmentsAccessDenied: "これらの添付ファイルにアクセスする権限がありません。",
917
+ attachmentsLoadFailed: "このレコードの添付ファイルを読み込めませんでした。",
918
+ attachmentsApiUnavailable: "このオブジェクトでは添付ファイルの一覧を利用できません。",
919
+ retryLoadAttachments: "再試行",
822
920
  unifiedDiff: "統合差分",
823
921
  sideBySideDiff: "横並び差分",
824
922
  noChanges: "変更なし",
@@ -854,6 +952,7 @@ const ja = {
854
952
  loadMore: "さらに読み込む",
855
953
  edited: "(編集済み)",
856
954
  via: "{{source}} 経由",
955
+ viewSource: "ソースを表示",
857
956
  replyCount: "{{count}} 件の返信",
858
957
  replyCountPlural: "{{count}} 件の返信",
859
958
  replyPlaceholder: "返信…",
@@ -869,6 +968,8 @@ const ja = {
869
968
  writeStrippedTitle: "保存しました(一部の項目は反映されていません)",
870
969
  writeStrippedReadonly: "次の項目は読み取り専用のため反映されませんでした: {{fields}}",
871
970
  writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため反映されませんでした: {{fields}}",
971
+ writeStrippedPrimaryKey: "次の項目はレコードの識別子で、保存では変更できないため反映されませんでした: {{fields}}",
972
+ writeStrippedUnknownReason: "次の項目はサーバーで反映されませんでした: {{fields}}",
872
973
  approvalPendingEditable: "承認中 · 編集可能",
873
974
  approvalPendingTooltip: "このレコードには承認待ちのリクエストがありますが、このステップでは編集できます",
874
975
  approvalProgress: "承認 — {{need}} 件中 {{got}} 件",
@@ -881,6 +982,13 @@ const ja = {
881
982
  cancelApprovalTooltipUnlocked: "承認待ちリクエストを取り消す",
882
983
  cancelApprovalFailed: "承認の取り消しに失敗しました",
883
984
  cancelApprovalUnavailable: "このデータソースでは承認の取り消しはサポートされていません",
985
+ pathLabel: 'レコードパス',
986
+ pathStageCompleted: '{{stage}}、完了',
987
+ pathStageCurrent: '{{stage}}、現在のステージ',
988
+ pathStageUpcoming: '{{stage}}、未着手',
989
+ pathStageLostCurrent: '{{stage}}、失注、現在のステージ',
990
+ pathStageLostUpcoming: '{{stage}}、失注、未到達',
991
+ pathStageWonUpcoming: '{{stage}}、目標ステージ、未到達',
884
992
  linkCopied: "リンクをクリップボードにコピーしました",
885
993
  linkCopyFailed: "リンクのコピーに失敗しました",
886
994
  cancel: "キャンセル",
@@ -895,13 +1003,18 @@ const ja = {
895
1003
  concurrentUpdateReload: "最新を読み込む",
896
1004
  concurrentUpdateOverwrite: "上書きする",
897
1005
  concurrentUpdateCancel: "キャンセル",
1006
+ concurrentUpdateRecordLabel: "このレコード",
898
1007
  openInNewTab: "新しいタブで開く",
899
1008
  history: "履歴",
1009
+ historyEmpty: "履歴はまだありません",
900
1010
  deleteRowTitle: "レコードを削除",
901
1011
  createdBy: "作成者",
902
1012
  updatedBy: "更新者",
903
1013
  created: "作成",
904
1014
  updated: "更新",
1015
+ // objectui#3863 — base key. ja has a single plural category (`other`), so this
1016
+ // slot is unreachable here and equals `_other` for key-set parity.
1017
+ showEmptyRelated: "+ {{count}} 件(空)",
905
1018
  showEmptyRelated_one: "+ {{count}} 件(空)",
906
1019
  showEmptyRelated_other: "+ {{count}} 件(空)",
907
1020
  copyEmail: "メールをコピー",
@@ -913,7 +1026,8 @@ const ja = {
913
1026
  },
914
1027
  chart: {
915
1028
  noData: "チャートデータがありません",
916
- loading: "チャート読み込み中...",
1029
+ loading: "チャート読み込み中…",
1030
+ nullCategory: "(未設定)",
917
1031
  },
918
1032
  map: {
919
1033
  searchLocations: "場所を検索…",
@@ -922,68 +1036,9 @@ const ja = {
922
1036
  invalidCoordinates: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。",
923
1037
  invalidCoordinatesPlural: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。",
924
1038
  },
925
- workflow: {
926
- draft: "下書き",
927
- active: "アクティブ",
928
- paused: "一時停止",
929
- completed: "完了",
930
- cancelled: "キャンセル",
931
- save: "保存",
932
- publish: "公開",
933
- addNode: "ノードを追加",
934
- workflowFlow: "ワークフロー",
935
- properties: "プロパティ",
936
- connections: "接続",
937
- quickConnect: "クイック接続",
938
- fromPlaceholder: "開始...",
939
- toPlaceholder: "終了...",
940
- connect: "接続",
941
- label: "ラベル",
942
- type: "タイプ",
943
- description: "説明",
944
- assignee: "担当者",
945
- assigneeType: "担当者タイプ",
946
- user: "ユーザー",
947
- role: "ロール",
948
- group: "グループ",
949
- expression: "式",
950
- timeoutMinutes: "タイムアウト(分)",
951
- selectNodeToEdit: "ノードを選択してプロパティを編集",
952
- workflowTitle: "ワークフロータイトル",
953
- newWorkflow: "新規ワークフロー",
954
- outConnections: "{{count}} 個の出力",
955
- start: "開始",
956
- end: "終了",
957
- task: "タスク",
958
- userTask: "ユーザータスク",
959
- serviceTask: "サービスタスク",
960
- scriptTask: "スクリプトタスク",
961
- approval: "承認",
962
- condition: "条件",
963
- parallelGateway: "並列ゲートウェイ",
964
- joinGateway: "結合ゲートウェイ",
965
- boundaryEvent: "境界イベント",
966
- delay: "遅延",
967
- notification: "通知",
968
- webhook: "Webhook",
969
- allowConcurrency: "許可(並行実行)",
970
- forbidConcurrency: "禁止(新規スキップ)",
971
- replaceConcurrency: "置換(既存キャンセル)",
972
- queueConcurrency: "キュー(完了後に実行)",
973
- conditionEvent: "条件",
974
- manualEvent: "手動",
975
- webhookEvent: "Webhook",
976
- timerEvent: "タイマー",
977
- signalEvent: "シグナル",
978
- versionHistory: "バージョン履歴",
979
- importBpmn: "BPMNをインポート",
980
- exportBpmn: "BPMNをエクスポート",
981
- undo: "元に戻す",
982
- redo: "やり直す",
983
- resetZoom: "ズームをリセット",
984
- },
985
1039
  dashboard: {
986
1040
  noRows: "行がありません",
1041
+ loading: "読み込み中…",
987
1042
  pickMeasures: "このデータセットウィジェットの指標(値)を選択してください。",
988
1043
  datasetUnsupported: "このデータソースはデータセットクエリに対応していません。",
989
1044
  details: "詳細",
@@ -1020,6 +1075,105 @@ const ja = {
1020
1075
  total: "合計",
1021
1076
  noDataAvailable: "データがありません",
1022
1077
  noDataSourceFor: "データソースが利用できません:",
1078
+ config: {
1079
+ breadcrumb: {
1080
+ dashboard: "ダッシュボード",
1081
+ configuration: "設定",
1082
+ widget: "ウィジェット",
1083
+ chart: "グラフ",
1084
+ table: "テーブル",
1085
+ pivotTable: "ピボットテーブル",
1086
+ },
1087
+ section: {
1088
+ general: "基本",
1089
+ layout: "レイアウト",
1090
+ data: "データ",
1091
+ dataBinding: "データバインディング",
1092
+ appearance: "外観",
1093
+ },
1094
+ field: {
1095
+ title: "タイトル",
1096
+ description: "説明",
1097
+ columns: "列数",
1098
+ gap: "間隔",
1099
+ rowHeight: "行の高さ (px)",
1100
+ autoRefresh: "自動更新",
1101
+ showDescription: "説明を表示",
1102
+ theme: "テーマ",
1103
+ widgetType: "ウィジェットの種類",
1104
+ colorVariant: "カラーバリアント",
1105
+ dataset: "データセット",
1106
+ dimensions: "ディメンション",
1107
+ values: "値",
1108
+ width: "幅 (列数)",
1109
+ height: "高さ (行数)",
1110
+ },
1111
+ placeholder: {
1112
+ dashboardTitle: "ダッシュボードのタイトル",
1113
+ dashboardDescription: "タイトルの下に表示される簡単な説明",
1114
+ widgetTitle: "ウィジェットのタイトル",
1115
+ widgetDescription: "ウィジェットの説明",
1116
+ datasetName: "データセット名",
1117
+ selectDataset: "データセットを選択…",
1118
+ searchDatasets: "データセットを検索…",
1119
+ addDimension: "ディメンションを追加…",
1120
+ addMeasure: "メジャーを追加…",
1121
+ searchMembers: "検索…",
1122
+ },
1123
+ empty: {
1124
+ datasets: "データセットが見つかりません。",
1125
+ dimensions: "ディメンションが選択されていません。",
1126
+ measures: "メジャーが選択されていません。",
1127
+ nothingToAdd: "追加できる項目はありません。",
1128
+ },
1129
+ help: {
1130
+ dataset: "このウィジェットがバインドするセマンティックレイヤーのデータセット (ADR-0021)。",
1131
+ dimensions: "これらのデータセットのディメンションで値をグループ化/分割します。",
1132
+ dimensionsPivot: "グループ化/分割フィールド。最後のディメンションは列として横方向に展開されます。",
1133
+ values: "表示するデータセットのメジャー (1つ以上)。",
1134
+ },
1135
+ action: {
1136
+ add: "追加",
1137
+ remove: "{{name}} を削除",
1138
+ },
1139
+ refresh: {
1140
+ off: "オフ",
1141
+ every30s: "30秒ごと",
1142
+ every1m: "1分ごと",
1143
+ every5m: "5分ごと",
1144
+ every15m: "15分ごと",
1145
+ every30m: "30分ごと",
1146
+ every1h: "1時間ごと",
1147
+ },
1148
+ themeOption: {
1149
+ light: "ライト",
1150
+ dark: "ダーク",
1151
+ auto: "自動",
1152
+ },
1153
+ widgetType: {
1154
+ metric: "メトリック",
1155
+ bar: "棒グラフ",
1156
+ horizontalBar: "横棒グラフ",
1157
+ line: "折れ線グラフ",
1158
+ pie: "円グラフ",
1159
+ donut: "ドーナツグラフ",
1160
+ area: "面積グラフ",
1161
+ scatter: "散布図",
1162
+ funnel: "ファネル",
1163
+ table: "テーブル",
1164
+ pivot: "ピボットテーブル",
1165
+ },
1166
+ color: {
1167
+ default: "デフォルト",
1168
+ blue: "ブルー",
1169
+ teal: "ティール",
1170
+ orange: "オレンジ",
1171
+ purple: "パープル",
1172
+ success: "成功",
1173
+ warning: "警告",
1174
+ danger: "危険",
1175
+ },
1176
+ },
1023
1177
  trend: {
1024
1178
  vsLastQuarter: "前四半期比",
1025
1179
  vsLastMonth: "先月比",
@@ -1029,24 +1183,6 @@ const ja = {
1029
1183
  vsPreviousPeriod: "前期比",
1030
1184
  },
1031
1185
  },
1032
- configPanel: {
1033
- save: "保存",
1034
- discard: "破棄",
1035
- close: "閉じる",
1036
- layout: "レイアウト",
1037
- columns: "列数",
1038
- gap: "間隔",
1039
- rowHeight: "行の高さ",
1040
- data: "データ",
1041
- refreshInterval: "更新間隔",
1042
- appearance: "外観",
1043
- title: "タイトル",
1044
- showDescription: "説明を表示",
1045
- theme: "テーマ",
1046
- configuration: "設定",
1047
- general: "基本",
1048
- advanced: "詳細",
1049
- },
1050
1186
  appDesigner: {
1051
1187
  createApp: "アプリケーション作成",
1052
1188
  editApp: "アプリケーション編集",
@@ -1097,8 +1233,6 @@ const ja = {
1097
1233
  showSort: "ソートを表示",
1098
1234
  appearance: "外観",
1099
1235
  rowHeight: "行高さ",
1100
- stripedRows: "ストライプ行",
1101
- bordered: "枠線",
1102
1236
  livePreview: "リアルタイムプレビュー",
1103
1237
  stepBasicDesc: "名前、タイトル、レイアウト",
1104
1238
  stepObjectsDesc: "ビジネスオブジェクトを選択",
@@ -1212,7 +1346,6 @@ const ja = {
1212
1346
  unique: "ユニーク",
1213
1347
  readOnly: "読み取り専用",
1214
1348
  hidden: "非表示",
1215
- indexed: "インデックス",
1216
1349
  externalId: "外部ID",
1217
1350
  trackHistory: "履歴追跡",
1218
1351
  defaultValue: "デフォルト値",
@@ -1241,6 +1374,7 @@ const ja = {
1241
1374
  },
1242
1375
  },
1243
1376
  console: {
1377
+ saveAdvisoryTitle: "保存しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1244
1378
  settingsHub: {
1245
1379
  title: "設定",
1246
1380
  subtitle: "ワークスペース、連携、機能フラグを設定します。",
@@ -1285,6 +1419,15 @@ const ja = {
1285
1419
  passwordsDownload: "CSV をダウンロード",
1286
1420
  },
1287
1421
  ai: {
1422
+ pendingDrafts: {
1423
+ // {{detail}} はランタイムが返すメッセージ列なので、中間コロンは全角
1424
+ // (exportFailed などと同じ。単一トークンの値なら半角)。
1425
+ count: "未公開の変更が {{count}} 件あります — ユーザーには表示されません。",
1426
+ publish: "公開",
1427
+ published: "保留中の変更はすべて反映されています。",
1428
+ failed: "公開に失敗しました。",
1429
+ publishedWithFindings: "公開しましたが、ランタイムプローブが問題を報告しました:{{detail}}",
1430
+ },
1288
1431
  usage: {
1289
1432
  title: "AI 使用状況",
1290
1433
  meterBuild: "ビルド",
@@ -1307,7 +1450,7 @@ const ja = {
1307
1450
  shareTitle: "この会話を共有",
1308
1451
  shareDisabledTitle: "共有するにはチャットを開始してください",
1309
1452
  newChat: "新規",
1310
- searchChats: "チャットを検索...",
1453
+ searchChats: "チャットを検索…",
1311
1454
  noChatsYet: "チャットはまだありません",
1312
1455
  noChatsDescription: "新しい会話を開始するとここに表示されます。",
1313
1456
  noMatchingChats: "一致するチャットはありません。",
@@ -1316,18 +1459,18 @@ const ja = {
1316
1459
  deleteConversation: "会話を削除",
1317
1460
  saveRename: "名前を保存",
1318
1461
  cancelRename: "名前の変更をキャンセル",
1319
- loadingHistory: "会話履歴を読み込んでいます...",
1462
+ loadingHistory: "会話履歴を読み込んでいます…",
1320
1463
  conversationReady: "会話の準備ができました",
1321
1464
  preparingConversation: "新しい会話を準備しています",
1322
1465
  offlineDemoMode: "オフラインデモモード — エージェント一覧は利用できません",
1323
1466
  sendFailedRateLimited: "送信の間隔が短すぎます。メッセージは下に保持されています — 少し待ってから再試行してください。",
1324
1467
  sendFailedGeneric: "メッセージを送信できませんでした。下に保持されています — もう一度お試しください。",
1325
- askAgent: "{{agent}} に質問...",
1468
+ askAgent: "{{agent}} に質問…",
1326
1469
  assistant: "アシスタント",
1327
1470
  liveCanvas: "ライブプレビュー — {{app}}(ドラフト)",
1328
1471
  liveCanvasUnlisted: "ライブアプリ — {{app}}(公開するまで非掲載)",
1329
- loadingAgents: "エージェントを読み込んでいます...",
1330
- askAnything: "何でも質問してください...",
1472
+ loadingAgents: "エージェントを読み込んでいます…",
1473
+ askAnything: "何でも質問してください…",
1331
1474
  emptyTitle: "会話を始める",
1332
1475
  emptyDescription: "何でも質問してください — アシスタントは現在のアプリのコンテキストを参照できます。",
1333
1476
  switchAssistant: "アシスタントを切り替え",
@@ -1420,6 +1563,11 @@ const ja = {
1420
1563
  changesConfirmed: "確認済み",
1421
1564
  changesConfirm: "変更を確定",
1422
1565
  changesConfirmHint: "返信してこの変更を確定または調整してください。",
1566
+ changesApplying: "適用中…",
1567
+ changesApplied: "適用済み",
1568
+ changesDrafted: "下書きとして保存",
1569
+ changesFailed: "未適用",
1570
+ discussing: "話題: {{target}}",
1423
1571
  changeVerb: {
1424
1572
  createObject: "オブジェクトを作成",
1425
1573
  addField: "項目を追加",
@@ -1430,9 +1578,60 @@ const ja = {
1430
1578
  createSeed: "サンプルデータを生成",
1431
1579
  createPackage: "アプリパッケージを作成",
1432
1580
  },
1581
+ // objectui#3546 slice four — the AI console surfaces: the /ai chat page's app switcher,
1582
+ // connection banner and plan/publish cards, the ChatDock chrome, and the
1583
+ // conversation-list date buckets. `group.*` is the template-key family
1584
+ // `console.ai.group.${key}` (ConversationsSidebar), enumerated from the
1585
+ // ConversationGroupKey union — all five members, no wildcard.
1586
+ collapseToDock: "サイドパネルに収める",
1587
+ switchApp: "アプリを切り替え",
1588
+ switchAppLabel: "アプリ別のビルド会話",
1589
+ newApp: "新しいアプリ",
1590
+ connectionWaiting: "サーバーを待っています…",
1591
+ connectionStalled: "まだ処理しています…",
1592
+ connectionOffline: "接続が切断されました — 再接続しています…",
1593
+ designingPlan: "アプリを設計しています…",
1594
+ designingPlanHint: {
1595
+ data: "追跡するデータを整理しています…",
1596
+ objects: "オブジェクトとそのフィールドを形にしています…",
1597
+ relations: "関連レコードを接続しています…",
1598
+ lookups: "リレーションと参照フィールドを設定しています…",
1599
+ views: "画面とビューを計画しています…",
1600
+ forms: "フォームとリストを配置しています…",
1601
+ defaults: "妥当な既定値と検証を追加しています…",
1602
+ dashboard: "追跡用のダッシュボードを描いています…",
1603
+ review: "構造全体に矛盾がないか再確認しています…",
1604
+ finalize: "プランをまとめています…",
1605
+ },
1606
+ planBuilding: "ビルド中…",
1607
+ planBuilt: "ビルド済み",
1608
+ planDeferred: "まだビルドされていません",
1609
+ planReady: "プランの準備ができました。今すぐビルドするか、調整したい点を教えてください。",
1610
+ published: "公開しました",
1611
+ publishFailed: "公開に失敗しました",
1612
+ unavailableTitle: "AI アシスタントを利用できません",
1613
+ unavailableDescription: "このデプロイでは AI アシスタントが有効になっていません。それ以外の機能は通常どおり動作します。",
1614
+ unavailableError: "AI サービスに接続できませんでした。一時的にオフラインの可能性があります — 再試行するか、ホームに戻ってください。",
1615
+ unavailableRetry: "再試行",
1616
+ unavailableHome: "ホームに戻る",
1617
+ dock: {
1618
+ title: "アシスタント",
1619
+ description: "AI アシスタントのチャット",
1620
+ resize: "チャットのサイズを変更",
1621
+ collapse: "チャットを折りたたむ",
1622
+ maximize: "フルページで開く",
1623
+ open: "アシスタントを開く",
1624
+ },
1625
+ group: {
1626
+ today: "今日",
1627
+ yesterday: "昨日",
1628
+ previous7Days: "過去 7 日間",
1629
+ previous30Days: "過去 30 日間",
1630
+ older: "それ以前",
1631
+ },
1433
1632
  },
1434
1633
  title: "ObjectStack コンソール",
1435
- initializing: "アプリケーションを初期化中...",
1634
+ initializing: "アプリケーションを初期化中…",
1436
1635
  loadingHint: "新しい環境のセットアップには少し時間がかかることがあります。",
1437
1636
  breadcrumb: {
1438
1637
  dashboards: "ダッシュボード",
@@ -1440,6 +1639,31 @@ const ja = {
1440
1639
  reports: "レポート",
1441
1640
  system: "システム",
1442
1641
  },
1642
+ // objectui#4024 — the single-namespace settings screen. Its sibling
1643
+ // `settingsHub` above already resolved through this pack; the view was the
1644
+ // one file still carrying English literals.
1645
+ settingsView: {
1646
+ backToHub: "すべての設定",
1647
+ back: "戻る",
1648
+ noNamespace: "名前空間が選択されていません。",
1649
+ loadError: "設定の読み込みに失敗しました",
1650
+ saved: "設定を保存しました",
1651
+ saveFailed: "保存に失敗しました",
1652
+ lockedByEnv: "環境によりロックされています: {{key}}",
1653
+ lockedByEnvNoKey: "環境によりロックされています",
1654
+ actionSucceeded: "操作に成功しました",
1655
+ actionFailed: "操作に失敗しました",
1656
+ discard: "破棄",
1657
+ saveChanges: "変更を保存",
1658
+ unsavedCount: "未保存の変更 {{count}} 件",
1659
+ unsavedCount_one: "未保存の変更 {{count}} 件",
1660
+ unsavedCount_other: "未保存の変更 {{count}} 件",
1661
+ cryptoRefusalTitle: "このデプロイメントはシークレットを暗号化できません",
1662
+ cryptoRefusalSubjectSuffix: "は暗号化対象として宣言されているため、何も書き込まれませんでした。",
1663
+ cryptoRefusalNoSubject: "暗号化対象として宣言された値は拒否され、何も書き込まれませんでした。",
1664
+ cryptoRefusalToast: "シークレットを暗号化できません: {{subject}}",
1665
+ cryptoRefusalToastNoSubject: "シークレットを暗号化できません",
1666
+ },
1443
1667
  loadingSteps: {
1444
1668
  connecting: "データソースに接続中",
1445
1669
  loadingConfig: "設定を読み込み中",
@@ -1469,6 +1693,7 @@ const ja = {
1469
1693
  general: "一般",
1470
1694
  navigation: "ナビゲーション",
1471
1695
  dataViews: "データビュー",
1696
+ aiChat: "AI アシスタント",
1472
1697
  preferences: "設定",
1473
1698
  },
1474
1699
  openCommandPalette: "コマンドパレットを開く",
@@ -1479,11 +1704,13 @@ const ja = {
1479
1704
  createRecord: "新しいレコードを作成",
1480
1705
  refreshData: "データを更新",
1481
1706
  editRecord: "選択したレコードを編集",
1707
+ newChat: "新しいチャット",
1708
+ toggleChatsList: "チャット一覧を切り替え",
1482
1709
  toggleDarkMode: "ダークモードを切り替え",
1483
1710
  },
1484
1711
  commandPalette: {
1485
1712
  title: "コマンドパレット",
1486
- placeholder: "コマンドを入力または検索...",
1713
+ placeholder: "コマンドを入力または検索…",
1487
1714
  noResults: "結果が見つかりません。",
1488
1715
  objects: "オブジェクト",
1489
1716
  dashboards: "ダッシュボード",
@@ -1509,6 +1736,12 @@ const ja = {
1509
1736
  goHome: "ホームに戻る",
1510
1737
  errorDetails: "エラー詳細(開発モードのみ)",
1511
1738
  },
1739
+ // objectui#3546 slice four — the console's catch-all route (AppContent `RouteNotFound`).
1740
+ notFound: {
1741
+ title: "ページが見つかりません",
1742
+ description: "アクセスした URL は、このアプリのどのビューにも一致しません。",
1743
+ back: "戻る",
1744
+ },
1512
1745
  theme: {
1513
1746
  toggle: "テーマを切り替え",
1514
1747
  light: "ライト",
@@ -1524,109 +1757,41 @@ const ja = {
1524
1757
  viewNameHelp: "マシンキー(snake_case)。タイトルから自動入力されます — 必要に応じて編集してください。",
1525
1758
  viewNameRequired: "キーを入力してください(英小文字、数字、アンダースコア)。ラテン文字以外のタイトルでは自動入力されません。",
1526
1759
  viewNameInvalid: "英小文字、数字、アンダースコアを使用し、先頭は文字かアンダースコアにしてください。",
1527
- systemViewReadonly: 'System view defined in code - duplicate to customize.',
1528
- expandToPage: 'Open as full page',
1760
+ systemViewReadonly: "システムビューはコードで定義されており、読み取り専用です。",
1761
+ cannotEditMetaView: "このビューはコードで定義された組み込みビューのため、変更できません。",
1762
+ cannotDeleteMetaView: "このビューはコードで定義された組み込みビューのため、削除できません。",
1763
+ expandToPage: "フルページで開く",
1529
1764
  objectNotFound: "オブジェクトが見つかりません",
1530
1765
  objectNotFoundDescription: "オブジェクト「{{objectName}}」は現在の設定に存在しません。",
1531
1766
  objectNotFoundHint: "アプリのナビゲーション設定を確認するか、サイドバーから別のオブジェクトを選択してください。",
1532
1767
  filterOrNotSavable: "このフィルターは条件間に OR を使用しており、保存済みビューにはまだ保存できません。現在のリストには適用されています。ビューに保存するには OR グループを解除してください。",
1533
1768
  filterNestedNotSavable: "このフィルターはネストされた条件グループを使用しており、保存済みビューには保存できません。ビューに保存するには単一の条件リストに展開してください。",
1534
1769
  allRecords: "すべてのレコード",
1535
- exitDesignMode: "デザインモードを終了",
1536
- enterDesignMode: "デザインモードに入る",
1537
- metadataInspector: "メタデータインスペクター",
1538
- editView: "ビューを編集",
1539
- addView: "ビューを追加",
1540
- designTools: "デザインツール",
1541
1770
  new: "新規",
1542
1771
  configureView: "ビューを設定",
1543
- closePanel: "パネルを閉じる",
1544
- page: "ページ",
1545
- pageConfigHint: "ツールバー、ナビゲーション、ビューシェル設定",
1546
- listConfigHint: "このリストタイプのデータレンダリング、列、外観",
1547
- general: "一般",
1548
- generalHint: "ビューのタイトル、説明、タイプ",
1549
1772
  toolbar: "ツールバー",
1550
- toolbarHint: "検索、フィルター、ソート、グループ、密度の切り替え",
1551
1773
  toolbarEnabledCount: "{{total}} 件中 {{count}} 件有効",
1552
- navigationSection: "ナビゲーション",
1553
- navigationHint: "行クリック時の動作と詳細ビューの設定",
1554
- records: "レコード",
1555
- recordsHint: "選択モード、レコード追加、インライン編集",
1556
- exportPrint: "エクスポートと印刷",
1557
- exportPrintHint: "エクスポート形式、印刷、レコード数の表示",
1558
- showAllFields: "すべて表示",
1559
- hideAllFields: "すべて非表示",
1560
- searchFields: "フィールドを検索...",
1774
+ searchFields: "フィールドを検索…",
1561
1775
  title: "タイトル",
1562
- description: "説明",
1563
- data: "データ",
1564
- source: "ソース",
1565
- columns: "列",
1566
- filterBy: "フィルター条件",
1567
- sortBy: "並べ替え条件",
1568
- appearance: "外観",
1569
- showDescription: "説明を表示",
1570
1776
  viewType: "ビュータイプ",
1571
- userFilters: "ユーザーフィルター",
1572
- enableSearch: "検索を有効化",
1573
- enableFilter: "フィルターを有効化",
1574
- enableSort: "並べ替えを有効化",
1575
- enableHideFields: "フィールド非表示を有効化",
1576
- enableGroup: "グループを有効化",
1577
- enableColor: "カラーを有効化",
1578
- enableDensity: "密度を有効化",
1579
- userActions: "ユーザーアクション",
1580
- addRecordViaForm: "フォームからレコードを追加",
1581
- advanced: "詳細設定",
1582
- allowExport: "エクスポートを許可",
1583
1777
  recordCount: "{{count}} 件のレコード",
1584
- noDescription: "説明なし",
1585
- none: "なし",
1586
- columnsConfigured: "{{count}} 列",
1587
1778
  save: "保存",
1588
1779
  discard: "破棄",
1589
1780
  createView: "ビューを作成",
1590
1781
  newView: "新しいビュー",
1591
- typeOptions: "タイプオプション",
1592
1782
  groupByField: "グループ化フィールド",
1593
1783
  startDateField: "開始日フィールド",
1594
1784
  titleField: "タイトルフィールド",
1595
1785
  latitudeField: "緯度フィールド",
1596
1786
  longitudeField: "経度フィールド",
1597
1787
  imageField: "画像フィールド",
1598
- dateField: "日付フィールド",
1599
- selectField: "フィールドを選択...",
1600
- gridOptionsHint: "グリッドビューは上記で設定された列を使用します。",
1788
+ selectField: "フィールドを選択…",
1601
1789
  groupBy: "グループ化",
1602
- prefixField: "プレフィックスフィールド",
1603
- fields: "フィールド",
1604
- fieldsVisible: "{{count}} 件表示",
1605
- sortsCount: "{{count}} 件の並べ替え",
1606
- filtersCount: "{{count}} 件のフィルター",
1607
1790
  endDateField: "終了日フィールド",
1608
- color: "カラー",
1609
- fieldTextColor: "フィールドテキストカラー",
1610
- rowHeight: "行の高さ",
1611
- wrapHeaders: "ヘッダーの折り返し",
1612
- showFieldDescriptions: "フィールド説明を表示",
1613
- collapseAllByDefault: "デフォルトですべて折りたたむ",
1614
- striped: "ストライプ行",
1615
- bordered: "ボーダーセル",
1616
- inlineEdit: "インラインでレコードを編集",
1617
- addDeleteRecordsInline: "インラインでレコードを追加/削除",
1618
- clickIntoRecordDetails: "レコード詳細をクリックで表示",
1619
- navigationMode: "ナビゲーションモード",
1620
- navigationWidth: "ナビゲーション幅",
1621
- navigationWidthHint: "ドロワー、モーダル、スプリットナビゲーションモードで使用可能",
1622
- openNewTab: "新しいタブで開く",
1623
- openNewTabHint: "ページおよび新しいウィンドウナビゲーションモードで使用可能",
1624
1791
  import: "インポート",
1625
1792
  importTitle: "CSVからインポート",
1626
1793
  importedToast: "{{count}} 行をインポートしました。",
1627
1794
  importedWithSkipped: "{{ok}} 行をインポートしました。{{skipped}} 行をスキップしました。",
1628
- showAdvancedSettings: "詳細設定を表示",
1629
- showFewerSettings: "設定を減らす",
1630
1795
  createViewDesc: "ビュータイプを選択して名前を付けてください。設定は後で変更できます。",
1631
1796
  cancel: "キャンセル",
1632
1797
  create: "作成",
@@ -1659,7 +1824,7 @@ const ja = {
1659
1824
  latitudeFieldHelp: "緯度座標を提供するフィールド(地理フィールドのみ)。",
1660
1825
  longitudeFieldHelp: "経度座標を提供するフィールド(地理フィールドのみ)。",
1661
1826
  imageFieldHelp: "ギャラリーのカバーはこの画像または添付フィールドから取得されます。",
1662
- selectOption: "選択...",
1827
+ selectOption: "選択…",
1663
1828
  noEligibleFieldForType: "このタイプに適したフィールドがありません。最初にオブジェクトに追加してください。",
1664
1829
  viewTypeUnavailable: "このオブジェクトには「{{field}}」として機能するフィールドがありません。",
1665
1830
  viewTypeUnavailableShort: "このオブジェクトではサポートされていません。",
@@ -1674,58 +1839,9 @@ const ja = {
1674
1839
  xAxisFieldHelp: "カテゴリまたは時間の次元。",
1675
1840
  yAxisField: "Y軸フィールド",
1676
1841
  yAxisFieldHelp: "集計する数値フィールド。",
1677
- selectionMode: "選択モード",
1678
- selectionNone: "なし",
1679
- selectionSingle: "単一",
1680
- selectionMultiple: "複数",
1681
- pageSize: "ページサイズ",
1682
- pageSizeOptions: "ページサイズのオプション",
1683
- exportFormats: "エクスポート形式",
1684
- exportMaxRecords: "最大レコード数",
1685
- exportIncludeHeaders: "ヘッダーを含む",
1686
- exportFileNamePrefix: "ファイル名プレフィックス",
1687
- searchableFields: "検索可能フィールド",
1688
- filterableFields: "フィルター可能フィールド",
1689
- resizableColumns: "サイズ変更可能な列",
1690
- densityCompact: "コンパクト",
1691
- densityComfortable: "標準",
1692
- densitySpacious: "広め",
1693
- densityMode: "密度モード",
1694
- hiddenFields: "非表示フィールド",
1695
- rowActions: "行アクション",
1696
- bulkActions: "一括アクション",
1697
- sharing: "共有",
1698
- sharingEnabled: "共有を有効にする",
1699
- sharingVisibility: "表示設定",
1700
- addRecordEnabled: "レコード追加を有効にする",
1701
- addRecordPosition: "位置",
1702
- addRecordMode: "モード",
1703
- addRecordFormView: "フォームビュー",
1704
- conditionalFormatting: "条件付き書式",
1705
- addRule: "ルールを追加",
1706
- quickFilters: "クイックフィルター",
1707
- addQuickFilter: "クイックフィルターを追加",
1708
- ufElements: "要素",
1709
- ufDropdown: "ドロップダウン",
1710
1842
  ufTabs: "タブ",
1711
- ufToggle: "トグル",
1712
- ufAddField: "+ フィルターフィールドを追加...",
1713
- ufNoFields: "利用可能なフィールドがありません",
1714
- ufAddTab: "+ タブを追加",
1715
- ufTabLabel: "ラベル",
1843
+ ufAddField: "+ フィルターフィールドを追加…",
1716
1844
  ufShowAllRecords: "「すべてのレコード」タブを表示",
1717
- ufAllowAddTab: "タブの追加を許可",
1718
- showRecordCount: "レコード数を表示",
1719
- allowPrinting: "印刷を許可",
1720
- virtualScroll: "仮想スクロール",
1721
- emptyStateTitle: "空の状態のタイトル",
1722
- emptyStateMessage: "空の状態のメッセージ",
1723
- emptyStateIcon: "空の状態のアイコン",
1724
- ariaLabel: "ARIAラベル",
1725
- ariaDescribedBy: "ARIA説明",
1726
- ariaLive: "ARIAライブ",
1727
- accessibility: "アクセシビリティ",
1728
- viewTabs: "ビュータブ",
1729
1845
  },
1730
1846
  localeSwitcher: {
1731
1847
  label: "言語",
@@ -1769,7 +1885,7 @@ const ja = {
1769
1885
  passwordPlaceholder: "パスワードを入力",
1770
1886
  forgotPasswordText: "パスワードをお忘れですか?",
1771
1887
  submitButton: "サインイン",
1772
- submittingButton: "サインイン中...",
1888
+ submittingButton: "サインイン中…",
1773
1889
  noAccountText: "アカウントをお持ちでないですか?",
1774
1890
  signUpText: "新規登録",
1775
1891
  errors: {
@@ -1777,6 +1893,18 @@ const ja = {
1777
1893
  invalidCredentials: "メールアドレスまたはパスワードが正しくありません。再試行してください。",
1778
1894
  emailNotVerified: "サインインする前にメールアドレスを確認してください。",
1779
1895
  },
1896
+ // objectui#3546 slice three — phone/OTP sign-in. `{seconds}` is LoginForm's own
1897
+ // literal `.replace()` hole, not i18next interpolation: keep the single braces.
1898
+ emailOrPhoneLabel: "メールアドレスまたは電話番号",
1899
+ emailOrPhonePlaceholder: "name@example.com または +1 555 000 0000",
1900
+ phoneLabel: "電話番号",
1901
+ phonePlaceholder: "+1 555 000 0000",
1902
+ otpCodeLabel: "確認コード",
1903
+ otpCodePlaceholder: "6 桁のコード",
1904
+ sendOtpButton: "コードを取得",
1905
+ resendOtpCountdownText: "{seconds} 秒後に再送信",
1906
+ usePhoneOtpText: "確認コードでサインイン",
1907
+ usePasswordSignInText: "パスワードでサインインする",
1780
1908
  },
1781
1909
  register: {
1782
1910
  title: "アカウントを作成",
@@ -1792,7 +1920,7 @@ const ja = {
1792
1920
  passwordMismatchError: "パスワードが一致しません",
1793
1921
  passwordTooShortError: "パスワードは8文字以上必要です",
1794
1922
  submitButton: "アカウント作成",
1795
- submittingButton: "アカウント作成中...",
1923
+ submittingButton: "アカウント作成中…",
1796
1924
  hasAccountText: "すでにアカウントをお持ちですか?",
1797
1925
  signInText: "サインイン",
1798
1926
  errors: {
@@ -1813,12 +1941,26 @@ const ja = {
1813
1941
  emailLabel: "メールアドレス",
1814
1942
  emailPlaceholder: "name@example.com",
1815
1943
  submitButton: "リセットリンクを送信",
1816
- submittingButton: "送信中...",
1944
+ submittingButton: "送信中…",
1817
1945
  successTitle: "メールをご確認ください",
1818
- successDescription: "{{email}} にパスワードリセットリンクを送信しました。受信箱をご確認ください。",
1946
+ successDescription: "{email} にパスワードリセットリンクを送信しました。受信箱をご確認ください。",
1819
1947
  backToSignInText: "サインインに戻る",
1820
1948
  rememberPasswordText: "パスワードを覚えていますか?",
1821
1949
  signInText: "サインイン",
1950
+ // objectui#3546 slice three — the SMS reset branch of the same form.
1951
+ phoneLabel: "電話番号",
1952
+ phonePlaceholder: "+1 555 000 0000",
1953
+ otpCodeLabel: "確認コード",
1954
+ otpCodePlaceholder: "6 桁のコード",
1955
+ sendOtpButton: "コードを取得",
1956
+ resendOtpCountdownText: "{seconds} 秒後に再送信",
1957
+ newPasswordLabel: "新しいパスワード",
1958
+ newPasswordPlaceholder: "新しいパスワードを入力",
1959
+ resetButton: "パスワードをリセット",
1960
+ usePhoneResetText: "SMS コードでリセット",
1961
+ useEmailResetText: "メールでリセットする",
1962
+ phoneSuccessTitle: "パスワードをリセットしました",
1963
+ phoneSuccessDescription: "パスワードをリセットしました。新しいパスワードでサインインできます。",
1822
1964
  },
1823
1965
  resetPassword: {
1824
1966
  title: "新しいパスワードを設定",
@@ -1857,6 +1999,8 @@ const ja = {
1857
1999
  backToLogin: "ログインに戻る",
1858
2000
  checkSpam: "メールが届きませんか?スパムフォルダーを確認するか、サポートに連絡してください。",
1859
2001
  or: "または",
2002
+ // objectui#3546 slice three.
2003
+ resendUnavailable: "この環境ではメール配信が設定されていない可能性があります。問題が続く場合はサポートに連絡してください。",
1860
2004
  },
1861
2005
  setup: {
1862
2006
  welcomeTitle: "ObjectStackへようこそ",
@@ -1895,6 +2039,9 @@ const ja = {
1895
2039
  invalidDescription: "URLにデバイスコードが指定されていません。",
1896
2040
  loading: "読み込み中…",
1897
2041
  cancel: "キャンセル",
2042
+ // objectui#3546 slice three — device-authorization plugin switched off.
2043
+ disabledTitle: "デバイス認証が有効になっていません",
2044
+ disabledDescription: "このデプロイメントではデバイス認証が有効になっていないため、ここでこのデバイスを承認できません。",
1898
2045
  },
1899
2046
  shell: {
1900
2047
  tenantHostHint: "このワークスペースにサインインしています",
@@ -1934,6 +2081,29 @@ const ja = {
1934
2081
  },
1935
2082
  },
1936
2083
  },
2084
+ // objectui#3546 slice three — the /oauth/consent screen.
2085
+ oauth: {
2086
+ consent: {
2087
+ title: "{{appName}} がアカウントへのアクセスを求めています",
2088
+ request: "{{appName}} が許可を求めています{{suffix}}。",
2089
+ unknownApp: "あるアプリケーション",
2090
+ willAllow: "このアプリは次のことができます:",
2091
+ scope: {
2092
+ openid: "本人確認を行う",
2093
+ profile: "基本プロフィール(名前、画像)を読み取る",
2094
+ email: "メールアドレスを読み取る",
2095
+ offlineAccess: "サインインしたままにする(アクセスの更新)",
2096
+ },
2097
+ deny: "拒否",
2098
+ authorize: "許可",
2099
+ submitting: "許可中…",
2100
+ granted: "アクセスを許可しました",
2101
+ denied: "アクセスが拒否されました",
2102
+ noRedirect: "サーバーからリダイレクト URL が返されませんでした。",
2103
+ failed: "同意に失敗しました",
2104
+ footer: "アクセス権はアカウント設定からいつでも取り消せます。",
2105
+ },
2106
+ },
1937
2107
  profile: {
1938
2108
  title: "プロフィール",
1939
2109
  subtitle: "アカウント設定を管理します",
@@ -1995,6 +2165,8 @@ const ja = {
1995
2165
  invite: "メンバーを招待",
1996
2166
  members: "メンバー",
1997
2167
  settings: "ワークスペース設定",
2168
+ multiOrgDisabled: "このインスタンスでは新しい組織の作成が無効です。",
2169
+ createFailed: 'ワークスペースの作成に失敗しました',
1998
2170
  },
1999
2171
  help: {
2000
2172
  onThisPage: "このページの内容",
@@ -2005,7 +2177,7 @@ const ja = {
2005
2177
  },
2006
2178
  sidebar: {
2007
2179
  packageManagement: "パッケージ管理",
2008
- searchNavigation: "ナビゲーションを検索...",
2180
+ searchNavigation: "ナビゲーションを検索…",
2009
2181
  settings: "設定",
2010
2182
  help: "ヘルプ",
2011
2183
  helpTooltip: "ヘルプとドキュメント",
@@ -2029,8 +2201,8 @@ const ja = {
2029
2201
  switchObject: "オブジェクトを切り替え",
2030
2202
  connection: {
2031
2203
  connected: "接続済み",
2032
- connecting: "接続中...",
2033
- reconnecting: "再接続中...",
2204
+ connecting: "接続中…",
2205
+ reconnecting: "再接続中…",
2034
2206
  disconnected: "切断されました",
2035
2207
  error: "接続エラー",
2036
2208
  },
@@ -2046,10 +2218,12 @@ const ja = {
2046
2218
  build: {
2047
2219
  title: "アプリを作る",
2048
2220
  subtitle: "ゼロから始める — オブジェクト、フォーム、自動化、画面を設計します。",
2221
+ noCapability: "このワークスペースではアプリの作成はできません — 「メタデータ管理」権限が必要ですが、お使いのアカウントにはありません。",
2049
2222
  },
2050
2223
  template: {
2051
2224
  title: "テンプレートから始める",
2052
2225
  subtitle: "マーケットプレイスからテンプレートアプリをインストールしてカスタマイズします。",
2226
+ marketplaceDisabled: "このランタイムにはアプリマーケットプレイスが設定されていないため、ここからインストールできるテンプレートはありません。",
2053
2227
  },
2054
2228
  welcomeAdminDescription: "ビジネスを一文で説明してください — AI がオブジェクト、画面、API、エージェントツールを生成します。左のメニューから自分で設定することもできます。",
2055
2229
  welcomeAdminDescriptionNoBuild: "左の管理メニューから最初のアプリケーションを設定してください。データが入ると、AI アシスタントが分析を手伝えます。",
@@ -2069,6 +2243,14 @@ const ja = {
2069
2243
  publishing: "公開しています…",
2070
2244
  published: "公開しました。変更が反映されています。",
2071
2245
  publishFailed: "公開に失敗しました",
2246
+ // objectui#3546 slice six — seedWarn は console.ai.seedWarn と同一の英文なので
2247
+ // 同じ訳を流用。capabilityWarn の「:」は全角:後続が日本語の文だから
2248
+ // (このパックの中間コロンは、値が単一トークンなら半角、文なら全角)。
2249
+ nothing: "公開するものはありません。",
2250
+ probeWarn: "公開しましたが、検証で問題が見つかりました。",
2251
+ seedWarn: "公開しましたが、一部のサンプルデータを読み込めませんでした。",
2252
+ publishedVerified: "公開して検証しました — サンプルデータ {{count}} 行が反映されています。",
2253
+ capabilityWarn: "作成時チェック:{{count}} 件のケイパビリティ参照が解決できません。",
2072
2254
  },
2073
2255
  title: "ホーム",
2074
2256
  subtitle: "ワークスペースのダッシュボード",
@@ -2082,7 +2264,7 @@ const ja = {
2082
2264
  title: "対応が必要な項目",
2083
2265
  empty: "すべて対応済みです",
2084
2266
  },
2085
- loading: "ワークスペースを読み込み中...",
2267
+ loading: "ワークスペースを読み込み中…",
2086
2268
  recent: "最近",
2087
2269
  starred: "スター付き",
2088
2270
  welcome: "ObjectUI へようこそ",
@@ -2143,6 +2325,9 @@ const ja = {
2143
2325
  roles: "ロール",
2144
2326
  configuration: "構成",
2145
2327
  createApp: "アプリを作成",
2328
+ administration: "管理",
2329
+ datasources: "データソース",
2330
+ documentation: "ドキュメント",
2146
2331
  },
2147
2332
  appSwitcher: {
2148
2333
  switchApplication: "アプリケーションを切り替え",
@@ -2182,7 +2367,7 @@ const ja = {
2182
2367
  search: {
2183
2368
  title: "検索",
2184
2369
  back: "戻る",
2185
- placeholder: "オブジェクト、ダッシュボード、ページ、レポートを検索...",
2370
+ placeholder: "オブジェクト、ダッシュボード、ページ、レポートを検索…",
2186
2371
  inputAriaLabel: "オブジェクト、ダッシュボード、ページ、レポートを検索",
2187
2372
  resultsCount: "\"{{query}}\" の結果 {{count}} 件",
2188
2373
  resultsCountPlural: "\"{{query}}\" の結果 {{count}} 件",
@@ -2201,6 +2386,7 @@ const ja = {
2201
2386
  empty: {
2202
2387
  objectNotFound: "オブジェクトが見つかりません",
2203
2388
  objectNotFoundDescription: "オブジェクト「{{name}}」の定義が見つかりません。設定を確認するか、有効なオブジェクトを選択してください。",
2389
+ interfacePageSourceMissing: "このインターフェースページは「{{name}}」を参照していますが、利用できません。",
2204
2390
  pageNotFound: "ページが見つかりません",
2205
2391
  pageNotFoundDescription: "ページ「{{name}}」が見つかりません。削除または名前変更された可能性があります。",
2206
2392
  dashboardNotFound: "ダッシュボードが見つかりません",
@@ -2209,27 +2395,17 @@ const ja = {
2209
2395
  reportNotFoundDescription: "レポート「{{name}}」が見つかりません。削除または名前変更された可能性があります。",
2210
2396
  noAppsConfigured: "アプリが設定されていません",
2211
2397
  noAppsConfiguredDescription: "登録されているアプリケーションがありません。最初のアプリを作成するか、システム設定を参照してください。",
2398
+ appNotAvailable: "アプリを利用できません",
2399
+ appNotAvailableDescription: "このアプリはまだ利用できません — まだ公開処理中の可能性があります。しばらくしてからもう一度お試しください。",
2400
+ appAccessDenied: "このアプリへのアクセス権限がありません",
2401
+ appAccessDeniedDescription: "このアプリは存在しますが、お使いのアカウントには開く権限がありません。管理者にアクセス権の付与を依頼してください。",
2402
+ appAccessDeniedHome: "ホームに戻る",
2212
2403
  createFirstApp: "最初のアプリを作成",
2213
2404
  systemSettings: "システム設定",
2214
2405
  back: "戻る",
2215
2406
  recordNotFound: "レコードが見つかりません",
2216
2407
  recordNotFoundDescription: "お探しのレコードは存在しないか、削除された可能性があります。",
2217
2408
  },
2218
- renderer: {
2219
- noPageSchema: "ページスキーマが指定されていません",
2220
- noFormSchema: "フォームスキーマが指定されていません",
2221
- noDashboardSchema: "ダッシュボードスキーマが指定されていません",
2222
- pageRendering: "ページレンダリング中:{{name}}",
2223
- dashboardRendering: "ダッシュボードレンダリング中:{{name}}",
2224
- formRenderingMode: "{{mode}} モードでフォームをレンダリング中",
2225
- formRenderingFor: "レコード {{id}} 用",
2226
- createRecord: "レコードを作成",
2227
- editRecord: "レコードを編集",
2228
- page: "ページ",
2229
- dashboard: "ダッシュボード",
2230
- save: "保存",
2231
- cancel: "キャンセル",
2232
- },
2233
2409
  actionDialog: {
2234
2410
  title: "アクションパラメーター",
2235
2411
  description: "続行するために必要な情報を入力してください。",
@@ -2280,7 +2456,7 @@ const ja = {
2280
2456
  deleteFailed: "ビューの削除に失敗しました",
2281
2457
  },
2282
2458
  dashboardActions: {
2283
- pdfPreparing: "PDFエクスポートを準備中…",
2459
+ printDialogOpening: "ブラウザーの印刷ダイアログを開いています(PDF エクスポートではありません)",
2284
2460
  exportFailed: "エクスポートに失敗しました:{{message}}",
2285
2461
  forecastSoon: "予測ビューは近日公開予定",
2286
2462
  },
@@ -2324,126 +2500,159 @@ const ja = {
2324
2500
  first: "最初",
2325
2501
  },
2326
2502
  editor: {
2327
- breadcrumb: "設定",
2328
- basic: "基本",
2329
- title: "タイトル",
2330
- titlePlaceholder: "例:四半期別パイプライン",
2331
- description: "説明",
2332
- descriptionPlaceholder: "このレポートは何を示しますか?",
2333
- type: "レポートタイプ",
2334
- typeTabular: "テーブル — フラットなリスト",
2335
- typeSummary: "サマリー — 合計付きグループ化",
2336
- typeMatrix: "マトリックス — 行 × 列のピボット",
2337
- typeJoined: "結合 — 複数ブロック",
2338
- typeHelp: "表示したい内容に合うレイアウトを選択してください。",
2339
- data: "データ",
2340
- objectName: "データソース",
2341
- objectNamePlaceholder: "例:opportunity",
2342
- objectNameHelp: "このレポートはどのオブジェクトを照会しますか?",
2343
- limit: "行数の上限",
2344
- limitPlaceholder: "例:100",
2345
- columns: "列",
2346
- columnsHint: "列として表示するフィールドを選択します。サマリーやマトリックスでは集計(合計、件数…)を追加できます。",
2347
- filters: "フィルタ",
2348
- filtersHint: "このレポートに含める行を絞り込みます。",
2349
- filtersComplex: "このレポートには高度なフィルタが含まれており、ここでは編集できません。保存時は変更されません。",
2350
- groupBy: "グループ化",
2351
- groupByHint: "データをグループ化して小計を計算します。",
2352
- rows: "行",
2353
- rowsHint: "これらのフィールドで行をグループ化します。",
2354
- columnsAxis: "列",
2355
- columnsAxisHint: "これらのフィールドを上部でピボット表示します。",
2356
- values: "値",
2357
- valuesHint: "各セルに表示される数値です。1 つ以上のフィールドを選び、集計(合計、件数…)を指定してください。",
2358
- grouping: "グループ化項目",
2359
- addGrouping: "グループ化を追加",
2360
- dateGranularity: "日付の粒度",
2361
- dateGranularityNone: "(元の値を使用)",
2362
- day: "日",
2363
- week: "週",
2364
- month: "月",
2365
- quarter: "四半期",
2366
- year: "年",
2367
- sortAsc: "昇順",
2368
- sortDesc: "降順",
2369
- chart: "チャート",
2370
- chartHint: "テーブルの横に表示できる任意の可視化です。",
2371
- chartType: "チャートの種類",
2372
- chartTitle: "チャートのタイトル",
2373
- chartTitlePlaceholder: "未指定の場合はレポートのタイトル",
2374
- chartXAxis: "X 軸(カテゴリ)",
2375
- chartYAxis: "Y 軸(値)",
2376
- chartShowLegend: "凡例を表示",
2377
- chartShowDataLabels: "データラベルを表示",
2378
- chartNone: "(チャートなし)",
2379
- chartBar: "棒",
2380
- chartLine: "折れ線",
2381
- chartArea: "エリア",
2382
- chartPie: "円",
2383
- chartDonut: "ドーナツ",
2384
- chartFunnel: "ファネル",
2385
- validationNeedsObject: "列を追加する前にデータソースを選択してください。",
2386
- validationMatrixNeedsRowsCols: "マトリックスレポートには少なくとも 1 つの行と 1 つの列が必要です。",
2387
- validationSummaryNeedsRows: "サマリーレポートには少なくとも 1 つのグループ化フィールドが必要です。",
2388
- blocks: "ブロック",
2389
- blocksHint: "各ブロックは独立したテーブルまたはチャートです。ブロックのフィルタはレポートのフィルタと AND で結合されます。",
2390
- addBlock: "ブロックを追加",
2391
- removeBlock: "ブロックを削除",
2392
- blockName: "ブロック名",
2393
- blockNamePlaceholder: "一意のブロック名",
2394
- blockLabel: "表示ラベル",
2395
- blockLabelPlaceholder: "ブロックの上に表示されます",
2396
- blockDescription: "説明",
2397
- blockDescriptionPlaceholder: "このブロックの任意の補足説明",
2398
- validationJoinedNeedsBlocks: "結合レポートには少なくとも 1 つのブロックが必要です。",
2399
- validationBlockNameRequired: "各ブロックには空でない名前が必要です。",
2400
- validationBlockNameDuplicate: "ブロック名はレポート内で一意である必要があります。",
2401
- validationBlockNeedsColumns: "各ブロックには少なくとも 1 つの列が必要です。",
2402
- noneOption: "(なし)",
2403
- addCondition: "条件を追加",
2404
- combineLogic: "結合方法",
2405
- opContains: "含む",
2406
- opIsEmpty: "空である",
2407
- opIsNotEmpty: "空でない",
2408
- formatAuto: "自動",
2409
- formatCurrency: "通貨",
2410
- formatPercent: "パーセント",
2411
- formatInteger: "整数",
2412
- formatDate: "日付",
2413
- formatDatetime: "日付と時刻",
2414
- columnLabelPlaceholder: "ラベルを上書き",
2415
- aggregateColumn: "集計",
2416
- formatColumn: "フォーマット",
2417
- addColumns: "列を追加",
2418
- searchFields: "フィールドを検索…",
2419
- noMatchingFields: "検索条件に一致するフィールドはありません。",
2420
- noFieldsAvailable: "利用可能なフィールドがありません。",
2421
- columnsCount: "{n} 列選択中",
2422
- columnsEmpty: "列がまだ選択されていません。",
2423
- fieldPickerTitle: "フィールドを選択",
2424
- fieldPickerDescription: "追加するフィールドを1つ以上選択してください。検索ボックスでリストを絞り込めます。",
2425
- fieldPickerChangeTitle: "フィールドを変更",
2426
- fieldPickerAddGroupingTitle: "グループ化を追加",
2427
- fieldPickerEmpty: "(フィールドを選択)",
2428
- fieldPickerSelected: "{n} 件選択中",
2429
- fieldPickerClear: "選択を解除",
2430
- fieldPickerAdd: "追加",
2431
- fieldPickerAddN: "{n} 件追加",
2503
+ panelTitle: "レポートを編集",
2432
2504
  },
2433
2505
  },
2434
2506
  organizations: {
2435
2507
  create: "ワークスペースを作成",
2436
- mine: "マイ組織",
2437
- title: "組織",
2438
- heading: "あなたの組織",
2439
- subtitle: "続行する組織を選択するか、新しい組織を作成してください。",
2440
- searchPlaceholder: "組織を検索",
2441
- new: "新しい組織",
2442
- current: "現在の組織",
2508
+ mine: "マイワークスペース",
2509
+ title: "ワークスペース",
2510
+ heading: "あなたのワークスペース",
2511
+ subtitle: "続行するワークスペースを選択するか、新しいワークスペースを作成してください。",
2512
+ searchPlaceholder: "ワークスペースを検索",
2513
+ new: "新しいワークスペース",
2514
+ current: "現在のワークスペース",
2443
2515
  manage: "管理",
2444
- emptyTitle: "まだ組織がありません",
2445
- emptyDescription: "最初の組織を作成して開始してください。",
2446
- noMatches: "検索条件に一致する組織がありません。",
2516
+ emptyTitle: "まだワークスペースがありません",
2517
+ emptyDescription: "最初のワークスペースを作成して開始してください。",
2518
+ noMatches: "検索条件に一致するワークスペースがありません。",
2519
+ },
2520
+ organization: {
2521
+ roles: {
2522
+ owner: 'オーナー',
2523
+ admin: '管理者',
2524
+ delegatedAdmin: '委任管理者',
2525
+ member: 'メンバー',
2526
+ },
2527
+ errors: {
2528
+ notAllowedToInvite: 'この組織にユーザーを招待する権限がありません。',
2529
+ notAllowedToInviteWithRole: 'このロールでユーザーを招待する権限がありません。',
2530
+ alreadyInvited: 'このユーザーはすでにこの組織に招待されています。',
2531
+ organizationExists: 'その組織はすでに存在します。',
2532
+ slugTaken: 'そのスラッグはすでに使用されています。',
2533
+ notAllowedToCreate: '新しい組織を作成する権限がありません。',
2534
+ notTheRecipient: 'この招待の宛先はあなたではありません。',
2535
+ invitationNotFound: 'この招待は存在しないか、有効期限が切れています。',
2536
+ unknown: '問題が発生しました。もう一度お試しください。',
2537
+ },
2538
+ backToList: "組織一覧に戻る",
2539
+ notFound: "組織が見つかりません",
2540
+ notFoundDescription: "この組織は存在しないか、アクセス権がありません。",
2541
+ tabs: {
2542
+ members: "メンバー",
2543
+ invitations: "招待",
2544
+ settings: "設定",
2545
+ },
2546
+ members: {
2547
+ title: "メンバー",
2548
+ inviteMember: "メンバーを招待",
2549
+ inviteRestrictedNote: "組織の管理者のみがメンバーを招待できます。",
2550
+ removeMember: "メンバーを削除",
2551
+ removeConfirmTitle: "メンバーを削除しますか?",
2552
+ removeConfirmDescription: "{{name}} を組織から削除します。アクセス権は直ちに失われます。",
2553
+ removeConfirmAction: "削除",
2554
+ memberRemoved: "メンバーを削除しました",
2555
+ removeFailed: "メンバーの削除に失敗しました",
2556
+ roleUpdated: "ロールを更新しました",
2557
+ roleUpdateFailed: "ロールの更新に失敗しました",
2558
+ memberActions: 'メンバーの操作',
2559
+ loadFailed: 'メンバーの読み込みに失敗しました',
2560
+ },
2561
+ invitations: {
2562
+ title: "招待",
2563
+ empty: "招待はありません。",
2564
+ expiresAt: "有効期限",
2565
+ linkCopied: "招待リンクをコピーしました",
2566
+ copyFailed: "リンクのコピーに失敗しました",
2567
+ canceled: "招待を取り消しました",
2568
+ cancelFailed: "招待の取り消しに失敗しました",
2569
+ cancelTitle: "招待を取り消しますか?",
2570
+ cancelDescription: "{{email}} 宛ての招待が無効になります。",
2571
+ cancelAction: "招待を取り消す",
2572
+ inviteTitle: "メンバーを招待",
2573
+ inviteDescription: "この組織への招待が相手に送信されます。",
2574
+ emailLabel: "メールアドレス",
2575
+ roleLabel: "ロール",
2576
+ placementLabel: "配属(任意)",
2577
+ placementDescription: "招待が承諾されたときに適用されます。委任できる事業単位と役職のみが表示されます。",
2578
+ businessUnitLabel: "事業単位",
2579
+ businessUnitPlaceholder: "配属なし",
2580
+ positionsLabel: "役職",
2581
+ sendInvite: "招待を送信",
2582
+ sentTitle: "招待を作成しました",
2583
+ sentDescription: "以下のリンクを招待相手に共有してください。承諾にはサインインが必要です。",
2584
+ linkLabel: "承諾リンク",
2585
+ invitedAs: "{{email}} を {{role}} として招待しました",
2586
+ copyLinkLabel: '招待リンクをコピー',
2587
+ loadFailed: '招待の読み込みに失敗しました',
2588
+ inviteFailed: 'メンバーの招待に失敗しました',
2589
+ status: {
2590
+ all: "すべて",
2591
+ pending: "待機中",
2592
+ accepted: "承諾済み",
2593
+ rejected: "辞退済み",
2594
+ canceled: "取消済み",
2595
+ },
2596
+ },
2597
+ settings: {
2598
+ generalTitle: "一般",
2599
+ generalDescription: "組織の情報を更新します。",
2600
+ readOnlyNote: "設定を変更できるのはオーナーのみです。",
2601
+ nameLabel: "組織名",
2602
+ slugLabel: "スラッグ",
2603
+ logoLabel: "ロゴ",
2604
+ logoUpload: "アップロード",
2605
+ logoReplace: "変更",
2606
+ logoClear: "削除",
2607
+ logoUploaded: "ロゴをアップロードしました。保存すると反映されます",
2608
+ logoUploadFailed: "ロゴのアップロードに失敗しました",
2609
+ save: "変更を保存",
2610
+ saved: "設定を保存しました",
2611
+ saveFailed: "設定の保存に失敗しました",
2612
+ leaveTitle: "組織から脱退",
2613
+ leaveDescription: "この組織へのアクセス権を失います。",
2614
+ leaveAction: "脱退",
2615
+ leaveConfirmTitle: "組織から脱退しますか?",
2616
+ leaveConfirmDescription: "{{name}} から脱退してもよろしいですか?アクセス権は直ちに失われます。",
2617
+ leaveConfirmAction: "脱退",
2618
+ leftOrg: "組織から脱退しました",
2619
+ leaveFailed: "組織からの脱退に失敗しました",
2620
+ dangerZone: "危険な操作",
2621
+ deleteTitle: "組織を削除",
2622
+ deleteDescription: "この組織とすべてのデータを完全に削除します。",
2623
+ deleteAction: "削除",
2624
+ deleteConfirmTitle: "組織を削除しますか?",
2625
+ deleteConfirmDescription: "この操作は取り消せません。すべてのデータが完全に削除されます。確認のため組織のスラッグを入力してください。",
2626
+ deleteConfirmSlugLabel: "確認のため「{{slug}}」と入力してください",
2627
+ deleteConfirmAction: "組織を削除",
2628
+ deleted: "組織を削除しました",
2629
+ deleteFailed: "組織の削除に失敗しました",
2630
+ },
2631
+ accept: {
2632
+ title: "招待が届いています",
2633
+ description: "{{orgName}} に {{role}} として招待されています。",
2634
+ errorTitle: "招待を利用できません",
2635
+ goToOrgs: "組織一覧へ",
2636
+ loading: "招待を読み込んでいます…",
2637
+ organization: "組織",
2638
+ role: "ロール",
2639
+ expiresAt: "有効期限",
2640
+ accept: "招待を承諾",
2641
+ accepted: "招待を承諾しました",
2642
+ acceptFailed: "招待の承諾に失敗しました",
2643
+ decline: "辞退",
2644
+ declined: "招待を辞退しました",
2645
+ declineFailed: "招待の辞退に失敗しました",
2646
+ },
2647
+ current: {
2648
+ label: "現在の組織",
2649
+ },
2650
+ switcher: {
2651
+ label: "組織を切り替え",
2652
+ groupLabel: "作業中の組織",
2653
+ groupHint: "新しいレコードはここに作成されます。ビューにはすべての組織のデータが表示されます。",
2654
+ manageMembers: "メンバーを管理",
2655
+ },
2447
2656
  },
2448
2657
  notifications: {
2449
2658
  regionLabel: "通知",
@@ -2458,6 +2667,9 @@ const ja = {
2458
2667
  viewApprovals: "承認を表示",
2459
2668
  noPendingApprovals: "承認待ちはありません",
2460
2669
  openApprovalsInbox: "承認ボックスを開く",
2670
+ badgeTotal: "合計 {{total}} 件",
2671
+ badgeNotifications: "通知 {{unread}} 件",
2672
+ badgeApprovals: "承認待ち {{approvals}} 件",
2461
2673
  emptyUnread: "既読にしました",
2462
2674
  filterUnread: "未読",
2463
2675
  filterAll: "すべて",
@@ -2482,52 +2694,6 @@ const ja = {
2482
2694
  consentRequired: "続行するにはプライバシーポリシーに同意してください。",
2483
2695
  rateLimited: "送信前に回答を確認してください。",
2484
2696
  redirectBlocked: "送信は受理されましたが、リダイレクトURLはセキュリティのためブロックされました。",
2485
- demo: {
2486
- contactTitle: "お問い合わせ",
2487
- contactDescription: "プロジェクトについてお聞かせください。1営業日以内に営業担当者がご連絡します。",
2488
- supportTitle: "サポートリクエストを送信",
2489
- supportDescription: "問題をお知らせください。チームが1営業日以内に対応します。",
2490
- thankYouSalesTitle: "メッセージを受信しました!ありがとうございます。",
2491
- thankYouSalesMessage: "1営業日以内に営業担当者がご連絡します。",
2492
- thankYouSupportTitle: "リクエストを受け付けました。",
2493
- thankYouSupportMessage: "サポートエンジニアがまもなくフォローアップします。追加のスクリーンショットがある場合は、このページを保存してください。",
2494
- field: {
2495
- firstName: "名",
2496
- lastName: "姓",
2497
- email: "仕事用メール",
2498
- phone: "電話番号",
2499
- jobTitle: "役職",
2500
- company: "会社",
2501
- website: "ウェブサイト",
2502
- industry: "業界",
2503
- companySize: "会社規模",
2504
- howCanWeHelp: "どのようなお手伝いができますか?",
2505
- subject: "件名",
2506
- description: "説明",
2507
- issueType: "問題の種類",
2508
- priority: "優先度",
2509
- },
2510
- industry: {
2511
- technology: "テクノロジー",
2512
- software: "ソフトウェア / SaaS",
2513
- finance: "金融",
2514
- healthcare: "ヘルスケア",
2515
- retail: "小売",
2516
- other: "その他",
2517
- },
2518
- issueType: {
2519
- question: "質問",
2520
- problem: "問題",
2521
- bug: "バグ",
2522
- feature_request: "機能リクエスト",
2523
- },
2524
- priority: {
2525
- low: "低",
2526
- medium: "中",
2527
- high: "高",
2528
- critical: "緊急",
2529
- },
2530
- },
2531
2697
  },
2532
2698
  connectAgent: {
2533
2699
  disabled: {
@@ -2640,6 +2806,7 @@ const ja = {
2640
2806
  retry: "再試行",
2641
2807
  errors: {
2642
2808
  expired: "承認される前にリクエストの有効期限が切れました。もう一度やり直してください。",
2809
+ accessDenied: "接続リクエストは拒否されました。もう一度やり直してください。",
2643
2810
  bindFailed: "バインドに失敗しました。",
2644
2811
  deviceCodeFailed: "デバイスコードのリクエストに失敗しました。",
2645
2812
  },
@@ -2705,10 +2872,16 @@ const ja = {
2705
2872
  installedBadge: "インストール済み v{{version}}",
2706
2873
  load: {
2707
2874
  failed: "マーケットプレイスの読み込みに失敗しました",
2708
- failedHint: "このランタイムはデフォルトでパブリックObjectStackクラウドを指しています。ランタイムがオンラインであることを確認するか、<code>OS_CLOUD_URL</code> で自己ホスト型コントロールプレーンを指定してください。",
2875
+ failedHintConfigured: "このランタイムは {{url}} のコントロールプレーン経由でマーケットプレイスに接続します。オンラインであること、ここから到達できることを確認してください。",
2876
+ failedHintSameOrigin: "このランタイムはマーケットプレイスのカタログを自身で提供しています。ランタイムがオンラインであることを確認してください。",
2709
2877
  packageFailed: "パッケージの読み込みに失敗しました",
2710
2878
  notFound: "見つかりません。",
2711
2879
  },
2880
+ disabled: {
2881
+ title: "アプリマーケットプレイスは無効です",
2882
+ description: "このランタイムにはマーケットプレイスが設定されていないため、ここから閲覧またはインストールできるものはありません。",
2883
+ hint: "ランタイムを <code>OS_CLOUD_URL=off</code>(または <code>none</code>、<code>local</code>、<code>disabled</code>)で起動した場合、これは想定どおりの状態です。マーケットプレイスを有効にするには、<code>OS_CLOUD_URL</code> をコントロールプレーンに向けてランタイムを再起動してください。",
2884
+ },
2712
2885
  detail: {
2713
2886
  homepage: "ホームページ",
2714
2887
  installedV: "インストール済み · v{{version}}",
@@ -2744,6 +2917,7 @@ const ja = {
2744
2917
  dismiss: "閉じる",
2745
2918
  openOnCloud: "クラウドで開く",
2746
2919
  backHome: "ホームに戻る",
2920
+ updateTo: "更新",
2747
2921
  },
2748
2922
  install: {
2749
2923
  dialogTitle: "{{name}} をインストール",
@@ -2760,6 +2934,37 @@ const ja = {
2760
2934
  localManifestConflict: "{{message}}\nヒント:ローカルアプリがすでにこのmanifest_idを使用しています。最初にobjectstack.config.tsから削除してください。",
2761
2935
  localUnauthorized: "最初にこのランタイムにサインインしてから再試行してください。",
2762
2936
  localMarketplaceUnavailable: "このランタイムにはOS_CLOUD_URLが設定されていないため、マーケットプレイスカタログにアクセスできません。",
2937
+ updateTo: "更新 → v{{version}}",
2938
+ installedVersion: "インストール済み v{{version}}",
2939
+ },
2940
+ // objectui#3546 — the MarketplacePage "Your organization" strip.
2941
+ org: {
2942
+ heading: "組織",
2943
+ install: "インストール",
2944
+ installed: "{{name}} をインストールしました",
2945
+ installedBadge: "インストール済み",
2946
+ installing: "インストール中…",
2947
+ },
2948
+ // ADR-0025 PD4 §3.5/§3.11 — the pre-install consent panel
2949
+ // (PluginDisclosure.tsx). `runtime` is a CLOSED enum: spec
2950
+ // PluginRuntimeSchema = z.enum(['node', 'sandbox', 'worker']).
2951
+ disclosure: {
2952
+ containsCode: "このパッケージにはコードが含まれています",
2953
+ reviewed: "審査・承認済み",
2954
+ unreviewed: "未審査",
2955
+ signed: "署名済み",
2956
+ grantsIntro: "インストール時に、このパッケージには次の権限が付与されます:",
2957
+ services: "プラットフォームサービス",
2958
+ hooks: "ライフサイクルフック",
2959
+ network: "ネットワークアクセス",
2960
+ fs: "ファイルシステムアクセス",
2961
+ noPermissions: "特別な権限は要求しません。",
2962
+ acknowledge: "このパッケージがコードを実行し、上記の権限を取得することを理解しました。",
2963
+ runtime: {
2964
+ node: "プロセス内 · 完全信頼",
2965
+ sandbox: "サンドボックス",
2966
+ worker: "プロセス外",
2967
+ },
2763
2968
  },
2764
2969
  uninstall: {
2765
2970
  confirm: "このランタイムから {{manifestId}} v{{version}} をアンインストールしますか?\n\nキャッシュされたマニフェストが削除されます。アプリは次の再起動まで実行中のカーネルに読み込まれたままになります。",
@@ -2916,12 +3121,19 @@ const ja = {
2916
3121
  submittedAgo: '{{when}}に申請',
2917
3122
  completedAt: '{{when}}に完了',
2918
3123
  waitingOn: '承認待ちの担当者',
3124
+ approverNameSeparator: '、',
3125
+ approverUnstaffed: '{{seat}}(現在の担当者なし)',
2919
3126
  history: '承認履歴',
2920
3127
  noActions: 'まだ操作はありません。',
2921
3128
  actSubmit: '申請',
2922
3129
  actApprove: '承認',
2923
3130
  actReject: '却下',
2924
3131
  actRecall: '取り下げ',
3132
+ overrideActionLabel: '{{action}}(管理者権限)',
3133
+ overrideNotice: 'このステップの承認者枠をお持ちではありません。続行すると管理者オーバーライドが使われ、ステップは直ちに確定し、未対応の承認者はすべてスキップされます。この決定は管理者オーバーライドとして記録されます。',
3134
+ overrideNoticeWho: 'このステップの承認者枠をお持ちではありません。続行すると管理者オーバーライドが使われ、ステップは直ちに確定し、未対応の承認者 — {{who}} — はスキップされます。この決定は管理者オーバーライドとして記録されます。',
3135
+ viaOverrideChip: '管理者オーバーライド',
3136
+ viaOverrideHint: '操作者はこのステップの承認者枠を持たず、管理者オーバーライド経路で実行しました。',
2925
3137
  rawData: '生データ(JSON)',
2926
3138
  copy: 'コピー',
2927
3139
  copied: 'コピーしました',
@@ -3008,6 +3220,39 @@ const ja = {
3008
3220
  detailChangedKeys: 'その他の変更:',
3009
3221
  confirmNote: '公開すると、このパッケージの保留中ドラフト {{count}} 件がまとめて(アトミックに)公開されます。',
3010
3222
  publishConfirm: 'すべて公開',
3223
+ // [objectui#5418] Pre-publish security-posture findings, shown next to
3224
+ // the confirm button so a refusal the door would issue is read BEFORE
3225
+ // the click rather than as a toast after the batch rolled back.
3226
+ securityBlockTitle: '公開は拒否されます — {{count}} 件の項目に先に決定が必要です',
3227
+ securityBlockWhere: 'オブジェクトの「設定 → レコード共有」で修正してから、もう一度公開してください。',
3228
+ },
3229
+ // ADR-0045 — the materialized-but-unlisted app banner
3230
+ // (UnpublishedAppBar.tsx), sibling of draftBar above.
3231
+ unpublishedBar: {
3232
+ message: '未公開のアプリ — 機能はすべて使えますが、ビルダーにしか表示されません。公開するとユーザーに表示されます。',
3233
+ publish: '公開',
3234
+ publishing: '公開中…',
3235
+ published: '公開しました。アプリがユーザーに表示されます。',
3236
+ publishFailed: '公開に失敗しました',
3237
+ },
3238
+ // ADR-0067 — the append-only build/revert timeline (CommitTimeline.tsx);
3239
+ // `button` is the banner's entry point into it.
3240
+ history: {
3241
+ button: '履歴',
3242
+ title: 'ビルド履歴',
3243
+ description: 'このアプリのすべての変更を新しい順に表示します。任意のステップを取り消して元に戻せます — 公開の確認は不要です。',
3244
+ loadFailed: '履歴を読み込めませんでした:',
3245
+ loadFailedUnavailable: 'コミットストアに一時的に接続できません — この読み取りは実行されなかったため、履歴は表示されません。しばらくしてから再試行してください。',
3246
+ loading: '履歴を読み込み中…',
3247
+ empty: 'このアプリの履歴はまだありません。',
3248
+ revertLabel: '変更を取り消しました',
3249
+ applyLabel: 'ビルドによる変更',
3250
+ revert: '取り消し',
3251
+ items: '件',
3252
+ revertAction: '取り消す',
3253
+ reverted: '取り消しました — 変更を元に戻しました。',
3254
+ revertFailed: '取り消しに失敗しました',
3255
+ revertUnavailable: 'コミットストアに一時的に接続できません — この取り消しは適用されていない可能性があります。履歴を開き直して確認してから再試行してください。',
3011
3256
  },
3012
3257
  },
3013
3258
  filterBuilder: {
@@ -3026,10 +3271,15 @@ const ja = {
3026
3271
  noResults: "結果なし",
3027
3272
  searchField: "{{label}}を検索…",
3028
3273
  enterId: "{{label}} IDを入力",
3274
+ addValue: "値を入力して Enter キーを押す",
3275
+ removeValue: "{{value}} を削除",
3276
+ rangeStart: "開始",
3277
+ rangeEnd: "終了",
3029
3278
  operators: {
3030
3279
  equals: "等しい",
3031
3280
  notEquals: "等しくない",
3032
3281
  contains: "含む",
3282
+ containsCaseInsensitive: "含む(大文字小文字を区別しない)",
3033
3283
  notContains: "含まない",
3034
3284
  isEmpty: "空である",
3035
3285
  isNotEmpty: "空でない",
@@ -3042,6 +3292,12 @@ const ja = {
3042
3292
  between: "範囲内",
3043
3293
  in: "いずれか",
3044
3294
  notIn: "いずれでもない",
3295
+ startsWith: "前方一致",
3296
+ endsWith: "後方一致",
3297
+ isNull: "null である",
3298
+ isNotNull: "null でない",
3299
+ exists: "設定済み",
3300
+ notExists: "未設定",
3045
3301
  },
3046
3302
  },
3047
3303
  sortBuilder: {
@@ -3087,5 +3343,64 @@ const ja = {
3087
3343
  statusIdle: "アイドル",
3088
3344
  statusAway: "離席中",
3089
3345
  },
3346
+ wizard: {
3347
+ missingRequired: "必須項目を入力してください: {{fields}}",
3348
+ },
3349
+ flowRunner: {
3350
+ title: '入力',
3351
+ submitting: '送信中…',
3352
+ saveAndContinue: '保存して続行',
3353
+ nextStep: '保存しました — 次のステップ',
3354
+ completed: 'フロー「{{flow}}」が完了しました',
3355
+ },
3356
+ appManagement: {
3357
+ title: "アプリケーション",
3358
+ subtitle: "設定済みのアプリケーションをすべて管理します",
3359
+ newApp: "新しいアプリ",
3360
+ searchLabel: "アプリを検索",
3361
+ searchPlaceholder: "アプリを検索…",
3362
+ selectedCount: "{{n}} 件選択中",
3363
+ bulkEnable: "有効化",
3364
+ bulkDisable: "無効化",
3365
+ selectAll: "すべて選択({{n}})",
3366
+ empty: "アプリが見つかりません。",
3367
+ defaultBadge: "デフォルト",
3368
+ active: "有効",
3369
+ inactive: "無効",
3370
+ selectApp: "{{name}} を選択",
3371
+ openApp: "アプリを開く",
3372
+ openAppNamed: "{{name}} を開く",
3373
+ editApp: "アプリを編集",
3374
+ editAppNamed: "{{name}} を編集",
3375
+ editWithAi: "AI で編集",
3376
+ editWithAiNamed: "{{name}} を AI で編集",
3377
+ enableApp: "アプリを有効化",
3378
+ disableApp: "アプリを無効化",
3379
+ enableAppNamed: "{{name}} を有効化",
3380
+ disableAppNamed: "{{name}} を無効化",
3381
+ setDefault: "デフォルトに設定",
3382
+ setDefaultNamed: "{{name}} をデフォルトに設定",
3383
+ deleteApp: "アプリを削除",
3384
+ deleteAppNamed: "{{name}} を削除",
3385
+ confirmDelete: "もう一度クリックすると削除します",
3386
+ confirmDeleteNamed: "{{name}} の削除を確認",
3387
+ toast: {
3388
+ noClient: "メタデータサービスに接続できません",
3389
+ unknownError: "不明なエラー",
3390
+ appEnabled: "{{name}} を有効化しました",
3391
+ appDisabled: "{{name}} を無効化しました",
3392
+ toggleFailed: "アプリの状態の切り替えに失敗しました:{{reason}}",
3393
+ setDefaultDone: "{{name}} をデフォルトに設定しました",
3394
+ setDefaultFailed: "デフォルトアプリの設定に失敗しました:{{reason}}",
3395
+ appDeleted: "{{name}} を削除しました",
3396
+ deleteFailed: "アプリの削除に失敗しました:{{reason}}",
3397
+ bulkEnabled: "{{n}} 件のアプリを有効化しました",
3398
+ bulkDisabled: "{{n}} 件のアプリを無効化しました",
3399
+ bulkFailed: "{{n}} 件失敗しました:{{details}}",
3400
+ bulkFailureEntry: "{{name}}({{reason}})",
3401
+ bulkFailureJoiner: "、",
3402
+ bulkOperationFailed: "一括操作に失敗しました:{{reason}}",
3403
+ },
3404
+ },
3090
3405
  };
3091
3406
  export default ja;