@aiquants/auth-react-router 0.13.1 → 0.14.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.
@@ -45,6 +45,32 @@ export type UserAdminLabels = {
45
45
  }
46
46
  /** アクションが拒否・失敗したときの文言。 */
47
47
  errors: {
48
+ /** 一覧に無い上流キーを指定した。`{key}` に受け取った値。 */
49
+ unknownUpstream: string
50
+ /** その上流グループは既に別のローカルグループへ連携している。`{key}` / `{group}`。 */
51
+ alreadyLinked: string
52
+ /** ディレクトリ未設定の配備で連携を求められたときの説明。 */
53
+ directoryDisabled: string
54
+ /** 必須欄が欠けている、または読めない値だったことの説明。 */
55
+ invalidField: string
56
+ /**
57
+ * Shown for an intent this screen does not perform. この画面が行わない intent への文言。
58
+ *
59
+ * ⚠️ 受け取った値を含めない。認可より手前で返るため、認証を通っていない相手にも届く。
60
+ */
61
+ unknownIntent: string
62
+ /**
63
+ * Operator-facing names for the form fields. 欄の、操作者に見える名前。
64
+ *
65
+ * ⚠️ `invalidField` の `{field}` に **通信上のキー** を差し込まない。日本語の文の中に
66
+ * `membershipMode` のような識別子が現れ、画面のどの欄を指すのか操作者には判らない。
67
+ * 表に無い欄はキーのまま出す (出さないより、判りにくくても出すほうがよい)。
68
+ */
69
+ fieldNames: Record<string, string>
70
+ /** 許可リストの種別が既定の 2 値でなかったことの説明。 */
71
+ invalidAllowlistType: string
72
+ /** 想定外の失敗 (原文はサーバーのログにだけ残す)。 */
73
+ unexpected: string
48
74
  /**
49
75
  * Shown when the actor lacks permission for the attempted operation.
50
76
  * 操作の権限が無いときに出す文言。
@@ -53,6 +79,13 @@ export type UserAdminLabels = {
53
79
  * 拒否理由といった内部の語彙が、権限を持たない相手にそのまま渡る。
54
80
  */
55
81
  forbidden: string
82
+ /**
83
+ * Shown when the request body exceeds the ceiling. 本文が上限を越えたときの文言。
84
+ *
85
+ * この画面が送るのは短い文字列だけなので、越えるのは誤操作か攻撃である。どちらにも
86
+ * 同じ文言を返す (どこで弾かれたかを細かく教えない)。
87
+ */
88
+ requestTooLarge: string
56
89
  }
57
90
  /** シェル (タブ枠) の見出し。 */
58
91
  heading: string
