@aiquants/auth-react-router 0.11.0 → 0.13.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.
@@ -10,60 +10,125 @@
10
10
 
11
11
  export type UserAdminLabels = {
12
12
  title: string
13
+ /**
14
+ * BCP 47 locale used to format dates. 日付整形に使う BCP 47 ロケール。
15
+ *
16
+ * 実行環境任せにするとサーバーとブラウザで別の文字列になり、水和が壊れる。
17
+ */
18
+ locale: string
19
+ /** IANA time zone used to format dates. 日付整形に使う IANA タイムゾーン。 */
20
+ timeZone: string
21
+ /**
22
+ * Strings shared by more than one view. 複数のビューが共有する文言。
23
+ *
24
+ * ビューごとに同じ語を持たせると、ある画面の「削除」だけを言い換えることが **できなく
25
+ * なる** (実装がどのビューのキーを読んでいるかは呼び出し側から見えない)。共有する語は
26
+ * ここ 1 か所に置く。
27
+ */
28
+ common: {
29
+ create: string
30
+ edit: string
31
+ delete: string
32
+ save: string
33
+ cancel: string
34
+ actions: string
35
+ status: string
36
+ id: string
37
+ /** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
38
+ readOnly: string
39
+ /** 上流所有のグループに出す編集不可の表示。 */
40
+ managedUpstream: string
41
+ /** `#{id}` の表示。記号の位置は言語で変わる。 */
42
+ idTemplate: string
43
+ /** 値が無いことの表示 (説明欄など)。 */
44
+ none: string
45
+ }
46
+ /** アクションが拒否・失敗したときの文言。 */
47
+ errors: {
48
+ /**
49
+ * Shown when the actor lacks permission for the attempted operation.
50
+ * 操作の権限が無いときに出す文言。
51
+ *
52
+ * ガードの例外メッセージをそのまま返してはならない。テナント ID・アプリキー・
53
+ * 拒否理由といった内部の語彙が、権限を持たない相手にそのまま渡る。
54
+ */
55
+ forbidden: string
56
+ }
13
57
  /** シェル (タブ枠) の見出し。 */
14
58
  heading: string
59
+ /** シェルが描く自己権限バッジの文言。 */
60
+ permissions: {
61
+ label: string
62
+ canWrite: string
63
+ canRead: string
64
+ none: string
65
+ /** 未結線・取得失敗・付与ゼロのいずれも「不明」であり、許可ではない。 */
66
+ unknown: string
67
+ }
15
68
  tabs: {
16
69
  users: string
17
70
  groups: string
18
71
  groupMembers: string
19
72
  allowlist: string
73
+ directory: string
20
74
  }
21
75
  usersView: {
22
76
  title: string
23
77
  searchPlaceholder: string
78
+ /** 検索欄の読み上げ名。プレースホルダは入力すると消えるため名前にならない。 */
79
+ searchLabel: string
24
80
  addUser: string
25
81
  editUser: string
26
- id: string
27
82
  displayName: string
28
83
  email: string
29
- status: string
30
84
  active: string
31
85
  inactive: string
32
- actions: string
33
- edit: string
34
86
  activate: string
35
87
  deactivate: string
88
+ /** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
89
+ editUserAria: string
90
+ activateAria: string
91
+ deactivateAria: string
92
+ /** 無効化はサインインを止める。確認を取る。 */
93
+ confirmDeactivate: string
36
94
  empty: string
37
- save: string
38
- cancel: string
39
95
  }
40
96
  groupsView: {
97
+ /** 検索語に一致しないときの説明。空状態と混ぜると「消えた」と誤読される。 */
98
+ emptyFiltered: string
41
99
  title: string
42
100
  searchPlaceholder: string
101
+ searchLabel: string
43
102
  addGroup: string
44
103
  editGroup: string
45
- id: string
46
104
  groupKey: string
47
105
  name: string
48
106
  description: string
49
- memberCount: string
50
- status: string
51
- actions: string
52
- edit: string
53
- delete: string
107
+ /** 所属人数。`{count}` を人数へ置換する。 */
108
+ memberCountTemplate: string
54
109
  confirmDelete: string
110
+ /** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
111
+ editGroupAria: string
112
+ deleteGroupAria: string
55
113
  noDescription: string
56
114
  groupKeyPlaceholder: string
57
115
  namePlaceholder: string
58
116
  empty: string
59
- save: string
60
- cancel: string
61
117
  }
62
118
  groupMembersView: {
119
+ title: string
63
120
  selectGroup: string
64
121
  selectPrompt: string
65
122
  actionAdd: string
66
123
  actionRemove: string
124
+ /** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
125
+ actionAddAria: string
126
+ actionRemoveAria: string
127
+ /** 上流所有グループで編集を出さない理由。押せない理由を書かないと故障に見える。 */
128
+ upstreamNotice: string
129
+ /** 見出し。`{group}` をグループ名へ置換する。語順が言語で変わるため位置指定にする。 */
130
+ membersOfTemplate: string
131
+ groupKeyLabel: string
67
132
  }
68
133
  allowlistView: {
69
134
  title: string
@@ -80,30 +145,23 @@ export type UserAdminLabels = {
80
145
  /** 対象列の見出し。パターンとグループが混在するため「パターン」ではない。 */
81
146
  target: string
82
147
  description: string
83
- actions: string
84
- /** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
85
- readOnly: string
86
148
  /** 配備全体が所有する行 (環境変数由来) の所有者表示。 */
87
149
  deploymentOwner: string
88
- delete: string
150
+ /** 許可の取り消しはサインインを止める。確認を取る。 */
151
+ confirmDelete: string
152
+ /** 行ごとの読み上げ名。`{target}` を対象へ置換する。 */
153
+ deleteAria: string
89
154
  empty: string
90
- save: string
91
- cancel: string
92
155
  }
93
156
  directoryView: {
94
157
  title: string
95
- /** 出所列。ローカル管理か、どの上流かを示す。 */
96
- source: string
97
- localSource: string
98
- /** 上流所有のグループに出す編集不可の表示。 */
99
- managedUpstream: string
100
158
  membershipMode: string
101
159
  directMode: string
102
160
  transitiveMode: string
103
161
  lastSynced: string
104
162
  neverSynced: string
105
- /** 上流に居るがローカルユーザーへ解決できていない人数。 */
106
- unresolved: string
163
+ /** 上流に居るがローカルユーザーへ解決できていない人数。`{count}` を人数へ置換する。 */
164
+ unresolvedTemplate: string
107
165
  syncPaused: string
108
166
  syncEnabled: string
109
167
  syncNow: string
@@ -111,10 +169,50 @@ export type UserAdminLabels = {
111
169
  /** 同期が滞っていることの警告。停止はセキュリティ事象である。 */
112
170
  staleWarning: string
113
171
  disabledWarning: string
172
+ /** 停止件数。`{paused}` / `{total}` を件数へ置換する。 */
173
+ pausedTemplate: string
174
+ /** 失敗したグループの列挙。`{groups}` を名前の並びへ置換する。 */
175
+ erroredTemplate: string
176
+ /** 失敗理由付きの 1 件。`{group}` / `{reason}`。 */
177
+ erroredItemTemplate: string
178
+ /** 列挙の区切り。言語で変わる。 */
179
+ listSeparator: string
180
+ /** 滞留警告に添える最終成功時刻。`{at}`。 */
181
+ oldestSyncedTemplate: string
182
+ /** 未処理の同期要求。`{count}`。 */
183
+ pendingTemplate: string
184
+ /** 連携先が 1 つも残っていないときの説明。 */
185
+ nothingToLink: string
186
+ /** 未結線の配備で操作を出さない理由。 */
187
+ notWiredNotice: string
188
+ /** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
189
+ syncNowAria: string
190
+ syncQueuedAria: string
191
+ pauseAria: string
192
+ resumeAria: string
193
+ allowGroupAria: string
194
+ disallowGroupAria: string
195
+ unlinkAria: string
196
+ /** グループ単位のサインイン許可を外す確認。 */
197
+ confirmDisallow: string
114
198
  link: string
115
199
  unlink: string
116
200
  externalKey: string
117
201
  empty: string
202
+ /** 連携するグループを選ぶ欄。 */
203
+ selectGroup: string
204
+ /** 上流グループのアドレス入力。 */
205
+ externalKeyPlaceholder: string
206
+ /** 連携解除の確認。台帳と許可設定が消える。 */
207
+ confirmUnlink: string
208
+ /** 同期の一時停止・再開。 */
209
+ pause: string
210
+ resume: string
211
+ /** 許可グループに加える / 外す。 */
212
+ allowGroup: string
213
+ disallowGroup: string
214
+ /** グループ名と鍵の併記。`{name}` / `{key}`。 */
215
+ groupOptionTemplate: string
118
216
  }
119
217
  }
120
218
 
@@ -124,63 +222,92 @@ export type UserAdminLabels = {
124
222
  */
125
223
  export const defaultUserAdminLabels: UserAdminLabels = {
126
224
  title: "Users & Groups",
127
- heading: "👤 User administration",
225
+ locale: "en-US",
226
+ timeZone: "UTC",
227
+ heading: "\u{1F464} User administration",
228
+ common: {
229
+ create: "Create",
230
+ edit: "Edit",
231
+ delete: "Delete",
232
+ save: "Save",
233
+ cancel: "Cancel",
234
+ actions: "Actions",
235
+ status: "Status",
236
+ id: "ID",
237
+ readOnly: "Read-only",
238
+ managedUpstream: "Managed upstream",
239
+ idTemplate: "#{id}",
240
+ none: "-",
241
+ },
242
+ errors: {
243
+ forbidden: "You do not have permission for this operation.",
244
+ },
245
+ permissions: {
246
+ label: "Your permissions:",
247
+ canWrite: "Editable",
248
+ canRead: "Read only",
249
+ none: "No access",
250
+ unknown: "Unknown",
251
+ },
128
252
  tabs: {
129
- users: "👤 Users",
130
- groups: "👥 Groups",
131
- groupMembers: "🔗 Members",
132
- allowlist: "✉️ Allowlist",
253
+ users: "\u{1F464} Users",
254
+ groups: "\u{1F465} Groups",
255
+ groupMembers: "\u{1F517} Members",
256
+ allowlist: "\u2709\uFE0F Allowlist",
257
+ directory: "\u{1F504} Directory",
133
258
  },
134
259
  usersView: {
135
260
  title: "Users",
136
261
  searchPlaceholder: "Search by name or email...",
137
- addUser: "+ Add user",
262
+ searchLabel: "Search users",
263
+ addUser: "\uFF0B Add user",
138
264
  editUser: "Edit user",
139
- id: "ID",
140
265
  displayName: "Name",
141
266
  email: "Email",
142
- status: "Status",
143
267
  active: "Active",
144
268
  inactive: "Inactive",
145
- actions: "Actions",
146
- edit: "Edit",
147
269
  activate: "Activate",
148
270
  deactivate: "Deactivate",
271
+ editUserAria: "Edit {user}",
272
+ activateAria: "Activate {user}",
273
+ deactivateAria: "Deactivate {user}",
274
+ confirmDeactivate: "Deactivate this user? They will no longer be able to sign in.",
149
275
  empty: "No matching users",
150
- save: "Save",
151
- cancel: "Cancel",
152
276
  },
153
277
  groupsView: {
278
+ emptyFiltered: "No group matches this search",
154
279
  title: "Groups",
155
280
  searchPlaceholder: "Search by group name or key...",
156
- addGroup: "+ Add group",
281
+ searchLabel: "Search groups",
282
+ addGroup: "\uFF0B Add group",
157
283
  editGroup: "Edit group",
158
- id: "ID",
159
284
  groupKey: "Group key",
160
285
  name: "Name",
161
286
  description: "Description",
162
- memberCount: "Members",
163
- status: "Status",
164
- actions: "Actions",
165
- edit: "Edit",
166
- delete: "Delete",
287
+ memberCountTemplate: "{count} members",
167
288
  confirmDelete: "Delete this group?",
289
+ editGroupAria: "Edit {group}",
290
+ deleteGroupAria: "Delete {group}",
168
291
  noDescription: "No description",
169
292
  groupKeyPlaceholder: "e.g. dev-team",
170
293
  namePlaceholder: "e.g. Development team",
171
294
  empty: "No groups registered",
172
- save: "Save",
173
- cancel: "Cancel",
174
295
  },
175
296
  groupMembersView: {
297
+ title: "Group members",
176
298
  selectGroup: "Select a group",
177
299
  selectPrompt: "Select a group to manage its members",
178
300
  actionAdd: "Add",
179
301
  actionRemove: "Remove",
302
+ actionAddAria: "Add {user} to this group",
303
+ actionRemoveAria: "Remove {user} from this group",
304
+ upstreamNotice: "Membership of this group is owned by the upstream directory. Edit it there \u2014 a local change would be reverted at the next synchronization.",
305
+ membersOfTemplate: "Members of {group}",
306
+ groupKeyLabel: "Group key",
180
307
  },
181
308
  allowlistView: {
182
309
  title: "Sign-in allowlist",
183
- addEntry: "+ Add pattern",
310
+ addEntry: "\uFF0B Add pattern",
184
311
  pattern: "Pattern (e.g. @example.com or user@example.com)",
185
312
  type: "Type",
186
313
  emailType: "Exact email match",
@@ -190,35 +317,53 @@ export const defaultUserAdminLabels: UserAdminLabels = {
190
317
  groupTypeShort: "Group",
191
318
  target: "Target",
192
319
  description: "Description",
193
- actions: "Actions",
194
- readOnly: "Read-only",
195
320
  deploymentOwner: "Deployment-wide",
196
- delete: "Delete",
321
+ confirmDelete: "Remove this allowlist entry? Anyone who could sign in only through it will be locked out.",
322
+ deleteAria: "Remove the allowlist entry for {target}",
197
323
  empty: "No allowlist entries registered",
198
- save: "Add",
199
- cancel: "Cancel",
200
324
  },
201
325
  directoryView: {
202
326
  title: "Directory synchronization",
203
- source: "Source",
204
- localSource: "Local",
205
- managedUpstream: "Managed upstream",
206
327
  membershipMode: "Membership",
207
328
  directMode: "Direct only",
208
329
  transitiveMode: "Nested expanded",
209
330
  lastSynced: "Last synced",
210
331
  neverSynced: "Never",
211
- unresolved: "unresolved",
332
+ unresolvedTemplate: "{count} unresolved",
212
333
  syncPaused: "Paused",
213
334
  syncEnabled: "Active",
214
335
  syncNow: "Sync now",
215
336
  syncQueued: "Queued",
216
337
  staleWarning: "Synchronization is overdue. Until it runs, people removed upstream keep their access.",
217
338
  disabledWarning: "Directory synchronization is not wired for this deployment. Existing memberships remain in force and are no longer being refreshed.",
339
+ pausedTemplate: "{paused} of {total} links are paused",
340
+ erroredTemplate: "Last synchronization failed for {groups}",
341
+ erroredItemTemplate: "{group}: {reason}",
342
+ listSeparator: ", ",
343
+ oldestSyncedTemplate: "oldest successful sync: {at}",
344
+ pendingTemplate: "{count} sync requests are queued",
345
+ nothingToLink: "Every group is already linked to a directory.",
346
+ notWiredNotice: "Directory synchronization is not wired for this deployment, so links cannot be created or changed here.",
347
+ syncNowAria: "Synchronize {group} now",
348
+ syncQueuedAria: "A synchronization of {group} is queued",
349
+ pauseAria: "Pause synchronization of {group}",
350
+ resumeAria: "Resume synchronization of {group}",
351
+ allowGroupAria: "Allow members of {group} to sign in",
352
+ disallowGroupAria: "Stop allowing members of {group} to sign in",
353
+ 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.",
218
355
  link: "Link to a directory group",
219
356
  unlink: "Unlink",
220
357
  externalKey: "Upstream group",
221
358
  empty: "No groups are linked to a directory",
359
+ selectGroup: "Group to link",
360
+ externalKeyPlaceholder: "e.g. dev-team@example.com",
361
+ confirmUnlink: "Unlink this group? Its member ledger and group-based sign-in permission are removed.",
362
+ pause: "Pause",
363
+ resume: "Resume",
364
+ allowGroup: "Allow sign-in",
365
+ disallowGroup: "Stop allowing sign-in",
366
+ groupOptionTemplate: "{name} ({key})",
222
367
  },
223
368
  }
224
369
 
@@ -228,108 +373,160 @@ export const defaultUserAdminLabels: UserAdminLabels = {
228
373
  */
229
374
  export const jaUserAdminLabels: UserAdminLabels = {
230
375
  title: "ユーザー・グループ管理",
231
- heading: "👤 ユーザー管理",
376
+ locale: "ja-JP",
377
+ timeZone: "Asia/Tokyo",
378
+ heading: "\u{1F464} ユーザー管理",
379
+ common: {
380
+ create: "作成",
381
+ edit: "編集",
382
+ delete: "削除",
383
+ save: "保存",
384
+ cancel: "キャンセル",
385
+ actions: "操作",
386
+ status: "状態",
387
+ id: "ID",
388
+ readOnly: "変更不可",
389
+ managedUpstream: "上流が所有",
390
+ idTemplate: "#{id}",
391
+ none: "-",
392
+ },
393
+ errors: {
394
+ forbidden: "この操作を行う権限がありません。",
395
+ },
396
+ permissions: {
397
+ label: "あなたの権限:",
398
+ canWrite: "編集可",
399
+ canRead: "閲覧のみ",
400
+ none: "権限なし",
401
+ unknown: "権限不明",
402
+ },
232
403
  tabs: {
233
- users: "👤 ユーザー一覧",
234
- groups: "👥 ユーザーグループ",
235
- groupMembers: "🔗 グループメンバー",
236
- allowlist: "✉️ アクセス許可リスト",
404
+ users: "\u{1F464} ユーザー一覧",
405
+ groups: "\u{1F465} ユーザーグループ",
406
+ groupMembers: "\u{1F517} グループメンバー",
407
+ allowlist: "\u2709\uFE0F アクセス許可リスト",
408
+ directory: "\u{1F504} ディレクトリ連携",
237
409
  },
238
410
  usersView: {
239
411
  title: "ユーザー管理",
240
412
  searchPlaceholder: "表示名や Email で検索...",
241
- addUser: "+ ユーザー追加",
242
- editUser: "ユーザーの編集",
243
- id: "ID",
413
+ searchLabel: "ユーザーを検索",
414
+ addUser: "\uFF0B ユーザー追加",
415
+ editUser: "ユーザー編集",
244
416
  displayName: "表示名",
245
- email: "メールアドレス",
246
- status: "ステータス",
417
+ email: "Email",
247
418
  active: "有効",
248
419
  inactive: "無効",
249
- actions: "操作",
250
- edit: "編集",
251
420
  activate: "有効化",
252
421
  deactivate: "無効化",
422
+ editUserAria: "{user} を編集",
423
+ activateAria: "{user} を有効化",
424
+ deactivateAria: "{user} を無効化",
425
+ confirmDeactivate: "このユーザーを無効化しますか? 以後サインインできなくなります。",
253
426
  empty: "該当するユーザーが見つかりません",
254
- save: "保存",
255
- cancel: "キャンセル",
256
427
  },
257
428
  groupsView: {
429
+ emptyFiltered: "検索条件に一致するグループはありません",
258
430
  title: "ユーザーグループ管理",
259
431
  searchPlaceholder: "グループ名やキーで検索...",
260
- addGroup: "+ グループ作成",
261
- editGroup: "グループの編集",
262
- id: "ID",
432
+ searchLabel: "グループを検索",
433
+ addGroup: "\uFF0B グループ追加",
434
+ editGroup: "グループ編集",
263
435
  groupKey: "グループキー",
264
- name: "グループ名",
436
+ name: "名称",
265
437
  description: "説明",
266
- memberCount: "メンバー数",
267
- status: "ステータス",
268
- actions: "操作",
269
- edit: "編集",
270
- delete: "削除",
271
- confirmDelete: "このグループを削除してもよろしいですか?",
438
+ memberCountTemplate: "所属 {count} 名",
439
+ confirmDelete: "このグループを削除しますか?",
440
+ editGroupAria: "{group} を編集",
441
+ deleteGroupAria: "{group} を削除",
272
442
  noDescription: "説明なし",
273
443
  groupKeyPlaceholder: "例: dev-team",
274
444
  namePlaceholder: "例: 開発チーム",
275
- empty: "グループが登録されていません",
276
- save: "保存",
277
- cancel: "キャンセル",
445
+ empty: "ユーザーグループが登録されていません",
278
446
  },
279
447
  groupMembersView: {
448
+ title: "グループメンバー管理",
280
449
  selectGroup: "グループ選択",
281
450
  selectPrompt: "グループを選択してください",
282
451
  actionAdd: "追加",
283
452
  actionRemove: "除外",
453
+ actionAddAria: "{user} をこのグループへ追加",
454
+ actionRemoveAria: "{user} をこのグループから除外",
455
+ upstreamNotice: "このグループの所属は上流ディレクトリが所有しています。変更は上流で行ってください (ここで変えても次の同期で元に戻ります)。",
456
+ membersOfTemplate: "{group} の所属メンバー",
457
+ groupKeyLabel: "グループキー",
284
458
  },
285
459
  allowlistView: {
286
- title: "アクセス許可リスト (Allowlist)",
287
- addEntry: "+ 許可パターン追加",
460
+ title: "サインイン許可リスト",
461
+ addEntry: "\uFF0B パターン追加",
288
462
  pattern: "パターン (例: @example.com または user@example.com)",
289
463
  type: "種別",
290
464
  emailType: "メールアドレス完全一致",
291
465
  domainType: "ドメイン一致",
292
- emailTypeShort: "Email 完全一致",
293
- domainTypeShort: "ドメイン一致",
466
+ emailTypeShort: "メール",
467
+ domainTypeShort: "ドメイン",
294
468
  groupTypeShort: "グループ",
295
469
  target: "対象",
296
470
  description: "説明 / 備考",
297
- actions: "操作",
298
- readOnly: "変更不可",
299
471
  deploymentOwner: "配備共通",
300
- delete: "削除",
472
+ confirmDelete: "この許可を削除しますか? これでしかサインインできない人はログインできなくなります。",
473
+ deleteAria: "{target} の許可を削除",
301
474
  empty: "アロワリストエントリが登録されていません",
302
- save: "登録",
303
- cancel: "キャンセル",
304
475
  },
305
476
  directoryView: {
306
477
  title: "ディレクトリ同期",
307
- source: "出所",
308
- localSource: "ローカル管理",
309
- managedUpstream: "上流が所有",
310
478
  membershipMode: "所属の展開",
311
479
  directMode: "直接所属のみ",
312
480
  transitiveMode: "入れ子を展開",
313
481
  lastSynced: "最終同期",
314
482
  neverSynced: "未実行",
315
- unresolved: "件 未解決",
483
+ unresolvedTemplate: "{count} 件が未解決",
316
484
  syncPaused: "停止中",
317
485
  syncEnabled: "有効",
318
486
  syncNow: "今すぐ同期",
319
487
  syncQueued: "同期を要求しました",
320
488
  staleWarning: "同期が滞っています。実行されるまで、上流から外れた人のアクセスは残り続けます。",
321
489
  disabledWarning: "この配備ではディレクトリ同期が結線されていません。既存の所属はそのまま有効で、更新だけが止まっています。",
490
+ pausedTemplate: "連携 {total} 件のうち {paused} 件が停止中",
491
+ erroredTemplate: "直近の同期に失敗したグループ: {groups}",
492
+ erroredItemTemplate: "{group}: {reason}",
493
+ listSeparator: " / ",
494
+ oldestSyncedTemplate: "最も古い同期成功: {at}",
495
+ pendingTemplate: "{count} 件の同期要求が未処理",
496
+ nothingToLink: "すべてのグループが既にディレクトリと連携しています。",
497
+ notWiredNotice: "この配備ではディレクトリ同期が結線されていないため、ここから連携の作成・変更はできません。",
498
+ syncNowAria: "{group} を今すぐ同期",
499
+ syncQueuedAria: "{group} の同期を要求済み",
500
+ pauseAria: "{group} の同期を一時停止",
501
+ resumeAria: "{group} の同期を再開",
502
+ allowGroupAria: "{group} のメンバーのサインインを許可",
503
+ disallowGroupAria: "{group} のメンバーのサインイン許可を外す",
504
+ unlinkAria: "{group} のディレクトリ連携を解除",
505
+ confirmDisallow: "このグループのサインイン許可を外しますか? これでしかサインインできない人はログインできなくなります。",
322
506
  link: "ディレクトリのグループと連携する",
323
507
  unlink: "連携を解除",
324
508
  externalKey: "上流グループ",
325
509
  empty: "ディレクトリと連携しているグループはありません",
510
+ selectGroup: "連携するグループ",
511
+ externalKeyPlaceholder: "例: dev-team@example.com",
512
+ confirmUnlink: "このグループの連携を解除しますか? メンバー台帳とグループ単位のサインイン許可が失われます。",
513
+ pause: "一時停止",
514
+ resume: "再開",
515
+ allowGroup: "サインインを許可",
516
+ disallowGroup: "サインイン許可を外す",
517
+ groupOptionTemplate: "{name} ({key})",
326
518
  },
327
519
  }
328
520
 
329
521
  /** セクション単位の部分上書き。 */
330
522
  export type PartialUserAdminLabels = {
331
523
  title?: string
524
+ locale?: string
525
+ timeZone?: string
526
+ common?: Partial<UserAdminLabels["common"]>
527
+ errors?: Partial<UserAdminLabels["errors"]>
332
528
  heading?: string
529
+ permissions?: Partial<UserAdminLabels["permissions"]>
333
530
  tabs?: Partial<UserAdminLabels["tabs"]>
334
531
  usersView?: Partial<UserAdminLabels["usersView"]>
335
532
  groupsView?: Partial<UserAdminLabels["groupsView"]>
@@ -347,7 +544,12 @@ export function resolveUserAdminLabels(over?: PartialUserAdminLabels): UserAdmin
347
544
  if (!over) return d
348
545
  return {
349
546
  title: over.title ?? d.title,
547
+ locale: over.locale ?? d.locale,
548
+ timeZone: over.timeZone ?? d.timeZone,
350
549
  heading: over.heading ?? d.heading,
550
+ common: { ...d.common, ...over.common },
551
+ errors: { ...d.errors, ...over.errors },
552
+ permissions: { ...d.permissions, ...over.permissions },
351
553
  tabs: { ...d.tabs, ...over.tabs },
352
554
  usersView: { ...d.usersView, ...over.usersView },
353
555
  groupsView: { ...d.groupsView, ...over.groupsView },