@object-ui/i18n 17.6.0 → 17.7.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 (56) hide show
  1. package/CHANGELOG.md +4320 -0
  2. package/README.md +192 -13
  3. package/dist/builtinAggregateLabels.d.ts +40 -0
  4. package/dist/builtinAggregateLabels.js +23 -0
  5. package/dist/currency.d.ts +27 -3
  6. package/dist/currency.js +28 -4
  7. package/dist/fallbackInterpolation.d.ts +79 -0
  8. package/dist/fallbackInterpolation.js +124 -0
  9. package/dist/i18n.d.ts +27 -1
  10. package/dist/i18n.js +99 -16
  11. package/dist/index.d.ts +7 -13
  12. package/dist/index.js +41 -17
  13. package/dist/locales/ar.d.ts +946 -113
  14. package/dist/locales/ar.js +1095 -161
  15. package/dist/locales/de.d.ts +618 -113
  16. package/dist/locales/de.js +715 -134
  17. package/dist/locales/en.d.ts +632 -127
  18. package/dist/locales/en.js +1044 -162
  19. package/dist/locales/es.d.ts +700 -113
  20. package/dist/locales/es.js +794 -130
  21. package/dist/locales/fr.d.ts +700 -113
  22. package/dist/locales/fr.js +795 -132
  23. package/dist/locales/index.d.ts +6990 -1169
  24. package/dist/locales/index.js +48 -9
  25. package/dist/locales/ja.d.ts +618 -113
  26. package/dist/locales/ja.js +708 -128
  27. package/dist/locales/ko.d.ts +618 -113
  28. package/dist/locales/ko.js +712 -132
  29. package/dist/locales/pt.d.ts +700 -113
  30. package/dist/locales/pt.js +794 -130
  31. package/dist/locales/registry.d.ts +102 -0
  32. package/dist/locales/registry.js +220 -0
  33. package/dist/locales/rtl.d.ts +24 -0
  34. package/dist/locales/rtl.js +26 -0
  35. package/dist/locales/ru.d.ts +782 -113
  36. package/dist/locales/ru.js +910 -152
  37. package/dist/locales/zh.d.ts +635 -130
  38. package/dist/locales/zh.js +725 -131
  39. package/dist/pickLocalized.d.ts +30 -0
  40. package/dist/pickLocalized.js +39 -0
  41. package/dist/provider.d.ts +101 -12
  42. package/dist/provider.js +335 -50
  43. package/dist/translateFn.d.ts +29 -0
  44. package/dist/translateFn.js +8 -0
  45. package/dist/useDisplayLocale.d.ts +11 -0
  46. package/dist/useDisplayLocale.js +11 -0
  47. package/dist/useObjectLabel.d.ts +40 -18
  48. package/dist/useObjectLabel.js +46 -14
  49. package/dist/useSafeTranslation.js +40 -42
  50. package/dist/utils/formatting.d.ts +16 -0
  51. package/dist/utils/formatting.js +23 -3
  52. package/dist/utils/spec-formatters.d.ts +13 -23
  53. package/dist/utils/spec-formatters.js +41 -2
  54. package/dist/utils/spec-translations.d.ts +16 -3
  55. package/dist/utils/spec-translations.js +52 -13
  56. package/package.json +12 -6
@@ -19,10 +19,12 @@ const ja = {
19
19
  manage_users: "ユーザー管理",
20
20
  manage_org_users: "組織ユーザーの管理",
21
21
  manage_metadata: "メタデータ管理",
22
+ manage_org_presentation: "組織表示の管理",
22
23
  manage_platform_settings: "プラットフォーム設定の管理",
23
24
  setup_access: "設定へのアクセス",
24
25
  setup_write: "設定の書き込み",
25
26
  studio_access: "Studio へのアクセス",
27
+ manage_sharing: "共有の管理",
26
28
  },