@@ -61,6 +94,8 @@ export type UserAdminLabels = {
61
94
  label: string
62
95
  canWrite: string
63
96
  canRead: string
97
+ /** 削除だけを持つ主体の表示 (読み書きが無いことを「権限なし」と描かない)。 */
98
+ canDelete: string
64
99
  none: string
65
100
  /** 未結線・取得失敗・付与ゼロのいずれも「不明」であり、許可ではない。 */
66
101
  unknown: string
@@ -74,6 +109,8 @@ export type UserAdminLabels = {
74
109
  }
75
110
  usersView: {
76
111
  title: string
112
+ /** 並べ替えの読み上げ名。`{column}` は列名。 */
113
+ sortBy: string
77
114
  searchPlaceholder: string
78
115
  /** 検索欄の読み上げ名。プレースホルダは入力すると消えるため名前にならない。 */
79
116
  searchLabel: string
@@ -90,12 +127,65 @@ export type UserAdminLabels = {
90
127
  activateAria: string
91
128
  deactivateAria: string
92
129
  /** 無効化はサインインを止める。確認を取る。 */
130
+ /** 検索で 0 件になったときの文言 (「登録が無い」と区別する)。 */
131
+ emptyFiltered: string
132
+ /** 一覧の絞り込み結果を読み上げるための文言。 */
133
+ listSummary: string
134
+ /** 昇順で並べ替え中の列の読み上げ名。 */
135
+ sortedAscending: string
136
+ /** 降順で並べ替え中の列の読み上げ名。 */
137
+ sortedDescending: string
93
138
  confirmDeactivate: string
94
139
  empty: string
95
140
  }
96
141
  groupsView: {
97
142
  /** 検索語に一致しないときの説明。空状態と混ぜると「消えた」と誤読される。 */
98
143
  emptyFiltered: string
144
+ /** 作成方法の切替。ローカルに作るか、上流のグループから作るか。 */
145
+ /** 作成方法を選ぶ操作群の読み上げ名。 */
146
+ createModeLabel: string
147
+ createModeLocal: string
148
+ createModeUpstream: string
149
+ /** 上流グループを選ぶ欄。 */
150
+ pickUpstream: string
151
+ pickUpstreamPlaceholder: string
152
+ /** 選択肢 1 件の副題。`{count}` はメンバー数。 */
153
+ upstreamOptionMembers: string
154
+ /** すでに連携済みの選択肢に付ける表示。 */
155
+ upstreamAlreadyLinked: string
156
+ /** 候補一覧が引けなかったときの説明。`{reason}` に理由。 */
157
+ /** 候補は引けたが、この配備の連携プロバイダ名が決まっていないことの説明。 */
158
+ providerUnset: string
159
+ /** 候補を選ぶまで作成できないことの説明 (押せないボタンの理由)。 */
160
+ pickUpstreamFirst: string
161
+ /**
162
+ * Shown when every upstream group is already linked. 上流のすべてが連携済みのときの文言。
163
+ *
164
+ * ⚠️ この場面で「先に選べ」と言ってはならない。従いようのない指示になる。
165
+ */
166
+ allUpstreamLinked: string
167
+ /** 上流を読めたが 1 件も無かったことの説明。 */
168
+ catalogEmpty: string
169
+ catalogUnavailable: string
170
+ /** 上流へ届かないときの案内 (作成対話向け — この対話にアドレス欄は無い)。 */
171
+ catalogUnavailableHere: string
172
+ /** 候補一覧をいつ観測したか。 */
173
+ catalogObservedAt: string
174
+ /** 観測が配備の許す鮮度を越えている旨。 */
175
+ catalogStale: string
176
+ /** 候補一覧を引けなかった理由の文言 (上流の例外文は使わない)。 */
177
+ catalogFailures: {
178
+ denied: string
179
+ rateLimited: string
180
+ upstreamError: string
181
+ neverObserved: string
182
+ unknown: string
183
+ }
184
+ /** 上流から作る場合の説明 (何が起きるかを先に伝える)。 */
185
+ createUpstreamNotice: string
186
+ /** グループのメンバー面へ移動する操作。 */
187
+ openMembers: string
188
+ openMembersAria: string
99
189
  title: string
100
190
  searchPlaceholder: string
101
191
  searchLabel: string
@@ -107,6 +197,8 @@ export type UserAdminLabels = {
107
197
  /** 所属人数。`{count}` を人数へ置換する。 */
108
198
  memberCountTemplate: string
109
199
  confirmDelete: string
200
+ /** 連携付きで作る前の確認。`{group}` / `{upstream}`。委譲は元に戻しづらい。 */
201
+ confirmCreateLinked: string
110
202
  /** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
111
203
  editGroupAria: string
112
204
  deleteGroupAria: string
@@ -117,8 +209,25 @@ export type UserAdminLabels = {
117
209
  }
118
210
  groupMembersView: {
119
211
  title: string
212
+ /** 利用者の絞り込み。数百人の一覧を目で追わせない。 */
213
+ searchLabel: string
214
+ searchPlaceholder: string
215
+ /** 所属している人だけに絞る切替。`{count}` は該当数。 */
216
+ onlyMembers: string
217
+ /** 絞り込み結果が空のときの説明。 */
218
+ emptyFiltered: string
219
+ /** 一覧の要約。`{shown}` / `{total}` / `{members}`。 */
220
+ summary: string
120
221
  selectGroup: string
121
222
  selectPrompt: string
223
+ /** グループが 1 つも無い配備での説明 (「選べ」は従えない指示になる)。 */
224
+ noGroups: string
225
+ /** 所属だけに絞った結果 0 件になったときの説明。 */
226
+ emptyNoMembers: string
227
+ /** 利用者が 1 人も登録されていない配備での説明。 */
228
+ noUsers: string
229
+ /** 深いリンクが指すグループが見つからず、代替を出していることの説明。 */
230
+ deepLinkMissed: string
122
231
  actionAdd: string
123
232
  actionRemove: string
124
233
  /** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
@@ -166,6 +275,8 @@ export type UserAdminLabels = {
166
275
  syncEnabled: string
167
276
  syncNow: string
168
277
  syncQueued: string
278
+ /** 同じ範囲の要求が既に待っていて、積まれなかったことの説明。 */
279
+ syncAlreadyPending: string
169
280
  /** 同期が滞っていることの警告。停止はセキュリティ事象である。 */
170
281
  staleWarning: string
171
282
  disabledWarning: string
@@ -183,6 +294,8 @@ export type UserAdminLabels = {
183
294
  pendingTemplate: string
184
295
  /** 連携先が 1 つも残っていないときの説明。 */
185
296
  nothingToLink: string
297
+ /** グループが 1 つも無い配備での説明 (「全部が連携済み」と区別する)。 */
298
+ noGroupsToLink: string
186
299
  /** 未結線の配備で操作を出さない理由。 */
187
300
  notWiredNotice: string
188
301
  /** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
@@ -201,9 +314,21 @@ export type UserAdminLabels = {
201
314
  empty: string
202
315
  /** 連携するグループを選ぶ欄。 */
203
316
  selectGroup: string
317
+ /** 選択欄が自前で持つ文言。渡さないと英語のまま出る。 */
318
+ /** 選択欄の入力の手引き。 */
319
+ pickUpstreamPlaceholder: string
320
+ pickerNoOptions: string
321
+ pickerClear: string
322
+ pickerToggle: string
323
+ /** 選択中の値の読み上げ。`{value}`。 */
324
+ pickerSelected: string
325
+ /** 候補件数の読み上げ。`{count}`。 */
326
+ pickerAvailable: string
204
327
  /** 上流グループのアドレス入力。 */
205
328
  externalKeyPlaceholder: string
206
329
  /** 連携解除の確認。台帳と許可設定が消える。 */
330
+ /** 連携を作る前の確認 (元へ戻すには連携解除という別の操作が要る)。 */
331
+ confirmLink: string
207
332
  confirmUnlink: string
208
333
  /** 同期の一時停止・再開。 */
209
334
  pause: string
@@ -240,12 +365,37 @@ export const defaultUserAdminLabels: UserAdminLabels = {
240
365
  none: "-",
241
366
  },
242
367
  errors: {
243
- forbidden: "You do not have permission for this operation.",
368
+ unknownUpstream: "No group named {key} exists upstream. Check the spelling, or pick one from the list.",
369
+ directoryDisabled: "This deployment has no directory configured, so groups cannot be linked.",
370
+ invalidField: "“{field}” is missing or not a value this operation accepts.",
371
+ unknownIntent: "This screen does not perform that operation.",
372
+ fieldNames: {
373
+ groupId: "Group",
374
+ userId: "User",
375
+ entryId: "Entry",
376
+ displayName: "Display name",
377
+ email: "Email",
378
+ groupKey: "Group key",
379
+ name: "Name",
380
+ provider: "Directory provider",
381
+ externalKey: "Directory group address",
382
+ membershipMode: "Membership expansion",
383
+ isActive: "Active",
384
+ isSyncEnabled: "Synchronization",
385
+ pattern: "Pattern",
386
+ type: "Type",
387
+ },
388
+ invalidAllowlistType: "The allowlist type must be either an address or a domain.",
389
+ unexpected: "The operation failed. The reason is in the server log.",
390
+ alreadyLinked: "{key} is already linked to {group}. One upstream group can back only one local group.",
391
+ forbidden: "You do not have permission for this operation. The badge in the header shows what you currently hold; ask an administrator for the rest.",
392
+ requestTooLarge: "The request was too large to process.",
244
393
  },
245
394
  permissions: {
246
395
  label: "Your permissions:",
247
396
  canWrite: "Editable",
248
397
  canRead: "Read only",
398
+ canDelete: "Delete only",
249
399
  none: "No access",
250
400
  unknown: "Unknown",
251
401
  },
@@ -258,6 +408,7 @@ export const defaultUserAdminLabels: UserAdminLabels = {
258
408
  },
259
409
  usersView: {
260
410
  title: "Users",
411
+ sortBy: "Sort by {column}",
261
412
  searchPlaceholder: "Search by name or email...",
262
413
  searchLabel: "Search users",
263
414
  addUser: "\uFF0B Add user",
@@ -271,11 +422,41 @@ export const defaultUserAdminLabels: UserAdminLabels = {
271
422
  editUserAria: "Edit {user}",
272
423
  activateAria: "Activate {user}",
273
424
  deactivateAria: "Deactivate {user}",
274
- confirmDeactivate: "Deactivate this user? They will no longer be able to sign in.",
275
- empty: "No matching users",
425
+ emptyFiltered: "No user matches this search.",
426
+ listSummary: "Showing {shown} of {total} users.",
427
+ sortedAscending: "{column}, sorted ascending. Activate to sort descending.",
428
+ sortedDescending: "{column}, sorted descending. Activate to sort ascending.",
429
+ confirmDeactivate: "Deactivate {user}? They will no longer be able to sign in.",
430
+ empty: "No user is registered yet.",
276
431
  },
277
432
  groupsView: {
278
433
  emptyFiltered: "No group matches this search",
434
+ createModeLabel: "How to create the group",
435
+ createModeLocal: "Create locally",
436
+ createModeUpstream: "Create from a directory group",
437
+ pickUpstream: "Directory group",
438
+ pickUpstreamPlaceholder: "Search by name or address...",
439
+ upstreamOptionMembers: "{count} members",
440
+ upstreamAlreadyLinked: "already linked to {group}",
441
+ providerUnset: "This deployment has no directory provider configured, so a directory group cannot be linked yet. Ask an administrator to set it.",
442
+ pickUpstreamFirst: "Pick a directory group first.",
443
+ allUpstreamLinked: "Every directory group is already linked to a local group. One upstream group can back only one local group, so unlink one first.",
444
+ catalogEmpty: "The directory reported no groups as of {at}. Creating from a directory group is unavailable until one exists upstream.",
445
+ catalogUnavailable: "The directory could not be reached, so the group list is unavailable. Enter the address by hand instead. ({reason})",
446
+ catalogUnavailableHere: "The directory could not be reached, so creating from a directory group is unavailable. Create the group locally, then link it on the Directory tab. ({reason})",
447
+ catalogObservedAt: "This list is the directory as of {at}.",
448
+ catalogStale: "⚠ This list is the directory as of {at} and is overdue for a refresh — a group created since then will not appear.",
449
+ catalogFailures: {
450
+ denied: "the directory refused this deployment's credential",
451
+ rateLimited: "the directory is rate-limiting this deployment",
452
+ upstreamError: "the directory reported an internal error",
453
+ neverObserved: "the directory has not been read yet — the synchronization job may not be running",
454
+ unknown: "the reason is in the server log",
455
+ },
456
+ createUpstreamNotice:
457
+ "Creates the group and links it in one step. The directory then owns its membership — and this screen can no longer rename, describe or delete the group. Unlinking is the only way back, and it removes the member ledger and the group-based sign-in permission.",
458
+ openMembers: "Members",
459
+ openMembersAria: "Show the members of {group}",
279
460
  title: "Groups",
280
461
  searchPlaceholder: "Search by group name or key...",
281
462
  searchLabel: "Search groups",
@@ -285,7 +466,8 @@ export const defaultUserAdminLabels: UserAdminLabels = {
285
466
  name: "Name",
286
467
  description: "Description",
287
468
  memberCountTemplate: "{count} members",
288
- confirmDelete: "Delete this group?",
469
+ confirmDelete: "Delete {group}? Its {count} membership record(s) go with it, and anyone who could sign in only through this group will be locked out.",
470
+ confirmCreateLinked: "Create {group} and hand its membership to {upstream}? Renaming and deleting it here becomes impossible.",
289
471
  editGroupAria: "Edit {group}",
290
472
  deleteGroupAria: "Delete {group}",
291
473
  noDescription: "No description",
@@ -295,8 +477,17 @@ export const defaultUserAdminLabels: UserAdminLabels = {
295
477
  },
296
478
  groupMembersView: {
297
479
  title: "Group members",
480
+ searchLabel: "Search users",
481
+ searchPlaceholder: "Search by name or email...",
482
+ onlyMembers: "Members only ({count})",
483
+ emptyFiltered: "No user matches this search",
484
+ summary: "Showing {shown} of {total} users. This group has {members} member(s).",
298
485
  selectGroup: "Select a group",
299
486
  selectPrompt: "Select a group to manage its members",
487
+ noGroups: "No group exists yet. Create one on the Groups tab first.",
488
+ emptyNoMembers: "This group has no members yet. Untick “Members only” to add someone.",
489
+ noUsers: "No user is registered yet. Add one on the Users tab first.",
490
+ deepLinkMissed: "Group {id} was not found — it may have been deleted. Showing {group} instead.",
300
491
  actionAdd: "Add",
301
492
  actionRemove: "Remove",
302
493
  actionAddAria: "Add {user} to this group",
@@ -318,7 +509,7 @@ export const defaultUserAdminLabels: UserAdminLabels = {
318
509
  target: "Target",
319
510
  description: "Description",
320
511
  deploymentOwner: "Deployment-wide",
321
- confirmDelete: "Remove this allowlist entry? Anyone who could sign in only through it will be locked out.",
512
+ confirmDelete: "Remove {target} from the sign-in allowlist? Anyone who could sign in only through it will be locked out.",
322
513
  deleteAria: "Remove the allowlist entry for {target}",
323
514
  empty: "No allowlist entries registered",
324
515
  },
@@ -334,6 +525,7 @@ export const defaultUserAdminLabels: UserAdminLabels = {
334
525
  syncEnabled: "Active",
335
526
  syncNow: "Sync now",
336
527
  syncQueued: "Queued",
528
+ syncAlreadyPending: "A synchronization request for this scope is already waiting, so nothing was queued. If it never completes, the synchronization job may not be running.",
337
529
  staleWarning: "Synchronization is overdue. Until it runs, people removed upstream keep their access.",
338
530
  disabledWarning: "Directory synchronization is not wired for this deployment. Existing memberships remain in force and are no longer being refreshed.",
339
531
  pausedTemplate: "{paused} of {total} links are paused",
@@ -343,6 +535,7 @@ export const defaultUserAdminLabels: UserAdminLabels = {
343
535
  oldestSyncedTemplate: "oldest successful sync: {at}",
344
536
  pendingTemplate: "{count} sync requests are queued",
345
537
  nothingToLink: "Every group is already linked to a directory.",
538
+ noGroupsToLink: "No group exists yet. Create one on the Groups tab first.",
346
539
  notWiredNotice: "Directory synchronization is not wired for this deployment, so links cannot be created or changed here.",
347
540
  syncNowAria: "Synchronize {group} now",
348
541
  syncQueuedAria: "A synchronization of {group} is queued",
@@ -351,14 +544,21 @@ export const defaultUserAdminLabels: UserAdminLabels = {
351
544
  allowGroupAria: "Allow members of {group} to sign in",
352
545
  disallowGroupAria: "Stop allowing members of {group} to sign in",
353
546
  unlinkAria: "Unlink {group} from the directory",
354
- confirmDisallow: "Stop allowing this group to sign in? Anyone who could sign in only through it will be locked out.",
547
+ confirmDisallow: "Stop allowing {group} to sign in? Anyone who could sign in only through it will be locked out.",
355
548
  link: "Link to a directory group",
356
549
  unlink: "Unlink",
357
550
  externalKey: "Upstream group",
358
551
  empty: "No groups are linked to a directory",
359
552
  selectGroup: "Group to link",
553
+ pickUpstreamPlaceholder: "Search by name or address...",
554
+ pickerNoOptions: "No matching group",
555
+ pickerClear: "Clear the selection",
556
+ pickerToggle: "Show the group list",
557
+ pickerSelected: "Selected: {value}",
558
+ pickerAvailable: "{count} groups available",
360
559
  externalKeyPlaceholder: "e.g. dev-team@example.com",
361
- confirmUnlink: "Unlink this group? Its member ledger and group-based sign-in permission are removed.",
560
+ confirmLink: "Hand {group}'s membership to {upstream}? Renaming, deleting, and editing its members here becomes impossible.",
561
+ confirmUnlink: "Unlink {group} from {upstream}? Its member ledger and group-based sign-in permission are removed.",
362
562
  pause: "Pause",
363
563
  resume: "Resume",
364
564
  allowGroup: "Allow sign-in",
@@ -391,12 +591,37 @@ export const jaUserAdminLabels: UserAdminLabels = {
391
591
  none: "-",
392
592
  },
393
593
  errors: {
394
- forbidden: "この操作を行う権限がありません。",
594
+ unknownUpstream: "上流に {key} というグループが見つかりません。綴りを確認するか、一覧から選んでください。",
595
+ directoryDisabled: "この配備にはディレクトリが設定されていないため、グループを連携できません。",
596
+ invalidField: "「{field}」が未指定か、この操作が受け付けられない値です。",
597
+ unknownIntent: "この画面では、その操作を行いません。",
598
+ fieldNames: {
599
+ groupId: "グループ",
600
+ userId: "ユーザー",
601
+ entryId: "項目",
602
+ displayName: "表示名",
603
+ email: "メールアドレス",
604
+ groupKey: "グループキー",
605
+ name: "名前",
606
+ provider: "連携プロバイダ",
607
+ externalKey: "ディレクトリのグループアドレス",
608
+ membershipMode: "所属の展開",
609
+ isActive: "有効",
610
+ isSyncEnabled: "同期",
611
+ pattern: "パターン",
612
+ type: "種別",
613
+ },
614
+ invalidAllowlistType: "許可リストの種別は、アドレスかドメインのいずれかで指定してください。",
615
+ unexpected: "操作に失敗しました。理由はサーバーのログに出ています。",
616
+ alreadyLinked: "{key} は既に {group} と連携しています。1 つの上流グループを 2 つのローカルグループへ繋ぐことはできません。",
617
+ forbidden: "この操作を行う権限がありません。今の権限はヘッダーのバッジに出ています。必要であれば管理者に付与を依頼してください。",
618
+ requestTooLarge: "送信された内容が大きすぎるため処理できませんでした。",
395
619
  },
396
620
  permissions: {
397
621
  label: "あなたの権限:",
398
622
  canWrite: "編集可",
399
623
  canRead: "閲覧のみ",
624
+ canDelete: "削除のみ",
400
625
  none: "権限なし",
401
626
  unknown: "権限不明",
402
627
  },
@@ -409,6 +634,7 @@ export const jaUserAdminLabels: UserAdminLabels = {
409
634
  },
410
635
  usersView: {
411
636
  title: "ユーザー管理",
637
+ sortBy: "{column} で並べ替え",
412
638
  searchPlaceholder: "表示名や Email で検索...",
413
639
  searchLabel: "ユーザーを検索",
414
640
  addUser: "\uFF0B ユーザー追加",
@@ -422,11 +648,40 @@ export const jaUserAdminLabels: UserAdminLabels = {
422
648
  editUserAria: "{user} を編集",
423
649
  activateAria: "{user} を有効化",
424
650
  deactivateAria: "{user} を無効化",
425
- confirmDeactivate: "このユーザーを無効化しますか? 以後サインインできなくなります。",
426
- empty: "該当するユーザーが見つかりません",
651
+ emptyFiltered: "検索条件に一致する利用者はいません。",
652
+ listSummary: "{total} 人中 {shown} 人を表示しています。",
653
+ sortedAscending: "{column} (昇順で並べ替え中)。押すと降順になります。",
654
+ sortedDescending: "{column} (降順で並べ替え中)。押すと昇順になります。",
655
+ confirmDeactivate: "{user} を無効化しますか? 以後サインインできなくなります。",
656
+ empty: "ユーザーが登録されていません。",
427
657
  },
428
658
  groupsView: {
429
659
  emptyFiltered: "検索条件に一致するグループはありません",
660
+ createModeLabel: "作成方法",
661
+ createModeLocal: "ローカルに作成",
662
+ createModeUpstream: "ディレクトリのグループから作成",
663
+ pickUpstream: "ディレクトリのグループ",
664
+ pickUpstreamPlaceholder: "名前かアドレスで検索...",
665
+ upstreamOptionMembers: "{count} 名",
666
+ upstreamAlreadyLinked: "{group} と連携済み",
667
+ providerUnset: "この配備には連携プロバイダ名が設定されていないため、ディレクトリのグループを連携できません。管理者に設定を依頼してください。",
668
+ pickUpstreamFirst: "先にディレクトリのグループを選んでください。",
669
+ allUpstreamLinked: "ディレクトリのグループはすべて、いずれかのローカルグループと連携済みです。1 つの上流グループを繋げる先は 1 つだけなので、繋ぎ替えるにはどれかの連携を解除してください。",
670
+ catalogEmpty: "{at} 時点で、上流にグループが 1 つもありませんでした。上流にグループができるまで、ディレクトリからの作成はできません。",
671
+ catalogUnavailable: "上流へ到達できないため、グループ一覧を出せません。アドレスを手入力してください。({reason})",
672
+ catalogUnavailableHere: "上流へ到達できないため、ディレクトリからの作成はできません。ローカルに作成したうえで、連携タブから連携してください。({reason})",
673
+ catalogObservedAt: "この一覧は {at} 時点のディレクトリです。",
674
+ catalogStale: "⚠ この一覧は {at} 時点のもので、更新が滞っています。それ以降に作られたグループは出てきません。",
675
+ catalogFailures: {
676
+ denied: "この配備の資格情報が上流に拒否されました",
677
+ rateLimited: "上流がこの配備の呼び出しを制限しています",
678
+ upstreamError: "上流が内部エラーを返しました",
679
+ neverObserved: "上流をまだ一度も読めていません (同期ジョブが動いていない可能性があります)",
680
+ unknown: "理由はサーバーのログに出ています",
681
+ },
682
+ createUpstreamNotice: "グループの作成と連携を 1 手で行います。以後、所属は上流が所有し — この画面からは名称・説明の変更も削除もできなくなります。戻す手段は連携解除だけで、それはメンバー台帳とグループ単位のサインイン許可を消します。",
683
+ openMembers: "メンバー",
684
+ openMembersAria: "{group} のメンバーを表示",
430
685
  title: "ユーザーグループ管理",
431
686
  searchPlaceholder: "グループ名やキーで検索...",
432
687
  searchLabel: "グループを検索",
@@ -436,7 +691,8 @@ export const jaUserAdminLabels: UserAdminLabels = {
436
691
  name: "名称",
437
692
  description: "説明",
438
693
  memberCountTemplate: "所属 {count} 名",
439
- confirmDelete: "このグループを削除しますか?",
694
+ confirmDelete: "{group} を削除しますか? 所属 {count} 件も一緒に消え、このグループでしかサインインできない人はサインインできなくなります。",
695
+ confirmCreateLinked: "{group} を作成し、その所属を {upstream} に委ねますか? 以後この画面から名称変更と削除ができなくなります。",
440
696
  editGroupAria: "{group} を編集",
441
697
  deleteGroupAria: "{group} を削除",
442
698
  noDescription: "説明なし",
@@ -446,8 +702,17 @@ export const jaUserAdminLabels: UserAdminLabels = {
446
702
  },
447
703
  groupMembersView: {
448
704
  title: "グループメンバー管理",
705
+ searchLabel: "利用者を検索",
706
+ searchPlaceholder: "表示名や Email で検索...",
707
+ onlyMembers: "所属のみ表示 ({count} 名)",
708
+ emptyFiltered: "検索条件に一致する利用者はいません",
709
+ summary: "{total} 名のうち {shown} 名を表示中。このグループの所属は {members} 名です。",
449
710
  selectGroup: "グループ選択",
450
711
  selectPrompt: "グループを選択してください",
712
+ noGroups: "グループがまだ 1 つもありません。先にグループタブで作成してください。",
713
+ emptyNoMembers: "このグループにはまだメンバーがいません。「所属のみ表示」のチェックを外すと追加できます。",
714
+ noUsers: "利用者がまだ 1 人も登録されていません。先にユーザータブで追加してください。",
715
+ deepLinkMissed: "グループ {id} が見つかりませんでした (削除された可能性があります)。代わりに {group} を表示しています。",
451
716
  actionAdd: "追加",
452
717
  actionRemove: "除外",
453
718
  actionAddAria: "{user} をこのグループへ追加",
@@ -469,9 +734,9 @@ export const jaUserAdminLabels: UserAdminLabels = {
469
734
  target: "対象",
470
735
  description: "説明 / 備考",
471
736
  deploymentOwner: "配備共通",
472
- confirmDelete: "この許可を削除しますか? これでしかサインインできない人はログインできなくなります。",
737
+ confirmDelete: "{target} を許可リストから削除しますか? これでしかサインインできない人はログインできなくなります。",
473
738
  deleteAria: "{target} の許可を削除",
474
- empty: "アロワリストエントリが登録されていません",
739
+ empty: "サインイン許可リストに登録がありません。",
475
740
  },
476
741
  directoryView: {
477
742
  title: "ディレクトリ同期",
@@ -485,6 +750,7 @@ export const jaUserAdminLabels: UserAdminLabels = {
485
750
  syncEnabled: "有効",
486
751
  syncNow: "今すぐ同期",
487
752
  syncQueued: "同期を要求しました",
753
+ syncAlreadyPending: "この範囲の同期要求は既に待機中のため、新しくは積みませんでした。いつまでも完了しない場合、同期ジョブが動いていない可能性があります。",
488
754
  staleWarning: "同期が滞っています。実行されるまで、上流から外れた人のアクセスは残り続けます。",
489
755
  disabledWarning: "この配備ではディレクトリ同期が結線されていません。既存の所属はそのまま有効で、更新だけが止まっています。",
490
756
  pausedTemplate: "連携 {total} 件のうち {paused} 件が停止中",
@@ -494,6 +760,7 @@ export const jaUserAdminLabels: UserAdminLabels = {
494
760
  oldestSyncedTemplate: "最も古い同期成功: {at}",
495
761
  pendingTemplate: "{count} 件の同期要求が未処理",
496
762
  nothingToLink: "すべてのグループが既にディレクトリと連携しています。",
763
+ noGroupsToLink: "グループがまだ 1 つもありません。先にグループタブで作成してください。",
497
764
  notWiredNotice: "この配備ではディレクトリ同期が結線されていないため、ここから連携の作成・変更はできません。",
498
765
  syncNowAria: "{group} を今すぐ同期",
499
766
  syncQueuedAria: "{group} の同期を要求済み",
@@ -502,14 +769,21 @@ export const jaUserAdminLabels: UserAdminLabels = {
502
769
  allowGroupAria: "{group} のメンバーのサインインを許可",
503
770
  disallowGroupAria: "{group} のメンバーのサインイン許可を外す",
504
771
  unlinkAria: "{group} のディレクトリ連携を解除",
505
- confirmDisallow: "このグループのサインイン許可を外しますか? これでしかサインインできない人はログインできなくなります。",
772
+ confirmDisallow: "{group} のサインイン許可を外しますか? これでしかサインインできない人はログインできなくなります。",
506
773
  link: "ディレクトリのグループと連携する",
507
774
  unlink: "連携を解除",
508
775
  externalKey: "上流グループ",
509
776
  empty: "ディレクトリと連携しているグループはありません",
510
777
  selectGroup: "連携するグループ",
778
+ pickUpstreamPlaceholder: "名前かアドレスで検索...",
779
+ pickerNoOptions: "一致するグループがありません",
780
+ pickerClear: "選択を解除",
781
+ pickerToggle: "グループ一覧を開く",
782
+ pickerSelected: "選択中: {value}",
783
+ pickerAvailable: "候補 {count} 件",
511
784
  externalKeyPlaceholder: "例: dev-team@example.com",
512
- confirmUnlink: "このグループの連携を解除しますか? メンバー台帳とグループ単位のサインイン許可が失われます。",
785
+ confirmLink: "{group} の所属を {upstream} に委ねますか? 以後この画面から名称変更・削除・メンバー編集ができなくなります。",
786
+ confirmUnlink: "{group} と {upstream} の連携を解除しますか? メンバー台帳とグループ単位のサインイン許可が失われます。",
513
787
  pause: "一時停止",
514
788
  resume: "再開",
515
789
  allowGroup: "サインインを許可",