@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.
- package/dist/admin.d.mts +160 -29
- package/dist/admin.d.ts +160 -29
- package/dist/admin.js +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs +1 -1
- package/dist/admin.mjs.map +1 -1
- package/package.json +3 -3
- package/src/admin/format.ts +49 -0
- package/src/admin/labels.ts +300 -98
- package/src/admin/server.ts +95 -25
- package/src/admin/ui.tsx +75 -8
- package/src/admin/views.tsx +619 -149
package/src/admin/labels.ts
CHANGED
|
@@ -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
|
-
|
|
50
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
130
|
-
groups: "
|
|
131
|
-
groupMembers: "
|
|
132
|
-
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
432
|
+
searchLabel: "グループを検索",
|
|
433
|
+
addGroup: "\uFF0B グループ追加",
|
|
434
|
+
editGroup: "グループ編集",
|
|
263
435
|
groupKey: "グループキー",
|
|
264
|
-
name: "
|
|
436
|
+
name: "名称",
|
|
265
437
|
description: "説明",
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
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: "
|
|
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: "
|
|
293
|
-
domainTypeShort: "
|
|
466
|
+
emailTypeShort: "メール",
|
|
467
|
+
domainTypeShort: "ドメイン",
|
|
294
468
|
groupTypeShort: "グループ",
|
|
295
469
|
target: "対象",
|
|
296
470
|
description: "説明 / 備考",
|
|
297
|
-
actions: "操作",
|
|
298
|
-
readOnly: "変更不可",
|
|
299
471
|
deploymentOwner: "配備共通",
|
|
300
|
-
|
|
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
|
-
|
|
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 },
|