27
29
  group: {
28
30
  platform: 'プラットフォーム',
@@ -39,12 +41,16 @@ const ja = {
39
41
  more: "+{{count}} 件",
40
42
  objects: "{{count}} オブジェクト",
41
43
  objects_one: "{{count}} オブジェクト",
44
+ objects_other: "{{count}} オブジェクト",
42
45
  fields: "{{count}} フィールドルール",
43
46
  fields_one: "{{count}} フィールドルール",
47
+ fields_other: "{{count}} フィールドルール",
44
48
  rls: "{{count}} RLS ポリシー",
45
49
  rls_one: "{{count}} RLS ポリシー",
50
+ rls_other: "{{count}} RLS ポリシー",
46
51
  tabs: "{{count}} タブルール",
47
52
  tabs_one: "{{count}} タブルール",
53
+ tabs_other: "{{count}} タブルール",
48
54
  adminScope: "委任管理を設定済み",
49
55
  designInStudio: "Studio でデザイン →",
50
56
  designInStudioHint: "Studio でデザイン",
@@ -63,7 +69,8 @@ const ja = {
63
69
  selectFirst: 'まず {{fields}} を選択してください',
64
70
  selectRecord: 'レコードを選択',
65
71
  recordCount: '{{count}} 件のレコード',
66
- recordCountOne: '1 件のレコード',
72
+ recordCount_one: '{{count}} 件のレコード',
73
+ recordCount_other: '{{count}} 件のレコード',
67
74
  pageOf: '{{total}} ページ中 {{current}} ページ',
68
75
  filters: 'フィルター',
69
76
  clear: 'クリア',
@@ -116,7 +123,8 @@ const ja = {
116
123
  closePanel: "パネルを閉じる",
117
124
  resizeDrawer: "パネル幅を調整",
118
125
  itemCount: "{{count}} 件",
119
- itemCountOne: "{{count}} 件",
126
+ itemCount_one: "{{count}} 件",
127
+ itemCount_other: "{{count}} 件",
120
128
  toggleSidebar: "サイドバーを切り替え",
121
129
  package: "パッケージ",
122
130
  done: "完了",
@@ -124,6 +132,16 @@ const ja = {
124
132
  record: "レコード",
125
133
  retry: "再試行",
126
134
  printDialogHint: "ブラウザーの印刷ダイアログを開きます(PDF エクスポートではありません)",
135
+ // The non-grid row ceiling's footnote (objectui#7210). Two keys because
136
+ // there are two conditions: a reported `total` states the fact with BOTH
137
+ // numbers, a missing one cannot name how many. Kept terse deliberately —
138
+ // this copy is eagerly loaded, and since objectui#7399 these bytes are
139
+ // budgeted by the `i18n-locales` chunk, not `framework`. ⛔ That ceiling's
140
+ // headroom is deliberately NOT restated here — it moves on every
141
+ // re-baseline, and the figure that was here went stale.
142
+ // `pnpm check:eager-closure` prints it.
143
+ rowCeilingNote: "{{total}} 件中、最初の {{shown}} 件を表示しています。フィルターを絞り込んでください。",
144
+ rowCeilingNoteUnknownTotal: "最初の {{shown}} 件を表示しています。フィルターを絞り込んでください。",
127
145
  },
128
146
  actions: {
129
147
  decisionOutput: {
@@ -135,6 +153,14 @@ const ja = {
135
153
  acknowledge: '保存しました',
136
154
  copyAll: 'すべてコピー',
137
155
  },
156
+ notAvailableHere: '「{{action}}」は現在のページでは利用できません。',
157
+ completedSuccessfully: '操作が正常に完了しました',
158
+ failed: '操作に失敗しました',
159
+ parallelFailed: '1 つ以上の並列操作が失敗しました',
160
+ undo: '元に戻す',
161
+ undone: '変更を元に戻しました',
162
+ undoneOperation: '元に戻す: {{description}}',
163
+ redoneOperation: 'やり直す: {{description}}',
138
164
  },
139
165
  validation: {
140
166
  required: "{{field}}は必須です",
@@ -152,19 +178,45 @@ const ja = {
152
178
  },
153
179
  form: {
154
180
  noPermissionToSave: "このレコードを保存する権限がありません。",
181
+ noPermissionToCreate: "{{object}}を作成する権限がありません。フィールドは読み取り専用です。",
182
+ noPermissionToEdit: "{{object}}を編集する権限がありません。フィールドは読み取り専用です。",
155
183
  submitFailed: "保存できませんでした。もう一度お試しください。",
184
+ uploadInFlight: "アップロードが完了してから保存してください。",
185
+ clearedOnHide: "現在の値に該当しなくなった項目をクリアしました: {{fields}}",
186
+ visibleWhenFaulted: "送信できません: {{fields}} の visibleWhen ルールを評価できませんでした。このフォームを送信するには、先にルールを修正する必要があります。",
156
187
  discardTitle: "変更を破棄しますか?",
157
188
  discardMessage: "保存されていない変更があります。このままフォームを閉じると編集内容は失われます。",
158
189
  // objectui#4024 — the create/edit dialog's `sr-only` accessible
159
190
  // description, used when the form declares no `description` of its own.
160
191
  dialogDescriptionFallback: "フォームの項目を入力してから、送信またはキャンセルしてください。",
192
+ deniedDescription: "このフィールドを編集する権限がありません。",
193
+ masterDetail: {
194
+ loadingColumns: "列を読み込み中…",
195
+ subtotal: "小計",
196
+ tax: "税({{rate}}%)",
197
+ total: "合計",
198
+ lineItem: "明細行",
199
+ rowTitle: "{{title}} — {{row}} 行目",
200
+ applyRow: "適用",
201
+ editorDescription: "レコードとその明細行を入力してから、保存してください。",
202
+ noChildObject: "このコレクションには子オブジェクトが設定されていません。{{property}} に、行を一覧表示するオブジェクトを設定してください。",
203
+ schemaUnavailable: "{{object}} のスキーマを読み込めなかったため、このコレクションには表示する列がありません。オブジェクトが存在し読み取り可能であることを確認してから、再読み込みしてください。",
204
+ noRelationshipField: "{{object}} が {{parent}} にどのようにリンクしているかを特定できませんでした。親を参照する lookup または master_detail フィールドがありません。このコレクションの {{property}} に、親レコードを保持するフィールドを設定してください。",
205
+ },
206
+ lineItems: {
207
+ title: "明細行",
208
+ saveRecordFirst: "明細行を追加するには、先にレコードを保存してください。",
209
+ notLoaded: "このレコードの明細行は読み込まれていません。",
210
+ loadFailed: "明細行の読み込みに失敗しました",
211
+ saveFailed: "明細行の保存に失敗しました",
212
+ noChildObject: "このパネルには子オブジェクトが設定されていません。{{property}} に、行を一覧表示するオブジェクトを設定してください。",
213
+ },
161
214
  keepEditing: "編集を続ける",
162
215
  discard: "破棄",
163
216
  conflictTitle: "保存の競合",
164
217
  conflictMessage: "編集中にこのレコードが他のユーザーによって変更されました。上書きすると、相手の変更はあなたの内容で置き換えられます。",
165
218
  conflictLatestVersion: "相手の保存時刻: {{time}}",
166
219
  conflictOverwrite: "上書き",
167
- addItem: "項目を追加",
168
220
  removeItem: "項目を削除",
169
221
  fieldRequired: "この項目は必須です",
170
222
  invalidFormat: "形式が正しくありません",
@@ -182,6 +234,12 @@ const ja = {
182
234
  createSuccess: "{{object}}が作成されました",
183
235
  updateSuccess: "{{object}}が更新されました",
184
236
  deleteSuccess: "{{object}}が削除されました",
237
+ created: "作成しました",
238
+ saved: "保存しました",
239
+ savedNamed: "{{title}}を保存しました",
240
+ submitted: "送信しました",
241
+ errorLoading: "フォームの読み込みエラー",
242
+ navigateRefused: "このフォームに宣言された `navigateOnSuccess` の遷移先が拒否されたため、遷移は行われませんでした。",
185
243
  fullscreen: {
186
244
  title: "テキストを編集",
187
245
  description: "テキスト全体を編集してから、変更を保存またはキャンセルしてください。",
@@ -206,6 +264,8 @@ const ja = {
206
264
  },
207
265
  relativeDate: {
208
266
  overdue: "期限超過 {{count}}日",
267
+ overdue_one: "期限超過 {{count}}日",
268
+ overdue_other: "期限超過 {{count}}日",
209
269
  },
210
270
  file: {
211
271
  dragDropHere: 'ファイルをここにドラッグ&ドロップ',
@@ -222,6 +282,7 @@ const ja = {
222
282
  remove: '{{name}} を削除',
223
283
  exceedsMaxSize: '「{{name}}」は最大サイズ({{max}} MB)を超えています',
224
284
  uploadFailed: '「{{name}}」のアップロードに失敗しました:{{error}}',
285
+ uploadIncomplete: '「{{name}}」のアップロードが完了しませんでした:ファイル ID が返されなかったため、何も保存されていません',
225
286
  },
226
287
  richText: {
227
288
  format: "フォーマット: {{format}}",
@@ -249,6 +310,9 @@ const ja = {
249
310
  selectBusinessUnit: "事業単位を選択",
250
311
  selectPosition: "役職を選択",
251
312
  selectUnitAndSubordinates: "事業単位を選択",
313
+ selectField: "ユーザーフィールドを選択",
314
+ noUserFields: "このオブジェクトにユーザーフィールドはありません",
315
+ fieldNotUserTyped: "{{name}} — ユーザーフィールドではありません",
252
316
  },
253
317
  filterCondition: {
254
318
  selectObjectFirst: "先にオブジェクトを選択してください。",
@@ -259,6 +323,26 @@ const ja = {
259
323
  editAsJson: "JSON で編集",
260
324
  useVisualBuilder: "ビジュアルビルダーを使用",
261
325
  },
326
+ object: {
327
+ invalidJson: "JSON が不正です",
328
+ },
329
+ location: {
330
+ refusedFormat: "保存されていません: 緯度, 経度 の組で入力してください(例: 30.2741, 120.1551)。",
331
+ refusedRange: "保存されていません: {{detail}}",
332
+ latitude: "緯度",
333
+ longitude: "経度",
334
+ refusedResidueOne: "保存されていません: {{name}}「{{text}}」は数値ではありません。通常の小数で入力してください(例: 30.2741, 120.1551)。",
335
+ refusedResidue: "保存されていません: {{name}}「{{text}}」と{{otherName}}「{{otherText}}」は数値ではありません。通常の小数で入力してください(例: 30.2741, 120.1551)。",
336
+ },
337
+ date: {
338
+ impossibleDay: "保存されている値「{{value}}」は実在しない日付です。置き換えるには日付を選択してください。",
339
+ },
340
+ dateTime: {
341
+ impossibleDay: "保存されている値「{{value}}」は実在しない日付です。置き換えるには日付と時刻を選択してください。",
342
+ },
343
+ number: {
344
+ badInput: "保存されていません: このボックスのテキストは数値ではありません。通常の小数で入力してください(例: {{example}})。",
345
+ },
262
346
  tags: {
263
347
  placeholder: "入力してEnterキーで追加…",
264
348
  },
@@ -274,6 +358,16 @@ const ja = {
274
358
  characterCount: "文字数: {{max}} 文字中 {{count}} 文字",
275
359
  charactersRemaining: "残り {{count}} 文字",
276
360
  },
361
+ grid: {
362
+ addLine: "行を追加",
363
+ noItems: "項目なし",
364
+ noItemsAddHint: "まだ項目がありません。「{{label}}」をクリックして開始してください。",
365
+ optionalColumns: "オプションの列",
366
+ computed: "自動計算",
367
+ openRow: "行を開く",
368
+ duplicateRow: "行を複製",
369
+ removeRow: "行を削除",
370
+ },
277
371
  },
278
372
  table: {
279
373
  rowsPerPage: "1ページの行数",
@@ -302,23 +396,35 @@ const ja = {
302
396
  open: "開く",
303
397
  search: "検索…",
304
398
  modified: "{{count}} 行が変更されました",
399
+ modified_one: "{{count}} 行が変更されました",
400
+ modified_other: "{{count}} 行が変更されました",
305
401
  saveFailed: '保存に失敗しました',
306
402
  selected: "{{count}} 件選択中",
403
+ selected_one: "{{count}} 件選択中",
404
+ selected_other: "{{count}} 件選択中",
307
405
  edit: "編集",
308
406
  delete: "削除",
309
407
  },
310
408
  grid: {
311
409
  bulkSelected: "{{count}} 件を選択中",
410
+ bulkSelected_one: "{{count}} 件を選択中",
411
+ bulkSelected_other: "{{count}} 件を選択中",
312
412
  bulkSelectedAllMatches: "{{count}} 件を選択中(該当すべて)",
313
413
  bulkClear: "選択解除",
314
414
  bulkAllOnPage: "このページの {{count}} 件がすべて選択されています。",
415
+ bulkAllOnPage_one: "このページの {{count}} 件がすべて選択されています。",
416
+ bulkAllOnPage_other: "このページの {{count}} 件がすべて選択されています。",
315
417
  bulkSelectAllMatching: "該当する {{count}} 件すべてを選択",
316
418
  bulkAllMatchingSelected: "該当する {{count}} 件のレコードがすべて選択されています。",
317
419
  bulk: {
318
420
  confirmDefault: "{{count}} 件のレコードに適用されます。",
421
+ confirmDefault_one: "{{count}} 件のレコードに適用されます。",
422
+ confirmDefault_other: "{{count}} 件のレコードに適用されます。",
319
423
  overLimit: "選択件数({{count}})がアクションの上限({{limit}})を超えています。選択を減らしてください。",
320
424
  affectedRecords: "対象レコード({{count}}):",
321
425
  skippedIneligible: "選択したレコードのうち {{count}} 件はこのアクションの対象外のため、スキップされます。",
426
+ skippedIneligible_one: "選択したレコードのうち {{count}} 件はこのアクションの対象外のため、スキップされます。",
427
+ skippedIneligible_other: "選択したレコードのうち {{count}} 件はこのアクションの対象外のため、スキップされます。",
322
428
  rowFallback: "{{index}} 行目",
323
429
  andMore: "… 他 {{count}} 件",
324
430
  processed: "{{count}} / {{total}} 件を処理",
@@ -336,7 +442,6 @@ const ja = {
336
442
  undo: "取り消す",
337
443
  undoing: "取り消し中…",
338
444
  done: "完了",
339
- selectPlaceholder: "選択…",
340
445
  loading: "読み込み中…",
341
446
  },
342
447
  actions: "アクション",
@@ -355,6 +460,14 @@ const ja = {
355
460
  yes: "はい",
356
461
  no: "いいえ",
357
462
  systemFields: "システム",
463
+ // objectui#10881 — the grouped grid's two refusals: over a data source
464
+ // that cannot answer the group header query, and over rows a host
465
+ // handed in while declaring them one page of more. `queryGroupHeaders`
466
+ // is the member's name and stays untranslated.
467
+ grouping: {
468
+ needsHeaderQuery: "このビューはグループ化されていますが、データソースが queryGroupHeaders を実装していないため、グループの件数を数えられません。レコードを表示するにはグループ化を解除してください。",
469
+ needsWholeRows: "グループ化にはすべてのレコードが必要ですが、このグリッドにはその一部のページしか渡されていないため、グループの件数を数えられません。すべてのレコードを渡すか、queryGroupHeaders を実装したデータソースからグリッドに読み込ませてください。",
470
+ },
358
471
  // objectui#4024 — column-footer aggregate prefixes, keyed by the spec's
359
472
  // `ColumnSummary` vocabulary. `pattern` owns the label/value join so this
360
473
  // pack controls its own separator and word order.
@@ -381,10 +494,14 @@ const ja = {
381
494
  },
382
495
  import: {
383
496
  downloadTemplate: "テンプレートをダウンロード",
384
- downloadTemplateHint: "正しい列を備えた CSV を取得します(必須項目には * が付きます)。",
497
+ downloadTemplateHint: "インポートできる列だけを含む Excel ファイルを取得します(必須項目には * が付き、記入方法の説明が付きます)。",
385
498
  templateFileName: "{{object}}-import-template",
499
+ templateDownloadFailed: "テンプレートをダウンロードできませんでした。もう一度お試しください。",
500
+ templateNotPermitted: "このオブジェクトのレコードを作成する権限がないため、インポートテンプレートは利用できません。",
386
501
  autoMatched: "自動マッピング済み",
387
502
  autoMatchedSummary: "{{count}} 列を自動マッピングしました — 下で確認・調整してください。",
503
+ autoMatchedSummary_one: "{{count}} 列を自動マッピングしました — 下で確認・調整してください。",
504
+ autoMatchedSummary_other: "{{count}} 列を自動マッピングしました — 下で確認・調整してください。",
388
505
  confidence: {
389
506
  high: "確度: 高",
390
507
  medium: "確度: 中",
@@ -397,8 +514,14 @@ const ja = {
397
514
  cancelImport: "インポートを中止",
398
515
  importCancelled: "インポートを中止しました",
399
516
  resultsTruncated: "{{total}} 行のうち先頭 {{count}} 行の結果を表示しています。",
517
+ resultsTruncated_one: "{{total}} 行のうち先頭 {{count}} 行の結果を表示しています。",
518
+ resultsTruncated_other: "{{total}} 行のうち先頭 {{count}} 行の結果を表示しています。",
400
519
  createdCount: "{{count}} 件を作成",
520
+ createdCount_one: "{{count}} 件を作成",
521
+ createdCount_other: "{{count}} 件を作成",
401
522
  updatedCount: "{{count}} 件を更新",
523
+ updatedCount_one: "{{count}} 件を更新",
524
+ updatedCount_other: "{{count}} 件を更新",
402
525
  downloadFailed: "失敗した行をダウンロード",
403
526
  options: "インポート設定",
404
527
  writeMode: "既存レコードに一致した行の扱い",
@@ -446,6 +569,8 @@ const ja = {
446
569
  historyColResult: "結果",
447
570
  historyColTime: "日時",
448
571
  errorCount: "エラー {{count}} 件",
572
+ errorCount_one: "エラー {{count}} 件",
573
+ errorCount_other: "エラー {{count}} 件",
449
574
  undoImport: "インポートを取り消す",
450
575
  undoing: "取り消し中…",
451
576
  undoConfirm: "このインポートを取り消しますか?作成されたレコードは削除され、更新されたレコードは以前の値に戻されます。",
@@ -506,7 +631,11 @@ const ja = {
506
631
  mapped: "マッピング済み",
507
632
  skipped: "スキップ済み",
508
633
  rowsWithErrors: "{{count}} 行にエラー",
634
+ rowsWithErrors_one: "{{count}} 行にエラー",
635
+ rowsWithErrors_other: "{{count}} 行にエラー",
509
636
  rowsCorrected: "{{count}} 行が修正されました",
637
+ rowsCorrected_one: "{{count}} 行が修正されました",
638
+ rowsCorrected_other: "{{count}} 行が修正されました",
510
639
  clickToFix: "— ハイライトされたセルをクリックしてインラインで修正。",
511
640
  showingRows: "{{total}} 行中 {{shown}} 行を表示",
512
641
  importing: "インポート中… {{progress}}%",
@@ -514,11 +643,15 @@ const ja = {
514
643
  imported: "{{count}} 件インポートされました",
515
644
  skippedCount: "{{count}} 件スキップされました",
516
645
  moreErrors: "…他 {{count}} 件のエラー",
646
+ moreErrors_one: "…他 {{count}} 件のエラー",
647
+ moreErrors_other: "…他 {{count}} 件のエラー",
517
648
  cancel: "キャンセル",
518
649
  back: "戻る",
519
650
  next: "次へ",
520
651
  close: "閉じる",
521
652
  importNRows: "{{count}} 行をインポート",
653
+ importNRows_one: "{{count}} 行をインポート",
654
+ importNRows_other: "{{count}} 行をインポート",
522
655
  importingProgress: "インポート中…",
523
656
  requiredMark: "*",
524
657
  required: "必須",
@@ -530,11 +663,37 @@ const ja = {
530
663
  month: "月",
531
664
  week: "週",
532
665
  day: "日",
533
- agenda: "予定表",
534
666
  allDay: "終日",
535
- noEvents: "予定はありません",
536
667
  newEvent: "新しい予定",
537
668
  moreEvents: "+{{count}} 件",
669
+ unscheduled: "日時未定 ({{count}})",
670
+ loading: "カレンダーを読み込み中…",
671
+ loadError: "エラー: {{message}}",
672
+ configRequired: "カレンダーの設定が必要です。startDateField を指定してください。これはカレンダー唯一の必須キーです。予定のタイトルは titleField がなくても解決されます。",
673
+ configRequiredHint: "これはビューの calendar ブロックに属します。インターフェースページには独自のカレンダースロットがありません。sourceView をカレンダーを宣言しているビューに向けてください。",
674
+ eventDetails: "予定の詳細",
675
+ pullToRefresh: "引っ張って更新",
676
+ refreshing: "更新中…",
677
+ onDate: "{{date}}",
678
+ eventTitle: "タイトル",
679
+ eventTitlePlaceholder: "この予定の内容は?",
680
+ creating: "作成中…",
681
+ titleRequired: "タイトルは必須です",
682
+ a11y: {
683
+ region: "カレンダー",
684
+ grid: "カレンダーグリッド",
685
+ goToToday: "今日に移動",
686
+ previousPeriod: "前の期間",
687
+ nextPeriod: "次の期間",
688
+ currentDate: "現在の日付: {{date}}",
689
+ dayCell: "{{date}}、予定 {{count}} 件",
690
+ dayCell_one: "{{date}}、予定 {{count}} 件",
691
+ dayCell_other: "{{date}}、予定 {{count}} 件",
692
+ resizeEventEnd: "予定の終了日を変更",
693
+ resizeEventEndHint: "ドラッグして終了日を変更",
694
+ resizeStart: "開始時刻を変更",
695
+ resizeEnd: "終了時刻を変更",
696
+ },
538
697
  },
539
698
  list: {
540
699
  firstRunTitle: "まだ何もありません",
@@ -577,7 +736,8 @@ const ja = {
577
736
  refresh: "更新",
578
737
  loading: "レコードを読み込み中…",
579
738
  recordCount: "{{count}} 件のレコード",
580
- recordCountOne: "{{count}} 件のレコード",
739
+ recordCount_one: "{{count}} 件のレコード",
740
+ recordCount_other: "{{count}} 件のレコード",
581
741
  addRecord: "レコードを追加",
582
742
  tabs: "タブ",
583
743
  allRecords: "すべてのレコード",
@@ -609,7 +769,7 @@ const ja = {
609
769
  hideFieldsTitle: "フィールドを非表示",
610
770
  dataLimitReached: "最初の {{limit}} 件のレコードを表示しています。さらにデータがある場合があります。",
611
771
  viewSettings: "ビュー設定",
612
- viewSettingsHint: "グループ化、色、密度、表示フィールド。",
772
+ viewSettingsHint: "グループ化、色、密度、表示フィールド。このビューを使用するすべてのユーザーに適用されます。",
613
773
  addGroup: "グループフィールドを追加",
614
774
  collapsedByDefault: "デフォルトで折りたたむ",
615
775
  removeGroup: "削除",
@@ -674,6 +834,17 @@ const ja = {
674
834
  },
675
835
  gantt: {
676
836
  rowLabel: "項目",
837
+ unusableRange: {
838
+ malformedDate: "ガントの日付範囲が使用できません — {{path}} が {{value}} で、有効な日付として解析できません。ガントのすべての日付は解析可能である必要があります: 各行アイテムの startDate と endDate、およびスキーマで固定した minDate / maxDate。",
839
+ malformedRow: "ガントの行が使用できません — {{path}} が {{value}} で、行の形ではありません。ガントは items を行のリストとして、各行を label と自身の items を持つオブジェクトとして、各行の items をバーのリストとして読み取ります。これらの位置にある null、数値、文字列、プレーンなオブジェクトは描画できません。",
840
+ inverted: "ガントの日付範囲が使用できません — minDate {{minDate}} が maxDate {{maxDate}} より後です。固定した minDate / maxDate は行から計算した範囲より優先されるため、この軸には列がなくバーを配置できません。2 つの値を入れ替えてください。",
841
+ },
842
+ },
843
+ unsupported: {
844
+ objectBoundGantt: "サポートされていないバリアント \"gantt\" — オブジェクト連動のタイムラインはフィードバリアント({{variants}})を描画します。ガントには、それぞれが入れ子の items を持つリテラル行が必要なため、ここではガント軸(scale)は効果がありません。",
845
+ },
846
+ unconfigured: {
847
+ noDateAxis: "タイムラインの日付軸が必要です — このビューは日付フィールドを宣言しておらず、オブジェクト連動のタイムラインが日付フィールドを作り出すことはありません。次のいずれかを宣言してください: {{fields}}。最初のものが spec の記法で、残りは旧来のエイリアスです。",
677
848
  },
678
849
  },
679
850
  gantt: {
@@ -691,6 +862,7 @@ const ja = {
691
862
  },
692
863
  aria: {
693
864
  taskList: "タスク一覧",
865
+ refreshing: "更新中…",
694
866
  },
695
867
  tooltip: {
696
868
  days: "日",
@@ -736,13 +908,19 @@ const ja = {
736
908
  conflict: {
737
909
  title: "スケジュールの競合",
738
910
  body: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
911
+ body_one: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
912
+ body_other: "この移動は依存関係の制約と競合します。影響を受ける {{count}} 件のタスクを自動で再スケジュールしますか?",
739
913
  confirm: "自動で再スケジュール",
740
914
  cancel: "そのままにする",
741
915
  },
742
916
  autoScheduleDlg: {
743
917
  title: "自動スケジュール",
744
918
  body: "依存リンクを満たすため {{count}} 件のタスクを後ろにずらしますか?",
919
+ body_one: "依存リンクを満たすため {{count}} 件のタスクを後ろにずらしますか?",
920
+ body_other: "依存リンクを満たすため {{count}} 件のタスクを後ろにずらしますか?",
745
921
  skipped: "ロックされた {{count}} 件のタスクもリンクに違反していますが、スキップされました。",
922
+ skipped_one: "ロックされた {{count}} 件のタスクもリンクに違反していますが、スキップされました。",
923
+ skipped_other: "ロックされた {{count}} 件のタスクもリンクに違反していますが、スキップされました。",
746
924
  confirm: "適用",
747
925
  cancel: "キャンセル",
748
926
  none: "依存関係はすべて満たされています — 再スケジュールの必要はありません。",
@@ -821,6 +999,7 @@ const ja = {
821
999
  tabActionsFor: "{{name}} のビュー操作",
822
1000
  readonlyAriaLabel: "読み取り専用ビュー",
823
1001
  readonlyTooltip: "システムビュー — コードで定義され、読み取り専用です。",
1002
+ malformedFilter: "このビューのフィルターが不正なため、レコードを表示しません:{{subject}} の条件を適用できません。",
824
1003
  },
825
1004
  designer: {
826
1005
  undo: "元に戻す",
@@ -846,7 +1025,8 @@ const ja = {
846
1025
  pageHeaderActions: "ページヘッダーの操作",
847
1026
  emojiPicker: "絵文字ピッカー",
848
1027
  reactionCount: "{{emoji}} {{count}} 件のリアクション",
849
- reactionCountOne: "{{emoji}} {{count}} 件のリアクション",
1028
+ reactionCount_one: "{{emoji}} {{count}} 件のリアクション",
1029
+ reactionCount_other: "{{emoji}} {{count}} 件のリアクション",
850
1030
  recordDetail: "レコード詳細",
851
1031
  recordDetailWithLabel: "{{label}}の詳細",
852
1032
  openAsFullPage: "フルページで開く",
@@ -873,7 +1053,6 @@ const ja = {
873
1053
  viewAll: "すべて表示",
874
1054
  new: "新規",
875
1055
  add: "追加",
876
- emptyValue: "—",
877
1056
  activity: "アクティビティ",
878
1057
  editRow: "編集",
879
1058
  deleteRow: "削除",
@@ -885,6 +1064,7 @@ const ja = {
885
1064
  sortBy: "並べ替え",
886
1065
  filterPlaceholder: "フィルター…",
887
1066
  highlightFields: "主要フィールド",
1067
+ highlightsLabel: "レコードの主要フィールド",
888
1068
  comments: "コメント",
889
1069
  searchComments: "コメントを検索…",
890
1070
  addCommentPlaceholder: "コメントを追加… (Ctrl+Enterで送信)",
@@ -895,11 +1075,18 @@ const ja = {
895
1075
  unpin: "ピン解除",
896
1076
  justNow: "たった今",
897
1077
  minutesAgo: "{{count}}分前",
1078
+ minutesAgo_one: "{{count}}分前",
1079
+ minutesAgo_other: "{{count}}分前",
898
1080
  hoursAgo: "{{count}}時間前",
1081
+ hoursAgo_one: "{{count}}時間前",
1082
+ hoursAgo_other: "{{count}}時間前",
899
1083
  daysAgo: "{{count}}日前",
1084
+ daysAgo_one: "{{count}}日前",
1085
+ daysAgo_other: "{{count}}日前",
900
1086
  dropFilesToUpload: "ファイルをここにドロップまたはクリックしてアップロード",
901
1087
  attachmentCount: "{{count}} 件の添付ファイル",
902
- attachmentCountPlural: "{{count}} 件の添付ファイル",
1088
+ attachmentCount_one: "{{count}} 件の添付ファイル",
1089
+ attachmentCount_other: "{{count}} 件の添付ファイル",
903
1090
  removeAttachment: "添付ファイルを削除",
904
1091
  // Record Attachments panel (enable.files, objectstack#4358)
905
1092
  attachments: "添付ファイル",
@@ -917,11 +1104,6 @@ const ja = {
917
1104
  attachmentsLoadFailed: "このレコードの添付ファイルを読み込めませんでした。",
918
1105
  attachmentsApiUnavailable: "このオブジェクトでは添付ファイルの一覧を利用できません。",
919
1106
  retryLoadAttachments: "再試行",
920
- unifiedDiff: "統合差分",
921
- sideBySideDiff: "横並び差分",
922
- noChanges: "変更なし",
923
- previousVersion: "前のバージョン",
924
- currentVersion: "現在のバージョン",
925
1107
  discussion: "ディスカッション",
926
1108
  showDiscussion: "ディスカッションを表示 ({{count}})",
927
1109
  hideDiscussion: "ディスカッションを非表示",
@@ -936,25 +1118,35 @@ const ja = {
936
1118
  writeComment: "コメントを入力…",
937
1119
  subscribedTooltip: "購読中 — クリックで解除",
938
1120
  unsubscribedTooltip: "通知を購読",
939
- firstRecord: "最初のレコード (Home)",
940
- previousRecordKey: "前のレコード (←)",
941
- nextRecordKey: "次のレコード (→)",
942
- lastRecord: "最後のレコード (End)",
943
1121
  noRecords: "レコードなし",
944
- searchWhileNavigating: "ナビゲーション中に検索",
945
- searchRecords: "レコードを検索…",
946
1122
  allActivity: "すべてのアクティビティ",
947
1123
  commentsOnly: "コメントのみ",
948
1124
  fieldChangesFilter: "フィールド変更",
949
1125
  tasksOnly: "タスクのみ",
950
1126
  leaveCommentPlaceholder: "コメントを入力… (Ctrl+Enterで送信)",
951
1127
  noActivity: "アクティビティの記録なし",
1128
+ activityAccessDenied: "このレコードのアクティビティを表示する権限がありません。",
1129
+ commentsAccessDenied: "このレコードのコメントを表示する権限がありません。",
1130
+ // objectui#7149 — the rest of `ActivityTimeline`. The four chip labels the
1131
+ // `detail.*` pack did not already name, and the `formatFieldChange`
1132
+ // sentences, which are assembled in code and so need interpolation holes.
1133
+ allFilter: 'すべて',
1134
+ createsFilter: '作成',
1135
+ deletesFilter: '削除',
1136
+ statusChangesFilter: 'ステータス変更',
1137
+ activityEmptyValue: '(空)',
1138
+ activityFieldChanged: '{{field}} を「{{old}}」から「{{new}}」に変更しました',
1139
+ activityCreated: 'このレコードを作成しました',
1140
+ activityDeleted: 'このレコードを削除しました',
1141
+ activityStatusChanged: 'ステータスを「{{value}}」に変更しました',
1142
+ activityUpdated: 'レコードを更新しました',
952
1143
  loadMore: "さらに読み込む",
953
1144
  edited: "(編集済み)",
954
1145
  via: "{{source}} 経由",
955
1146
  viewSource: "ソースを表示",
956
1147
  replyCount: "{{count}} 件の返信",
957
- replyCountPlural: "{{count}} 件の返信",
1148
+ replyCount_one: "{{count}} 件の返信",
1149
+ replyCount_other: "{{count}} 件の返信",
958
1150
  replyPlaceholder: "返信…",
959
1151
  filterActivity: "アクティビティをフィルター",
960
1152
  openDiscussion: "ディスカッションパネルを開く",
@@ -969,6 +1161,7 @@ const ja = {
969
1161
  writeStrippedReadonly: "次の項目は読み取り専用のため反映されませんでした: {{fields}}",
970
1162
  writeStrippedByState: "次の項目はこのレコードの現在の状態では編集できないため反映されませんでした: {{fields}}",
971
1163
  writeStrippedPrimaryKey: "次の項目はレコードの識別子で、保存では変更できないため反映されませんでした: {{fields}}",
1164
+ writeStrippedComputed: "次の項目はサーバーが数式で計算するため、送信した値は反映されませんでした: {{fields}}",
972
1165
  writeStrippedUnknownReason: "次の項目はサーバーで反映されませんでした: {{fields}}",
973
1166
  approvalPendingEditable: "承認中 · 編集可能",
974
1167
  approvalPendingTooltip: "このレコードには承認待ちのリクエストがありますが、このステップでは編集できます",
@@ -990,6 +1183,8 @@ const ja = {
990
1183
  pathStageLostUpcoming: '{{stage}}、失注、未到達',
991
1184
  pathStageWonUpcoming: '{{stage}}、目標ステージ、未到達',
992
1185
  linkCopied: "リンクをクリップボードにコピーしました",
1186
+ commentFailed: "コメントを投稿できませんでした。何も保存されていません。もう一度お試しください。",
1187
+ reactionFailed: "リアクションが保存されませんでした。もう一度お試しください。",
993
1188
  linkCopyFailed: "リンクのコピーに失敗しました",
994
1189
  cancel: "キャンセル",
995
1190
  cancelEdit: "変更を破棄",
@@ -1021,26 +1216,50 @@ const ja = {
1021
1216
  copyPhone: "電話番号をコピー",
1022
1217
  copyRecordId: "レコードIDをコピー",
1023
1218
  showEmptyFields: "{{count}} 件の空フィールドを表示",
1219
+ showEmptyFields_one: "{{count}} 件の空フィールドを表示",
1220
+ showEmptyFields_other: "{{count}} 件の空フィールドを表示",
1024
1221
  hideEmptyFields: "空フィールドを非表示",
1025
1222
  noValue: "値なし",
1223
+ unresolvedReference: "未解決の参照: {{value}} はユーザーとして解決されませんでした",
1224
+ unresolvedLookupReference: "未解決の参照: {{value}} はこの画面でレコードとして解決されませんでした",
1225
+ repeaterItemCount: "{{count}} 件",
1226
+ repeaterItemCount_one: "{{count}} 件",
1227
+ repeaterItemCount_other: "{{count}} 件",
1228
+ fileCount: "ファイル {{count}} 件",
1229
+ fileCount_one: "ファイル {{count}} 件",
1230
+ fileCount_other: "ファイル {{count}} 件",
1026
1231
  },
1027
1232
  chart: {
1028
- noData: "チャートデータがありません",
1029
1233
  loading: "チャート読み込み中…",
1234
+ refreshing: "更新中…",
1030
1235
  nullCategory: "(未設定)",
1031
- },
1032
- map: {
1033
- searchLocations: "場所を検索…",
1034
- locationDetails: "場所の詳細",
1035
- markersCount: "{{count}} 個のマーカー",
1036
- invalidCoordinates: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。",
1037
- invalidCoordinatesPlural: "座標が欠落または無効なため、{{count}} 件のレコードが地図から除外されました。",
1236
+ scatterOneMeasure: "散布図は1つの指標だけを描画します。系列は1つだけ残してください:",
1237
+ unconfigured: {
1238
+ noCategoryAxis: "チャートのカテゴリ軸が必要です — オブジェクト連携チャートは軸を推測しません。次のいずれかを宣言してください:",
1239
+ },
1038
1240
  },
1039
1241
  dashboard: {
1040
- noRows: "行がありません",
1242
+ // objectui#7063 — the DEFAULT empty state every dashboard widget renders
1243
+ // when its query SUCCEEDED and returned nothing. It replaced the terse
1244
+ // per-widget `noRows` / `noDataAvailable` fragments at the render site;
1245
+ // objectui#7125 deleted those two keys from all ten packs once nothing
1246
+ // read them. The copy here has to read as a state rather than a failure,
1247
+ // which is why it says the widget loaded. `sourceLabel` carries its own
1248
+ // punctuation so the call site concatenates no separator (see
1249
+ // `WidgetEmptyState`).
1250
+ empty: {
1251
+ title: "まだデータがありません",
1252
+ message: "このウィジェットは正常に読み込まれましたが、クエリはまだレコードを返していません。",
1253
+ sourceLabel: "データソース:",
1254
+ },
1041
1255
  loading: "読み込み中…",
1256
+ refreshing: "更新中…",
1257
+ refreshAll: "すべて更新",
1258
+ refreshDashboard: "ダッシュボードを更新",
1042
1259
  pickMeasures: "このデータセットウィジェットの指標(値)を選択してください。",
1043
1260
  datasetUnsupported: "このデータソースはデータセットクエリに対応していません。",
1261
+ widgetForbiddenTitle: "アクセス権がありません",
1262
+ widgetForbiddenMessage: "このウィジェットのデータを表示する権限がありません。",
1044
1263
  details: "詳細",
1045
1264
  exportCsv: "CSV で書き出す",
1046
1265
  openInList: "リストで開く",
@@ -1068,12 +1287,10 @@ const ja = {
1068
1287
  },
1069
1288
  },
1070
1289
  addWidget: "ウィジェットを追加",
1071
- removeWidget: "ウィジェットを削除",
1072
1290
  editLayout: "レイアウトを編集",
1073
1291
  saveLayout: "レイアウトを保存",
1074
1292
  resetLayout: "レイアウトをリセット",
1075
1293
  total: "合計",
1076
- noDataAvailable: "データがありません",
1077
1294
  noDataSourceFor: "データソースが利用できません:",
1078
1295
  config: {
1079
1296
  breadcrumb: {
@@ -1195,10 +1412,6 @@ const ja = {
1195
1412
  appDescription: "説明",
1196
1413
  appIcon: "アイコン",
1197
1414
  template: "テンプレート",
1198
- layout: "レイアウト",
1199
- layoutSidebar: "サイドバー",
1200
- layoutHeader: "ヘッダー",
1201
- layoutEmpty: "空",
1202
1415
  selectObjects: "オブジェクトを選択",
1203
1416
  searchObjects: "オブジェクトを検索…",
1204
1417
  selectAll: "すべて選択",
@@ -1207,7 +1420,6 @@ const ja = {
1207
1420
  addGroup: "グループを追加",
1208
1421
  addUrl: "URLを追加",
1209
1422
  addSeparator: "区切りを追加",
1210
- noNavItems: "ナビゲーション項目がありません。",
1211
1423
  logoUrl: "ロゴURL",
1212
1424
  primaryColor: "プライマリカラー",
1213
1425
  faviconUrl: "ファビコンURL",
@@ -1234,13 +1446,12 @@ const ja = {
1234
1446
  appearance: "外観",
1235
1447
  rowHeight: "行高さ",
1236
1448
  livePreview: "リアルタイムプレビュー",
1237
- stepBasicDesc: "名前、タイトル、レイアウト",
1449
+ stepBasicDesc: "名前、タイトル、アイコン",
1238
1450
  stepObjectsDesc: "ビジネスオブジェクトを選択",
1239
1451
  stepNavigationDesc: "ナビゲーションツリーを構築",
1240
1452
  stepBrandingDesc: "ロゴ、色、ファビコン",
1241
1453
  noObjectsFound: "オブジェクトが見つかりません。",
1242
1454
  noNavItemsHint: "ナビゲーション項目がありません。前のステップでオブジェクトを選択するか、手動で追加してください。",
1243
- separator: "セパレーター",
1244
1455
  separatorLabel: "— セパレーター —",
1245
1456
  newGroup: "新しいグループ",
1246
1457
  newLink: "新しいリンク",
@@ -1274,6 +1485,7 @@ const ja = {
1274
1485
  navTypeSeparator: "区切り",
1275
1486
  navTypeAction: "アクション",
1276
1487
  navTypeComponent: "コンポーネント",
1488
+ navTypeDoc: "ドキュメント",
1277
1489
  navEditIcon: "アイコンを編集",
1278
1490
  navToggleVisible: "表示を切り替え",
1279
1491
  navHidden: "非表示",
@@ -1351,11 +1563,8 @@ const ja = {
1351
1563
  defaultValue: "デフォルト値",
1352
1564
  placeholder: "プレースホルダー",
1353
1565
  referenceTo: "参照先",
1354
- formula: "数式",
1355
1566
  options: "オプション",
1356
1567
  addOption: "オプションを追加",
1357
- validationRules: "検証ルール",
1358
- addRule: "ルールを追加",
1359
1568
  systemBadge: "システム",
1360
1569
  ungrouped: "一般",
1361
1570
  deleteConfirmTitle: "フィールドを削除しますか?",
@@ -1374,7 +1583,21 @@ const ja = {
1374
1583
  },
1375
1584
  },
1376
1585
  console: {
1586
+ studio: {
1587
+ backToHome: "ホームに戻る",
1588
+ },
1377
1589
  saveAdvisoryTitle: "保存しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1590
+ saveAdvisoryTitle_one: "保存しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1591
+ saveAdvisoryTitle_other: "保存しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1592
+ publishAdvisoryTitle: "公開しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1593
+ publishAdvisoryTitle_one: "公開しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1594
+ publishAdvisoryTitle_other: "公開しました — 編集チェックで {{count}} 件の推奨事項が見つかりました",
1595
+ importMappingsUnavailable: "{{object}} の保存済みインポートマッピングを読み込めませんでした",
1596
+ importMappingsRefused: "サーバーがこのリクエストを拒否しました。つまりこのリストが空なのは読み取れなかったためであり、何も登録されていないためではありません。再度サインインするか、管理者にアクセス権を依頼してください。",
1597
+ importMappingsUnreadable: "このリストが空なのは読み取れなかったためであり、何も登録されていないためではありません。再試行し、繰り返し発生する場合は報告してください。",
1598
+ savedViewsUnavailable: "{{object}} の保存済みビューを読み込めませんでした",
1599
+ savedViewsRefused: "サーバーがこのリクエストを拒否しました。つまりこのリストが空なのは読み取れなかったためであり、このオブジェクトに保存済みビューがないためではありません。再度サインインするか、管理者にアクセス権を依頼してください。",
1600
+ savedViewsUnreadable: "このリストが空なのは読み取れなかったためであり、このオブジェクトに保存済みビューがないためではありません。再試行し、繰り返し発生する場合は報告してください。",
1378
1601
  settingsHub: {
1379
1602
  title: "設定",
1380
1603
  subtitle: "ワークスペース、連携、機能フラグを設定します。",
@@ -1437,9 +1660,16 @@ const ja = {
1437
1660
  statusFull: "上限に達しました",
1438
1661
  resetsDaily: "今夜リセットされます",
1439
1662
  resetsMonthly: "次のサイクルでリセットされます",
1663
+ resetsWeeklyDays: "{{count}}日後にリセットされます",
1664
+ resetsWeeklyDays_one: "{{count}}日後にリセットされます",
1665
+ resetsWeeklyDays_other: "{{count}}日後にリセットされます",
1666
+ resetsWeeklyHours: "{{count}}時間後にリセットされます",
1667
+ resetsWeeklyHours_one: "{{count}}時間後にリセットされます",
1668
+ resetsWeeklyHours_other: "{{count}}時間後にリセットされます",
1440
1669
  ctaUpgrade: "アップグレードして続行",
1441
1670
  ctaTopUp: "クレジットを追加して続行",
1442
1671
  ariaLabel: "AI 使用状況: {{status}}",
1672
+ breakdownTitle: "これまでの使用内訳",
1443
1673
  },
1444
1674
  workspaceTitle: "AI ワークスペース",
1445
1675
  workspaceSubtitle: "質問し、確認し、会話を再開します",
@@ -1449,6 +1679,31 @@ const ja = {
1449
1679
  share: "共有",
1450
1680
  shareTitle: "この会話を共有",
1451
1681
  shareDisabledTitle: "共有するにはチャットを開始してください",
1682
+ buildDoctor: "ビルド診断",
1683
+ buildDoctorTitle: "ビルド診断 — 実際に反映された内容は?",
1684
+ buildDoctorDisabledTitle: "先にメッセージを送信してください",
1685
+ buildDoctorDrawer: {
1686
+ description: 'エージェントが主張した内容と、実際に反映されている内容の比較です。読み取り専用の診断です。',
1687
+ reconciling: '照合中…',
1688
+ notAvailable: '利用できません — 会話が見つからないか、アクセス権限がありません。',
1689
+ untitled: '(無題)',
1690
+ summary: '{{turns}} ターン · {{messages}} 件のメッセージ · {{tokens}} tok · LLM {{seconds}} 秒',
1691
+ allLive: '試行した {{count}} 件の変更はすべて反映されています — 失われたものはありません。',
1692
+ discrepancies: '{{count}} 件の不一致 — チャットの内容と実際に反映されている内容が一致しません。',
1693
+ orphanedTitle: '提案されたが適用されていない',
1694
+ orphanedHint: 'エージェントが提案した確認カードが、その後どのターンでも適用されず、変更が暗黙のうちに失われました。',
1695
+ missingTitle: '適用済みとされたが見つからない',
1696
+ missingHint: 'ツールの結果は適用済みとしていますが、成果物は sys_metadata に反映されていません。',
1697
+ toolErrorsTitle: 'ツールエラー',
1698
+ toolErrorsHint: 'ビルド中にエラーを返したツール呼び出しです。',
1699
+ verifyTitle: 'ビルドチェック(verify_build)',
1700
+ yourApp: 'あなたのアプリ:',
1701
+ noIssues: '問題 0 件',
1702
+ issueCount: '問題 {{count}} 件',
1703
+ platformNoise: 'プラットフォームの sys_* 検出 {{count}} 件を非表示',
1704
+ pendingActions: '保留中のアクション',
1705
+ timeline: 'タイムライン({{count}})',
1706
+ },
1452
1707
  newChat: "新規",
1453
1708
  searchChats: "チャットを検索…",
1454
1709
  noChatsYet: "チャットはまだありません",
@@ -1478,7 +1733,7 @@ const ja = {
1478
1733
  empty: {
1479
1734
  build: {
1480
1735
  title: "AI でビルド",
1481
- description: "アプリやワークフローを普通の言葉で説明してください — オブジェクト、画面、自動化を下書きしますので、確認して公開してください。",
1736
+ description: "アプリを普通の言葉で説明してください — オブジェクト、画面、サンプルデータを下書きしますので、確認して公開してください。",
1482
1737
  },
1483
1738
  ask: {
1484
1739
  title: "データに質問",
@@ -1487,7 +1742,7 @@ const ja = {
1487
1742
  editApp: {
1488
1743
  title: "「{{app}}」を編集中",
1489
1744
  titleGeneric: "このアプリを編集",
1490
- description: "何を変更しますか?このアプリをその場で変更します — 項目、オブジェクト、ビュー、自動化の追加や、既存部分の調整ができます。",
1745
+ description: "何を変更しますか?このアプリをその場で変更します — 項目、オブジェクト、ビュー、ダッシュボードの追加や、既存部分の調整ができます。",
1491
1746
  },
1492
1747
  },
1493
1748
  clearConversation: "クリア",
@@ -1540,23 +1795,41 @@ const ja = {
1540
1795
  recentRecords: "最近作成されたレコードを 5 件表示してください。",
1541
1796
  recordCounts: "オブジェクトごとのレコード数を数えてください。",
1542
1797
  },
1798
+ // cloud#1984 — these five chips are the maker's own recommendations, so
1799
+ // they may only ask for what ADR-0112 v1 BUILDS: objects, fields, views
1800
+ // (grid/kanban/calendar/gallery), pages, dashboards and sample data. No
1801
+ // wording that promises autonomous behaviour (alert / remind / notify /
1802
+ // automate / status workflow) — v1 has no flows, actions or schedules, and
1803
+ // the model silently degrades such a request into a board or a filtered
1804
+ // view, so the chip would promise an alert and deliver a page. REVERT to
1805
+ // the automation wording when ADR-0112 v2 re-adds flows and actions.
1543
1806
  metadataAssistant: {
1544
- buildCrm: "営業 CRM を作って — 顧客、担当者、ステージ別に集計できる商談パイプライン。",
1545
- buildApp: "プロジェクト管理を作って — プロジェクト、担当者と期日つきのタスク、ステータス別ボード。",
1546
- buildFlow: "サポートデスクを設計して — 優先度つきチケット、ステータスのワークフロー、顧客との紐付け。",
1547
- buildInventory: "在庫管理アプリを作って — 商品、在庫数、仕入先、在庫僅少の可視化。",
1548
- buildRecruiting: "採用管理を作って — 候補者、募集職種、面接ステージ、メモ。",
1807
+ buildCrm: "営業 CRM を作って — 顧客、担当者、ステージ項目つきの商談、ステージ別に金額を集計するダッシュボード。",
1808
+ buildApp: "プロジェクト管理を作って — プロジェクト、担当者と期日つきのタスク、ステータス別ボード、期日のカレンダー。",
1809
+ buildFlow: "サポートデスクを設計して — 優先度とステータスの項目を持つチケット、ステータス別ボード、顧客との紐付け。",
1810
+ buildInventory: "在庫管理アプリを作って — 商品、在庫数、仕入先、発注点を下回る商品を絞り込むビュー。",
1811
+ buildRecruiting: "採用管理を作って — 候補者、募集職種、面接ステージ項目、ステージ別ボード。",
1549
1812
  },
1550
1813
  generic: {
1551
1814
  help: "どんなことを手伝ってもらえますか?",
1552
1815
  availableObjects: "利用できるデータオブジェクトを一覧にしてください。",
1553
1816
  recentActivity: "最近の自分の活動を要約してください。",
1554
1817
  },
1818
+ // objectui#7709 — the edit-mode starters, shown when the maker is bound
1819
+ // to an EXISTING app (`?package=`). Same rule as the five above: they
1820
+ // may only ask for what ADR-0112 v1 BUILDS. The fourth chip used to be
1821
+ // `addAutomation` ("an approval, a status flow, or a notification") and
1822
+ // every capability it named is refused by v1 (cloud#1956 / PR #1970), so
1823
+ // it now asks for sample data — `seed` IS on v1's whitelist, and having
1824
+ // no data is what an existing app most often lacks. REVERT: when
1825
+ // ADR-0112 v2 re-adds flows and actions, THIS chip's automation wording
1826
+ // comes back as `addAutomation`; the retired string is pinned for every
1827
+ // pack in `packages/i18n/src/__tests__/makerEditChips-v1-scope-7709.test.ts`.
1555
1828
  editApp: {
1556
1829
  addField: "いずれかのオブジェクトに項目を追加してください。",
1557
1830
  addObject: "新しいオブジェクトを追加し、既存のものと関連づけてください。",
1558
1831
  addDashboard: "主要指標のダッシュボードを追加してください。",
1559
- addAutomation: "自動化を追加してください — 承認、ステータスフロー、または通知。",
1832
+ addSampleData: "既存のオブジェクトに、デモで使えるリアルなサンプルデータを入れてください。",
1560
1833
  },
1561
1834
  },
1562
1835
  changesTitle: "変更の確認",
@@ -1638,6 +1911,13 @@ const ja = {
1638
1911
  pages: "ページ",
1639
1912
  reports: "レポート",
1640
1913
  system: "システム",
1914
+ marketplace: "マーケットプレイス",
1915
+ settings: '設定',
1916
+ apps: 'アプリ',
1917
+ profile: 'プロフィール',
1918
+ approvals: '承認',
1919
+ aiApprovals: 'AI 承認',
1920
+ auditLog: '監査ログ',
1641
1921
  },
1642
1922
  // objectui#4024 — the single-namespace settings screen. Its sibling
1643
1923
  // `settingsHub` above already resolved through this pack; the view was the
@@ -1729,6 +2009,21 @@ const ja = {
1729
2009
  records: "レコード",
1730
2010
  recentRecords: "最近閲覧",
1731
2011
  },
2012
+ // objectui#9954 — see the `en` pack for what raises each case.
2013
+ readRate: {
2014
+ ratioTitle: 'この環境の読み取り量が異常です',
2015
+ ratio: '書き込み 1 行あたり {{ratio}} 行を読み取っています。プラットフォームは {{threshold}} を超える比率を検出対象とします。制限やブロックは一切行われていません。読み取りパターンを確認するための報告です。',
2016
+ noWritesTitle: 'この環境は読み取りのみで書き込みがまったくありません',
2017
+ noWrites: '行の読み取りはある一方で書き込みがまったくないため、読み取り比率に上限がありません。これは最も深刻な読み取り値です。プラットフォームは {{threshold}} を超える比率を検出対象とします。制限やブロックは一切行われていません。読み取りパターンを確認するための報告です。',
2018
+ },
2019
+ // objectui#10439 — see the `en` pack for what raises each case.
2020
+ storageUsage: {
2021
+ warningTitle: 'ストレージの空き容量が少なくなっています',
2022
+ warning: '{{limit}} MB 中 {{used}} MB を使用しています。ストレージが満杯になると、アップロードとインポートは一時停止されます。',
2023
+ blockedTitle: 'ストレージが満杯です:アップロードとインポートは一時停止中です',
2024
+ blocked: '{{limit}} MB 中 {{used}} MB を使用しています。既存のデータはそのままで、読み取り、エクスポート、個々のレコードの編集は引き続き利用できます。',
2025
+ upgrade: 'アップグレードして続行',
2026
+ },
1732
2027
  errors: {
1733
2028
  somethingWentWrong: "問題が発生しました",
1734
2029
  unexpectedError: "このビューのレンダリング中に予期しないエラーが発生しました。",
@@ -1759,6 +2054,7 @@ const ja = {
1759
2054
  viewNameInvalid: "英小文字、数字、アンダースコアを使用し、先頭は文字かアンダースコアにしてください。",
1760
2055
  systemViewReadonly: "システムビューはコードで定義されており、読み取り専用です。",
1761
2056
  cannotEditMetaView: "このビューはコードで定義された組み込みビューのため、変更できません。",
2057
+ viewConfigPermissionDenied: "ビュー設定はこのビューを使用するすべてのユーザーに適用されるため、変更には「メタデータの管理」権限が必要です。管理者に変更を依頼してください。",
1762
2058
  cannotDeleteMetaView: "このビューはコードで定義された組み込みビューのため、削除できません。",
1763
2059
  expandToPage: "フルページで開く",
1764
2060
  objectNotFound: "オブジェクトが見つかりません",
@@ -1769,12 +2065,13 @@ const ja = {
1769
2065
  allRecords: "すべてのレコード",
1770
2066
  new: "新規",
1771
2067
  configureView: "ビューを設定",
1772
- toolbar: "ツールバー",
1773
2068
  toolbarEnabledCount: "{{total}} 件中 {{count}} 件有効",
1774
2069
  searchFields: "フィールドを検索…",
1775
2070
  title: "タイトル",
1776
2071
  viewType: "ビュータイプ",
1777
2072
  recordCount: "{{count}} 件のレコード",
2073
+ recordCount_one: "{{count}} 件のレコード",
2074
+ recordCount_other: "{{count}} 件のレコード",
1778
2075
  save: "保存",
1779
2076
  discard: "破棄",
1780
2077
  createView: "ビューを作成",
@@ -1786,11 +2083,12 @@ const ja = {
1786
2083
  longitudeField: "経度フィールド",
1787
2084
  imageField: "画像フィールド",
1788
2085
  selectField: "フィールドを選択…",
1789
- groupBy: "グループ化",
1790
2086
  endDateField: "終了日フィールド",
1791
2087
  import: "インポート",
1792
2088
  importTitle: "CSVからインポート",
1793
2089
  importedToast: "{{count}} 行をインポートしました。",
2090
+ importedToast_one: "{{count}} 行をインポートしました。",
2091
+ importedToast_other: "{{count}} 行をインポートしました。",
1794
2092
  importedWithSkipped: "{{ok}} 行をインポートしました。{{skipped}} 行をスキップしました。",
1795
2093
  createViewDesc: "ビュータイプを選択して名前を付けてください。設定は後で変更できます。",
1796
2094
  cancel: "キャンセル",
@@ -1799,6 +2097,8 @@ const ja = {
1799
2097
  deleteViewTitle: "ビューを削除",
1800
2098
  deleteViewConfirm: "ビュー「{{name}}」を削除してもよろしいですか?この操作は元に戻せません。",
1801
2099
  bulkDeleteConfirm: "選択した {{count}} 件のレコードを削除しますか?この操作は元に戻せません。",
2100
+ bulkDeleteConfirm_one: "選択した {{count}} 件のレコードを削除しますか?この操作は元に戻せません。",
2101
+ bulkDeleteConfirm_other: "選択した {{count}} 件のレコードを削除しますか?この操作は元に戻せません。",
1802
2102
  duplicateViewName: "この名前のビューはすでに存在します。",
1803
2103
  viewTypeGrid: "グリッド",
1804
2104
  viewTypeGridDesc: "スプレッドシート形式のレコード一覧。",
@@ -1835,10 +2135,14 @@ const ja = {
1835
2135
  chartTypePie: "円グラフ",
1836
2136
  chartTypeArea: "面積グラフ",
1837
2137
  chartTypeScatter: "散布図",
1838
- xAxisField: "X軸フィールド",
1839
- xAxisFieldHelp: "カテゴリまたは時間の次元。",
1840
- yAxisField: "Y軸フィールド",
1841
- yAxisFieldHelp: "集計する数値フィールド。",
2138
+ dataset: "データセット",
2139
+ datasetHelp: "グラフはこのオブジェクトのデータセットから数値を読み取ります。",
2140
+ chartMeasure: "メジャー",
2141
+ chartMeasureHelp: "値軸にプロットするデータセットのメジャー。",
2142
+ chartDimension: "ディメンション",
2143
+ chartDimensionHelp: "値をグループ化するデータセットのディメンション(任意)。",
2144
+ viewTypeUnavailableDataset: "このオブジェクトにはグラフに使えるデータセットがありません。",
2145
+ noDatasetMeasure: "このデータセットにはグラフに使えるメジャーが宣言されていません。",
1842
2146
  ufTabs: "タブ",
1843
2147
  ufAddField: "+ フィルターフィールドを追加…",
1844
2148
  ufShowAllRecords: "「すべてのレコード」タブを表示",
@@ -1852,6 +2156,9 @@ const ja = {
1852
2156
  unpinItem: "{{name}} のピンを外す",
1853
2157
  dragToReorder: "ドラッグして並べ替え",
1854
2158
  favorites: "お気に入り",
2159
+ launcherLabel: "アプリランチャー",
2160
+ menuLabel: "アプリナビゲーション",
2161
+ menuEmpty: "このアプリには開けるナビゲーション項目がありません。",
1855
2162
  },
1856
2163
  },
1857
2164
  auth: {
@@ -1905,6 +2212,8 @@ const ja = {
1905
2212
  resendOtpCountdownText: "{seconds} 秒後に再送信",
1906
2213
  usePhoneOtpText: "確認コードでサインイン",
1907
2214
  usePasswordSignInText: "パスワードでサインインする",
2215
+ socialButton: "{provider} で続行",
2216
+ orText: "またはメールアドレスで続行",
1908
2217
  },
1909
2218
  register: {
1910
2219
  title: "アカウントを作成",
@@ -1923,8 +2232,12 @@ const ja = {
1923
2232
  submittingButton: "アカウント作成中…",
1924
2233
  hasAccountText: "すでにアカウントをお持ちですか?",
1925
2234
  signInText: "サインイン",
2235
+ socialButton: "{provider} で新規登録",
2236
+ orText: "またはメールアドレスで続行",
1926
2237
  errors: {
1927
2238
  userExists: "このメールアドレスのアカウントはすでに存在します。代わりにサインインしてください。",
2239
+ selfRegistrationClosed: "この環境ではセルフ登録を受け付けていません。管理者に招待を依頼してください。",
2240
+ emailDomainNotAllowed: "このメールアドレスのドメインはここでの登録が許可されていません。組織のメールアドレスを使用するか、管理者に招待を依頼してください。",
1928
2241
  },
1929
2242
  verifyInbox: {
1930
2243
  title: "受信箱を確認してください",
@@ -2123,6 +2436,15 @@ const ja = {
2123
2436
  role: "ロール",
2124
2437
  save: "変更を保存",
2125
2438
  },
2439
+ language: {
2440
+ title: "言語",
2441
+ description: "あなた宛ての通知やメッセージに使用される言語です。画面の表示言語は地球アイコンのメニューで別途切り替えます。",
2442
+ label: "優先する言語",
2443
+ systemDefault: "デプロイメントの既定値を使用",
2444
+ save: "保存",
2445
+ saved: "言語の設定を更新しました。",
2446
+ readOnly: "このアカウントの言語は管理者が管理しています。",
2447
+ },
2126
2448
  password: {
2127
2449
  changeTitle: "パスワードを変更",
2128
2450
  setTitle: "ローカルパスワードを設定",
@@ -2154,7 +2476,6 @@ const ja = {
2154
2476
  label: "ワークスペース",
2155
2477
  default: "マイワークスペース",
2156
2478
  switch: "ワークスペースを切り替え",
2157
- create: "ワークスペースを作成",
2158
2479
  createTitle: "ワークスペースの作成",
2159
2480
  createDescription: "ワークスペースはチームで協力するための共有スペースです。",
2160
2481
  createButton: "ワークスペースを作成",
@@ -2179,7 +2500,6 @@ const ja = {
2179
2500
  packageManagement: "パッケージ管理",
2180
2501
  searchNavigation: "ナビゲーションを検索…",
2181
2502
  settings: "設定",
2182
- help: "ヘルプ",
2183
2503
  helpTooltip: "ヘルプとドキュメント",
2184
2504
  activityFeed: "アクティビティフィード",
2185
2505
  notifications: "通知",
@@ -2239,6 +2559,8 @@ const ja = {
2239
2559
  },
2240
2560
  pendingDrafts: {
2241
2561
  message: "未公開の変更が {{count}} 件あります — 公開すると反映されます。",
2562
+ message_one: "未公開の変更が {{count}} 件あります — 公開すると反映されます。",
2563
+ message_other: "未公開の変更が {{count}} 件あります — 公開すると反映されます。",
2242
2564
  cta: "公開",
2243
2565
  publishing: "公開しています…",
2244
2566
  published: "公開しました。変更が反映されています。",
@@ -2253,7 +2575,6 @@ const ja = {
2253
2575
  capabilityWarn: "作成時チェック:{{count}} 件のケイパビリティ参照が解決できません。",
2254
2576
  },
2255
2577
  title: "ホーム",
2256
- subtitle: "ワークスペースのダッシュボード",
2257
2578
  nav: "ホーム",
2258
2579
  allApps: "すべてのアプリケーション",
2259
2580
  yourApps: "あなたのアプリ",
@@ -2265,8 +2586,6 @@ const ja = {
2265
2586
  empty: "すべて対応済みです",
2266
2587
  },
2267
2588
  loading: "ワークスペースを読み込み中…",
2268
- recent: "最近",
2269
- starred: "スター付き",
2270
2589
  welcome: "ObjectUI へようこそ",
2271
2590
  welcomeDescription: "最初のアプリケーションを作成するか、システム設定を行ってください。",
2272
2591
  createFirstApp: "最初のアプリを作成",
@@ -2274,8 +2593,6 @@ const ja = {
2274
2593
  browseMarketplace: "アプリマーケットプレイスを参照",
2275
2594
  quickActions: {
2276
2595
  title: "クイックアクション",
2277
- createApp: "アプリを作成",
2278
- createAppDesc: "新しいアプリケーションを開始",
2279
2596
  manageObjects: "オブジェクトを管理",
2280
2597
  manageObjectsDesc: "データモデルを設定",
2281
2598
  systemSettings: "システム設定",
@@ -2291,18 +2608,15 @@ const ja = {
2291
2608
  greetingNight: "夜遅くまで作業中",
2292
2609
  heroTagline: "前回の続きを始めるか、新しいものを探索してください。",
2293
2610
  open: "開く",
2294
- stats: {
2295
- apps: "アプリケーション",
2296
- starred: "スター付き",
2297
- recent: "最近のアイテム",
2298
- },
2299
2611
  recentApps: {
2300
2612
  title: "最近アクセスしたもの",
2301
2613
  itemType: {
2302
2614
  object: "オブジェクト",
2303
2615
  dashboard: "ダッシュボード",
2304
2616
  page: "ページ",
2617
+ report: "レポート",
2305
2618
  record: "レコード",
2619
+ metadata: "メタデータ",
2306
2620
  },
2307
2621
  },
2308
2622
  starredApps: {
@@ -2324,7 +2638,6 @@ const ja = {
2324
2638
  organizations: "組織",
2325
2639
  roles: "ロール",
2326
2640
  configuration: "構成",
2327
- createApp: "アプリを作成",
2328
2641
  administration: "管理",
2329
2642
  datasources: "データソース",
2330
2643
  documentation: "ドキュメント",
@@ -2349,6 +2662,7 @@ const ja = {
2349
2662
  typeUpdate: "更新",
2350
2663
  typeDelete: "削除",
2351
2664
  typeComment: "コメント",
2665
+ typeSystem: "システム",
2352
2666
  relativeJustNow: "たった今",
2353
2667
  relativeSecondsAgo: "{{count}}秒前",
2354
2668
  relativeMinutesAgo: "{{count}}分前",
@@ -2370,8 +2684,11 @@ const ja = {
2370
2684
  placeholder: "オブジェクト、ダッシュボード、ページ、レポートを検索…",
2371
2685
  inputAriaLabel: "オブジェクト、ダッシュボード、ページ、レポートを検索",
2372
2686
  resultsCount: "\"{{query}}\" の結果 {{count}} 件",
2373
- resultsCountPlural: "\"{{query}}\" の結果 {{count}} 件",
2687
+ resultsCount_one: "\"{{query}}\" の結果 {{count}} 件",
2688
+ resultsCount_other: "\"{{query}}\" の結果 {{count}} 件",
2374
2689
  itemsAvailable: "{{count}} 件利用可能",
2690
+ itemsAvailable_one: "{{count}} 件利用可能",
2691
+ itemsAvailable_other: "{{count}} 件利用可能",
2375
2692
  noResults: "結果が見つかりません",
2376
2693
  noResultsHint: "検索語句を調整してみてください",
2377
2694
  typeObjects: "オブジェクト",
@@ -2396,7 +2713,11 @@ const ja = {
2396
2713
  noAppsConfigured: "アプリが設定されていません",
2397
2714
  noAppsConfiguredDescription: "登録されているアプリケーションがありません。最初のアプリを作成するか、システム設定を参照してください。",
2398
2715
  appNotAvailable: "アプリを利用できません",
2399
- appNotAvailableDescription: "このアプリはまだ利用できません — まだ公開処理中の可能性があります。しばらくしてからもう一度お試しください。",
2716
+ appNotAvailableDescription: "このアプリは利用できません — しばらくしてからもう一度お試しください。",
2717
+ appNotFound: "このアプリを開けません",
2718
+ appNotFoundDescription: "サーバーはお使いのアカウントに対してこのアプリを返しませんでした。",
2719
+ appUnreachable: "サーバーに接続できませんでした",
2720
+ appUnreachableDescription: "このアプリを確認できませんでした。しばらくしてからもう一度お試しください。",
2400
2721
  appAccessDenied: "このアプリへのアクセス権限がありません",
2401
2722
  appAccessDeniedDescription: "このアプリは存在しますが、お使いのアカウントには開く権限がありません。管理者にアクセス権の付与を依頼してください。",
2402
2723
  appAccessDeniedHome: "ホームに戻る",
@@ -2411,11 +2732,11 @@ const ja = {
2411
2732
  description: "続行するために必要な情報を入力してください。",
2412
2733
  selectPlaceholder: "{{label}} を選択",
2413
2734
  requiredError: "{{label}} は必須です",
2735
+ unresolvedParam: 'このパラメーターは表示できません。参照元のフィールドがオブジェクトのメタデータに存在しないため、必要なコントロールを生成できません。管理者にアクション定義の修正を依頼してください。',
2736
+ carryOverHint: 'そのまま引き継ぎ(読み取り専用)',
2414
2737
  cancel: "キャンセル",
2415
2738
  confirm: "確認",
2416
2739
  uploading: "アップロード中…",
2417
- defaultActionTitle: "アクション",
2418
- ok: "OK",
2419
2740
  lookupPlaceholder: "{{label}} のレコードID",
2420
2741
  lookupHelpText: "このパラメータには参照オブジェクトが設定されていないため、レコードピッカーを利用できません。レコードIDを直接入力するか、管理者にアクションパラメータの修正を依頼してください。",
2421
2742
  },
@@ -2424,11 +2745,6 @@ const ja = {
2424
2745
  confirm: "続行",
2425
2746
  cancel: "キャンセル",
2426
2747
  },
2427
- rowAction: {
2428
- openMenu: "メニューを開く",
2429
- edit: "編集",
2430
- delete: "削除",
2431
- },
2432
2748
  navigationSync: {
2433
2749
  addedPage: "ナビゲーション更新:ページ「{{name}}」を追加しました",
2434
2750
  addedDashboard: "ナビゲーション更新:ダッシュボード「{{name}}」を追加しました",
@@ -2449,6 +2765,8 @@ const ja = {
2449
2765
  noRecordId: "レコードIDが指定されていません",
2450
2766
  deleteConfirm: "このレコードを削除してもよろしいですか?",
2451
2767
  bulkDeleteSuccess: "{{count}} 件の {{label}} レコードを削除しました",
2768
+ bulkDeleteSuccess_one: "{{count}} 件の {{label}} レコードを削除しました",
2769
+ bulkDeleteSuccess_other: "{{count}} 件の {{label}} レコードを削除しました",
2452
2770
  bulkDeletePartial: "{{succeeded}} 件削除、{{failed}} 件失敗",
2453
2771
  },
2454
2772
  objectViewActions: {
@@ -2460,15 +2778,6 @@ const ja = {
2460
2778
  exportFailed: "エクスポートに失敗しました:{{message}}",
2461
2779
  forecastSoon: "予測ビューは近日公開予定",
2462
2780
  },
2463
- recordDetail: {
2464
- viewersTooltip: "このレコードを閲覧中のユーザー",
2465
- },
2466
- cellRender: {
2467
- empty: "空",
2468
- yes: "はい",
2469
- no: "いいえ",
2470
- systemFields: "システム",
2471
- },
2472
2781
  user: {
2473
2782
  profile: "プロフィール",
2474
2783
  settings: "設定",
@@ -2658,18 +2967,33 @@ const ja = {
2658
2967
  regionLabel: "通知",
2659
2968
  groupCount: "通知 {{count}} 件",
2660
2969
  groupUnread: "未読 {{count}} 件",
2970
+ groupUnread_one: "未読 {{count}} 件",
2971
+ groupUnread_other: "未読 {{count}} 件",
2661
2972
  groupMarkRead: "既読にする",
2662
2973
  groupMarkReadTitle: "この種類をすべて既読にする",
2663
2974
  empty: "通知はありません",
2664
2975
  markAllRead: "すべて既読にする",
2665
2976
  viewAll: "すべての通知を表示",
2666
2977
  approvalsPending: "{{count}} 件の承認待ち",
2978
+ approvalsPending_one: "{{count}} 件の承認待ち",
2979
+ approvalsPending_other: "{{count}} 件の承認待ち",
2667
2980
  viewApprovals: "承認を表示",
2668
2981
  noPendingApprovals: "承認待ちはありません",
2669
2982
  openApprovalsInbox: "承認ボックスを開く",
2670
2983
  badgeTotal: "合計 {{total}} 件",
2671
2984
  badgeNotifications: "通知 {{unread}} 件",
2672
2985
  badgeApprovals: "承認待ち {{approvals}} 件",
2986
+ arrivalMany: "新着メッセージ {{count}} 件",
2987
+ arrivalMany_one: "新着メッセージ {{count}} 件",
2988
+ arrivalMany_other: "新着メッセージ {{count}} 件",
2989
+ arrivalRepeats: "このトピックの新着メッセージ {{count}} 件",
2990
+ arrivalRepeats_one: "このトピックの新着メッセージ {{count}} 件",
2991
+ arrivalRepeats_other: "このトピックの新着メッセージ {{count}} 件",
2992
+ arrivalOpen: "表示",
2993
+ toastEnabled: "アプリ内通知",
2994
+ desktopEnabled: "デスクトップ通知",
2995
+ desktopBlocked: "ブロックされています。ブラウザーの設定でこのサイトの通知を許可してください。",
2996
+ desktopUnsupported: "このブラウザーはデスクトップ通知に対応していません。",
2673
2997
  emptyUnread: "既読にしました",
2674
2998
  filterUnread: "未読",
2675
2999
  filterAll: "すべて",
@@ -2683,12 +3007,14 @@ const ja = {
2683
3007
  thankYouTitle: "ありがとうございます!",
2684
3008
  thankYouMessage: "送信が正常に受信されました。",
2685
3009
  redirecting: "{{seconds}} 秒後にリダイレクトします…",
3010
+ redirectPending: "リダイレクトしています…",
2686
3011
  unavailableTitle: "フォームが利用できません",
2687
3012
  unavailableDescription: "このURLで利用できる公開フォームはありません。基になるビューが匿名共有を有効にし、このスラグに一致することを確認してください。",
2688
3013
  tryDemo: "デモを試す",
2689
3014
  retry: "再試行",
2690
3015
  loading: "フォームを読み込み中…",
2691
3016
  requiredHint: "* 必須項目",
3017
+ requiredFields: "必須項目: {{fields}}",
2692
3018
  consentLabelDefault: "プライバシーポリシーに同意し、このリクエストのためにデータを処理することに同意します。",
2693
3019
  consentLink: "プライバシーポリシー",
2694
3020
  consentRequired: "続行するにはプライバシーポリシーに同意してください。",
@@ -2739,6 +3065,8 @@ const ja = {
2739
3065
  noImportableFields: "そのオブジェクトにはインポート可能なフィールドがありません。",
2740
3066
  schemaReadFailed: "オブジェクトのスキーマを読み取れませんでした。",
2741
3067
  imported: "{{count}} 行を {{object}} にインポートしました。",
3068
+ imported_one: "{{count}} 行を {{object}} にインポートしました。",
3069
+ imported_other: "{{count}} 行を {{object}} にインポートしました。",
2742
3070
  importFrom: "実データのインポート元",
2743
3071
  into: "→",
2744
3072
  opening: "開いています…",
@@ -2752,6 +3080,76 @@ const ja = {
2752
3080
  openProduction: "本番環境を開く",
2753
3081
  manageEnvironments: "環境を管理",
2754
3082
  },
3083
+ cloudPlanStatus: {
3084
+ current: "現在のプラン",
3085
+ },
3086
+ ai: {
3087
+ nlQuery: {
3088
+ placeholder: "データについて質問してください…",
3089
+ ask: "質問",
3090
+ results: "結果",
3091
+ match: "一致度 {{percent}}",
3092
+ simulatedSummary: "検索結果: {{query}}",
3093
+ noResults: "一致するレコードが見つかりません",
3094
+ recentQueries: "最近のクエリ",
3095
+ },
3096
+ formAssist: {
3097
+ title: "AI の提案",
3098
+ suggestionCount: "{{count}} 件の提案",
3099
+ suggestionCount_one: "{{count}} 件の提案",
3100
+ suggestionCount_other: "{{count}} 件の提案",
3101
+ applyAll: "すべて適用",
3102
+ confidence: "信頼度 {{percent}}",
3103
+ appliedCount: "{{count}} 件の提案を適用しました",
3104
+ appliedCount_one: "{{count}} 件の提案を適用しました",
3105
+ appliedCount_other: "{{count}} 件の提案を適用しました",
3106
+ },
3107
+ recommendations: {
3108
+ title: "おすすめ",
3109
+ generating: "おすすめを生成しています…",
3110
+ empty: "おすすめはありません",
3111
+ },
3112
+ },
3113
+ aiApprovals: {
3114
+ title: "AI 承認",
3115
+ description: "AI エージェントが提案した操作です。実行前に人による確認が必要です。",
3116
+ tabPending: "承認待ち",
3117
+ tabDecided: "処理済み",
3118
+ tabAll: "すべて",
3119
+ statusPending: "承認待ち",
3120
+ statusApproved: "承認済み",
3121
+ statusExecuted: "実行済み",
3122
+ statusFailed: "失敗",
3123
+ statusRejected: "却下",
3124
+ colTool: "ツール",
3125
+ colAction: "アクション",
3126
+ colObject: "オブジェクト",
3127
+ colStatus: "ステータス",
3128
+ colProposed: "提案日時",
3129
+ colDecision: "判断",
3130
+ emptyTitle: "待機中の操作はありません",
3131
+ emptyDescription: "AI が重要な操作を提案すると、確認のためここに表示されます。",
3132
+ view: "表示",
3133
+ approve: "承認",
3134
+ reject: "却下",
3135
+ working: "処理中…",
3136
+ approveAndExecute: "承認して実行",
3137
+ outcomeApprove: "{{id}} の承認: {{message}}",
3138
+ outcomeReject: "{{id}} の却下: {{message}}",
3139
+ outcomeExecuteFailed: "実行中に操作が失敗しました",
3140
+ drawerFallbackTitle: "保留中の操作",
3141
+ drawerSubtitle: "{{object}} に対するツール {{tool}}",
3142
+ fieldProposedBy: "提案者",
3143
+ fieldDecidedBy: "判断者",
3144
+ fieldConversation: "会話",
3145
+ fieldToolInput: "ツール入力",
3146
+ fieldResult: "結果",
3147
+ fieldError: "エラー",
3148
+ fieldRejectionReason: "却下理由",
3149
+ rejectTitle: "この操作を却下しますか?",
3150
+ rejectBody: "理由は AI に返され、次の応答の調整に使われます。",
3151
+ rejectPlaceholder: "理由(任意。例:「レコード ID が誤っています — 先にユーザーに確認してください。」)",
3152
+ },
2755
3153
  aiModelStatus: {
2756
3154
  summary: "ビルド / 質問は {{conversational}}({{conversationalSource}})、構造化出力は {{structured}}({{structuredSource}})を使用します。",
2757
3155
  summaryRouting: "ルーティングポリシー: 無料プラン → {{free}}、有料プラン → {{paid}}。",
@@ -2769,6 +3167,111 @@ const ja = {
2769
3167
  sourceInherits: "build/ask と同じ",
2770
3168
  sourcePinned: "{{source}} で固定",
2771
3169
  },
3170
+ // objectui#7254 — the AI copilot's tool cards. Three families, all of them
3171
+ // English-only until this landed while every other string on the same screen
3172
+ // was translated:
3173
+ //
3174
+ // `tool.*` — one entry per PLATFORM-PROVIDED tool name
3175
+ // (@objectstack/spec `PLATFORM_TOOLS_BY_PACKAGE`, the
3176
+ // closed registry those runtimes are conformance-tested
3177
+ // against). `humanizeToolName` looks each up as
3178
+ // `chatbot.tool.<tool_name>` and falls back to its English
3179
+ // title-caser for a custom / third-party tool, so a name
3180
+ // missing here is degraded, never broken. The `en` values
3181
+ // are deliberately EQUAL to what that title-caser produces:
3182
+ // adding the key must not silently reword the English UI.
3183
+ // `toolState.*` — the card-header badge + activity-chip vocabulary. ONE
3184
+ // set for both surfaces (they used to carry separate
3185
+ // tables and disagreed on casing).
3186
+ // `plan.*` — the "N objects · N views · N dashboards" strip. Plural
3187
+ // FAMILIES: one slot per CLDR category the pack's language
3188
+ // selects (objectui#11432), plus the base key for a call
3189
+ // made without a count. `all-locales-key-parity.test.ts`
3190
+ // derives the required slots from `Intl.PluralRules`.
3191
+ //
3192
+ // objectui#7481 — five `tool.*` entries are NEWER than the registry above:
3193
+ // `get_authoring_rules` (cloud#1837), `load_tools`, `open_record`, `test_flow`
3194
+ // and `toggle_flow` are registered by cloud `service-ai-studio` but the pinned
3195
+ // `@objectstack/spec` snapshot does not list them yet. They are kept here on
3196
+ // purpose: a step label the user reads must not wait on a pin bump. When the
3197
+ // pin advances, `chatbotToolLabels-locale-parity-7481` starts checking them
3198
+ // against the registry instead of against its own hand-held list.
3199
+ chatbot: {
3200
+ tool: {
3201
+ aggregate_data: "データを集計",
3202
+ get_record: "レコードを取得",
3203
+ query_data: "データを照会",
3204
+ query_records: "レコードを照会",
3205
+ search_knowledge: "ナレッジを検索",
3206
+ visualize_data: "グラフを作成",
3207
+ add_field: "項目を追加",
3208
+ apply_blueprint: "アプリを構築",
3209
+ apply_edit: "変更を適用",
3210
+ create_metadata: "メタデータを作成",
3211
+ create_object: "オブジェクトを作成",
3212
+ create_package: "パッケージを作成",
3213
+ create_seed: "サンプルデータを生成",
3214
+ delete_field: "項目を削除",
3215
+ describe_metadata: "メタデータを確認",
3216
+ describe_object: "オブジェクト構造を確認",
3217
+ get_active_package: "現在のパッケージを取得",
3218
+ get_authoring_rules: "作成ルールを取得",
3219
+ get_metadata_schema: "メタデータ構造を取得",
3220
+ get_package: "パッケージを取得",
3221
+ list_metadata: "メタデータ一覧",
3222
+ list_objects: "オブジェクト一覧",
3223
+ list_packages: "パッケージ一覧",
3224
+ load_tools: "ツールを読み込む",
3225
+ modify_field: "項目を変更",
3226
+ open_record: "レコードを開く",
3227
+ propose_blueprint: "アプリ設計案を作成",
3228
+ set_active_package: "現在のパッケージを切替",
3229
+ suggest_builder: "構築方法を提案",
3230
+ test_flow: "フローをテスト",
3231
+ todo_write: "タスクを記録",
3232
+ toggle_flow: "フローの有効・無効を切り替え",
3233
+ update_metadata: "メタデータを更新",
3234
+ validate_expression: "式を検証",
3235
+ verify_build: "構築結果を検証",
3236
+ },
3237
+ toolState: {
3238
+ agentActivity: "エージェントの動作",
3239
+ pending: "待機中",
3240
+ running: "実行中",
3241
+ awaitingApproval: "承認待ち",
3242
+ responded: "応答済み",
3243
+ completed: "完了",
3244
+ error: "エラー",
3245
+ denied: "拒否",
3246
+ failed: "失敗",
3247
+ },
3248
+ plan: {
3249
+ countObjects: "{{count}} 件のオブジェクト",
3250
+ countObjects_one: "{{count}} 件のオブジェクト",
3251
+ countObjects_other: "{{count}} 件のオブジェクト",
3252
+ countViews: "{{count}} 件のビュー",
3253
+ countViews_one: "{{count}} 件のビュー",
3254
+ countViews_other: "{{count}} 件のビュー",
3255
+ countDashboards: "{{count}} 件のダッシュボード",
3256
+ countDashboards_one: "{{count}} 件のダッシュボード",
3257
+ countDashboards_other: "{{count}} 件のダッシュボード",
3258
+ countSeedData: "サンプルデータ",
3259
+ },
3260
+ build: {
3261
+ building: "{{app}}を構築しています…",
3262
+ built: "{{app}}を構築しました",
3263
+ appFallback: "アプリ",
3264
+ addingSampleData: "サンプルデータを追加中",
3265
+ group: {
3266
+ object: "オブジェクト",
3267
+ view: "ビュー",
3268
+ dashboard: "ダッシュボード",
3269
+ app: "アプリ",
3270
+ seed: "サンプルデータ",
3271
+ },
3272
+ moreArtifacts: "他 {{n}} 件",
3273
+ },
3274
+ },
2772
3275
  chatbotError: {
2773
3276
  title: "応答に失敗しました",
2774
3277
  fallbackDetail: "問題が発生しました。もう一度お試しください。",
@@ -2849,7 +3352,7 @@ const ja = {
2849
3352
  },
2850
3353
  title: "アプリマーケットプレイス",
2851
3354
  subtitle: "ObjectStackカタログに公開された承認済みアプリを参照します。アプリをクリックして詳細を表示し、環境にインストールしてください。",
2852
- searchPlaceholder: "名前またはマニフェストIDでアプリを検索…",
3355
+ searchPlaceholder: '名前またはアプリIDでアプリを検索…',
2853
3356
  searchAria: "マーケットプレイスアプリを検索",
2854
3357
  installed: "インストール済み",
2855
3358
  installedCount: "インストール済み({{count}})",
@@ -2897,10 +3400,15 @@ const ja = {
2897
3400
  purgeSampleData: 'サンプルデータを削除',
2898
3401
  purgeConfirm: 'このパッケージが投入したサンプルレコードをすべて削除しますか?ユーザーが追加したレコードは削除されません。',
2899
3402
  purgeSuccess: '{{count}} 件のサンプルレコードを削除しました。',
3403
+ purgeSuccess_one: '{{count}} 件のサンプルレコードを削除しました。',
3404
+ purgeSuccess_other: '{{count}} 件のサンプルレコードを削除しました。',
2900
3405
  purgeNoData: '削除するサンプルレコードがありません。',
2901
3406
  reseedQueued: 'サンプルデータは次回の環境アクセス時に再投入されます。',
2902
3407
  reseedLocalSuccess: 'サンプルデータを再投入しました:{{inserted}} 件追加、{{updated}} 件更新。',
2903
3408
  reseedPartialErrors: '({{count}} 件のレコードの書き込みに失敗しました)',
3409
+ reseedPartialErrors_one: '({{count}} 件のレコードの書き込みに失敗しました)',
3410
+ reseedPartialErrors_other: '({{count}} 件のレコードの書き込みに失敗しました)',
3411
+ sampleDataKernelUnavailable: 'このコントロールプレーンには環境カーネルがないため、ここではサンプルデータを再投入・削除できません。環境自身のランタイムから実行してください。',
2904
3412
  updateAvailable: 'アップデートあり',
2905
3413
  },
2906
3414
  action: {
@@ -2953,7 +3461,8 @@ const ja = {
2953
3461
  reviewed: "審査・承認済み",
2954
3462
  unreviewed: "未審査",
2955
3463
  signed: "署名済み",
2956
- grantsIntro: "インストール時に、このパッケージには次の権限が付与されます:",
3464
+ grantsIntro: "このパッケージは次の権限を要求します:",
3465
+ notEnforced: "この一覧はインストール時に記録され、新しいバージョンがより多くを要求した場合は再確認されます。ただしランタイムはまだ、このパッケージをこの一覧に制限しません。",
2957
3466
  services: "プラットフォームサービス",
2958
3467
  hooks: "ライフサイクルフック",
2959
3468
  network: "ネットワークアクセス",
@@ -2992,30 +3501,19 @@ const ja = {
2992
3501
  storage: "ストレージ",
2993
3502
  other: "その他",
2994
3503
  },
2995
- pricing: {
2996
- free: "無料",
2997
- freemium: "フリーミアム",
2998
- paid: "有料",
2999
- subscription: "サブスクリプション",
3000
- "usage-based": "使用量ベース",
3001
- "contact-sales": "営業に問い合わせ",
3002
- },
3003
3504
  relativeTime: {
3004
3505
  today: "今日",
3005
3506
  daysAgo: "{{count}}日前",
3006
3507
  monthsAgo: "{{count}}ヶ月前",
3508
+ monthsAgo_one: "{{count}}ヶ月前",
3509
+ monthsAgo_other: "{{count}}ヶ月前",
3007
3510
  yearsAgo: "{{count}}年前",
3511
+ yearsAgo_one: "{{count}}年前",
3512
+ yearsAgo_other: "{{count}}年前",
3008
3513
  },
3009
3514
  },
3010
- approvals: {
3011
- approve: '承認',
3012
- reject: '却下',
3013
- comment: 'コメント(任意)',
3014
- approveSuccess: '承認しました',
3015
- rejectSuccess: '却下しました',
3016
- rejectConfirm: 'この承認リクエストを却下しますか?',
3017
- },
3018
3515
  approvalsInbox: {
3516
+ recordUnresolvable: 'このレコードは開けません',
3019
3517
  loadMore: 'さらに読み込む',
3020
3518
  loadingMore: '読み込み中…',
3021
3519
  loadedOf: '{{total}} 件中 {{loaded}} 件を表示',
@@ -3034,6 +3532,8 @@ const ja = {
3034
3532
  requestInfoSent: '追加情報を求めて差し戻しました',
3035
3533
  remindBtn: 'リマインド',
3036
3534
  remindSuccess: '{{count}} 名の承認者に通知しました',
3535
+ remindSuccess_one: '{{count}} 名の承認者に通知しました',
3536
+ remindSuccess_other: '{{count}} 名の承認者に通知しました',
3037
3537
  remindThrottled: 'リマインドは送信済みです。しばらくしてからお試しください。',
3038
3538
  replyPlaceholder: 'このリクエストに返信…',
3039
3539
  slaRemaining: 'SLA 残り {{dur}}',
@@ -3050,6 +3550,8 @@ const ja = {
3050
3550
  progressApprovals: '承認 — {{got}} / {{need}}',
3051
3551
  progressGroups: 'グループ承認 — {{got}} / {{need}} グループ',
3052
3552
  progressEligible: '承認可能者 {{count}} 名',
3553
+ progressEligible_one: '承認可能者 {{count}} 名',
3554
+ progressEligible_other: '承認可能者 {{count}} 名',
3053
3555
  progressBar: '承認の進捗',
3054
3556
  declaredActions: 'アクション',
3055
3557
  attachmentChip: '添付ファイル',
@@ -3081,6 +3583,8 @@ const ja = {
3081
3583
  filterCount: '{{shown}} / {{total}} 件',
3082
3584
  selected: '選択中',
3083
3585
  actionableCount: '({{count}} 件操作可能)',
3586
+ actionableCount_one: '({{count}} 件操作可能)',
3587
+ actionableCount_other: '({{count}} 件操作可能)',
3084
3588
  selectAll: 'すべて選択',
3085
3589
  selectRow: 'このリクエストを選択',
3086
3590
  colRequest: '承認事項',
@@ -3154,11 +3658,19 @@ const ja = {
3154
3658
  approveN: '{{count}} 件を承認',
3155
3659
  rejectN: '{{count}} 件を却下',
3156
3660
  bulkApproveTitle: 'この {{count}} 件を承認しますか?',
3661
+ bulkApproveTitle_one: 'この {{count}} 件を承認しますか?',
3662
+ bulkApproveTitle_other: 'この {{count}} 件を承認しますか?',
3157
3663
  bulkApproveBody: '各リクエストはあなたのIDで承認され、フローは承認ブランチに進みます。',
3158
3664
  bulkRejectTitle: 'この {{count}} 件を却下しますか?',
3665
+ bulkRejectTitle_one: 'この {{count}} 件を却下しますか?',
3666
+ bulkRejectTitle_other: 'この {{count}} 件を却下しますか?',
3159
3667
  bulkRejectBody: '選択したリクエストを却下し、各申請者に通知します。',
3160
3668
  bulkApproved: '{{count}} 件を承認しました',
3669
+ bulkApproved_one: '{{count}} 件を承認しました',
3670
+ bulkApproved_other: '{{count}} 件を承認しました',
3161
3671
  bulkRejected: '{{count}} 件を却下しました',
3672
+ bulkRejected_one: '{{count}} 件を却下しました',
3673
+ bulkRejected_other: '{{count}} 件を却下しました',
3162
3674
  bulkPartial: '{{ok}} 件成功、{{fail}} 件失敗:{{which}}',
3163
3675
  rejectOneTitle: '「{{title}}」を却下しますか?',
3164
3676
  rejectOneBody: 'リクエストを却下し、申請者に通知します。',
@@ -3183,8 +3695,14 @@ const ja = {
3183
3695
  alreadyDecided: 'このリクエストは処理済みです。一覧を更新してください。',
3184
3696
  justNow: 'たった今',
3185
3697
  minutesAgo: '{{count}} 分前',
3698
+ minutesAgo_one: '{{count}} 分前',
3699
+ minutesAgo_other: '{{count}} 分前',
3186
3700
  hoursAgo: '{{count}} 時間前',
3701
+ hoursAgo_one: '{{count}} 時間前',
3702
+ hoursAgo_other: '{{count}} 時間前',
3187
3703
  daysAgo: '{{count}} 日前',
3704
+ daysAgo_one: '{{count}} 日前',
3705
+ daysAgo_other: '{{count}} 日前',
3188
3706
  },
3189
3707
  preview: {
3190
3708
  empty: {
@@ -3219,11 +3737,15 @@ const ja = {
3219
3737
  detailNone: '差分は検出されませんでした — ドラフトは公開版と一致しています。',
3220
3738
  detailChangedKeys: 'その他の変更:',
3221
3739
  confirmNote: '公開すると、このパッケージの保留中ドラフト {{count}} 件がまとめて(アトミックに)公開されます。',
3740
+ confirmNote_one: '公開すると、このパッケージの保留中ドラフト {{count}} 件がまとめて(アトミックに)公開されます。',
3741
+ confirmNote_other: '公開すると、このパッケージの保留中ドラフト {{count}} 件がまとめて(アトミックに)公開されます。',
3222
3742
  publishConfirm: 'すべて公開',
3223
- // [objectui#5418] Pre-publish security-posture findings, shown next to
3743
+ // [`7a90afdf9`] Pre-publish security-posture findings, shown next to
3224
3744
  // the confirm button so a refusal the door would issue is read BEFORE
3225
3745
  // the click rather than as a toast after the batch rolled back.
3226
3746
  securityBlockTitle: '公開は拒否されます — {{count}} 件の項目に先に決定が必要です',
3747
+ securityBlockTitle_one: '公開は拒否されます — {{count}} 件の項目に先に決定が必要です',
3748
+ securityBlockTitle_other: '公開は拒否されます — {{count}} 件の項目に先に決定が必要です',
3227
3749
  securityBlockWhere: 'オブジェクトの「設定 → レコード共有」で修正してから、もう一度公開してください。',
3228
3750
  },
3229
3751
  // ADR-0045 — the materialized-but-unlisted app banner
@@ -3248,7 +3770,7 @@ const ja = {
3248
3770
  revertLabel: '変更を取り消しました',
3249
3771
  applyLabel: 'ビルドによる変更',
3250
3772
  revert: '取り消し',
3251
- items: '件',
3773
+ items: '{{count}} 件',
3252
3774
  revertAction: '取り消す',
3253
3775
  reverted: '取り消しました — 変更を元に戻しました。',
3254
3776
  revertFailed: '取り消しに失敗しました',
@@ -3277,25 +3799,25 @@ const ja = {
3277
3799
  rangeEnd: "終了",
3278
3800
  operators: {
3279
3801
  equals: "等しい",
3280
- notEquals: "等しくない",
3802
+ not_equals: "等しくない",
3281
3803
  contains: "含む",
3282
- containsCaseInsensitive: "含む(大文字小文字を区別しない)",
3283
- notContains: "含まない",
3284
- isEmpty: "空である",
3285
- isNotEmpty: "空でない",
3286
- greaterThan: "より大きい",
3287
- lessThan: "より小さい",
3288
- greaterOrEqual: "以上",
3289
- lessOrEqual: "以下",
3804
+ icontains: "含む(大文字小文字を区別しない)",
3805
+ not_contains: "含まない",
3806
+ is_empty: "空である",
3807
+ is_not_empty: "空でない",
3808
+ greater_than: "より大きい",
3809
+ less_than: "より小さい",
3810
+ greater_than_or_equal: "以上",
3811
+ less_than_or_equal: "以下",
3290
3812
  before: "より前",
3291
3813
  after: "より後",
3292
3814
  between: "範囲内",
3293
3815
  in: "いずれか",
3294
- notIn: "いずれでもない",
3295
- startsWith: "前方一致",
3296
- endsWith: "後方一致",
3297
- isNull: "null である",
3298
- isNotNull: "null でない",
3816
+ not_in: "いずれでもない",
3817
+ starts_with: "前方一致",
3818
+ ends_with: "後方一致",
3819
+ is_null: "null である",
3820
+ is_not_null: "null でない",
3299
3821
  exists: "設定済み",
3300
3822
  notExists: "未設定",
3301
3823
  },
@@ -3311,7 +3833,8 @@ const ja = {
3311
3833
  },
3312
3834
  collaboration: {
3313
3835
  commentCount: "コメント {{count}} 件",
3314
- commentCountOne: "コメント {{count}} 件",
3836
+ commentCount_one: "コメント {{count}} 件",
3837
+ commentCount_other: "コメント {{count}} 件",
3315
3838
  resolvedSuffix: " · 解決済み",
3316
3839
  sortComments: "コメントの並べ替え",
3317
3840
  sortOldest: "古い順",
@@ -3320,11 +3843,18 @@ const ja = {
3320
3843
  reopen: "再オープン",
3321
3844
  justNow: "たった今",
3322
3845
  minutesAgo: "{{count}} 分前",
3846
+ minutesAgo_one: "{{count}} 分前",
3847
+ minutesAgo_other: "{{count}} 分前",
3323
3848
  hoursAgo: "{{count}} 時間前",
3849
+ hoursAgo_one: "{{count}} 時間前",
3850
+ hoursAgo_other: "{{count}} 時間前",
3324
3851
  daysAgo: "{{count}} 日前",
3852
+ daysAgo_one: "{{count}} 日前",
3853
+ daysAgo_other: "{{count}} 日前",
3325
3854
  edited: "(編集済み)",
3326
3855
  reactionCount: "リアクション {{count}} 件",
3327
- reactionCountOne: "リアクション {{count}} 件",
3856
+ reactionCount_one: "リアクション {{count}} 件",
3857
+ reactionCount_other: "リアクション {{count}} 件",
3328
3858
  addThumbsUp: "いいねを追加",
3329
3859
  reply: "返信",
3330
3860
  reactThumbsUp: "いいねでリアクション",
@@ -3335,9 +3865,11 @@ const ja = {
3335
3865
  commentPlaceholder: "コメントを追加…(@ でメンション)",
3336
3866
  send: "送信",
3337
3867
  presentUserCount: "オンライン {{count}} 人",
3338
- presentUserCountOne: "オンライン {{count}} 人",
3868
+ presentUserCount_one: "オンライン {{count}} 人",
3869
+ presentUserCount_other: "オンライン {{count}} 人",
3339
3870
  moreUserCount: "他 {{count}} 人",
3340
- moreUserCountOne: "他 {{count}} 人",
3871
+ moreUserCount_one: "他 {{count}} 人",
3872
+ moreUserCount_other: "他 {{count}} 人",
3341
3873
  userStatusTitle: "{{name}}({{status}})",
3342
3874
  statusActive: "アクティブ",
3343
3875
  statusIdle: "アイドル",
@@ -3345,6 +3877,11 @@ const ja = {
3345
3877
  },
3346
3878
  wizard: {
3347
3879
  missingRequired: "必須項目を入力してください: {{fields}}",
3880
+ back: "戻る",
3881
+ submitting: "送信中…",
3882
+ stepFallback: "ステップ {{n}}",
3883
+ progressLabel: "進捗",
3884
+ emptyStep: "このステップにはフィールドが設定されていません",
3348
3885
  },
3349
3886
  flowRunner: {
3350
3887
  title: '入力',
@@ -3402,5 +3939,48 @@ const ja = {
3402
3939
  bulkOperationFailed: "一括操作に失敗しました:{{reason}}",
3403
3940
  },
3404
3941
  },
3942
+ // objectui#6301 — 設定 › パッケージ自動化 (ADR-0126 §7.4)。用語は既存訳に
3943
+ // 合わせています: `common.package` = パッケージ、`flowRunner.completed` =
3944
+ // フロー、引用符は「」。⛔ 系譜・ドリフトを示す語はこのグループに置きません (§9)。
3945
+ packagedAutomation: {
3946
+ title: "パッケージ自動化",
3947
+ subtitle: "インストール済みパッケージが提供するフローとアクションです。このデプロイでオフにできます。フローは新しい名前でクローンしてカスタマイズすることもできます。編集は Studio で行います。",
3948
+ refresh: "更新",
3949
+ flowsHeading: "パッケージフロー",
3950
+ actionsHeading: "パッケージアクション",
3951
+ colFlow: "フロー",
3952
+ colActivation: "有効状態",
3953
+ colActions: "操作",
3954
+ toggleLabel: "{{label}} の有効状態",
3955
+ on: "オン",
3956
+ off: "オフ",
3957
+ clone: "クローン",
3958
+ cloneTitle: "パッケージフローをクローン",
3959
+ cloneBody: "コピーは定義全体を引き継ぎ、新しいマシン名とラベルが必要です。コピーの編集は Studio で行ってください。",
3960
+ cloneName: "新しいマシン名",
3961
+ cloneLabel: "新しいラベル",
3962
+ cancel: "キャンセル",
3963
+ cloneConfirm: "クローンを作成",
3964
+ cloneCreated: "フロー「{{name}}」を作成しました。",
3965
+ emptyTitle: "パッケージフローはありません",
3966
+ emptyBody: "このデプロイには、自動化フローを提供するインストール済みパッケージがありません。自分で作成したフローは Studio にあります。",
3967
+ loadFailed: "パッケージ自動化を読み込めませんでした。",
3968
+ toggleFailedHttp: "有効状態を変更できませんでした (HTTP {{status}})。",
3969
+ toggleFailed: "有効状態を変更できませんでした。",
3970
+ cloneFailedHttp: "このフローをクローンできませんでした (HTTP {{status}})。",
3971
+ cloneFailed: "このフローをクローンできませんでした。",
3972
+ actionsSubtitle: "インストール済みパッケージが提供するアクションです。このデプロイでオフにすると、提供されているすべての場所で実行されなくなります。自分のアクションを別途 Studio で作成することは引き続き可能です。",
3973
+ colAction: "アクション",
3974
+ colObject: "オブジェクト",
3975
+ actionToggleLabel: "{{object}} の {{label}} の有効状態",
3976
+ actionsEmptyTitle: "パッケージアクションはありません",
3977
+ actionsEmptyBody: "このデプロイには、アクションを宣言するインストール済みパッケージがありません。自分で作成したアクションは Studio にあります。",
3978
+ actionsLoadFailed: "パッケージアクションを読み込めませんでした。",
3979
+ },
3980
+ element: {
3981
+ number: {
3982
+ noObject: "オブジェクトが指定されていません。object または dataSource.object を設定してください。",
3983
+ },
3984
+ },
3405
3985
  };
3406
3986
  export default ja;