@object-ui/i18n 16.1.0 → 17.1.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.
@@ -1,6 +1,15 @@
1
1
  const ja = {
2
2
  // objectui#2600 B5 — capability picker scope group headers (labels come from the sys_capability registry).
3
3
  capability: {
4
+ label: {
5
+ manage_users: "ユーザー管理",
6
+ manage_org_users: "組織ユーザーの管理",
7
+ manage_metadata: "メタデータ管理",
8
+ manage_platform_settings: "プラットフォーム設定の管理",
9
+ setup_access: "設定へのアクセス",
10
+ setup_write: "設定の書き込み",
11
+ studio_access: "Studio へのアクセス",
12
+ },
4
13
  group: {
5
14
  platform: 'プラットフォーム',
6
15
  org: '組織',
@@ -74,6 +83,10 @@ const ja = {
74
83
  package: "パッケージ",
75
84
  },
76
85
  actions: {
86
+ decisionOutput: {
87
+ help: '決定の出力としてフローに渡されます。',
88
+ helpMultiValue: '決定の出力としてフローに渡されます。複数の値はカンマで区切ってください。',
89
+ },
77
90
  resultDialog: {
78
91
  defaultTitle: 'この値を今すぐ保存してください',
79
92
  acknowledge: '保存しました',
@@ -94,6 +107,16 @@ const ja = {
94
107
  type: "{{field}}は有効な{{type}}である必要があります",
95
108
  },
96
109
  form: {
110
+ noPermissionToSave: "このレコードを保存する権限がありません。",
111
+ submitFailed: "保存できませんでした。もう一度お試しください。",
112
+ discardTitle: "変更を破棄しますか?",
113
+ discardMessage: "保存されていない変更があります。このままフォームを閉じると編集内容は失われます。",
114
+ keepEditing: "編集を続ける",
115
+ discard: "破棄",
116
+ conflictTitle: "保存の競合",
117
+ conflictMessage: "編集中にこのレコードが他のユーザーによって変更されました。上書きすると、相手の変更はあなたの内容で置き換えられます。",
118
+ conflictLatestVersion: "相手の保存時刻: {{time}}",
119
+ conflictOverwrite: "上書き",
97
120
  addItem: "項目を追加",
98
121
  removeItem: "項目を削除",
99
122
  fieldRequired: "この項目は必須です",
@@ -104,8 +127,6 @@ const ja = {
104
127
  stepOf: "ステップ {{current}} / {{total}}",
105
128
  createTitle: "{{object}}を作成",
106
129
  editTitle: "{{object}}を編集",
107
- createDescription: "新しい{{object}}をデータベースに追加します。",
108
- editDescription: "{{object}}の詳細を更新",
109
130
  saveRecord: "レコードを保存",
110
131
  create: "作成",
111
132
  update: "更新",
@@ -114,14 +135,70 @@ const ja = {
114
135
  deleteSuccess: "{{object}}が削除されました",
115
136
  },
116
137
  fields: {
138
+ image: {
139
+ upload: "画像をアップロード",
140
+ addMore: "画像を追加",
141
+ uploading: "アップロード中…",
142
+ imageAlt: "画像 {{index}}",
143
+ crop: "画像 {{index}} を切り抜く",
144
+ remove: "画像 {{index}} を削除",
145
+ enlarge: "{{name}} を拡大",
146
+ preview: "画像プレビュー",
147
+ previous: "前の画像",
148
+ next: "次の画像",
149
+ counter: "{{current}} / {{total}}",
150
+ },
117
151
  relativeDate: {
118
152
  overdue: "期限超過 {{count}}日",
119
153
  },
154
+ file: {
155
+ dragDropHere: 'ファイルをここにドラッグ&ドロップ',
156
+ dropFilesHere: 'ここにドロップ',
157
+ browseHint: 'またはクリックして選択',
158
+ browseHintCamera: 'またはクリックして選択 • 下のカメラボタンを使用',
159
+ takePhoto: '写真を撮る',
160
+ takeSelfie: '自撮り',
161
+ cameraCapture: 'カメラ撮影',
162
+ uploading: 'アップロード中…',
163
+ uploadingPct: 'アップロード中…({{pct}}%)',
164
+ fileFallback: 'ファイル',
165
+ upload: 'アップロード',
166
+ remove: '{{name}} を削除',
167
+ exceedsMaxSize: '「{{name}}」は最大サイズ({{max}} MB)を超えています',
168
+ uploadFailed: '「{{name}}」のアップロードに失敗しました:{{error}}',
169
+ },
120
170
  richText: {
121
171
  format: "フォーマット: {{format}}",
122
172
  basicEditorHint: "リッチテキストエディター(基本)",
123
173
  placeholder: "テキストを入力...",
124
174
  },
175
+ objectRef: {
176
+ loading: "オブジェクトを読み込み中…",
177
+ placeholder: "オブジェクトを選択",
178
+ search: "オブジェクトを検索…",
179
+ empty: "オブジェクトが見つかりません",
180
+ },
181
+ recipient: {
182
+ selectTypeFirst: "先に受信者タイプを選択してください。",
183
+ loading: "読み込み中…",
184
+ search: "検索…",
185
+ empty: "一致する項目がありません",
186
+ select: "受信者を選択",
187
+ selectUser: "ユーザーを選択",
188
+ selectTeam: "チームを選択",
189
+ selectBusinessUnit: "事業単位を選択",
190
+ selectPosition: "役職を選択",
191
+ selectUnitAndSubordinates: "事業単位を選択",
192
+ },
193
+ filterCondition: {
194
+ selectObjectFirst: "先にオブジェクトを選択してください。",
195
+ noCriteria: "条件が未設定です — このルールは何も共有しません",
196
+ criteriaRequired: "条件を1つ以上追加してください。条件のないルールは全レコードを共有してしまうため、保存できません。",
197
+ invalidJson: "JSON が不正です — 修正するまでこのルールはどのレコードにも一致しません。",
198
+ jsonOnly: "この条件は JSON でのみ編集できます",
199
+ editAsJson: "JSON で編集",
200
+ useVisualBuilder: "ビジュアルビルダーを使用",
201
+ },
125
202
  },
126
203
  table: {
127
204
  rowsPerPage: "1ページの行数",
@@ -156,6 +233,37 @@ const ja = {
156
233
  delete: "削除",
157
234
  },
158
235
  grid: {
236
+ bulkSelected: "{{count}} 件を選択中",
237
+ bulkSelectedAllMatches: "{{count}} 件を選択中(該当すべて)",
238
+ bulkClear: "選択解除",
239
+ bulkAllOnPage: "このページの {{count}} 件がすべて選択されています。",
240
+ bulkSelectAllMatching: "該当する {{count}} 件すべてを選択",
241
+ bulkAllMatchingSelected: "該当する {{count}} 件のレコードがすべて選択されています。",
242
+ bulk: {
243
+ confirmDefault: "{{count}} 件のレコードに適用されます。",
244
+ overLimit: "選択件数({{count}})がアクションの上限({{limit}})を超えています。選択を減らしてください。",
245
+ affectedRecords: "対象レコード({{count}}):",
246
+ skippedIneligible: "選択したレコードのうち {{count}} 件はこのアクションの対象外のため、スキップされます。",
247
+ rowFallback: "{{index}} 行目",
248
+ andMore: "… 他 {{count}} 件",
249
+ processed: "{{count}} / {{total}} 件を処理",
250
+ processedFailed: " · 失敗 {{count}} 件",
251
+ undonePrefix: "取り消し済み — ",
252
+ succeeded: "成功 {{count}} / {{total}}",
253
+ resultFailed: " · 失敗 {{count}}",
254
+ retry: "再試行",
255
+ downloadErrorCsv: "エラー CSV をダウンロード",
256
+ cancel: "キャンセル",
257
+ back: "戻る",
258
+ next: "次へ",
259
+ run: "実行",
260
+ running: "実行中…",
261
+ undo: "取り消す",
262
+ undoing: "取り消し中…",
263
+ done: "完了",
264
+ selectPlaceholder: "選択…",
265
+ loading: "読み込み中…",
266
+ },
159
267
  actions: "アクション",
160
268
  edit: "編集",
161
269
  delete: "削除",
@@ -181,7 +289,88 @@ const ja = {
181
289
  densityCycleShortHint: "クリックで切り替え",
182
290
  },
183
291
  import: {
292
+ downloadTemplate: "テンプレートをダウンロード",
293
+ downloadTemplateHint: "正しい列を備えた CSV を取得します(必須項目には * が付きます)。",
294
+ templateFileName: "{{object}}-import-template",
295
+ autoMatched: "自動マッピング済み",
296
+ autoMatchedSummary: "{{count}} 列を自動マッピングしました — 下で確認・調整してください。",
297
+ confidence: {
298
+ high: "確度: 高",
299
+ medium: "確度: 中",
300
+ low: "確度: 低",
301
+ },
302
+ asyncQueued: "待機中 — インポートを準備しています…",
303
+ asyncProcessing: "{{total}} 行中 {{processed}} 行をインポート中… {{progress}}%",
304
+ asyncLargeHint: "このファイルは大きいため、バックグラウンドでインポートされます。",
305
+ largeSampleNotice: "{{total}} 行のうち先頭 {{shown}} 行をプレビューしています。",
306
+ cancelImport: "インポートを中止",
307
+ importCancelled: "インポートを中止しました",
308
+ resultsTruncated: "{{total}} 行のうち先頭 {{count}} 行の結果を表示しています。",
309
+ createdCount: "{{count}} 件を作成",
310
+ updatedCount: "{{count}} 件を更新",
311
+ downloadFailed: "失敗した行をダウンロード",
312
+ options: "インポート設定",
313
+ writeMode: "既存レコードに一致した行の扱い",
314
+ writeModeOpt: {
315
+ insert: "常に新規作成",
316
+ update: "既存を更新(一致しなければスキップ)",
317
+ upsert: "一致すれば更新、なければ作成",
318
+ },
319
+ matchFields: "照合キー",
320
+ matchFieldsPlaceholder: "照合する項目を選択…",
321
+ matchFieldsHint: "これらの項目で既存レコードと照合します。",
322
+ needMatchFields: "照合する項目を 1 つ以上選択してください。",
323
+ matchOnlyField: "(照合のみ)",
324
+ optCreateOptions: "未知の選択肢の値を保持する",
325
+ optRunAutomations: "自動化とトリガーを実行する",
326
+ optTreatHistorical: "過去データとしてインポートする",
327
+ optTreatHistoricalHint: "(完了済みレコードをそのまま取り込みます — ステートマシンの検査を省略し、現在時刻を打刻せずに元のタイムスタンプと作成者を保持します)",
328
+ optSkipBlankKey: "照合値が空の行をスキップする",
329
+ optBackground: "バックグラウンドでインポートする",
330
+ optBackgroundHint: "(取り消し可能なジョブとして実行されます)",
331
+ validate: "データを検証",
332
+ validating: "検証中…",
333
+ validateHint: "インポート前に全行をサーバーで検査します。",
334
+ validatePassed: "{{ok}} 行すべてが有効です。",
335
+ validateFailed: "有効 {{ok}} 行、エラー {{errors}} 行。",
336
+ errorRowPrefix: "{{row}} 行目: ",
337
+ referenceNotFound: "「{{value}}」に一致するレコードがありません",
338
+ referenceAmbiguous: "「{{value}}」は複数のレコードに一致します — 一意の値かレコード ID を使用してください",
339
+ invalidBoolean: "「{{value}}」は有効な true/false の値ではありません",
340
+ invalidNumber: "「{{value}}」は有効な数値ではありません",
341
+ invalidDate: "「{{value}}」は有効な日付ではありません",
342
+ invalidOption: "「{{value}}」は許可された選択肢に含まれていません",
343
+ requiredValue: "この項目は必須です",
344
+ matchAmbiguous: "既存の複数レコードに一致します — 一意の値かレコード ID を使用してください",
345
+ history: "履歴",
346
+ historyBack: "インポートに戻る",
347
+ historyDescription: "このオブジェクトの最近のインポート。",
348
+ historyHint: "バックグラウンドのインポートジョブ、新しい順。",
349
+ historyRefresh: "更新",
350
+ historyLoading: "読み込み中…",
351
+ historyEmpty: "インポートはまだありません。",
352
+ historyUnsupported: "このデータソースではインポート履歴を利用できません。",
353
+ historyColStatus: "ステータス",
354
+ historyColRows: "行数",
355
+ historyColResult: "結果",
356
+ historyColTime: "日時",
357
+ errorCount: "エラー {{count}} 件",
358
+ undoImport: "インポートを取り消す",
359
+ undoing: "取り消し中…",
360
+ undoConfirm: "このインポートを取り消しますか?作成されたレコードは削除され、更新されたレコードは以前の値に戻されます。",
361
+ reverted: "取り消し済み",
362
+ jobStatus: {
363
+ pending: "待機中",
364
+ running: "実行中",
365
+ succeeded: "成功",
366
+ failed: "失敗",
367
+ cancelled: "中止",
368
+ },
369
+ legacyReferenceBlocked: "インポートを中止しました: {{fields}} は関連項目で、名前をレコード ID に解決するためサーバー側のインポート経路が必要ですが、この接続では対応していません。プレーンテキストとして取り込むとデータが壊れます。バックエンド/クライアントを更新するか、これらの列のマッピングを外して別途インポートしてください。",
370
+ missingRequiredHint: "続行できません — 必須項目が未マッピングです: {{fields}}。対応する列をファイルに追加するか、戻ってその列を含むファイルをアップロードしてください。",
371
+ legacyFallbackNotice: "互換フォールバックでインポートしました: この接続はサーバー側のインポート経路に対応していないため、値はサーバー側の型変換なしでテキストとして保存されました。完全なインポート機能(型変換と関連レコードの解決)にはバックエンド/クライアントの更新が必要です。",
184
372
  title: "{{object}}をインポート",
373
+ notAllowed: "このオブジェクトはインポートに対応していません。",
185
374
  stepUpload: "アップロード",
186
375
  stepMapping: "マッピング",
187
376
  stepPreview: "プレビュー",
@@ -257,6 +446,42 @@ const ja = {
257
446
  moreEvents: "+{{count}} 件",
258
447
  },
259
448
  list: {
449
+ firstRunTitle: "まだ何もありません",
450
+ firstRunMessage: "最初のレコードを作成して始めましょう。",
451
+ noMatches: "該当するレコードがありません",
452
+ noMatchesMessage: "現在のフィルターや検索条件に一致するレコードはありません。条件を調整するか解除してください。",
453
+ loadErrorTitle: "レコードを読み込めませんでした",
454
+ loadErrorMessage: "データの読み込み中に問題が発生しました。接続を確認して再試行してください。",
455
+ loadErrorForbiddenTitle: "アクセス権がありません",
456
+ loadErrorForbiddenMessage: "これらのレコードを表示する権限がありません。必要な場合は管理者にお問い合わせください。",
457
+ loadErrorUnauthorizedTitle: "サインインが必要です",
458
+ loadErrorUnauthorizedMessage: "セッションの有効期限が切れたか、サインアウトしています。再度サインインしてください。",
459
+ loadErrorRejectedTitle: "このビューのクエリは拒否されました",
460
+ loadErrorRejectedMessage: "サーバーはこのビューのフィルターまたはクエリ設定を処理できませんでした。フィルターを解除すると解消することがほとんどです。ビューがこの状態で保存されている場合は、管理者による修正が必要です。",
461
+ retry: "再試行",
462
+ managedBy: {
463
+ system: {
464
+ title: "まだ何もありません",
465
+ message: "元となるアクション(承認申請、共有、招待など)が実行されると自動的に登録されます。元のレコードでいずれかを実行すると行が作成されます。",
466
+ },
467
+ appendOnly: {
468
+ title: "記録されたイベントはありません",
469
+ message: "これは変更不可の監査ログです。行はイベント発生時にプラットフォームが書き込みます — 履歴のエクスポートはできますが、ここから作成することはできません。",
470
+ },
471
+ betterAuth: {
472
+ title: "ID レコードがありません",
473
+ message: "これらのレコードは認証プロバイダーがサインイン・プロビジョニング・セキュリティ処理を通じて作成するもので、ここで手動追加するものではありません。",
474
+ },
475
+ betterAuthUser: {
476
+ title: "ユーザーがまだいません",
477
+ message: "ユーザーアカウントは認証プロバイダーがプロビジョニングするもので、ここで作成するものではありません。組織にメンバーを招待すると、初回サインイン時に自動的に表示されます(SSO のジャストインタイム プロビジョニング)。アプリのエンドユーザーは、アプリ経由でサインアップした時点で追加されます。",
478
+ },
479
+ betterAuthTeam: {
480
+ title: "チームがまだありません",
481
+ message: "チームは組織内のメンバーをまとめるものです。「チームを作成」から作成するか、認証プロバイダーの組織・SSO プロビジョニングを通じて追加されます。",
482
+ },
483
+ },
484
+ refresh: "更新",
260
485
  loading: 'Loading records...',
261
486
  recordCount: "{{count}} 件のレコード",
262
487
  recordCountOne: "{{count}} 件のレコード",
@@ -268,6 +493,8 @@ const ja = {
268
493
  filterRecords: "レコードをフィルター",
269
494
  sort: "並べ替え",
270
495
  sortRecords: "レコードを並べ替え",
496
+ sortByIdSuffix: "(ID順)",
497
+ sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称を保持する数式項目を追加してください。",
271
498
  group: "グループ",
272
499
  groupBy: "グループ化",
273
500
  export: "エクスポート",
@@ -297,6 +524,11 @@ const ja = {
297
524
  recordEditingTitle: "レコード編集",
298
525
  },
299
526
  managedByBadge: {
527
+ systemWritable: {
528
+ short: "プラットフォーム スキーマ",
529
+ title: "プラットフォーム定義・管理者が編集可能",
530
+ body: "このオブジェクトのスキーマはプラットフォームが定義しますが、行の作成・編集はここで行えます。誰が書き込めるかはこのバッジではなく、委任管理とレコードレベルのセキュリティで決まります。",
531
+ },
300
532
  config: {
301
533
  short: "管理設定",
302
534
  title: "管理者設定",
@@ -319,6 +551,7 @@ const ja = {
319
551
  },
320
552
  },
321
553
  kanban: {
554
+ uncategorized: "未分類",
322
555
  addCard: "カードを追加",
323
556
  addColumn: "カラムを追加",
324
557
  moveCard: "カードを移動",
@@ -340,12 +573,92 @@ const ja = {
340
573
  },
341
574
  },
342
575
  gantt: {
576
+ viewMode: {
577
+ day: "日",
578
+ week: "週",
579
+ month: "月",
580
+ quarter: "四半期",
581
+ year: "年",
582
+ },
583
+ row: {
584
+ expand: "展開",
585
+ collapse: "折りたたむ",
586
+ open: "詳細を開く",
587
+ },
588
+ aria: {
589
+ taskList: "タスク一覧",
590
+ },
591
+ tooltip: {
592
+ days: "日",
593
+ },
594
+ menu: {
595
+ view: "詳細を表示",
596
+ edit: "インライン編集",
597
+ delete: "削除",
598
+ addPredecessor: "先行タスクを追加…",
599
+ addSuccessor: "後続タスクを追加…",
600
+ removeDependency: "依存関係を削除",
601
+ noCandidates: "利用できるタスクがありません",
602
+ searchTasks: "タスクを検索…",
603
+ },
604
+ delete: {
605
+ title: "このタスクを削除しますか?",
606
+ body: "「{{title}}」は完全に削除されます。この操作は取り消せません。",
607
+ cancel: "キャンセル",
608
+ confirm: "削除",
609
+ deleting: "削除中…",
610
+ },
611
+ drawer: {
612
+ fallbackTitle: "タスクの詳細",
613
+ },
614
+ linkType: {
615
+ fs: "終了 → 開始",
616
+ ss: "開始 → 開始",
617
+ ff: "終了 → 終了",
618
+ sf: "開始 → 終了",
619
+ },
620
+ conflict: {
621
+ title: "スケジュールの競合",
622
+ body: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
623
+ confirm: "自動で再スケジュール",
624
+ cancel: "そのままにする",
625
+ },
626
+ autoScheduleDlg: {
627
+ title: "自動スケジュール",
628
+ body: "依存リンクを満たすため {count} 件のタスクを後ろにずらしますか?",
629
+ skipped: "ロックされた {count} 件のタスクもリンクに違反していますが、スキップされました。",
630
+ confirm: "適用",
631
+ cancel: "キャンセル",
632
+ none: "依存関係はすべて満たされています — 再スケジュールの必要はありません。",
633
+ },
634
+ resource: {
635
+ header: "リソース",
636
+ peak: "ピーク",
637
+ over: "過負荷",
638
+ empty: "割り当てるタスクがありません。",
639
+ },
640
+ readOnly: "読み取り専用",
641
+ readOnlyHint: "このビューでは編集できません。",
642
+ lockedHint: "編集権限がありません",
643
+ writeFailed: "保存に失敗しました — 変更は取り消されました",
343
644
  column: {
344
645
  taskName: "タスク名",
345
646
  start: "開始",
346
647
  end: "終了",
347
648
  },
348
649
  toolbar: {
650
+ thisWeek: "今週",
651
+ thisMonth: "今月",
652
+ viewMode: "タイムラインの粒度",
653
+ enterFullscreen: "全画面表示",
654
+ exitFullscreen: "全画面表示を終了",
655
+ criticalPath: "クリティカルパスを強調",
656
+ autoSchedule: "依存関係を自動スケジュール",
657
+ exportPng: "PNG で書き出す",
658
+ exportPdf: "PDF で書き出す",
659
+ saveLayout: "レイアウトを保存",
660
+ undo: "元に戻す",
661
+ redo: "やり直す",
349
662
  prevPeriod: "前の期間",
350
663
  nextPeriod: "次の期間",
351
664
  zoomIn: "拡大",
@@ -391,6 +704,9 @@ const ja = {
391
704
  redo: 'Redo',
392
705
  },
393
706
  detail: {
707
+ editInlineHint: "ダブルクリックで編集",
708
+ systemActor: "システム",
709
+ unknownUser: "不明",
394
710
  back: "戻る",
395
711
  edit: "編集",
396
712
  editInline: "編集",
@@ -451,6 +767,18 @@ const ja = {
451
767
  attachmentCount: "{{count}} 件の添付ファイル",
452
768
  attachmentCountPlural: "{{count}} 件の添付ファイル",
453
769
  removeAttachment: "添付ファイルを削除",
770
+ // Record Attachments panel (enable.files, objectstack#4358)
771
+ attachments: "添付ファイル",
772
+ uploadAttachment: "アップロード",
773
+ loadingAttachments: "添付ファイルを読み込み中…",
774
+ noAttachments: "添付ファイルはまだありません。ファイルをアップロードして始めましょう。",
775
+ downloadAttachment: "ダウンロード",
776
+ deleteAttachment: "添付ファイルを削除",
777
+ attachmentDeleteDenied: "この添付ファイルを削除できるのは、アップロードした本人またはこのレコードを編集できるユーザーのみです。",
778
+ attachmentParentAccessDenied: "このレコードにファイルを添付する権限がありません。",
779
+ attachmentDownloadDenied: "この添付ファイルをダウンロードする権限がありません。",
780
+ attachmentAuthRequired: "この添付ファイルをダウンロードするにはサインインしてください。",
781
+ attachmentPermissionDenied: "この操作を行う権限がありません。",
454
782
  unifiedDiff: "統合差分",
455
783
  sideBySideDiff: "横並び差分",
456
784
  noChanges: "変更なし",
@@ -498,9 +826,15 @@ const ja = {
498
826
  saving: "保存中…",
499
827
  lockedByApproval: "承認のためロック中",
500
828
  lockedTooltip: "このレコードには承認待ちのリクエストがあります。編集はロックされています",
829
+ writeStrippedTitle: "保存されなかった項目があります",
830
+ writeStrippedReadonly: "次の項目は読み取り専用のため保存されませんでした: {{fields}}",
831
+ writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため保存されませんでした: {{fields}}",
832
+ approvalPendingEditable: "承認中 · 編集可能",
833
+ approvalPendingTooltip: "このレコードには承認待ちのリクエストがありますが、このステップでは編集できます",
501
834
  cancelApproval: "承認を取り消す",
502
835
  cancelApprovalInFlight: "取り消し中…",
503
836
  cancelApprovalTooltip: "承認待ちリクエストを取り消してレコードのロックを解除する",
837
+ cancelApprovalTooltipUnlocked: "承認待ちリクエストを取り消す",
504
838
  cancelApprovalFailed: "承認の取り消しに失敗しました",
505
839
  cancelApprovalUnavailable: "このデータソースでは承認の取り消しはサポートされていません",
506
840
  linkCopied: "リンクをクリップボードにコピーしました",
@@ -605,6 +939,35 @@ const ja = {
605
939
  resetZoom: "ズームをリセット",
606
940
  },
607
941
  dashboard: {
942
+ noRows: "行がありません",
943
+ pickMeasures: "このデータセットウィジェットの指標(値)を選択してください。",
944
+ datasetUnsupported: "このデータソースはデータセットクエリに対応していません。",
945
+ details: "詳細",
946
+ exportCsv: "CSV で書き出す",
947
+ openInList: "リストで開く",
948
+ filters: {
949
+ label: "ダッシュボードのフィルター",
950
+ dateRange: "期間",
951
+ allTime: "全期間",
952
+ custom: "カスタム…",
953
+ all: "すべて",
954
+ reset: "リセット",
955
+ range: {
956
+ today: "今日",
957
+ yesterday: "昨日",
958
+ this_week: "今週",
959
+ last_week: "先週",
960
+ this_month: "今月",
961
+ last_month: "先月",
962
+ this_quarter: "今四半期",
963
+ last_quarter: "前四半期",
964
+ this_year: "今年",
965
+ last_year: "昨年",
966
+ last_7_days: "過去 7 日間",
967
+ last_30_days: "過去 30 日間",
968
+ last_90_days: "過去 90 日間",
969
+ },
970
+ },
608
971
  addWidget: "ウィジェットを追加",
609
972
  removeWidget: "ウィジェットを削除",
610
973
  editLayout: "レイアウトを編集",
@@ -732,6 +1095,7 @@ const ja = {
732
1095
  navTypeGroup: "グループ",
733
1096
  navTypeSeparator: "区切り",
734
1097
  navTypeAction: "アクション",
1098
+ navTypeComponent: "コンポーネント",
735
1099
  navEditIcon: "アイコンを編集",
736
1100
  navToggleVisible: "表示を切り替え",
737
1101
  navHidden: "非表示",
@@ -833,8 +1197,199 @@ const ja = {
833
1197
  },
834
1198
  },
835
1199
  console: {
1200
+ settingsHub: {
1201
+ title: "設定",
1202
+ subtitle: "ワークスペース、連携、機能フラグを設定します。",
1203
+ loadError: "設定の読み込みに失敗しました",
1204
+ empty: "登録された設定はありません。プラグインは SettingsService 経由で設定マニフェストを登録できます。",
1205
+ settingsCount: "{{n}} 件の設定",
1206
+ beta: "ベータ",
1207
+ categories: {
1208
+ Workspace: "ワークスペース",
1209
+ Communication: "コミュニケーション",
1210
+ Security: "セキュリティ",
1211
+ Infrastructure: "インフラストラクチャ",
1212
+ Beta: "ベータ",
1213
+ Other: "その他",
1214
+ },
1215
+ },
1216
+ objectData: {
1217
+ badge: "データ",
1218
+ description: "URL で定義されたデータの断面 — 保存済みビューには紐づいていません。",
1219
+ filteredBy: "絞り込み条件",
1220
+ removeFilter: "絞り込み {{field}} を解除",
1221
+ saveAsView: "ビューとして保存",
1222
+ noAccessTitle: "アクセスが拒否されました",
1223
+ noAccess: "このデータを閲覧する権限がありません。",
1224
+ },
1225
+ identityImport: {
1226
+ policyTitle: "インポートしたユーザーのサインイン設定",
1227
+ policy: {
1228
+ auto: "自動(推奨)",
1229
+ invite: "招待を送信",
1230
+ temporary: "仮パスワード",
1231
+ none: "パスワードなし(ID のみ)",
1232
+ },
1233
+ policyHint: {
1234
+ auto: "連絡可能なユーザーには招待(メールまたは SMS)を送信し、連絡できないユーザーにはワンタイムパスワードを発行して結果画面に一度だけ表示します。メール/SMS サービスの有無にかかわらず利用できます。",
1235
+ invite: "作成された全ユーザーにパスワード設定メール(電話番号のみの行には招待 SMS)を送信します。メール/SMS サービスの設定が必要で、連絡できない行は失敗します。",
1236
+ temporary: "メール/SMS のない環境向け: 作成された全ユーザーにワンタイムパスワードを発行し、結果画面に一度だけ表示します。初回サインイン時に変更が必須です。",
1237
+ none: "ユーザーはまず電話 OTP、マジックリンク、またはパスワード再設定リンクでサインインし、その後自分でパスワードを設定します。",
1238
+ },
1239
+ passwordsNote: "仮パスワード — 一度だけ表示され、保存されません。今すぐ保存してください。各ユーザーは初回サインイン時に変更する必要があります。",
1240
+ passwordsMore: "以降のエントリは省略されました — ダウンロードをご利用ください。",
1241
+ passwordsDownload: "CSV をダウンロード",
1242
+ },
1243
+ ai: {
1244
+ usage: {
1245
+ title: "AI 使用状況",
1246
+ meterBuild: "ビルド",
1247
+ meterAsk: "質問",
1248
+ statusOk: "残量に余裕があります",
1249
+ statusLow: "残りわずかです",
1250
+ statusFull: "上限に達しました",
1251
+ resetsDaily: "今夜リセットされます",
1252
+ resetsMonthly: "次のサイクルでリセットされます",
1253
+ ctaUpgrade: "アップグレードして続行",
1254
+ ctaTopUp: "クレジットを追加して続行",
1255
+ ariaLabel: "AI 使用状況: {{status}}",
1256
+ },
1257
+ workspaceTitle: "AI ワークスペース",
1258
+ workspaceSubtitle: "質問し、確認し、会話を再開します",
1259
+ openChats: "チャットを開く",
1260
+ chats: "チャット",
1261
+ chatsDescription: "AI の会話を閲覧・管理します。",
1262
+ share: "共有",
1263
+ shareTitle: "この会話を共有",
1264
+ shareDisabledTitle: "共有するにはチャットを開始してください",
1265
+ newChat: "新規",
1266
+ searchChats: "チャットを検索...",
1267
+ noChatsYet: "チャットはまだありません",
1268
+ noChatsDescription: "新しい会話を開始するとここに表示されます。",
1269
+ noMatchingChats: "一致するチャットはありません。",
1270
+ newConversation: "新しい会話",
1271
+ renameConversation: "会話の名前を変更",
1272
+ deleteConversation: "会話を削除",
1273
+ saveRename: "名前を保存",
1274
+ cancelRename: "名前の変更をキャンセル",
1275
+ loadingHistory: "会話履歴を読み込んでいます...",
1276
+ conversationReady: "会話の準備ができました",
1277
+ preparingConversation: "新しい会話を準備しています",
1278
+ offlineDemoMode: "オフラインデモモード — エージェント一覧は利用できません",
1279
+ sendFailedRateLimited: "送信の間隔が短すぎます。メッセージは下に保持されています — 少し待ってから再試行してください。",
1280
+ sendFailedGeneric: "メッセージを送信できませんでした。下に保持されています — もう一度お試しください。",
1281
+ askAgent: "{{agent}} に質問...",
1282
+ assistant: "アシスタント",
1283
+ liveCanvas: "ライブプレビュー — {{app}}(ドラフト)",
1284
+ liveCanvasUnlisted: "ライブアプリ — {{app}}(公開するまで非掲載)",
1285
+ loadingAgents: "エージェントを読み込んでいます...",
1286
+ askAnything: "何でも質問してください...",
1287
+ emptyTitle: "会話を始める",
1288
+ emptyDescription: "何でも質問してください — アシスタントは現在のアプリのコンテキストを参照できます。",
1289
+ switchAssistant: "アシスタントを切り替え",
1290
+ chooseAgent: "アシスタントを選択…",
1291
+ empty: {
1292
+ build: {
1293
+ title: "AI でビルド",
1294
+ description: "アプリやワークフローを普通の言葉で説明してください — オブジェクト、画面、自動化を下書きしますので、確認して公開してください。",
1295
+ },
1296
+ ask: {
1297
+ title: "データに質問",
1298
+ description: "レコードについて質問してください — アクセスできるデータの件数、一覧、要約をお答えします。",
1299
+ },
1300
+ editApp: {
1301
+ title: "「{{app}}」を編集中",
1302
+ titleGeneric: "このアプリを編集",
1303
+ description: "何を変更しますか?このアプリをその場で変更します — 項目、オブジェクト、ビュー、自動化の追加や、既存部分の調整ができます。",
1304
+ },
1305
+ },
1306
+ clearConversation: "クリア",
1307
+ sendHint: "で送信",
1308
+ agentActivity: "エージェントの動作",
1309
+ toolCompleted: "完了",
1310
+ toolRunning: "実行中",
1311
+ toolAwaitingApproval: "承認待ち",
1312
+ toolFailed: "失敗",
1313
+ toolDetailsHidden: "このビューではツールの入力と生の結果は非表示です。",
1314
+ copy: "コピー",
1315
+ copied: "コピーしました",
1316
+ regenerate: "再生成",
1317
+ model: "モデル",
1318
+ submit: "送信",
1319
+ uploadFiles: "ファイルをアップロード",
1320
+ stopResponse: "応答を停止",
1321
+ trace: "トレース",
1322
+ viewTrace: "トレースを表示",
1323
+ nextSteps: "次のステップ",
1324
+ publishDrafts: "公開",
1325
+ publishOk: "公開しました — オブジェクトが有効になりました。",
1326
+ seedWarn: "公開しましたが、一部のサンプルデータを読み込めませんでした。",
1327
+ openBuiltApp: "アプリを開く",
1328
+ designBuiltApp: "Studio でデザイン",
1329
+ previewDraft: "プレビュー",
1330
+ previewApp: "アプリをプレビュー",
1331
+ resizeSplit: "チャットとプレビューのサイズを変更",
1332
+ hideChats: "チャットを隠す",
1333
+ showChats: "チャットを表示",
1334
+ planTitle: "提案されたプラン",
1335
+ planQuestions: "ビルド前に確認",
1336
+ planAssumptions: "前提",
1337
+ planApproveHint: "返信してこのプランを承認または調整してください。",
1338
+ planApprove: "ビルドする",
1339
+ planAdjust: "調整",
1340
+ justNow: "たった今",
1341
+ minutesAgo: "{{count}} 分前",
1342
+ hoursAgo: "{{count}} 時間前",
1343
+ daysAgo: "{{count}} 日前",
1344
+ agentLabels: {
1345
+ ask: "質問",
1346
+ build: "ビルド",
1347
+ dataChat: "アシスタント",
1348
+ metadataAssistant: "メタデータアシスタント",
1349
+ },
1350
+ suggestions: {
1351
+ dataChat: {
1352
+ userCount: "システムには何人のユーザーがいますか?メールアドレスも一覧にしてください。",
1353
+ recentRecords: "最近作成されたレコードを 5 件表示してください。",
1354
+ recordCounts: "オブジェクトごとのレコード数を数えてください。",
1355
+ },
1356
+ metadataAssistant: {
1357
+ buildCrm: "営業 CRM を作って — 顧客、担当者、ステージ別に集計できる商談パイプライン。",
1358
+ buildApp: "プロジェクト管理を作って — プロジェクト、担当者と期日つきのタスク、ステータス別ボード。",
1359
+ buildFlow: "サポートデスクを設計して — 優先度つきチケット、ステータスのワークフロー、顧客との紐付け。",
1360
+ buildInventory: "在庫管理アプリを作って — 商品、在庫数、仕入先、在庫僅少の可視化。",
1361
+ buildRecruiting: "採用管理を作って — 候補者、募集職種、面接ステージ、メモ。",
1362
+ },
1363
+ generic: {
1364
+ help: "どんなことを手伝ってもらえますか?",
1365
+ availableObjects: "利用できるデータオブジェクトを一覧にしてください。",
1366
+ recentActivity: "最近の自分の活動を要約してください。",
1367
+ },
1368
+ editApp: {
1369
+ addField: "いずれかのオブジェクトに項目を追加してください。",
1370
+ addObject: "新しいオブジェクトを追加し、既存のものと関連づけてください。",
1371
+ addDashboard: "主要指標のダッシュボードを追加してください。",
1372
+ addAutomation: "自動化を追加してください — 承認、ステータスフロー、または通知。",
1373
+ },
1374
+ },
1375
+ changesTitle: "変更の確認",
1376
+ changesConfirmed: "確認済み",
1377
+ changesConfirm: "変更を確定",
1378
+ changesConfirmHint: "返信してこの変更を確定または調整してください。",
1379
+ changeVerb: {
1380
+ createObject: "オブジェクトを作成",
1381
+ addField: "項目を追加",
1382
+ modifyField: "項目を変更",
1383
+ deleteField: "項目を削除",
1384
+ createMetadata: "作成",
1385
+ updateMetadata: "変更",
1386
+ createSeed: "サンプルデータを生成",
1387
+ createPackage: "アプリパッケージを作成",
1388
+ },
1389
+ },
836
1390
  title: "ObjectStack コンソール",
837
1391
  initializing: "アプリケーションを初期化中...",
1392
+ loadingHint: "新しい環境のセットアップには少し時間がかかることがあります。",
838
1393
  breadcrumb: {
839
1394
  dashboards: "ダッシュボード",
840
1395
  pages: "ページ",
@@ -876,6 +1431,7 @@ const ja = {
876
1431
  toggleDarkMode: "ダークモードを切り替え",
877
1432
  },
878
1433
  commandPalette: {
1434
+ title: "コマンドパレット",
879
1435
  placeholder: "コマンドを入力または検索...",
880
1436
  noResults: "結果が見つかりません。",
881
1437
  objects: "オブジェクト",
@@ -909,6 +1465,14 @@ const ja = {
909
1465
  system: "システム",
910
1466
  },
911
1467
  objectView: {
1468
+ viewTypeTree: "ツリー",
1469
+ viewTypeTreeDesc: "親項目によって自己参照レコードを階層に入れ子にします。",
1470
+ parentField: "親項目",
1471
+ parentFieldHelp: "階層を定義する親レコード(同一オブジェクト)を指す項目です。自己参照の項目のみ指定できます。",
1472
+ viewName: "名前",
1473
+ viewNameHelp: "マシンキー(snake_case)。タイトルから自動入力されます — 必要に応じて編集してください。",
1474
+ viewNameRequired: "キーを入力してください(英小文字、数字、アンダースコア)。ラテン文字以外のタイトルでは自動入力されません。",
1475
+ viewNameInvalid: "英小文字、数字、アンダースコアを使用し、先頭は文字かアンダースコアにしてください。",
912
1476
  systemViewReadonly: 'System view defined in code - duplicate to customize.',
913
1477
  expandToPage: 'Open as full page',
914
1478
  objectNotFound: "オブジェクトが見つかりません",
@@ -1122,7 +1686,28 @@ const ja = {
1122
1686
  },
1123
1687
  },
1124
1688
  auth: {
1689
+ setPassword: {
1690
+ title: "リカバリー用パスワードを設定",
1691
+ description: "シングルサインオンでサインインしました。SSO が利用できなくなったときにもこの環境へ直接サインインできるよう、ローカルパスワードを設定してください。",
1692
+ email: "メールアドレス",
1693
+ newPassword: "新しいパスワード",
1694
+ confirmPassword: "パスワードの確認",
1695
+ submit: "パスワードを設定",
1696
+ submitting: "保存中…",
1697
+ success: "ローカルパスワードを設定しました",
1698
+ failed: "パスワードを設定できませんでした",
1699
+ passwordsMismatch: "パスワードが一致しません",
1700
+ noSession: "セッションの有効期限が切れました。",
1701
+ backToSignIn: "もう一度サインイン",
1702
+ },
1125
1703
  login: {
1704
+ signingIn: "サインインしています…",
1705
+ ssoHandoff: "{{target}} に進む",
1706
+ devAdminHint: {
1707
+ title: "開発用インスタンス",
1708
+ body: "初期設定の開発用管理者でサインインします:",
1709
+ dismiss: "閉じる",
1710
+ },
1126
1711
  title: "アカウントにサインイン",
1127
1712
  description: "メールアドレスとパスワードを入力してください",
1128
1713
  emailLabel: "メールアドレス",
@@ -1135,6 +1720,7 @@ const ja = {
1135
1720
  noAccountText: "アカウントをお持ちでないですか?",
1136
1721
  signUpText: "新規登録",
1137
1722
  errors: {
1723
+ oauthCallbackFailed: "シングルサインオンを完了できませんでした — サインインリンクの有効期限が切れたか、すでに使用されています。もう一度お試しください。",
1138
1724
  invalidCredentials: "メールアドレスまたはパスワードが正しくありません。再試行してください。",
1139
1725
  emailNotVerified: "サインインする前にメールアドレスを確認してください。",
1140
1726
  },
@@ -1260,6 +1846,40 @@ const ja = {
1260
1846
  shell: {
1261
1847
  tenantHostHint: "このワークスペースにサインインしています",
1262
1848
  },
1849
+ layout: {
1850
+ headline: "強力なビジネスアプリを、より速く。",
1851
+ subhead: "エンタープライズのデータ管理・ワークフロー・分析のための統合プラットフォーム。",
1852
+ },
1853
+ remediation: {
1854
+ signOut: "代わりにサインアウト",
1855
+ password: {
1856
+ title: "パスワードの有効期限が切れました",
1857
+ fallbackMessage: "続行するには新しいパスワードを設定してください。",
1858
+ current: "現在のパスワード",
1859
+ next: "新しいパスワード",
1860
+ confirm: "新しいパスワード(確認)",
1861
+ submit: "パスワードを変更して続行",
1862
+ submitting: "更新しています…",
1863
+ mismatch: "新しいパスワードが一致しません。",
1864
+ failed: "パスワードを変更できませんでした。",
1865
+ },
1866
+ mfa: {
1867
+ title: "二要素認証を設定",
1868
+ fallbackMessage: "続行するには、組織の要件により認証アプリが必要です。",
1869
+ confirmPassword: "パスワードを確認",
1870
+ continue: "続行",
1871
+ preparing: "準備しています…",
1872
+ enrollFailed: "登録を開始できませんでした。",
1873
+ scanTitle: "認証アプリでスキャン",
1874
+ scanBody: "Google Authenticator、1Password、Authy などでこの QR コードをスキャンし、6 桁のコードを入力してください。",
1875
+ backupTitle: "バックアップコードを保存",
1876
+ backupBody: "安全な場所に保管してください。デバイスを紛失した場合、各コードは 1 回だけ使用できます。",
1877
+ codeLabel: "6 桁のコード",
1878
+ verify: "確認して続行",
1879
+ verifying: "確認しています…",
1880
+ invalidCode: "コードが無効です。もう一度お試しください。",
1881
+ },
1882
+ },
1263
1883
  },
1264
1884
  profile: {
1265
1885
  title: "プロフィール",
@@ -1324,11 +1944,15 @@ const ja = {
1324
1944
  settings: "ワークスペース設定",
1325
1945
  },
1326
1946
  help: {
1947
+ onThisPage: "このページの内容",
1948
+ keyboardShortcuts: "キーボードショートカット",
1327
1949
  appDocs: 'このアプリのドキュメント',
1328
1950
  allDocs: 'すべてのドキュメント',
1329
1951
  onlineDocs: 'オンラインドキュメント',
1330
1952
  },
1331
1953
  sidebar: {
1954
+ packageManagement: "パッケージ管理",
1955
+ searchNavigation: "ナビゲーションを検索...",
1332
1956
  settings: "設定",
1333
1957
  help: "ヘルプ",
1334
1958
  helpTooltip: "ヘルプとドキュメント",
@@ -1345,14 +1969,66 @@ const ja = {
1345
1969
  removeFromFavorites: "お気に入りから {{name}} を削除",
1346
1970
  },
1347
1971
  topbar: {
1972
+ openAssistant: "{{name}} アシスタントを開く",
1973
+ offline: "オフライン",
1974
+ usersOnline: "現在オンラインのユーザー",
1975
+ switchView: "ビューを切り替え",
1976
+ switchObject: "オブジェクトを切り替え",
1977
+ connection: {
1978
+ connected: "接続済み",
1979
+ connecting: "接続中...",
1980
+ reconnecting: "再接続中...",
1981
+ disconnected: "切断されました",
1982
+ error: "接続エラー",
1983
+ },
1984
+ stage: {
1985
+ preview: "プレビュー",
1986
+ beta: "ベータ",
1987
+ tooltip: "このプラットフォームはプレビュー版です — 機能は変更される可能性があります。",
1988
+ },
1348
1989
  aiAssistant: "AI アシスタント",
1349
1990
  designInStudio: "Studio でデザイン",
1350
1991
  },
1351
1992
  home: {
1993
+ build: {
1994
+ title: "アプリを作る",
1995
+ subtitle: "ゼロから始める — オブジェクト、フォーム、自動化、画面を設計します。",
1996
+ },
1997
+ template: {
1998
+ title: "テンプレートから始める",
1999
+ subtitle: "マーケットプレイスからテンプレートアプリをインストールしてカスタマイズします。",
2000
+ },
2001
+ welcomeAdminDescription: "ビジネスを一文で説明してください — AI がオブジェクト、画面、API、エージェントツールを生成します。左のメニューから自分で設定することもできます。",
2002
+ welcomeAdminDescriptionNoBuild: "左の管理メニューから最初のアプリケーションを設定してください。データが入ると、AI アシスタントが分析を手伝えます。",
2003
+ welcomeAdminDescriptionNoAi: "左の管理メニューから最初のアプリケーションを設定してください。",
2004
+ noAppsTitle: "アプリケーションがまだありません",
2005
+ noAppsDescription: "ワークスペースを準備中です — 管理者が共有したアプリがここに表示されます。",
2006
+ buildWithAI: "AI でビルド",
2007
+ askAI: "AI に質問",
2008
+ recoveryReminder: {
2009
+ message: "シングルサインオンが利用できないときでもサインインできるよう、リカバリーパスワードを設定してください。",
2010
+ cta: "パスワードを設定",
2011
+ dismiss: "閉じる",
2012
+ },
2013
+ pendingDrafts: {
2014
+ message: "未公開の変更が {{count}} 件あります — 公開すると反映されます。",
2015
+ cta: "公開",
2016
+ publishing: "公開しています…",
2017
+ published: "公開しました。変更が反映されています。",
2018
+ publishFailed: "公開に失敗しました",
2019
+ },
1352
2020
  title: "ホーム",
1353
2021
  subtitle: "ワークスペースのダッシュボード",
1354
2022
  nav: "ホーム",
1355
2023
  allApps: "すべてのアプリケーション",
2024
+ yourApps: "あなたのアプリ",
2025
+ showMoreApps: "もっと見る",
2026
+ showLess: "折りたたむ",
2027
+ continueEmpty: "開いた項目がここに表示されます。",
2028
+ actionCenter: {
2029
+ title: "対応が必要な項目",
2030
+ empty: "すべて対応済みです",
2031
+ },
1356
2032
  loading: "ワークスペースを読み込み中...",
1357
2033
  recent: "最近",
1358
2034
  starred: "スター付き",
@@ -1404,7 +2080,21 @@ const ja = {
1404
2080
  },
1405
2081
  },
1406
2082
  layout: {
2083
+ systemNav: {
2084
+ systemSettings: "システム設定",
2085
+ applications: "アプリケーション",
2086
+ appMarketplace: "アプリマーケットプレイス",
2087
+ objectManager: "オブジェクトマネージャー",
2088
+ users: "ユーザー",
2089
+ organizations: "組織",
2090
+ roles: "ロール",
2091
+ configuration: "構成",
2092
+ createApp: "アプリを作成",
2093
+ },
1407
2094
  appSwitcher: {
2095
+ switchApplication: "アプリケーションを切り替え",
2096
+ appsAvailable: "{{count}} 個のアプリが利用可能",
2097
+ editNavigation: "ナビゲーションを編集",
1408
2098
  home: "ホーム",
1409
2099
  addApp: "アプリを追加",
1410
2100
  editApp: "アプリを編集",
@@ -1497,8 +2187,8 @@ const ja = {
1497
2187
  uploading: "アップロード中…",
1498
2188
  defaultActionTitle: "アクション",
1499
2189
  ok: "OK",
1500
- lookupPlaceholder: "{{label}} のレコードID(UUID)を貼り付け",
1501
- lookupHelpText: "参照オブジェクトのレコードIDを入力してください。ピッカーは近日公開予定です。",
2190
+ lookupPlaceholder: "{{label}} のレコードID",
2191
+ lookupHelpText: "このパラメータには参照オブジェクトが設定されていないため、レコードピッカーを利用できません。レコードIDを直接入力するか、管理者にアクションパラメータの修正を依頼してください。",
1502
2192
  },
1503
2193
  actionConfirm: {
1504
2194
  title: "操作の確認",
@@ -1523,6 +2213,8 @@ const ja = {
1523
2213
  updateFailed: "ナビゲーションの更新に失敗しました",
1524
2214
  },
1525
2215
  objectActions: {
2216
+ resetPackageSetConfirm: "この権限セットはインストール済みパッケージに含まれているため削除できません。削除を実行すると、パッケージ同梱の初期状態に戻り、この環境でのカスタマイズは破棄されます。続行しますか?",
2217
+ resetPackageSetSuccess: "権限セットをパッケージ同梱の初期状態に戻しました",
1526
2218
  deleteSuccess: "{{label}} を削除しました",
1527
2219
  deleteFailed: "{{label}} の削除に失敗しました",
1528
2220
  noRecordId: "レコードIDが指定されていません",
@@ -1687,6 +2379,7 @@ const ja = {
1687
2379
  },
1688
2380
  },
1689
2381
  organizations: {
2382
+ create: "ワークスペースを作成",
1690
2383
  mine: "マイ組織",
1691
2384
  title: "組織",
1692
2385
  heading: "あなたの組織",
@@ -1700,6 +2393,11 @@ const ja = {
1700
2393
  noMatches: "検索条件に一致する組織がありません。",
1701
2394
  },
1702
2395
  notifications: {
2396
+ regionLabel: "通知",
2397
+ groupCount: "通知 {{count}} 件",
2398
+ groupUnread: "未読 {{count}} 件",
2399
+ groupMarkRead: "既読にする",
2400
+ groupMarkReadTitle: "この種類をすべて既読にする",
1703
2401
  empty: "通知はありません",
1704
2402
  markAllRead: "すべて既読にする",
1705
2403
  viewAll: "すべての通知を表示",
@@ -1818,7 +2516,103 @@ const ja = {
1818
2516
  done: '完了 — 非表示にする',
1819
2517
  },
1820
2518
  },
2519
+ excelImport: {
2520
+ noImportableFields: "そのオブジェクトにはインポート可能なフィールドがありません。",
2521
+ schemaReadFailed: "オブジェクトのスキーマを読み取れませんでした。",
2522
+ imported: "{{count}} 行を {{object}} にインポートしました。",
2523
+ importFrom: "実データのインポート元",
2524
+ into: "→",
2525
+ opening: "開いています…",
2526
+ importAction: "インポート",
2527
+ dismiss: "閉じる",
2528
+ },
2529
+ cloudOnboarding: {
2530
+ hintCreate: "最初の環境を作成しましょう。独自の URL・データベース・プランを持つ専用ワークスペースで、アプリの構築はその中で行います。",
2531
+ hintReady: "本番環境の準備が整いました。開いてアプリの構築と実行を行ってください。すべて環境の中で行われます。",
2532
+ createEnvironment: "環境を作成",
2533
+ openProduction: "本番環境を開く",
2534
+ manageEnvironments: "環境を管理",
2535
+ },
2536
+ aiModelStatus: {
2537
+ summary: "ビルド / 質問は {{conversational}}({{conversationalSource}})、構造化出力は {{structured}}({{structuredSource}})を使用します。",
2538
+ summaryRouting: "ルーティングポリシー: 無料プラン → {{free}}、有料プラン → {{paid}}。",
2539
+ modelUnknown: "不明",
2540
+ sourceUnknown: "アダプターから報告なし",
2541
+ rowConversational: "Build / Ask モデル",
2542
+ rowStructured: "構造化(ブループリント / シード)",
2543
+ rowReasoning: "推論の強度",
2544
+ readFailed: "有効な AI モデルを読み取れませんでした。この環境は AI サービスを実行していないか、ai:read 権限がない可能性があります。",
2545
+ readFailedWithStatus: "有効な AI モデルを読み取れませんでした(HTTP {{status}})。この環境は AI サービスを実行していないか、ai:read 権限がない可能性があります。",
2546
+ overridesInEffect: "有効なオーバーライド: ",
2547
+ noOverrides: "なし — デプロイ済みコードの既定値で動作しています。",
2548
+ adapter: "アダプター: ",
2549
+ sourceCodeDefault: "コード既定値(env オーバーライドなし)",
2550
+ sourceInherits: "build/ask と同じ",
2551
+ sourcePinned: "{{source}} で固定",
2552
+ },
2553
+ chatbotError: {
2554
+ title: "応答に失敗しました",
2555
+ fallbackDetail: "問題が発生しました。もう一度お試しください。",
2556
+ details: "詳細",
2557
+ hide: "非表示",
2558
+ retry: "再試行",
2559
+ },
2560
+ chatbotQuota: {
2561
+ title: "アップグレードが必要です",
2562
+ fallbackMessage: "AI の利用上限に達しました。",
2563
+ buyCredits: "クレジットパックを購入",
2564
+ upgradePlan: "プランをアップグレード",
2565
+ },
2566
+ environment: {
2567
+ addEnvironment: "環境を追加",
2568
+ setUpProduction: "本番環境をセットアップ",
2569
+ addDevelopment: "開発環境を追加",
2570
+ },
2571
+ cloudConnection: {
2572
+ checking: "接続を確認しています…",
2573
+ retry: "再試行",
2574
+ errors: {
2575
+ expired: "承認される前にリクエストの有効期限が切れました。もう一度やり直してください。",
2576
+ bindFailed: "バインドに失敗しました。",
2577
+ deviceCodeFailed: "デバイスコードのリクエストに失敗しました。",
2578
+ },
2579
+ waiting: {
2580
+ popupOpened: "今開いたウィンドウで接続を承認してください。このページは自動的に更新されます。",
2581
+ polling: "クラウドコンソールでの承認を待っています…",
2582
+ openApproval: "承認ページを開く",
2583
+ copy: "コピー",
2584
+ copied: "コピーしました",
2585
+ codePrefilled: "承認ページにはコードが自動入力されています。",
2586
+ openItHere: "ウィンドウが表示されませんか? こちらから開く",
2587
+ cancel: "キャンセル",
2588
+ },
2589
+ bound: {
2590
+ title: "ObjectStack Cloud に接続済み",
2591
+ runtime: "ランタイム",
2592
+ organization: "組織",
2593
+ approvedBy: "承認者",
2594
+ runtimeId: "ランタイム ID",
2595
+ environment: "環境",
2596
+ since: "接続日時",
2597
+ privatePackages: "組織のプライベートパッケージが、マーケットプレイスの「自分の組織」に表示されるようになりました。",
2598
+ disconnect: "接続を解除",
2599
+ },
2600
+ unbound: {
2601
+ title: "未接続",
2602
+ body: "このランタイムを ObjectStack コントロールプレーンに接続すると、組織のプライベートパッケージを閲覧してここにインストールできます。承認はクラウドアカウントでワンクリック。ID や認証情報をこのページに入力する必要はありません。",
2603
+ connect: "接続",
2604
+ },
2605
+ },
1821
2606
  marketplace: {
2607
+ suggestedBindings: {
2608
+ promptEveryone: "このアプリは、サインイン済みの全ユーザー(Everyone ポジション)に「{{set}}」を付与することを推奨しています。",
2609
+ promptGuest: "このアプリは、未認証の訪問者(Guest ポジション)に「{{set}}」を付与することを推奨しています。",
2610
+ confirm: "付与",
2611
+ confirming: "付与しています…",
2612
+ dismiss: "閉じる",
2613
+ confirmedToast: "「{{set}}」を {{anchor}} に付与しました。",
2614
+ dismissedToast: "「{{set}}」の提案を閉じました。",
2615
+ },
1822
2616
  title: "アプリマーケットプレイス",
1823
2617
  subtitle: "ObjectStackカタログに公開された承認済みアプリを参照します。アプリをクリックして詳細を表示し、環境にインストールしてください。",
1824
2618
  searchPlaceholder: "名前またはマニフェストIDでアプリを検索…",
@@ -1870,6 +2664,7 @@ const ja = {
1870
2664
  updateAvailable: 'アップデートあり',
1871
2665
  },
1872
2666
  action: {
2667
+ installed: "インストール済み",
1873
2668
  install: "インストール",
1874
2669
  reinstall: "再インストール",
1875
2670
  working: "処理中…",
@@ -1940,6 +2735,14 @@ const ja = {
1940
2735
  yearsAgo: "{{count}}年前",
1941
2736
  },
1942
2737
  },
2738
+ approvals: {
2739
+ approve: '承認',
2740
+ reject: '却下',
2741
+ comment: 'コメント(任意)',
2742
+ approveSuccess: '承認しました',
2743
+ rejectSuccess: '却下しました',
2744
+ rejectConfirm: 'この承認リクエストを却下しますか?',
2745
+ },
1943
2746
  approvalsInbox: {
1944
2747
  loadMore: 'さらに読み込む',
1945
2748
  loadingMore: '読み込み中…',
@@ -1964,13 +2767,28 @@ const ja = {
1964
2767
  slaRemaining: 'SLA 残り {{dur}}',
1965
2768
  slaOverdue: 'SLA 超過 {{dur}}',
1966
2769
  actReassign: '引き継ぎ',
2770
+ reassignFromTo: '{{from}} から {{to}} へ',
1967
2771
  actRemind: 'リマインド',
1968
2772
  actRequestInfo: '追加情報を要求',
1969
2773
  actComment: 'コメント',
1970
2774
  stepProgress: '承認ステップ',
1971
2775
  prevRequest: '前へ',
1972
2776
  nextRequest: '次へ',
1973
- positionOf: '{{index}} / {{total}} 件',
2777
+ positionOf: 'リクエスト {{index}} / {{total}} 件',
2778
+ progressApprovals: '承認 — {{got}} / {{need}}',
2779
+ progressGroups: 'グループ承認 — {{got}} / {{need}} グループ',
2780
+ progressEligible: '承認可能者 {{count}} 名',
2781
+ progressBar: '承認の進捗',
2782
+ declaredActions: 'アクション',
2783
+ attachmentChip: '添付ファイル',
2784
+ attachmentOpenFailed: '添付ファイルを開けませんでした。もう一度お試しください',
2785
+ approveOneTitle: '「{{title}}」を承認しますか?',
2786
+ approveOneBody: 'あなたの名義でこのリクエストを承認します。コメントや添付を付ける場合は、リクエストを開いて操作してください。',
2787
+ flowOrigin: 'フロー起動',
2788
+ sortBy: '並び替え',
2789
+ sortRecent: '新しい順',
2790
+ sortOldest: '古い順',
2791
+ sortAmount: '金額(高い順)',
1974
2792
  quickPhrase1: '承認します。要件を満たしています。',
1975
2793
  quickPhrase2: '条件付きで承認します。実行状況にご注意ください。',
1976
2794
  quickPhrase3: '資料を追加のうえ再提出してください。',
@@ -2099,6 +2917,10 @@ const ja = {
2099
2917
  retry: '再試行',
2100
2918
  },
2101
2919
  draftBar: {
2920
+ messageClean: "ドラフトプレビュー — 未公開の変更はありません。ここに表示されている内容はすべて公開済みです。",
2921
+ sampleDataTitle: "サンプルデータは公開後に表示されます",
2922
+ sampleDataBody: "アプリの構造をプレビューしています。公開するとサンプルレコードが読み込まれ、アプリが有効になります。",
2923
+ publishCta: "公開して確認する",
2102
2924
  message: 'ドラフトプレビュー — 未公開の変更を表示しています。公開するまで本番には反映されません。',
2103
2925
  publish: '公開',
2104
2926
  publishing: '公開中…',