@object-ui/i18n 16.0.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,9 +83,14 @@ const ja = {
74
83
  package: "パッケージ",
75
84
  },
76
85
  actions: {
86
+ decisionOutput: {
87
+ help: '決定の出力としてフローに渡されます。',
88
+ helpMultiValue: '決定の出力としてフローに渡されます。複数の値はカンマで区切ってください。',
89
+ },
77
90
  resultDialog: {
78
- defaultTitle: 'Save this value now',
79
- acknowledge: 'I have saved this',
91
+ defaultTitle: 'この値を今すぐ保存してください',
92
+ acknowledge: '保存しました',
93
+ copyAll: 'すべてコピー',
80
94
  },
81
95
  },
82
96
  validation: {
@@ -93,6 +107,16 @@ const ja = {
93
107
  type: "{{field}}は有効な{{type}}である必要があります",
94
108
  },
95
109
  form: {
110
+ noPermissionToSave: "このレコードを保存する権限がありません。",
111
+ submitFailed: "保存できませんでした。もう一度お試しください。",
112
+ discardTitle: "変更を破棄しますか?",
113
+ discardMessage: "保存されていない変更があります。このままフォームを閉じると編集内容は失われます。",
114
+ keepEditing: "編集を続ける",
115
+ discard: "破棄",
116
+ conflictTitle: "保存の競合",
117
+ conflictMessage: "編集中にこのレコードが他のユーザーによって変更されました。上書きすると、相手の変更はあなたの内容で置き換えられます。",
118
+ conflictLatestVersion: "相手の保存時刻: {{time}}",
119
+ conflictOverwrite: "上書き",
96
120
  addItem: "項目を追加",
97
121
  removeItem: "項目を削除",
98
122
  fieldRequired: "この項目は必須です",
@@ -103,8 +127,6 @@ const ja = {
103
127
  stepOf: "ステップ {{current}} / {{total}}",
104
128
  createTitle: "{{object}}を作成",
105
129
  editTitle: "{{object}}を編集",
106
- createDescription: "新しい{{object}}をデータベースに追加します。",
107
- editDescription: "{{object}}の詳細を更新",
108
130
  saveRecord: "レコードを保存",
109
131
  create: "作成",
110
132
  update: "更新",
@@ -113,14 +135,70 @@ const ja = {
113
135
  deleteSuccess: "{{object}}が削除されました",
114
136
  },
115
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
+ },
116
151
  relativeDate: {
117
152
  overdue: "期限超過 {{count}}日",
118
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
+ },
119
170
  richText: {
120
171
  format: "フォーマット: {{format}}",
121
172
  basicEditorHint: "リッチテキストエディター(基本)",
122
173
  placeholder: "テキストを入力...",
123
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
+ },
124
202
  },
125
203
  table: {
126
204
  rowsPerPage: "1ページの行数",
@@ -155,6 +233,37 @@ const ja = {
155
233
  delete: "削除",
156
234
  },
157
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
+ },
158
267
  actions: "アクション",
159
268
  edit: "編集",
160
269
  delete: "削除",
@@ -180,7 +289,88 @@ const ja = {
180
289
  densityCycleShortHint: "クリックで切り替え",
181
290
  },
182
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: "互換フォールバックでインポートしました: この接続はサーバー側のインポート経路に対応していないため、値はサーバー側の型変換なしでテキストとして保存されました。完全なインポート機能(型変換と関連レコードの解決)にはバックエンド/クライアントの更新が必要です。",
183
372
  title: "{{object}}をインポート",
373
+ notAllowed: "このオブジェクトはインポートに対応していません。",
184
374
  stepUpload: "アップロード",
185
375
  stepMapping: "マッピング",
186
376
  stepPreview: "プレビュー",
@@ -256,6 +446,42 @@ const ja = {
256
446
  moreEvents: "+{{count}} 件",
257
447
  },
258
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: "更新",
259
485
  loading: 'Loading records...',
260
486
  recordCount: "{{count}} 件のレコード",
261
487
  recordCountOne: "{{count}} 件のレコード",
@@ -267,6 +493,8 @@ const ja = {
267
493
  filterRecords: "レコードをフィルター",
268
494
  sort: "並べ替え",
269
495
  sortRecords: "レコードを並べ替え",
496
+ sortByIdSuffix: "(ID順)",
497
+ sortRelationalHint: "他のレコードを参照する列は表示されていません。保存されている ID でしか並べ替えられず、セルに表示される名称では並べ替えできません。その名称で並べ替えるには、名称を保持する数式項目を追加してください。",
270
498
  group: "グループ",
271
499
  groupBy: "グループ化",
272
500
  export: "エクスポート",
@@ -296,6 +524,11 @@ const ja = {
296
524
  recordEditingTitle: "レコード編集",
297
525
  },
298
526
  managedByBadge: {
527
+ systemWritable: {
528
+ short: "プラットフォーム スキーマ",
529
+ title: "プラットフォーム定義・管理者が編集可能",
530
+ body: "このオブジェクトのスキーマはプラットフォームが定義しますが、行の作成・編集はここで行えます。誰が書き込めるかはこのバッジではなく、委任管理とレコードレベルのセキュリティで決まります。",
531
+ },
299
532
  config: {
300
533
  short: "管理設定",
301
534
  title: "管理者設定",
@@ -318,6 +551,7 @@ const ja = {
318
551
  },
319
552
  },
320
553
  kanban: {
554
+ uncategorized: "未分類",
321
555
  addCard: "カードを追加",
322
556
  addColumn: "カラムを追加",
323
557
  moveCard: "カードを移動",
@@ -339,12 +573,92 @@ const ja = {
339
573
  },
340
574
  },
341
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: "保存に失敗しました — 変更は取り消されました",
342
644
  column: {
343
645
  taskName: "タスク名",
344
646
  start: "開始",
345
647
  end: "終了",
346
648
  },
347
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: "やり直す",
348
662
  prevPeriod: "前の期間",
349
663
  nextPeriod: "次の期間",
350
664
  zoomIn: "拡大",
@@ -390,6 +704,9 @@ const ja = {
390
704
  redo: 'Redo',
391
705
  },
392
706
  detail: {
707
+ editInlineHint: "ダブルクリックで編集",
708
+ systemActor: "システム",
709
+ unknownUser: "不明",
393
710
  back: "戻る",
394
711
  edit: "編集",
395
712
  editInline: "編集",
@@ -450,6 +767,18 @@ const ja = {
450
767
  attachmentCount: "{{count}} 件の添付ファイル",
451
768
  attachmentCountPlural: "{{count}} 件の添付ファイル",
452
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: "この操作を行う権限がありません。",
453
782
  unifiedDiff: "統合差分",
454
783
  sideBySideDiff: "横並び差分",
455
784
  noChanges: "変更なし",
@@ -497,9 +826,15 @@ const ja = {
497
826
  saving: "保存中…",
498
827
  lockedByApproval: "承認のためロック中",
499
828
  lockedTooltip: "このレコードには承認待ちのリクエストがあります。編集はロックされています",
829
+ writeStrippedTitle: "保存されなかった項目があります",
830
+ writeStrippedReadonly: "次の項目は読み取り専用のため保存されませんでした: {{fields}}",
831
+ writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため保存されませんでした: {{fields}}",
832
+ approvalPendingEditable: "承認中 · 編集可能",
833
+ approvalPendingTooltip: "このレコードには承認待ちのリクエストがありますが、このステップでは編集できます",
500
834
  cancelApproval: "承認を取り消す",
501
835
  cancelApprovalInFlight: "取り消し中…",
502
836
  cancelApprovalTooltip: "承認待ちリクエストを取り消してレコードのロックを解除する",
837
+ cancelApprovalTooltipUnlocked: "承認待ちリクエストを取り消す",
503
838
  cancelApprovalFailed: "承認の取り消しに失敗しました",
504
839
  cancelApprovalUnavailable: "このデータソースでは承認の取り消しはサポートされていません",
505
840
  linkCopied: "リンクをクリップボードにコピーしました",
@@ -604,6 +939,35 @@ const ja = {
604
939
  resetZoom: "ズームをリセット",
605
940
  },
606
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
+ },
607
971
  addWidget: "ウィジェットを追加",
608
972
  removeWidget: "ウィジェットを削除",
609
973
  editLayout: "レイアウトを編集",
@@ -731,6 +1095,7 @@ const ja = {
731
1095
  navTypeGroup: "グループ",
732
1096
  navTypeSeparator: "区切り",
733
1097
  navTypeAction: "アクション",
1098
+ navTypeComponent: "コンポーネント",
734
1099
  navEditIcon: "アイコンを編集",
735
1100
  navToggleVisible: "表示を切り替え",
736
1101
  navHidden: "非表示",
@@ -832,8 +1197,199 @@ const ja = {
832
1197
  },
833
1198
  },
834
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
+ },
835
1390
  title: "ObjectStack コンソール",
836
1391
  initializing: "アプリケーションを初期化中...",
1392
+ loadingHint: "新しい環境のセットアップには少し時間がかかることがあります。",
837
1393
  breadcrumb: {
838
1394
  dashboards: "ダッシュボード",
839
1395
  pages: "ページ",
@@ -875,6 +1431,7 @@ const ja = {
875
1431
  toggleDarkMode: "ダークモードを切り替え",
876
1432
  },
877
1433
  commandPalette: {
1434
+ title: "コマンドパレット",
878
1435
  placeholder: "コマンドを入力または検索...",
879
1436
  noResults: "結果が見つかりません。",
880
1437
  objects: "オブジェクト",
@@ -908,6 +1465,14 @@ const ja = {
908
1465
  system: "システム",
909
1466
  },
910
1467
  objectView: {
1468
+ viewTypeTree: "ツリー",
1469
+ viewTypeTreeDesc: "親項目によって自己参照レコードを階層に入れ子にします。",
1470
+ parentField: "親項目",
1471
+ parentFieldHelp: "階層を定義する親レコード(同一オブジェクト)を指す項目です。自己参照の項目のみ指定できます。",
1472
+ viewName: "名前",
1473
+ viewNameHelp: "マシンキー(snake_case)。タイトルから自動入力されます — 必要に応じて編集してください。",
1474
+ viewNameRequired: "キーを入力してください(英小文字、数字、アンダースコア)。ラテン文字以外のタイトルでは自動入力されません。",
1475
+ viewNameInvalid: "英小文字、数字、アンダースコアを使用し、先頭は文字かアンダースコアにしてください。",
911
1476
  systemViewReadonly: 'System view defined in code - duplicate to customize.',
912
1477
  expandToPage: 'Open as full page',
913
1478
  objectNotFound: "オブジェクトが見つかりません",
@@ -1121,7 +1686,28 @@ const ja = {
1121
1686
  },
1122
1687
  },
1123
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
+ },
1124
1703
  login: {
1704
+ signingIn: "サインインしています…",
1705
+ ssoHandoff: "{{target}} に進む",
1706
+ devAdminHint: {
1707
+ title: "開発用インスタンス",
1708
+ body: "初期設定の開発用管理者でサインインします:",
1709
+ dismiss: "閉じる",
1710
+ },
1125
1711
  title: "アカウントにサインイン",
1126
1712
  description: "メールアドレスとパスワードを入力してください",
1127
1713
  emailLabel: "メールアドレス",
@@ -1134,6 +1720,7 @@ const ja = {
1134
1720
  noAccountText: "アカウントをお持ちでないですか?",
1135
1721
  signUpText: "新規登録",
1136
1722
  errors: {
1723
+ oauthCallbackFailed: "シングルサインオンを完了できませんでした — サインインリンクの有効期限が切れたか、すでに使用されています。もう一度お試しください。",
1137
1724
  invalidCredentials: "メールアドレスまたはパスワードが正しくありません。再試行してください。",
1138
1725
  emailNotVerified: "サインインする前にメールアドレスを確認してください。",
1139
1726
  },
@@ -1259,6 +1846,40 @@ const ja = {
1259
1846
  shell: {
1260
1847
  tenantHostHint: "このワークスペースにサインインしています",
1261
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
+ },
1262
1883
  },
1263
1884
  profile: {
1264
1885
  title: "プロフィール",
@@ -1323,11 +1944,15 @@ const ja = {
1323
1944
  settings: "ワークスペース設定",
1324
1945
  },
1325
1946
  help: {
1947
+ onThisPage: "このページの内容",
1948
+ keyboardShortcuts: "キーボードショートカット",
1326
1949
  appDocs: 'このアプリのドキュメント',
1327
1950
  allDocs: 'すべてのドキュメント',
1328
1951
  onlineDocs: 'オンラインドキュメント',
1329
1952
  },
1330
1953
  sidebar: {
1954
+ packageManagement: "パッケージ管理",
1955
+ searchNavigation: "ナビゲーションを検索...",
1331
1956
  settings: "設定",
1332
1957
  help: "ヘルプ",
1333
1958
  helpTooltip: "ヘルプとドキュメント",
@@ -1344,14 +1969,66 @@ const ja = {
1344
1969
  removeFromFavorites: "お気に入りから {{name}} を削除",
1345
1970
  },
1346
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
+ },
1347
1989
  aiAssistant: "AI アシスタント",
1348
1990
  designInStudio: "Studio でデザイン",
1349
1991
  },
1350
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
+ },
1351
2020
  title: "ホーム",
1352
2021
  subtitle: "ワークスペースのダッシュボード",
1353
2022
  nav: "ホーム",
1354
2023
  allApps: "すべてのアプリケーション",
2024
+ yourApps: "あなたのアプリ",
2025
+ showMoreApps: "もっと見る",
2026
+ showLess: "折りたたむ",
2027
+ continueEmpty: "開いた項目がここに表示されます。",
2028
+ actionCenter: {
2029
+ title: "対応が必要な項目",
2030
+ empty: "すべて対応済みです",
2031
+ },
1355
2032
  loading: "ワークスペースを読み込み中...",
1356
2033
  recent: "最近",
1357
2034
  starred: "スター付き",
@@ -1403,7 +2080,21 @@ const ja = {
1403
2080
  },
1404
2081
  },
1405
2082
  layout: {
2083
+ systemNav: {
2084
+ systemSettings: "システム設定",
2085
+ applications: "アプリケーション",
2086
+ appMarketplace: "アプリマーケットプレイス",
2087
+ objectManager: "オブジェクトマネージャー",
2088
+ users: "ユーザー",
2089
+ organizations: "組織",
2090
+ roles: "ロール",
2091
+ configuration: "構成",
2092
+ createApp: "アプリを作成",
2093
+ },
1406
2094
  appSwitcher: {
2095
+ switchApplication: "アプリケーションを切り替え",
2096
+ appsAvailable: "{{count}} 個のアプリが利用可能",
2097
+ editNavigation: "ナビゲーションを編集",
1407
2098
  home: "ホーム",
1408
2099
  addApp: "アプリを追加",
1409
2100
  editApp: "アプリを編集",
@@ -1493,10 +2184,11 @@ const ja = {
1493
2184
  requiredError: "{{label}} は必須です",
1494
2185
  cancel: "キャンセル",
1495
2186
  confirm: "確認",
2187
+ uploading: "アップロード中…",
1496
2188
  defaultActionTitle: "アクション",
1497
2189
  ok: "OK",
1498
- lookupPlaceholder: "{{label}} のレコードID(UUID)を貼り付け",
1499
- lookupHelpText: "参照オブジェクトのレコードIDを入力してください。ピッカーは近日公開予定です。",
2190
+ lookupPlaceholder: "{{label}} のレコードID",
2191
+ lookupHelpText: "このパラメータには参照オブジェクトが設定されていないため、レコードピッカーを利用できません。レコードIDを直接入力するか、管理者にアクションパラメータの修正を依頼してください。",
1500
2192
  },
1501
2193
  actionConfirm: {
1502
2194
  title: "操作の確認",
@@ -1521,6 +2213,8 @@ const ja = {
1521
2213
  updateFailed: "ナビゲーションの更新に失敗しました",
1522
2214
  },
1523
2215
  objectActions: {
2216
+ resetPackageSetConfirm: "この権限セットはインストール済みパッケージに含まれているため削除できません。削除を実行すると、パッケージ同梱の初期状態に戻り、この環境でのカスタマイズは破棄されます。続行しますか?",
2217
+ resetPackageSetSuccess: "権限セットをパッケージ同梱の初期状態に戻しました",
1524
2218
  deleteSuccess: "{{label}} を削除しました",
1525
2219
  deleteFailed: "{{label}} の削除に失敗しました",
1526
2220
  noRecordId: "レコードIDが指定されていません",
@@ -1685,6 +2379,7 @@ const ja = {
1685
2379
  },
1686
2380
  },
1687
2381
  organizations: {
2382
+ create: "ワークスペースを作成",
1688
2383
  mine: "マイ組織",
1689
2384
  title: "組織",
1690
2385
  heading: "あなたの組織",
@@ -1698,6 +2393,11 @@ const ja = {
1698
2393
  noMatches: "検索条件に一致する組織がありません。",
1699
2394
  },
1700
2395
  notifications: {
2396
+ regionLabel: "通知",
2397
+ groupCount: "通知 {{count}} 件",
2398
+ groupUnread: "未読 {{count}} 件",
2399
+ groupMarkRead: "既読にする",
2400
+ groupMarkReadTitle: "この種類をすべて既読にする",
1701
2401
  empty: "通知はありません",
1702
2402
  markAllRead: "すべて既読にする",
1703
2403
  viewAll: "すべての通知を表示",
@@ -1816,7 +2516,103 @@ const ja = {
1816
2516
  done: '完了 — 非表示にする',
1817
2517
  },
1818
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
+ },
1819
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
+ },
1820
2616
  title: "アプリマーケットプレイス",
1821
2617
  subtitle: "ObjectStackカタログに公開された承認済みアプリを参照します。アプリをクリックして詳細を表示し、環境にインストールしてください。",
1822
2618
  searchPlaceholder: "名前またはマニフェストIDでアプリを検索…",
@@ -1868,6 +2664,7 @@ const ja = {
1868
2664
  updateAvailable: 'アップデートあり',
1869
2665
  },
1870
2666
  action: {
2667
+ installed: "インストール済み",
1871
2668
  install: "インストール",
1872
2669
  reinstall: "再インストール",
1873
2670
  working: "処理中…",
@@ -1938,6 +2735,14 @@ const ja = {
1938
2735
  yearsAgo: "{{count}}年前",
1939
2736
  },
1940
2737
  },
2738
+ approvals: {
2739
+ approve: '承認',
2740
+ reject: '却下',
2741
+ comment: 'コメント(任意)',
2742
+ approveSuccess: '承認しました',
2743
+ rejectSuccess: '却下しました',
2744
+ rejectConfirm: 'この承認リクエストを却下しますか?',
2745
+ },
1941
2746
  approvalsInbox: {
1942
2747
  loadMore: 'さらに読み込む',
1943
2748
  loadingMore: '読み込み中…',
@@ -1962,13 +2767,28 @@ const ja = {
1962
2767
  slaRemaining: 'SLA 残り {{dur}}',
1963
2768
  slaOverdue: 'SLA 超過 {{dur}}',
1964
2769
  actReassign: '引き継ぎ',
2770
+ reassignFromTo: '{{from}} から {{to}} へ',
1965
2771
  actRemind: 'リマインド',
1966
2772
  actRequestInfo: '追加情報を要求',
1967
2773
  actComment: 'コメント',
1968
2774
  stepProgress: '承認ステップ',
1969
2775
  prevRequest: '前へ',
1970
2776
  nextRequest: '次へ',
1971
- 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: '金額(高い順)',
1972
2792
  quickPhrase1: '承認します。要件を満たしています。',
1973
2793
  quickPhrase2: '条件付きで承認します。実行状況にご注意ください。',
1974
2794
  quickPhrase3: '資料を追加のうえ再提出してください。',
@@ -2097,6 +2917,10 @@ const ja = {
2097
2917
  retry: '再試行',
2098
2918
  },
2099
2919
  draftBar: {
2920
+ messageClean: "ドラフトプレビュー — 未公開の変更はありません。ここに表示されている内容はすべて公開済みです。",
2921
+ sampleDataTitle: "サンプルデータは公開後に表示されます",
2922
+ sampleDataBody: "アプリの構造をプレビューしています。公開するとサンプルレコードが読み込まれ、アプリが有効になります。",
2923
+ publishCta: "公開して確認する",
2100
2924
  message: 'ドラフトプレビュー — 未公開の変更を表示しています。公開するまで本番には反映されません。',
2101
2925
  publish: '公開',
2102
2926
  publishing: '公開中…',