@things-factory/auth-ui 10.1.27 → 10.1.29
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-client/pages/app-binding/app-bindings.js +4 -11
- package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
- package/dist-client/pages/appliance/home.js +4 -11
- package/dist-client/pages/appliance/home.js.map +1 -1
- package/dist-client/pages/application/applications.js +4 -11
- package/dist-client/pages/application/applications.js.map +1 -1
- package/dist-client/pages/attribute/attribute-set-management.js +6 -11
- package/dist-client/pages/attribute/attribute-set-management.js.map +1 -1
- package/dist-client/pages/auth-provider/auth-provider-management.js +6 -11
- package/dist-client/pages/auth-provider/auth-provider-management.js.map +1 -1
- package/dist-client/pages/domain/domain-management.js +5 -13
- package/dist-client/pages/domain/domain-management.js.map +1 -1
- package/dist-client/pages/domain-link/domain-link-management.js +6 -11
- package/dist-client/pages/domain-link/domain-link-management.js.map +1 -1
- package/dist-client/pages/domain-owner/domain-owner-management.js +4 -11
- package/dist-client/pages/domain-owner/domain-owner-management.js.map +1 -1
- package/dist-client/pages/env-var/env-var-list-page.js +5 -13
- package/dist-client/pages/env-var/env-var-list-page.js.map +1 -1
- package/dist-client/pages/partner/partner-management.js +7 -5
- package/dist-client/pages/partner/partner-management.js.map +1 -1
- package/dist-client/pages/profile.d.ts +1 -0
- package/dist-client/pages/profile.js +12 -12
- package/dist-client/pages/profile.js.map +1 -1
- package/dist-client/pages/role/role-list-page.js +4 -9
- package/dist-client/pages/role/role-list-page.js.map +1 -1
- package/dist-client/pages/role/role-privilege-page.d.ts +4 -1
- package/dist-client/pages/role/role-privilege-page.js +47 -26
- package/dist-client/pages/role/role-privilege-page.js.map +1 -1
- package/dist-client/pages/user/user-list-page.d.ts +22 -1
- package/dist-client/pages/user/user-list-page.js +81 -66
- package/dist-client/pages/user/user-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/tests/page-state.test.ts +49 -0
- package/translations/en.json +9 -0
- package/translations/ja.json +9 -0
- package/translations/ko.json +9 -0
- package/translations/ms.json +9 -0
- package/translations/zh.json +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/auth-ui",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.29",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -38,10 +38,11 @@
|
|
|
38
38
|
"@operato/p13n": "^10.0.0",
|
|
39
39
|
"@operato/popup": "^10.0.0",
|
|
40
40
|
"@operato/styles": "^10.0.0",
|
|
41
|
-
"@things-factory/auth-base": "^10.1.
|
|
42
|
-
"@things-factory/
|
|
41
|
+
"@things-factory/auth-base": "^10.1.29",
|
|
42
|
+
"@things-factory/component-ui": "^10.1.29",
|
|
43
|
+
"@things-factory/more-base": "^10.1.29",
|
|
43
44
|
"base64url": "^3.0.1",
|
|
44
45
|
"clipboard": "^2.0.6"
|
|
45
46
|
},
|
|
46
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "e6bf9dec003fe5e794746aaeb5852b3b50478232"
|
|
47
48
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFileSync } from 'fs'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A screen says what it is doing, and a refusal is not a breakage (ADR-0060 decision 8).
|
|
6
|
+
*
|
|
7
|
+
* Role privileges drew one note for everything that could go wrong - "failed to fetch, please try
|
|
8
|
+
* again" - with no sentence from the server, no way to read it again, and nothing to tell a
|
|
9
|
+
* privilege refusal from a server that was down. It is the screen a person is most likely to be
|
|
10
|
+
* refused on, because it is the one that hands privileges out.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const read = (file: string) => readFileSync(path.resolve(__dirname, '..', file), 'utf-8')
|
|
14
|
+
|
|
15
|
+
describe('role privileges says what happened', () => {
|
|
16
|
+
const source = read('client/pages/role/role-privilege-page.ts')
|
|
17
|
+
|
|
18
|
+
it('★ draws the shared page state, not a note of its own', () => {
|
|
19
|
+
expect(source).toMatch(/import '@operato\/list-state\/ox-page-state\.js'/)
|
|
20
|
+
expect(source).toMatch(/<ox-page-state/)
|
|
21
|
+
/* The old note element is gone from this screen, import included. */
|
|
22
|
+
expect(source).not.toMatch(/ox-oops-note/)
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
it('★ keeps what the server said, and offers to read it again', () => {
|
|
26
|
+
expect(source).toMatch(/this\.loadError = response\.errors/)
|
|
27
|
+
expect(source).toMatch(/\.error=\$\{this\.loadError\}/)
|
|
28
|
+
expect(source).toMatch(/@retry=\$\{\(\) => this\.fetch\(\)\}/)
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('★ a role that is gone is said, not drawn as a role with nothing granted', () => {
|
|
32
|
+
expect(source).toMatch(/if \(!role\?\.id\)/)
|
|
33
|
+
expect(source).toMatch(/i18next\.t\('text\.this role no longer exists'\)/)
|
|
34
|
+
|
|
35
|
+
for (const locale of ['en', 'ko', 'ja', 'zh', 'ms']) {
|
|
36
|
+
const sentences = JSON.parse(read(`translations/${locale}.json`))
|
|
37
|
+
expect([locale, typeof sentences['text.this role no longer exists']]).toEqual([locale, 'string'])
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('a screen opened without a role says that, in the reader’s language', () => {
|
|
42
|
+
expect(source).toMatch(/i18next\.t\('text\.no role to show'\)/)
|
|
43
|
+
|
|
44
|
+
for (const locale of ['en', 'ko', 'ja', 'zh', 'ms']) {
|
|
45
|
+
const sentences = JSON.parse(read(`translations/${locale}.json`))
|
|
46
|
+
expect([locale, typeof sentences['text.no role to show']]).toEqual([locale, 'string'])
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
})
|
package/translations/en.json
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"button.security-key registration": "security key registration",
|
|
31
31
|
"button.show-all": "Show all",
|
|
32
32
|
"button.show-orphans-only": "Show orphans only",
|
|
33
|
+
"button.sign_in": "sign in",
|
|
33
34
|
"button.submit": "submit",
|
|
34
35
|
"button.terminate contract": "terminate",
|
|
35
36
|
"button.transfer owner": "transfer owner",
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"error.user-locked": "user account is locked",
|
|
47
48
|
"error.value is empty": "{value} is empty",
|
|
48
49
|
"error.x already exists in y": "{x} already exists in {y}",
|
|
50
|
+
"error: domain name should consist only of letters or dashes": "a domain name can use letters and dashes only",
|
|
49
51
|
"field.access token url": "access token url",
|
|
50
52
|
"field.accessed-at": "accessed at",
|
|
51
53
|
"field.app key": "app key",
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
"field.contact email": "contact email",
|
|
62
64
|
"field.description": "description",
|
|
63
65
|
"field.email": "email address",
|
|
66
|
+
"field.entity": "entity",
|
|
64
67
|
"field.forgot-password": "forgot password",
|
|
65
68
|
"field.granted at": "granted at",
|
|
66
69
|
"field.granted by": "granted by",
|
|
@@ -224,6 +227,8 @@
|
|
|
224
227
|
"text.filter by module name": "Filter by module name",
|
|
225
228
|
"text.inherited from x": "inherited from {x}",
|
|
226
229
|
"text.inherited roles are edited in their own domain": "These roles are defined in a parent domain and can only be changed there.",
|
|
230
|
+
"text.invalid-email": "that is not an email address",
|
|
231
|
+
"text.invalid-username": "use an id or an email address",
|
|
227
232
|
"text.loading": "loading…",
|
|
228
233
|
"text.new password": "new password",
|
|
229
234
|
"text.no account and no default password": "No account uses this address, and this system has no default password. They have to sign up first.",
|
|
@@ -236,6 +241,7 @@
|
|
|
236
241
|
"text.no privilege granted": "grants nothing",
|
|
237
242
|
"text.no role assigned": "no role assigned",
|
|
238
243
|
"text.no role defined in this domain": "No role is defined in this domain yet. Create one before assigning.",
|
|
244
|
+
"text.no role to show": "this screen was opened without a role",
|
|
239
245
|
"text.no role yet": "No role defined yet",
|
|
240
246
|
"text.none on": "none",
|
|
241
247
|
"text.not declared for this module": "This module does not declare this privilege.",
|
|
@@ -282,6 +288,7 @@
|
|
|
282
288
|
"text.this domain is top level and inherits from nowhere": "top level — nothing is inherited here",
|
|
283
289
|
"text.this field is required": "this field is required",
|
|
284
290
|
"text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
|
|
291
|
+
"text.this role no longer exists": "this role no longer exists",
|
|
285
292
|
"text.token expiry time": "token expiry time",
|
|
286
293
|
"text.unlocks in x minutes": "unlocks in {x} minutes",
|
|
287
294
|
"text.updated_successfully": "updated successfully",
|
|
@@ -303,6 +310,7 @@
|
|
|
303
310
|
"text.your account is not activated": "your account is not activated.",
|
|
304
311
|
"text.your email address": "your email address",
|
|
305
312
|
"title.add domain owner": "add domain owner",
|
|
313
|
+
"title.attribute model": "attribute model",
|
|
306
314
|
"title.attribute-item list": "attribute-item list",
|
|
307
315
|
"title.attributes": "attributes",
|
|
308
316
|
"title.auth-provider": "auth provider",
|
|
@@ -310,6 +318,7 @@
|
|
|
310
318
|
"title.domain-link management": "domain link management",
|
|
311
319
|
"title.forgot password": "forgot password",
|
|
312
320
|
"title.invalid input": "invalid input",
|
|
321
|
+
"title.lookup domains": "lookup domains",
|
|
313
322
|
"title.lookup role": "lookup role",
|
|
314
323
|
"title.lookup user": "lookup user",
|
|
315
324
|
"title.move to this domain": "move to this domain",
|
package/translations/ja.json
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"button.security-key registration": "セキュリティキー登録",
|
|
26
26
|
"button.show-all": "すべて表示",
|
|
27
27
|
"button.show-orphans-only": "Orphanのみ表示",
|
|
28
|
+
"button.sign_in": "ログイン",
|
|
28
29
|
"button.submit": "送信",
|
|
29
30
|
"button.terminate contract": "契約解除",
|
|
30
31
|
"button.transfer owner": "管理者付与",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"error.user-locked": "アカウントがロックされました. メールで再アクティブ化してください.",
|
|
41
42
|
"error.value is empty": "{value}の値が存在しません.",
|
|
42
43
|
"error.x already exists in y": "{x}が既に{y}に存在します.",
|
|
44
|
+
"error: domain name should consist only of letters or dashes": "ドメイン名には英字とハイフンのみ使えます",
|
|
43
45
|
"field.access token url": "access token url",
|
|
44
46
|
"field.accessed-at": "ログイン日時",
|
|
45
47
|
"field.app key": "app key",
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
"field.contact email": "連絡先メール",
|
|
56
58
|
"field.description": "説明",
|
|
57
59
|
"field.email": "メール",
|
|
60
|
+
"field.entity": "エンティティ",
|
|
58
61
|
"field.forgot-password": "パスワードを忘れましたか?",
|
|
59
62
|
"field.hidden": "隠し",
|
|
60
63
|
"field.ip_address": "IPアドレス",
|
|
@@ -185,8 +188,11 @@
|
|
|
185
188
|
"text.expired": "期限切れ",
|
|
186
189
|
"text.expires at x": "{x} 失効",
|
|
187
190
|
"text.inherited from x": "{x} から継承しています",
|
|
191
|
+
"text.invalid-email": "メールアドレスの形式が違います",
|
|
192
|
+
"text.invalid-username": "IDまたはメールアドレスを入力してください",
|
|
188
193
|
"text.new password": "新しいパスワード",
|
|
189
194
|
"text.no domain available": "使用できるドメインがありません.",
|
|
195
|
+
"text.no role to show": "ロールが指定されずに開かれた画面です",
|
|
190
196
|
"text.not issued": "未発行",
|
|
191
197
|
"text.opens nothing, receives approvals": "opens nothing — this seat receives approvals",
|
|
192
198
|
"text.owner_transfer_completed": "owner変更を完了しました.",
|
|
@@ -219,6 +225,7 @@
|
|
|
219
225
|
"text.this domain is top level and inherits from nowhere": "最上位ドメイン — 継承元がありません",
|
|
220
226
|
"text.this field is required": "必須項目です",
|
|
221
227
|
"text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
|
|
228
|
+
"text.this role no longer exists": "このロールは存在しません",
|
|
222
229
|
"text.token expiry time": "トークン有効期限",
|
|
223
230
|
"text.updated_successfully": "正常にアップデートしました.",
|
|
224
231
|
"text.user invitation prompt": "招待したいユーザーのユーザー名またはメールアドレスを入力してください。",
|
|
@@ -232,6 +239,7 @@
|
|
|
232
239
|
"text.x_deleted_successfully": "{x}が成功的に削除されました.",
|
|
233
240
|
"text.your account is not activated": "アカウントがアクティブ化されていません.",
|
|
234
241
|
"text.your email address": "ユーザー メール",
|
|
242
|
+
"title.attribute model": "属性モデル",
|
|
235
243
|
"title.attribute-item list": "属性アイテム リスト",
|
|
236
244
|
"title.attributes": "属性",
|
|
237
245
|
"title.auth-provider": "認証プロバイダ",
|
|
@@ -239,6 +247,7 @@
|
|
|
239
247
|
"title.domain-link management": "ドメインリンク管理",
|
|
240
248
|
"title.forgot password": "パスワード探し",
|
|
241
249
|
"title.invalid input": "無効な入力値",
|
|
250
|
+
"title.lookup domains": "ドメイン検索",
|
|
242
251
|
"title.lookup role": "ロール検索",
|
|
243
252
|
"title.lookup user": "ユーザー検索",
|
|
244
253
|
"title.move to this domain": "このドメインに移動",
|
package/translations/ko.json
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"button.security-key registration": "보안인증키 등록",
|
|
31
31
|
"button.show-all": "전체 보기",
|
|
32
32
|
"button.show-orphans-only": "Orphan 만 보기",
|
|
33
|
+
"button.sign_in": "로그인",
|
|
33
34
|
"button.submit": "전송",
|
|
34
35
|
"button.terminate contract": "계약 해지",
|
|
35
36
|
"button.transfer owner": "관리자 부여",
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"error.user-locked": "계정이 잠겼습니다. 이메일을 통해 재활성화하세요.",
|
|
47
48
|
"error.value is empty": "{value}의 값이 존재하지 않습니다.",
|
|
48
49
|
"error.x already exists in y": "{x}이/가 이미 {y}에 존재합니다.",
|
|
50
|
+
"error: domain name should consist only of letters or dashes": "도메인 이름에는 영문자와 붙임표만 쓸 수 있습니다",
|
|
49
51
|
"field.access token url": "access token url",
|
|
50
52
|
"field.accessed-at": "로그인 일시",
|
|
51
53
|
"field.app key": "app key",
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
"field.contact email": "연락 이메일",
|
|
62
64
|
"field.description": "설명",
|
|
63
65
|
"field.email": "이메일",
|
|
66
|
+
"field.entity": "개체",
|
|
64
67
|
"field.forgot-password": "암호가 기억나지 않나요?",
|
|
65
68
|
"field.granted at": "부여 시각",
|
|
66
69
|
"field.granted by": "권한 부여자",
|
|
@@ -223,6 +226,8 @@
|
|
|
223
226
|
"text.filter by module name": "모듈 이름으로 걸러 보기",
|
|
224
227
|
"text.inherited from x": "{x} 에서 물려받습니다",
|
|
225
228
|
"text.inherited roles are edited in their own domain": "이 역할들은 상위 도메인에 정의되어 있어 그쪽에서만 고칠 수 있습니다.",
|
|
229
|
+
"text.invalid-email": "이메일 주소 형식이 맞지 않습니다",
|
|
230
|
+
"text.invalid-username": "아이디나 이메일 주소를 적으십시오",
|
|
226
231
|
"text.loading": "읽는 중…",
|
|
227
232
|
"text.new password": "새 비밀번호",
|
|
228
233
|
"text.no account and no default password": "이 이메일로 가입한 계정이 없고, 이 시스템에는 기본 비밀번호가 설정되어 있지 않습니다. 그 사람이 먼저 가입해야 부를 수 있습니다.",
|
|
@@ -235,6 +240,7 @@
|
|
|
235
240
|
"text.no privilege granted": "여는 것이 없음",
|
|
236
241
|
"text.no role assigned": "역할 없음",
|
|
237
242
|
"text.no role defined in this domain": "이 도메인에 역할이 없습니다. 역할을 먼저 만들어야 부여할 수 있습니다.",
|
|
243
|
+
"text.no role to show": "역할 없이 열린 화면입니다",
|
|
238
244
|
"text.no role yet": "아직 정의된 역할이 없습니다",
|
|
239
245
|
"text.none on": "없음",
|
|
240
246
|
"text.not declared for this module": "이 모듈에는 그 권한이 선언되어 있지 않습니다.",
|
|
@@ -281,6 +287,7 @@
|
|
|
281
287
|
"text.this domain is top level and inherits from nowhere": "최상위 도메인 — 물려받는 곳이 없습니다",
|
|
282
288
|
"text.this field is required": "필수 항목입니다",
|
|
283
289
|
"text.this plant may call the seat what it likes": "이 공장에서 부르는 이름으로 바꿔도 됩니다.",
|
|
290
|
+
"text.this role no longer exists": "이 역할은 더 이상 없습니다",
|
|
284
291
|
"text.token expiry time": "토큰 만료 시점",
|
|
285
292
|
"text.unlocks in x minutes": "{x}분 뒤 잠금 해제",
|
|
286
293
|
"text.updated_successfully": "성공적으로 업데이트 되었습니다.",
|
|
@@ -302,6 +309,7 @@
|
|
|
302
309
|
"text.your account is not activated": "계정이 활성화되지 않았습니다.",
|
|
303
310
|
"text.your email address": "사용자 이메일",
|
|
304
311
|
"title.add domain owner": "도메인 소유자 추가",
|
|
312
|
+
"title.attribute model": "속성 모델",
|
|
305
313
|
"title.attribute-item list": "속성 아이템 리스트",
|
|
306
314
|
"title.attributes": "속성",
|
|
307
315
|
"title.auth-provider": "인증 제공자",
|
|
@@ -309,6 +317,7 @@
|
|
|
309
317
|
"title.domain-link management": "도메인 링크 관리",
|
|
310
318
|
"title.forgot password": "비밀번호 찾기",
|
|
311
319
|
"title.invalid input": "유효하지 않은 입력값",
|
|
320
|
+
"title.lookup domains": "도메인 검색",
|
|
312
321
|
"title.lookup role": "역할 검색",
|
|
313
322
|
"title.lookup user": "사용자 검색",
|
|
314
323
|
"title.move to this domain": "이 도메인으로 이동하기",
|
package/translations/ms.json
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"button.security-key registration": "pendaftaran kunci keselamatan",
|
|
26
26
|
"button.show-all": "Tunjukkan semua",
|
|
27
27
|
"button.show-orphans-only": "Tunjukkan hanya orphan",
|
|
28
|
+
"button.sign_in": "log masuk",
|
|
28
29
|
"button.submit": "hantar",
|
|
29
30
|
"button.terminate contract": "tamatkan",
|
|
30
31
|
"button.transfer owner": "pindah pemilik",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"error.user-locked": "pengguna dikunci",
|
|
41
42
|
"error.value is empty": "{value} kosong",
|
|
42
43
|
"error.x already exists in y": "{x} telah wujud dalam {y}",
|
|
44
|
+
"error: domain name should consist only of letters or dashes": "nama domain hanya boleh menggunakan huruf dan sengkang",
|
|
43
45
|
"field.access token url": "access token url",
|
|
44
46
|
"field.accessed-at": "diakses pada",
|
|
45
47
|
"field.app key": "app key",
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
"field.contact email": "emel untuk dihubungi",
|
|
56
58
|
"field.description": "penerangan",
|
|
57
59
|
"field.email": "e-mel",
|
|
60
|
+
"field.entity": "entiti",
|
|
58
61
|
"field.forgot-password": "terlupa kata laluan",
|
|
59
62
|
"field.hidden": "tersembunyi",
|
|
60
63
|
"field.ip_address": "alamat IP",
|
|
@@ -187,8 +190,11 @@
|
|
|
187
190
|
"text.expired": "tamat tempoh",
|
|
188
191
|
"text.expires at x": "tamat {x}",
|
|
189
192
|
"text.inherited from x": "diwarisi daripada {x}",
|
|
193
|
+
"text.invalid-email": "itu bukan alamat emel",
|
|
194
|
+
"text.invalid-username": "gunakan id atau alamat emel",
|
|
190
195
|
"text.new password": "kata laluan baru",
|
|
191
196
|
"text.no domain available": "maaf, tiada domain untuk dipilih",
|
|
197
|
+
"text.no role to show": "skrin ini dibuka tanpa peranan",
|
|
192
198
|
"text.not issued": "belum dikeluarkan",
|
|
193
199
|
"text.opens nothing, receives approvals": "opens nothing — this seat receives approvals",
|
|
194
200
|
"text.owner_transfer_completed": "pindah pemilik selesai",
|
|
@@ -220,6 +226,7 @@
|
|
|
220
226
|
"text.this domain is top level and inherits from nowhere": "domain teratas — tiada yang diwarisi",
|
|
221
227
|
"text.this field is required": "medan ini diperlukan",
|
|
222
228
|
"text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
|
|
229
|
+
"text.this role no longer exists": "peranan ini tidak wujud lagi",
|
|
223
230
|
"text.token expiry time": "masa tamat token",
|
|
224
231
|
"text.updated_successfully": "berjaya dikemaskini",
|
|
225
232
|
"text.user invitation prompt": "sila masukkan nama pengguna atau alamat e-mel pengguna yang ingin anda jemput.",
|
|
@@ -233,6 +240,7 @@
|
|
|
233
240
|
"text.x_deleted_successfully": "{x} berjaya dipadam",
|
|
234
241
|
"text.your account is not activated": "akaun anda belum diaktifkan",
|
|
235
242
|
"text.your email address": "alamat emel anda",
|
|
243
|
+
"title.attribute model": "model atribut",
|
|
236
244
|
"title.attribute-item list": "senarai ciri-ciri",
|
|
237
245
|
"title.attributes": "ciri-ciri",
|
|
238
246
|
"title.auth-provider": "pemberi pengesahan",
|
|
@@ -240,6 +248,7 @@
|
|
|
240
248
|
"title.domain-link management": "pengurusan pautan domain",
|
|
241
249
|
"title.forgot password": "lupa kata laluan",
|
|
242
250
|
"title.invalid input": "invalid input",
|
|
251
|
+
"title.lookup domains": "cari domain",
|
|
243
252
|
"title.lookup role": "cari peranan",
|
|
244
253
|
"title.lookup user": "cari pengguna",
|
|
245
254
|
"title.move to this domain": "pindah ke domain ini",
|
package/translations/zh.json
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"button.security-key registration": "安全密钥注册",
|
|
26
26
|
"button.show-all": "全部显示",
|
|
27
27
|
"button.show-orphans-only": "仅显示孤立项",
|
|
28
|
+
"button.sign_in": "登录",
|
|
28
29
|
"button.submit": "提交",
|
|
29
30
|
"button.terminate contract": "终止合同",
|
|
30
31
|
"button.transfer owner": "转让所有权",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"error.user-locked": "用户帐户已锁定",
|
|
41
42
|
"error.value is empty": "{value}为空",
|
|
42
43
|
"error.x already exists in y": "{x}已存在于{y}",
|
|
44
|
+
"error: domain name should consist only of letters or dashes": "域名只能使用字母和连字符",
|
|
43
45
|
"field.access token url": "access token url",
|
|
44
46
|
"field.accessed-at": "访问于",
|
|
45
47
|
"field.app key": "app key",
|
|
@@ -55,6 +57,7 @@
|
|
|
55
57
|
"field.contact email": "联系邮箱",
|
|
56
58
|
"field.description": "说明",
|
|
57
59
|
"field.email": "电子邮件",
|
|
60
|
+
"field.entity": "实体",
|
|
58
61
|
"field.forgot-password": "忘记密码",
|
|
59
62
|
"field.hidden": "隐藏",
|
|
60
63
|
"field.ip_address": "IP地址",
|
|
@@ -186,8 +189,11 @@
|
|
|
186
189
|
"text.expired": "已过期",
|
|
187
190
|
"text.expires at x": "{x} 过期",
|
|
188
191
|
"text.inherited from x": "继承自 {x}",
|
|
192
|
+
"text.invalid-email": "电子邮件地址格式不正确",
|
|
193
|
+
"text.invalid-username": "请输入 ID 或电子邮件地址",
|
|
189
194
|
"text.new password": "新密码",
|
|
190
195
|
"text.no domain available": "抱歉,没有域名",
|
|
196
|
+
"text.no role to show": "打开此页面时未指定角色",
|
|
191
197
|
"text.not issued": "未签发",
|
|
192
198
|
"text.opens nothing, receives approvals": "opens nothing — this seat receives approvals",
|
|
193
199
|
"text.owner_transfer_completed": "所有权转让成功。",
|
|
@@ -220,6 +226,7 @@
|
|
|
220
226
|
"text.this domain is top level and inherits from nowhere": "顶级域 — 没有可继承的来源",
|
|
221
227
|
"text.this field is required": "此项为必填",
|
|
222
228
|
"text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
|
|
229
|
+
"text.this role no longer exists": "此角色已不存在",
|
|
223
230
|
"text.token expiry time": "令牌过期时间",
|
|
224
231
|
"text.updated_successfully": "更新成功",
|
|
225
232
|
"text.user invitation prompt": "请输入您希望邀请的用户的用户名或电子邮件地址。",
|
|
@@ -233,6 +240,7 @@
|
|
|
233
240
|
"text.x_deleted_successfully": "{x}删除成功",
|
|
234
241
|
"text.your account is not activated": "您的账号还没验证",
|
|
235
242
|
"text.your email address": "您的邮件地址",
|
|
243
|
+
"title.attribute model": "属性模型",
|
|
236
244
|
"title.attribute-item list": "属性列表",
|
|
237
245
|
"title.attributes": "属性",
|
|
238
246
|
"title.auth-provider": "身份验证提供者",
|
|
@@ -240,6 +248,7 @@
|
|
|
240
248
|
"title.domain-link management": "域链接管理",
|
|
241
249
|
"title.forgot password": "忘记密码",
|
|
242
250
|
"title.invalid input": "输入无效",
|
|
251
|
+
"title.lookup domains": "查找域",
|
|
243
252
|
"title.lookup role": "查找角色",
|
|
244
253
|
"title.lookup user": "查找用户",
|
|
245
254
|
"title.move to this domain": "移动到此域名",
|